Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
This document marks the inaugural Breaking Change merge. A list of changes follows.
Duplicate include guards have bypassed the expected header processing behavior
All keymaps affected are recommended to remove duplication of <keyboard>/config.h to <keyboard>/keymaps/<user>/config.h and only provide overrides at the keymap level
Backport changes to keymap language files from ZSA fork
Fixes an issue in the keymap_br_abnt2.h file that includes the wrong source (keymap_common.h instead of keymap.h)
Updates the keymap_swedish.h file to be specific to swedish, and not just "nordic" in general.
Any keymaps using this will need to remove NO_* and replace it with SE_*.
This should allow more flexibility with LUFA, and allow us to keep the sub-module up to date, a lot more easily. It was ~2 years out of date with no easy path to fix that. This prevents that from being an issue in the future
Migrating ACTION_BACKLIGHT_*() entries in fn_actions to BL_ keycodes
fn_actions is deprecated, and its functionality has been superseded by direct keycodes and process_record_user()
All keymaps using these actions have had the relevant KC_FN* keys replaced with the equivalent BL_* keys
If you currently use KC_FN* you will need to replace fn_actions with the custom keycode and macro features
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
A make git-submodule may be required after pulling the latest QMK firmware code to update affected submodules to the upgraded revisions
Enabling link-time-optimization (LINK_TIME_OPTIMIZATION_ENABLE = yes) should work on a lot more boards
Upgrade to ChibiOS ver19.1.3
This will allow QMK to update to upstream ChibiOS a lot easier -- the old version was ~2 years out of date. Automated update scripts have been made available to simplify future upgrades.
Includes improved MCU support and bugfixes
ChibiOS revision is now included in Command output
Timers should now be more accurate
Upgrade to newer ChibiOS-Contrib
Also includes improved MCU support and bugfixes
ChibiOS-Contrib revision is now included in Command output
Upgrade to newer uGFX
Required in order to support updated ChibiOS
Fix ChibiOS timer overflow for 16-bit SysTick devices
On 16-bit SysTick devices, the timer subsystem in QMK was incorrectly dealing with overflow.
When running at a 100000 SysTick frequency (possible on 16-bit devices, but uncommon), this overflow would occur after 0.65 seconds.
Timers are now correctly handling this overflow case and timing should now be correct on ChibiOS/ARM.
Flips the encoder direction so that clockwise == true is for actually turning the knob clockwise
Adds ENCODER_DIRECTION_FLIP define, so that reversing the expected dirction is simple for users.
Cleans up documentation page for encoders
Adding support for BACKLIGHT_ON_STATE for hardware PWM backlight
Previously, the define only affected software PWM, and hardware PWM always assumed an N-channel MOSFET.
The hardware PWM backlight setup has been updated to respect this option.
The default "on" state has been changed to 1 - this impacts all keyboards using software PWM backlight that do not define it explicitly. If your keyboard's backlight is acting strange, it may have a P-channel MOSFET, and will need to have #define BACKLIGHT_ON_STATE 0 added to the keyboard-level config.h. Please see the PR for more detailed information.
Migrating ACTION_LAYER_TAP_KEY() entries in fn_actions to LT() keycodes
fn_actions is deprecated, and its functionality has been superseded by direct keycodes and process_record_user()
The end result of removing this obsolete feature should result in a decent reduction in firmware size and code complexity
All keymaps affected are recommended to switch away from fn_actions in favour of the custom keycode and macro features
Moving backlight keycode handling to process_keycode/
This refactors the backlight keycode logic to be clearer and more modular.
All backlight-related keycodes are now actioned in a single file.
The ACTION_BACKLIGHT_* macros have also been deleted. If you are still using these in a fn_actions[] block, please switch to using the backlight keycodes or functions directly.
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
These PRs move the V-USB driver code out of the qmk_firmware repository and into a submodule pointed at https://github.com/obdev/v-usb. This will make it easier to update the codebase if needed, while applying any potential QMK-specific modifications by forking it to the QMK GitHub organization.
This is the last release of QMK that will work without having Python 3.6 (or later) installed. If your environment is not fully setup you will get a warning instructing you to set it up.
After the next breaking change you will not be able to build if bin/qmk hello does not work.
Changes RGB_DISABLE_AFTER_TIMEOUT to be based on milliseconds instead of ticks.
Includes a code cleanup, resulting in a savings of 100 bytes, depending on features used.
Fixed issues with timeouts / suspending at the wrong time not turning off all LEDs in some cases.
The RGB_DISABLE_AFTER_TIMEOUT definition is now deprecated, and has been superseded by RGB_DISABLE_TIMEOUT. To use the new definition, rename RGB_DISABLE_AFTER_TIMEOUT to RGB_DISABLE_TIMEOUT in your config.h file, and multiply the value set by 1200.
audio_avr.c does not default to any pin; there has to be a #define XX_AUDIO in config.h at some level for Audio to actually work. Otherwise, the Audio code ends up cluttering the firmware, possibly breaking builds because the maximum allowed firmware size is exceeded.
These changes fix this by disabling Audio on keyboards that have the feature misconfigured, and therefore non-functional.
Also, add a compile-time error to alert the user to a missing pin-configuration (on AVR boards) when AUDIO_ENABLE = yes is set.
Modifies the default firmware for Lily58 to use the split_common library, instead of including and depending on its own set of libraries for the following functionality:
SSD1306 display
i2c for OLED
Serial Communication
This allows current lily58 firmware to advance with updates to the split_common library, which is shared with many other split keyboards.
Find/Replace each instance of #ifdef SSD1306OLED with #ifdef OLED_DRIVER_ENABLE
The following changes are for compatibility with the OLED driver. If you don't use the OLED driver you may safely delete this section
Alternatively, if you did not change the OLED code from that in default, you may find it easier to simply copy the relevant section. Otherwise, the changes you need to make are as follows (sample change here)
#ifdef SSD1306OLED
+ iota_gfx_init(!has_usb()); // turns on the display
+#endif
Within the block bounded by #ifdef OLED_DRIVER_ENABLE and #endif // OLED_DRIVER_ENABLE, add the following block to ensure that your two OLEDs are rotated correctly across the left and right sides:
c
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_master())
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ return rotation;
+}
Remove the functions matrix_scan_user, matrix_update and iota_gfx_task_user
Find/Replace matrix_render_user(struct CharacterMatrix *matrix) with iota_gfx_task_user(void)
Find/Replace is_master with is_keyboard_master()
For each instance of matrix_write_ln(matrix, display_fn()), rewrite it as oled_write_ln(read_layer_state(), false);
For each instance of matrix_write(matrix, read_logo());, replace with oled_write(read_logo(), false);
Modifies the default firmware for TKC1800 to use the in-built I2C and OLED drivers, instead of including and depending on its own set of libraries for the following functionality:
SSD1306 display
i2c for OLED
This allows current TKC1800 firmware to advance with updates to those drivers, which are shared with other keyboards.
#ifdef SSD1306OLED
+ iota_gfx_init(!has_usb()); // turns on the display
+#endif
Within the block bounded by #ifdef OLED_DRIVER_ENABLE and #endif // OLED_DRIVER_ENABLE, add the following block to ensure that your two OLEDs are rotated correctly across the left and right sides:
c
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_master())
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ return rotation;
+}
Remove the function iota_gfx_task_user
Split HHKB to ANSI and JP layouts and Add VIA support for each
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
relocating boards by flehrad to flehrad/ folder (#9635)
Keyboards released by The Key Company and keyboards designed by flehrad have moved to vendor folders. If you own any of the keyboards listed below, please use the new names to compile your firmware moving forward.
This pull request changes the configuration for Keebio split boards to use the same RGB strip wiring for each half, which provides the following improvements:
Easier wiring due to one fewer wire needed (the wire between left DOut to extra data pin) and the fact that wiring is the same for both halves.
RGB LEDs can be controlled by each half now instead of just master half.
Extra data line is freed up to allow for I2C usage instead of serial.
If you have customized the value of RGBLED_SPLIT for your keymap, you will need to undefine it using #undef RGBLED_SPLIT before defining it to your customized value.
allow for WS2812 PWM to work on DMAMUX-capable devices (#9471)
Newer STM32 MCUs have a DMAMUX peripheral, which allows mapping of DMAs to different DMA streams, rather than hard-defining the target streams in silicon.
Affects STM32L4+ devices, as well as the soon-to-be-supported-by-QMK STM32G4/H7 families.
Tested on F303/Proton C (ChibiOS v19, non-DMAMUX), G474 (ChibiOS v20, with DMAMUX).
dual-bank STM32 bootloader support (#8778 and #9738)
Adds support for STM32 dual-bank flash bootloaders, by toggling a GPIO during early init in order to charge an RC circuit attached to BOOT0.
The main rationale behind this is that dual-bank STM32 devices unconditionally execute user-mode code, regardless of whether or not the user-mode code jumps to the bootloader. If either flash bank is valid (and BOOT0 is low), then the built-in bootloader will skip any sort of DFU.
This PR allows for the initialisation sequencing to charge the RC circuit based on the example circuit posted on Discord, effectively pulling BOOT0 high before issuing the system reset. As the RC circuit takes a while to discharge, the system reset executes the ROM bootloader which subsequently sees BOOT0 high, and starts executing the DFU routines.
Tested with STM32L082 (with current QMK+current ChibiOS), and STM32G474 (against ChibiOS 20.x).
update Space Cadet and Tap Dance features to use Custom Tapping Term when appropriate (#6259)
For the Tap Dance feature, this completely removes the need for the ACTION_TAP_DANCE_FN_ADVANCED_TIME dance.
This implements a joystick feature, including a joystick_task function called from TMK, specific keycodes for joystick buttons and a USB HID interface.
Tested on V-USB backend and Proton C; compiles but untested on LUFA.
In order to test, you have to add JOYSTICK_ENABLE = yes to your rules.mk and
work begun for consolidation of ChibiOS platform files (#8327 and #9315)
Start of the consolidation work to move the ChibiOS board definitions as well as the default set of configuration files for existing board definitions used by keyboards.
Uses /platforms/chibios as previously discussed on discord.
Consolidates the Proton C configs into the generic F303 definitions.
Allows for defining a default set of chconf.h, halconf.h, and mcuconf.h files within the platform definition, which is able to be overridden by the keyboard directly, though include path ordering.
Adds template chconf.h, halconf.h, mcuconf.h, and board.h that can be dropped into a keyboard directory, in order to override rather than replace the entire contents of the respective files.
Removed Proton C QMK board definitions, falling back to ChibiOS board definitions with QMK overrides.
Renamed keyboard_led_stats in lufa.c and ChibiOS usb_main.c to keyboard_led_state, as well as vusb_keyboard_leds, for consistency
Formatted CDC and MIDI descriptors better
Removed ENDPOINT_CONFIG macro, it seems pointless and removes the need for endpoint address defines in the middle of the endpoint numbering enum
Fixed (possibly?) V-USB GET_REPORT request handling. Not sure about this one, but the existing code appears to always return an empty report - now send_keyboard sets this variable to the current report, matching what the LUFA code does.
converted CONSUMER2BLUEFRUIT() and CONSUMER2RN42() macros to static inline functions (#9055)
Removing the UART stuff entirely, now that we have Console support. Also fixing up various other things; switching some debug() calls to dprintf(), moved raw_hid_report out of the way so that we can implement the shared endpoint stuff.
removed inclusion of adafruit_ble.h from ssd1306.c (#9355)
outputselect.c is no longer compiled if Bluetooth is disabled (#9356)
analogRead() deprecated in favor of analogReadPin() (#9023)
forcibly disable NKRO on V-USB controllers (#9054)
removed warning if running backlight on STM32F072 (#10040)
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
QMK's ChibiOS and ChibiOS-Contrib submodules have been updated to version 20.3.2.
Along with this, QMK now provides default configuration files for all commonly-supported ARM microcontrollers running on ChibiOS. As such, keyboards are now only required to define settings which differ from the defaults, thereby reducing the size of pull requests for keyboards running atop ChibiOS.
Python is now required to build QMK. The minimum Python version has been increased to 3.7.
The power of info.json has been massively expanded. Most keyboard parameters can now be expressed in info.json instead of config.h/rules.mk. This should make maintaining keyboards easier, and will enable tooling that can allow non-technical users to add and maintain QMK keyboards without writing any code.
To ease migration a new command has been provided, qmk generate-info-json -kb <keyboard>. You can use this command to generate a complete info.json file for a keyboard and then remove the duplicate information from config.h and rules.mk.
Detailed example showing how to generate a new info.json and identify duplicate keys:
user@hostname:~/qmk_firmware/keyboards/lets_split:0$ qmk generate-info-json > new-info.json
+user@hostname:~/qmk_firmware/keyboards/lets_split:0$ mv new-info.json info.json
+user@hostname:~/qmk_firmware/keyboards/lets_split:0$ qmk info
+⚠ lets_split/rev2: DEBOUNCE in config.h is overwriting debounce in info.json
+⚠ lets_split/rev2: DEVICE_VER in config.h is overwriting usb.device_ver in info.json
+⚠ lets_split/rev2: DIODE_DIRECTION in config.h is overwriting diode_direction in info.json
+⚠ lets_split/rev2: MANUFACTURER in config.h is overwriting manufacturer in info.json
+⚠ lets_split/rev2: RGB_DI_PIN in config.h is overwriting rgblight.pin in info.json
+⚠ lets_split/rev2: RGBLED_NUM in config.h is overwriting rgblight.led_count in info.json
+⚠ lets_split/rev2: PRODUCT_ID in config.h is overwriting usb.pid in info.json
+⚠ lets_split/rev2: VENDOR_ID in config.h is overwriting usb.vid in info.json
+⚠ lets_split/rev2: Matrix pins are specified in both info.json and config.h, the config.h values win.
+⚠ lets_split/rev2: LAYOUTS in rules.mk is overwriting community_layouts in info.json
+⚠ lets_split/rev2: Feature bootmagic is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature mousekey is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature extrakey is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature console is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature command is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature nkro is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature backlight is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature midi is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature audio is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature unicode is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature bluetooth is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature rgblight is specified in both info.json and rules.mk, the rules.mk value wins.
+⚠ lets_split/rev2: Feature sleep_led is specified in both info.json and rules.mk, the rules.mk value wins.
+Keyboard Name: Let's Split
+Manufacturer: Wootpatoot
+Website:
+Maintainer: QMK Community
+Keyboard Folder: lets_split/rev2
+Layouts: LAYOUT, LAYOUT_ortho_4x12
+Size: 13 x 4
+Processor: atmega32u4
+Bootloader: caterina
A new qmk console command has been added for attaching to your keyboard's console. It operates similiarly to QMK Toolbox by allowing you to connect to one or more keyboard consoles to display debugging messages.
We've updated the qmk config command to show only the configuration items you have actually set. You can now display (almost) all of the available configuration options, along with their default values, using qmk config -a.
QMK has decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
This pull request changes the behavior of BOOTMAGIC_ENABLE such that specifying BOOTMAGIC_ENABLE = yes enables Bootmagic Lite instead of full Bootmagic.
If attempts to use Bootmagic functionality result in unexpected behavior, check your rules.mk file and change the BOOTMAGIC_ENABLE setting to specify either lite or full.
We've removed support for LAYOUT_kc macros, if your keymap uses one you will need to update it use a regular LAYOUT macro.
Encoder callbacks are now boolean (#12805, #12985)
To allow for keyboards to override (or not) keymap level code the encoder_update_kb function has been changed from void to bool. You will need to update your function definition to reflect this and ensure that you return a true or false value.
Combo processing has been reordered with respect to keypress handling, allowing for much better compatibility with mod taps.
It is also now possible to define combos that have keys overlapping with other combos, triggering only one. For example, a combo of A, B can coexist with a longer combo of A, B, C -- previous functionality would trigger both combos if all three keys were pressed.
QMK now has a new feature: key overrides. This feature allows for overriding the output of key combinations involving modifiers. As an example, pressing Shift+2 normally results in an @ on US-ANSI keyboard layouts -- the new key overrides allow for adding similar functionality, but for any modifier + key press.
To illustrate, it's now possible to use the key overrides feature to translate Shift + Backspace into Delete -- an often-requested example of where this functionality comes in handy.
There's far more to describe that what lives in this changelog, so head over to the key overrides documentation for more examples and info.
QMK gained the ability to pretend to be a digitizer device -- much like a tablet device. A mouse uses delta-coordinates -- move up, move right -- but a digitizer works with absolute coordinates -- top left, bottom right.
As noted during last breaking changes cycle, QMK has decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
This pull request changes the behavior of BOOTMAGIC_ENABLE such that specifying full results in an error, allowing only no, yes, or lite.
Currently lite is the equivalent of yes in rules.mk. Next cycle the use of the lite keyword will be prevented in favour of yes -- any new submissions should now be using yes or no to minimise disruption.
Split keyboards gained a significant amount of improvements during this breaking changes cycle, specifically:
Extensible split data sync (#11930) -- rewritten data sharing between sides, allowing for data transfer only when required, as well as enabling keyboards and keymaps to define their own shared data.
Full-duplex ARM USART split (#13081) -- adds to the previous half-duplex driver and now allows for full-duplex support on ARM.
Make solo half of split keyboards (more) usable. (#13523) -- allows the slave to be disconnected, enabling one-handed use.
Tags will let you categorize your keyboard, and will be used in the future to allow browsing and sorting through keyboards in QMK. Tags are free-form text identifiers that identify attributes about your keyboard. To add tags you simply add a tags key to your info.json:
We've added dozens of new keys to info.json so that you can configure more than ever without writing a single line of code. A quick overview of the new items you can configure:
QMK was originally based on TMK, and has grown in size considerably since its first inception. To keep moving things forward, restructure of some of the core areas of the code is needed to support new concepts and new hardware, and progress is happening along those lines:
Pointing device support has been reworked and reimplemented to allow for easier integration of new peripherals.
Usages of POINTING_DEVICE_ENABLE = yes in rules.mk files now need to be accompanied by a corresponding POINTING_DEVICE_DRIVER = ??? line, specifying which driver to use during the build. Existing keyboards have already been migrated across to the new usage pattern, so most likely no change is required by users.
QMK now has core-supplied support for the following pointing device peripherals:
rules.mk line
Supported device
POINTING_DEVICE_DRIVER = analog_joystick
Analog joysticks, such as PSP joysticks
POINTING_DEVICE_DRIVER = adns5050
ADNS 5050 sensor
POINTING_DEVICE_DRIVER = adns9800
ADNS 9800 laser sensor
POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c
Cirque touchpad, I2C mode
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
Cirque Touchpad, SPI mode
POINTING_DEVICE_DRIVER = pimoroni_trackball
Pimoroni Trackball
POINTING_DEVICE_DRIVER = pmw3360
PMW 3360
See the new documentation for the Pointing Device feature for more information on specific configuration for each driver.
For people who are starting out with tapping keys, or for people who think tapping keys don't "feel right", it's sometimes quite difficult to determine what duration of tapping term to use to make things seem natural.
If you're in this stage of discovery, you can now add DYNAMIC_TAPPING_TERM_ENABLE = yes to your rules.mk, which enables the use of the following keycodes in your keymap:
Key
Description
DT_PRNT
"Dynamic Tapping Term Print": Types the current tapping term, in milliseconds
DT_UP
"Dynamic Tapping Term Up": Increases the current tapping term by 5ms
DT_DOWN
"Dynamic Tapping Term Down": Decreases the current tapping term by 5ms
Coupled with the use of qmk console or QMK Toolbox to show console output from your keyboard, you can tweak the tapping term dynamically in order to narrow down what "feels right" to you. Once you're happy, drop in the resulting number into your keymap's config.h and you're good to go!
You can now define up to 32 macros in your keymap.json file, as used by QMK Configurator, and qmk compile. You can define these macros in a list under the macros keyword, like this:
The AVR platform has been problematic for some time, in the sense that it is severely resource-constrained -- this makes life difficult for anyone attempting to add new functionality such as display panels to their keymap code. The illustrious Drashna has contributed some newer documentation on how to attempt to free up some space on AVR-based keyboards that are in short supply.
Of course, there are much fewer constraints with ARM chips... 😉
Require explicit enabling of RGB Matrix modes (#15018)
Related to the previous section -- RGB Matrix modes have now been made to be opt-in, rather than opt-out. As these animations are now opt-in, you may find that your keyboard no longer has all the RGB modes you're expecting -- you may need to configure and recompile your firmware and enable your animations of choice... with any luck they'll still fit in the space available.
Most keyboards keep their original functionality, but over time the QMK maintainers have found that removal of animations ends up being the quickest way to free up space... and some keyboards have had animations such as reactive effects disabled by default in order to still fit within the flash space available.
The full list of configurables to turn specific animations back on can be found at on the RGB Matrix documentation page.
OLED display code was traditionally difficult to override in keymaps as they did not follow the standard pattern of bool *_kb() deferring to bool *_user() functions, allowing signalling to the higher level that processing had already been done.
This changes the standard OLED drawing function model to allow for a base implementation to be provided by a keyboard, but also still allow for keymap-level overrides without needing to modify the keyboard's code.
As noted during previous breaking changes cycles, QMK decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
This removal is now complete!
This pull request changes the behavior of BOOTMAGIC_ENABLE such that specifying lite or full results in an error, allowing only yes or no, with yes mirroring historical lite functionality.
All use of the lite keyword within the repository has been migrated to yes -- any new submissions using lite will now fail to build and should be updated accordingly.
Due to minimal QWIIC adoption and other options for similar functionality, the QWIIC drivers were removed from QMK. Existing OLED usages have been migrated across to the normal QMK OLED driver instead.
There were a few EEPROM-related changes that landed during this breaking changes cycle, most prominently the long-awaited ability for the Drop boards to gain persistent storage. Any users of the Drop CTRL or Drop ALT should update QMK Toolbox as well -- coupled with a QMK firmware update settings should now be saved.
massdrop alt/ctrl: support saving into nvm (#6068)
A clang-compatible compilation database generator has been added as an option in order to help development environments such as Visual Studio Code.
Running qmk generate-compilation-database -kb <yourkb> -km <yourkeymap> from within the QMK firmware directory will generate a compile_commands.json file -- using a compatible IDE will likely see this and correctly start detecting the correct locations for source files as well as type and function information that are relevant to your build.
Do note that switching keyboards will require re-generation of this file.
New CLI subcommand to create clang-compatible compilation database (compile_commands.json) (#14370)
compiledb: query include paths from gcc directly. (#14462)
QMK continues on its restructuring journey, in order to make it easier to integrate newer features and add support for new hardware. This quarter's batch of changes include:
add 'include keyboard_features.mk' into build_keyboard.mk (#8422)
Legacy macro and action_function system removed (#16025)
The long time deprecated MACRO() and action_get_macro methods have been removed. Where possible, existing usages have been migrated over to core Macros.
Create a build error if no bootloader is specified (#16181)
Bootloader configuration is no longer assumed. Keyboards must now set either:
This is a new feature that allows for capslock-like functionality that turns itself off at the end of the word.
For instance, if you wish to type "QMK" without holding shift the entire time, you can either tap both left and right shift, or double-tap shift, to turn on Caps Word -- then type qmk (lowercase) without holding shift. Once you hit any key other than a--z, 0--9, -, _, delete, or backspace, this will go back to normal typing!
There are other activation mechanisms as well as configurable options like timeout and the like -- see the Caps Word documentation for more information.
QMK has had support for small OLED displays for some time now, but hasn't really gained too much ability to draw to panels other than the SSD1306 or SH1106 panels.
Quantum Painter is a new drawing subsystem available to suitable ARM and RISC-V boards that is capable of drawing to large panel RGB LCDs and RGB OLEDs. It also allows for a lot more flexibility with a larger set of drawing APIs -- lines, rectangles, circles, ellipses, text, images, and even animations.
The QMK CLI has new commands added to be able to generate images and fonts for Quantum Painter to digest -- it's even capable of converting animated gifs for display on screen.
See the Quantum Painter documentation for more information on how to set up the displays as well as how to convert images and fonts.
WARNING
Quantum Painter is not supported on AVR due to complexity and size constraints. Boards based on AVR such as ProMicro or Elite-C builds will not be able to leverage Quantum Painter.
One of the long-standing complaints with Encoders is that there has been no easy way to configure them in user keymaps. #13286 added support for Encoder Mapping, which allows users to define encoder functionality in a similar way to their normal keymap.
WARNING
This is not yet supported by QMK Configurator. It is also unlikely to ever be supported by VIA.
QMK is always in the process of picking up support for new hardware platforms. One of the side-effects for future integrations has shown that QMK's usage of RESET as a keycode is causing naming collisions. As a result, #17037 changed usages of RESET to the new keycode QK_BOOT in the majority of default-like keymaps. At this stage the old keycode is still usable but will likely be removed in the next breaking changes cycle. Users with keymaps containing RESET should also move to QK_BOOT.
Some keycodes used with SEND_STRING and its relatives have been deprecated and may have their old keycode usages removed at a later date. The list of deprecated keycodes should be consulted to determine if you're using one of the older names (the first identifier after #define) -- you should swap to the newer variant (the second identifier on the same line).
The merge of Quantum Painter added some new dependencies in the QMK CLI, most notably Pillow, which requires some installation in order for the CLI to function. If you've got an existing installation, you'll need to run some commands in order to get things working:
On Windows, if using QMK MSYS or msys2, you'll need to run the following command:
QMK finally picked up support for RP2040-based boards, such as the Raspberry Pi Pico, the Sparkfun Pro Micro RP2040, and the Adafruit KB2040. One of QMK's newest collaborators, @KarlK90, effectively did /micdrop with RP2040, with a massive set of changes to both QMK and the repository QMK uses for the base platform support, ChibiOS[-Contrib]. There has been a flurry of development this breaking changes cycle related to RP2040 from a large number of contributors -- so much so that almost all standard QMK hardware subsystems are supported.
Allow qmk flash to use prebuilt firmware binaries (#16584)
A long-requested capability of the QMK CLI has been the ability to flash binaries directly, without needing to build a firmware. QMK provides prebuilt develop-based default firmwares on our CI page -- normally people would need QMK Toolbox to flash them. This new functionality written by @Erovia allows qmk flash to be provided the prebuilt file instead, simplifying the workflow for people who haven't got Toolbox available.
QMK allows for controlling the maximum number of layers it supports through LAYER_STATE_(8|16|32)BIT. Each definition allows for the same number of maximum layers -- LAYER_STATE_8BIT => 8 layers. There is also a corresponding firmware size decrease that goes along with smaller numbers -- given the vast majority of users don't use more than 16 layers the default has been swapped to 16. AVR users who were not previously specifying their max layer count may see some space freed up as a result.
Following the last breaking changes cycle, QMK has been migrating usages of RESET to QK_BOOT due to naming collisions with our upstream board support packages. #17940 converts user keymaps across to use the new keycode name. RESET should also move to QK_BOOT.
QMK has decided to deprecate the specification of USB IDs inside config.h in favour of info.json, eventually leaving data-driven as the only method to specify USB information.
A significant number of keyboards have already been changed on master in a like-for-like fashion, and #18152 performs the same transformations for keyboards already on develop.
Historically QMK had a CONVERT_TO_PROTON_C directive for rules.mk to allow people to replace an AVR-based Pro Micro with a QMK Proton C. Global parts shortages have prompted people to create their own pin-compatible boards -- QMK has made this conversion generic and now allows for drop-in replacements for a lot more boards. see the Converters Feature documentation for the full list of supported replacement boards -- in this breaking changes cycle we've gone from 1 to 7.
Add cli command to import keyboard|keymap|kbfirmware (#16668)
To help with importing keyboards and keymaps from other sources, @zvecr added #16668 which adds a new set of commands to the CLI to automatically import keyboards (qmk import-keyboard -h), keymaps (qmk import-keymap -h), and kbfirmware definitions (qmk import-kbfirmware -h) into QMK.
The now-EOL kbfirmware allowed people who aren't set up with QMK the ability to create keyboard firmwares without requiring a full installation of QMK. Unfortunately, it targets a 7-year-old version of QMK -- adding frustration for users who want the newest features, as well as for QMK maintainers who have to spend time explaining why QMK can't just accept a drive-by code drop from kbfirmware. With any luck, this new command helps both camps!
QMK has had the ability to write to internal MCU flash in order to emulate EEPROM for some time now, but it was only limited to a small number of MCUs. The base HAL used by QMK for a large number of ARM devices provides a "proper" embedded MCU flash driver, so @tzarc decoupled the wear-leveling algorithm from the old flash writing code, improved it, wrote some tests, and enabled its use for a much larger number of other devices... including RP2040's XIP flash, and external SPI NOR Flash.
See the EEPROM Driver documentation for more information.
Ever since Pointing Device Driver support and Split Pointing Device support were added by @drashna and @daskygit, there has been increased interest in the development of the pointing device subsystem and its associated code.
Both the PMW33xx and the Cirque Pinnacle implementations have seen a lot of improvement to their code, as has the mouse code in general. Features like circular/edge scrolling for the Cirque, and Kinetic movement for any sensor with "lift detection" (#17482). Additionally, for those that make fast motions with their pointing devices, support for much larger mouse movement reports has been added (#16371).
@getreuer in their infinite wisdom decided that autocorrect was a feature needed by QMK. As is customary, @drashna adapted it to core and got it into a state that everyone else can use it. See Feature: Autocorrect for more ifnormation (grin).
QMK's keycodes got a very significant overhaul this breaking changes cycle, with the bulk of the work done by @zvecr and @fauxpark -- renaming, reordering, removing has been their focus in this area. In an attempt to standardise interoperation with host applications, keycode values now have strong versioning so that any connected application has confidence that the keys it thinks exist on the board actually match up with what's compiled in. These strongly-versioned keycode definitions are now published online and will not change, so tools that remap keycodes have a reference to work with. In future versions of QMK, any new or changed keycodes will result in a new version specification. See API docs for more information on the published versions if you're writing a tool to manage keycodes.
In most cases user keymaps in the repository have already been updated to reflect the new naming scheme. In some cases user keymaps outside the repository may strike a missing keycode with the old name -- it's highly likely that the name had already been deprecated for some time, and should have been updated previously.
See below for the full list of changesets.
WARNING
Keycode aliases have been put in place in most cases to cater for "old names" being mapped to "new names" -- the documentation already reflects all the new naming of keys.
QMK has decided to deprecate the specification of USB IDs inside config.h in favour of info.json, leaving data-driven as the only method to specify USB information. As per the deprecation schedule put forward last breaking changes cycle, USB information must be specified in info.json instead.
RGB Matrix and LED Matrix Indicator display code was traditionally difficult to override in keymaps as they did not follow the standard pattern of bool *_kb() deferring to bool *_user() functions, allowing signalling to the higher level that processing had already been done.
This changes the standard callback model to allow for a base implementation to be provided by a keyboard, but also still allow for keymap-level overrides without needing to modify the keyboard's code.
The old RGB Matrix keymap code went something like this:
c
void rgb_matrix_indicators_user(void) {
+ // keymap LED code
+}
...but the new RGB Matrix keymap code looks like this:
Keyboard designers should now structure their keyboard-level routines like the following, in order to allow for keymap overrides:
c
bool rgb_matrix_indicators_kb(void) {
+ // Defer to the keymap if they want to override
+ if (!rgb_matrix_indicators_user()) { return false; }
+
+ // keyboard LED code
+ return true;
+}
The equivalent transformations should be done for LED Matrix boards.
Unicode modes were renamed in order to prevent collision with equivalent keycodes. The available values for UNICODE_SELECTED_MODES changed -- see Feature: Unicode for the new list of values and how to configure them.
We aren't going to list each and every change -- they're far too numerous -- instead, we'll just list the related PRs in order to convey just how wide-reaching these changes were:
There was additional work in the space of board converters -- historically QMK allowed for "converting" a Pro Micro build to a QMK Proton-C build. The last few versions of QMK have added support for replacement boards much like the Proton-C, and this quarter was no exception:
Both pointing devices and digitizer got a host of updates this cycle. Inertia, automatic mouse layers, fixes for preventing sleep... you even get more buttons with digitizers!
IGNORE_MOD_TAP_INTERRUPT_PER_KEY has been removed and IGNORE_MOD_TAP_INTERRUPT deprecated as a stepping stone towards making IGNORE_MOD_TAP_INTERRUPT the new default behavior for mod-taps in the future.
In place of the now removed IGNORE_MOD_TAP_INTERRUPT_PER_KEY, one must use the pre-existing HOLD_ON_OTHER_KEY_PRESS option.
In most cases, updating get_ignore_mod_tap_interrupt to get_hold_on_other_key_press is simply a matter of renaming the function and swapping every true by false and vice versa. The one subtlety you may need to look out for is that the get_ignore_mod_tap_interrupt was only ever called with mod-taps passed in as the keycode argument, while the keycode argument of get_hold_on_other_key_press can be any dual-role key. This includes not only mod-taps, but also layer-taps, one shot keys, TT(layer) and more. This has an impact on the effect of the default case in a typical per-key configuration making use of a switch(keycode) statement.
To illustrate, let's take the example of a configuration where we'd want all mod-taps to activate the modifier if another key is pressed while held with the exception of LCTL_T(KC_A), which should ignore keys pressed while it is held and activate the modifier only if it has been held for longer than the tapping term. In addition, we would like to keep the default "ignore-interrupt" behavior of layer taps.
An old way to do this would be via the following code:
TAPPING_FORCE_HOLD feature is now replaced by QUICK_TAP_TERM. Instead of turning off auto-repeat completely, user will have the option to configure a QUICK_TAP_TERM in milliseconds. When the user holds a tap-hold key after tapping it within QUICK_TAP_TERM, QMK will send the tap keycode to the host, enabling auto-repeat.
Its value is set to TAPPING_TERM by default and it can be reduced to match typing habits to avoid false triggers. To disable auto-repeat completely, set QUICK_TAP_TERM to zero.
TAPPING_FORCE_HOLD_PER_KEY is also deprecated and replaced by QUICK_TAP_TERM_PER_KEY. The old granular control function for tapping force hold is:
The Leader Key feature API has been significantly improved, along with some bugfixes and added tests.
Instead of defining your leader sequences in matrix_scan_user(), they are now handled in the leader_end_user() callback, and the LEADER_EXTERNS()/LEADER_DICTIONARY() macros are no longer needed:
c
void leader_end_user(void) {
+ if (leader_sequence_one_key(KC_F)) {
+ // Leader, f => Types the below string
+ SEND_STRING("QMK is awesome.");
+ } else if (leader_sequence_two_keys(KC_D, KC_D)) {
+ // Leader, d, d => Ctrl+A, Ctrl+C
+ SEND_STRING(SS_LCTL("a") SS_LCTL("c"));
+ } else if (leader_sequence_three_keys(KC_D, KC_D, KC_S)) {
+ // Leader, d, d, s => Types the below string
+ SEND_STRING("https://start.duckduckgo.com\n");
+ } else if (leader_sequence_two_keys(KC_A, KC_S)) {
+ // Leader, a, s => GUI+S
+ tap_code16(LGUI(KC_S));
+ }
+}
As per last breaking changes cycle, there has been a lot of emphasis on behind-the-scenes changes, mainly around consolidation of core subsystems and constant values, as well as addressing tech debt. Whilst not outwardly visible, this cleanup and refactoring should start paying dividends as it simplifies future development and maintenance.
A handful of examples:
Standardised the lower/raise/adjust layer change pattern with explicit keycodes and configurable target layers
Cleaned up a lot of Makefile logic to simplify and speed up builds
Automated tooling to regenerate keycode values has been hooked into the PR pipeline and will trigger failures if they're incorrect
Many more configuration options have moved into info.json, such as backlight, encoders
Additional unit tests to ensure keycode behaviours don't accidentally change
As per last breaking changes cycle, there has been a lot of emphasis on behind-the-scenes changes, mainly around migration of configurables into info.json files, cleanup of info.json files, additional layout definitions for keyboards, adding support for general community layouts to keyboards, as well as addressing technical debt.
Of note for keyboard designers:
Layout and matrix definitions in info.json are now mandatory for merge into QMK.
Layout macros in <yourkeyboard>.h are no longer accepted into QMK Firmware.
Existing keyboards have been meticulously converted by the QMK collaborators
Layouts missing from keyboard definitions have been added in the process
Keys within layouts should not specify "w":1 or "h":1 if the key size is 1 -- w/h should only be present for sizes other than 1
config_common.h has been removed and should not be present anywhere in your keyboard code.
RGB_DI_PIN will now cause an error during build:
For WS2812-like LEDs, this should be moved to info.json: "ws2812": { "pin": "xxx" }
For APA102 LEDs, this should be moved to info.json: "apa102": { "data_pin": "xxx" }
Other mandatory data-driven changes should be automatically flagged during build
Keymaps with encoder_map should now have the following change made:
A new pair of keys has been added to QMK -- namely QK_REPEAT_KEY and QK_ALT_REPEAT_KEY (shortened: QK_REP/QK_AREP). These allow you to repeat the last key pressed, or in the case of the alternate key, press the "opposite" of the last key. For example, if you press KC_LEFT, pressing QK_REPEAT_KEY afterwards repeats KC_LEFT, but pressing QK_ALT_REPEAT_KEY instead sends KC_RIGHT.
The full list of default alternate keys is available on the Repeat Key documentation.
To enable these keys, in your keymap's rules.mk, add:
Two new boolean callback functions, pre_process_record_kb and pre_process_record_user, have been added. They are called at the beginning of process_record, right before process_combo.
Similar to existing *_kb and *_user callback functions, returning false will halt further processing of key events. The pre_process_record_user function will allow user space opportunity to handle or capture an input before it undergoes quantum processing. For example, while action tapping is still resolving the tap or hold output of a mod-tap key, pre_process_record_user can capture the next key record of an input event that follows. That key record can be used to influence the decision of the mod-tap key that is currently undergoing quantum processing.
Several build targets for the IBM Model M were cluttered in different folders. The maintainers of several Model M replacement controller projects agreed to consolidate them under one common folder.
The list of all moved keyboard locations is listed below.
Following up from the last breaking changes cycle, IGNORE_MOD_TAP_INTERRUPT has been removed and if present in keymap code, will now fail to build. The previous functionality for IGNORE_MOD_TAP_INTERRUPT is now default, and should you wish to revert to the old behaviour, you can use HOLD_ON_OTHER_KEY_PRESS instead.
For keyboards who have not yet been migrated to encoder map, a default set of encoder functionality is now enabled, gracefully degrading functionality depending on which flags are enabled by the keyboard:
If EXTRAKEY_ENABLE is enabled by the keyboard, the encoder will be mapped to KC_VOLU/KC_VOLD
If MOUSEKEY_ENABLE is enabled by the keyboard, the encoder will be mapped to KC_MS_WH_UP/KC_MS_WH_DOWN
Otherwise, KC_PGDN/KC_PGUP will be used
Additionally, this ensures that builds on QMK Configurator produce some sort of usable encoder mapping.
As per last few breaking changes cycles, there have been a lot of behind-the-scenes changes, mainly around migration of configurables into info.json files, cleanup of info.json files, additional layout definitions for keyboards, adding support for general community layouts to keyboards, as well as addressing technical debt.
One thing to note for this release -- qmk/qmk_firmware is no longer accepting PRs for keymaps other than for manufacturer-supported keymaps. User keymap workflow has been documented here for several years. This change is to progressively reduce the maintenance burden on the project, and to allow us to focus on the core features of QMK.
Existing user keymaps and userspace areas will likely be relocated/removed in the future -- non-building keymaps and userspace will be first targets, likely during the new breaking changes cycle. We will provide more information on Discord regarding this initiative as it becomes available.
Most RGB Matrix implementations now check whether or not RGB LED data has changed and skip transmission if it hasn't. This was measured to improve scan frequency in cases of static or infrequently-changing colors.
Some audio code relating to "notes" used double datatypes, which are implemented in software floating-point for most ARM microcontrollers. This has been changed to use float datatypes instead, which are implemented in hardware floating-point on most ARM microcontrollers. This change increases performance as well as reduces the firmware size by significant number of bytes.
AVR sees minimal (if any) benefit -- double was interpreted as float on AVR anyway.
Some keyboards "hacked" encoder support into spare slots in the key matrix in order to interoperate with VIA. This workaround is no longer necessary, and the code has been removed. If you have a keyboard that uses this workaround, you will need to update your keymap to use the new Encoder Map API instead.
Old OLED code using ssd1306.cssd1306.h, and SSD1306OLED and other similar files have been consolidated to use the standard OLED driver. External user keymaps will need to be updated to use the standard OLED driver accordingly.
In most circumstances this won't affect users -- only keyboard designers with currently-unmerged boards. The only users affected are people who have modified existing keyboards in order to add/modify haptics, lighting, or bluetooth -- and only if the base keyboard did not configure them already. Driver naming has been modified to be lowercase.
RGBLight (RGBLIGHT_DRIVER / rgblight.driver):
Old
New
WS2812
ws2812
APA102
apa102
LED Matrix (LED_MATRIX_DRIVER / led_matrix.driver):
As per last few breaking changes cycles, there have been a lot of behind-the-scenes changes, mainly around consolidation of config into info.json files, cleanup of info.json files, cleaning up driver naming, as well as addressing technical debt.
As a followup to last cycle's notable changes, as qmk/qmk_firmware is no longer accepting PRs for keymaps we're pleased to announce that storing and building keymaps externally from the normal QMK Firmware repository is now possible. This is done through the new External Userspace feature, more details below!
As mentioned above, the new External Userspace feature allows for keymaps to be stored and built externally from the main QMK Firmware repository. This allows for keymaps to be stored separately -- usually in their own repository -- and for users to be able to maintain and build their keymaps without needing to fork the main QMK Firmware repository.
A significant portion of user keymaps have already been removed from qmk/qmk_firmware and more will follow in coming weeks. You can still recover your keymap from the tag user-keymaps-still-present if required -- a perfect time to migrate to the new External Userspace!
WARNING
This feature is still in beta, and we're looking for feedback on it. Please try it out and let us know what you think -- a new #help-userspace channel has been set up on Discord.
Shutdown callbacks at the keyboard level were never present, preventing safe shutdown sequencing for peripherals such as OLEDs, RGB LEDs, and other devices. This PR adds a new shutdown_kb function, as well as amending shutdown_user, allowing for safe shutdown of peripherals at both keyboard and keymap level.
Along with the new shutdown_kb function, a new API oled_render_dirty(bool) function has been added. This allows OLED contents to be written deterministically when supplied with true -- that is, the OLED will be updated immediately, rather than waiting for the next OLED update cycle. This allows for OLEDs to show things such as "BOOTLOADER MODE" and the like if resetting to bootloader from QMK.
Switch statement helpers for keycode ranges (#20059)
Predefined ranges usable within switch statements have been added for groups of similar keycodes, where people who wish to handle entire blocks at once can do so. This allows keymaps to be immune to changes in keycode values, and also allows for more efficient code generation.
Quantum Painter has picked up support for SH1106 displays -- commonly seen as 128x64 OLEDs. Support for both I2C and SPI displays is available.
If you're already using OLED through OLED_DRIVER_ENABLE = yes or equivalent in info.json and wish to use Quantum Painter instead, you'll need to disable the old OLED system, instead enabling Quantum Painter as well as enabling the appropriate SH1106 driver. See the Quantum Painter driver documentation for more details. The old OLED driver is still available, and keymaps do not require migrating to Quantum Painter if you don't want to do so.
As you can probably tell by the list of PRs just above, there has been a lot of cleanup and consolidation this cycle when it comes to RGB/LED lighting drivers. The number of changes is too large to list here, but the general theme has been focusing on consistency of naming, both of drivers themselves and their respective implementation and configuration. Most changes only affect keyboard designers -- if you find that your in-development keyboard is no longer building due to naming of defines changing, your best bet is to refer to another board already in the repository which has had the changes applied.
When enabling peripherals such as I2C, SPI, or Analog/ADC, some required manual inclusion of source files in order to provide driver support, and in some cases, when multiple drivers were using the same underlying peripheral, files were being added to the build multiple times.
Most systems requiring other peripherals now mark their respective dependencies as "required", allowing the build system to check whether peripherals are necessary before including them in the build rather than having each location enable them manually.
For a concrete example, users or keyboard designers who previously added SRC += analog.c in order to allow for analog readings via an ADC now should specify ANALOG_DRIVER_REQUIRED = yes instead. The full list of added options is as follows:
New option
Old Equivalent
ANALOG_DRIVER_REQUIRED = yes
SRC += analog.c
APA102_DRIVER_REQUIRED = yes
SRC += apa102.c
I2C_DRIVER_REQUIRED = yes
SRC += i2c_master.c or QUANTUM_LIB_SRC += i2c_master.c
SPI_DRIVER_REQUIRED = yes
SRC += spi_master.c or QUANTUM_LIB_SRC += spi_master.c
NKRO is now available for ATmega32A and 328P-based keyboards (including PS2AVRGB/Bootmapper boards), thanks to some internal refactoring and cleanup. To enable it, the process is the same as always - add NKRO_ENABLE = yes to your rules.mk, then assign and press the NK_TOGG keycode to switch modes.
0.24.0 is mainly a maintenance release of QMK Firmware -- as per last few breaking changes cycles, there have been a lot of behind-the-scenes changes, mainly:
continued purge of user keymaps
migration of RGB matrix configuration into info.json files
Flashing keyboards that target atmel-dfu or qmk-dfu on Windows using qmk flash or QMK Toolbox have traditionally used libusb for access to the DFU USB device. Since QMK Toolbox 0.3.0, this has changed to WinUSB.
If you update QMK Toolbox or update QMK MSYS, you may find that flashing Atmel DFU keyboards no longer functions as intended. If you strike such issues when flashing new firmware, you will need to replace the libusb driver with WinUSB using Zadig. You can follow the Recovering from Installation to Wrong Device instructions to replace the driver associated with the Atmel DFU bootloader, skipping the section about removal as Zadig will safely replace the driver instead. Please ensure your keyboard is in bootloader mode and has libusb as the existing driver before attempting to use Zadig to replace the driver. If instead you see HidUsb you're not in bootloader mode and should not continue with driver replacement.
One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.
QMK has long used Arduino-style GPIO naming conventions. This has been confusing for users, as over time they've had new variations added, as well as users mistakenly thinking that QMK supports the rest of the Arduino ecosystem.
The decision was made to rename the GPIO manipulation functions with ones matching QMK Firmware's code styling.
Much like the GPIO refactoring, I2C APIs were also updated to conform to QMK naming standards. This is largely irrelevant to people using subsystem abstractions such as touchpads or RGB lighting, and only affects people manually communicating with other peripherals.
Old API
New API
i2c_readReg()
i2c_read_register()
i2c_readReg16()
i2c_read_register16()
i2c_writeReg()
i2c_write_register()
i2c_writeReg16()
i2c_write_register16()
Renaming Bootmagic Lite => Bootmagic (#22970, #22979)
Bootmagic "Lite" had no real meaning once the historical Bootmagic "Full" was deprecated and removed. Any references to Bootmagic Lite should now just refer to Bootmagic. We hope we got the majority of the code and the documentation, so if you find any more, let us know!
Threshold for automatic mouse layer activation (#21398)
In some cases, accidental automatic activation of the mouse layer made it difficult to continue typing, such as when brushing across a trackball. AUTO_MOUSE_THRESHOLD is now a configurable option in config.h which allows for specifying what the movement threshold is before automatically activating the mouse layer.
Much like Encoder Mapping, DIP Switch Mapping allows for specifying a table of actions to execute when a DIP switch state changes. See the DIP Switch Documentation for more information.
Quantum Painter picked up support for the following:
ILI9486 displays
SSD1306 displays, including smaller OLEDs
Native panel pixel format support for fonts
Quantum Painter now supports the majority of common OLED panels supported by the basic OLED driver, so if you're using an ARM-based board you may find Quantum Painter a much more feature-rich API in comparison.
May 2024 brings about another heavy maintenance release of QMK. Of the 209 PRs created this breaking changes cycle against the develop branch, 174 behind-the-scenes PRs (83%!) were aimed at converting, consolidating, and cleaning up keyboards and their configuration data. Not the most glamorous work, but it means QMK is in a much more manageable spot than what it was 3 months prior. The work steadily continues!
One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.
A bunch of legacy keycodes have been removed -- check the affected keycodes if you run into compilation problems, as it'll show you what the problematic keycodes should be replaced with.
The latest of these were officially deprecated within QMK in the August 2023 breaking changes -- the new keycodes are the way forward.
This PR removed the LAYOUT macro that was configured for the Spacey. If you have a keymap for this keyboard, you will need to update your keymap using the following steps:
Change your layout macro to LAYOUT_all.
Remove the two KC_NO keycodes following the Space and Delete keys on the bottom row.
Move the keycode for the encoder pushbutton (customarily Mute) to the end of the top row, after the customary Backspace key.
Move the keycode for the Right Arrow to the end of the Shift row, after the Down Arrow key.
This PR removed and changed some of the layouts that were configured for the ACR60. If you use one of the following layouts, you will need to update your keymap:
Change your layout macro to LAYOUT_60_ansi_arrow_split_bs.
Remove any keycodes for the key between Left Shift and QWERTY Z.
Remove any keycodes for the keys immediately before and after the 1.25u key of Split Spacebar.
If you need split spacebars, you may implement LAYOUT_60_ansi_arrow_split_space_split_bs and change your layout to it, removing the keycode between Left Shift and QWERTY Z.
One longer term goal of QMK is increased maintainability. As part of the continued push towards Data Driven Configuration, the build system has been updated to simplify the existing codebase, and power future workflows.
The keyboard.json configuration file allows the support of a single data file for keyboard level config.
Additionally,
info.json now represents potential fragments of config that can be shared across keyboard revisions.
rules.mk is now optional - Completely blank files are no longer required.
Currently supported keyboards have been migrated to reflect this change.
Backwards compatibility of the old system has been maintained, but will be removed in a future breaking changes cycle.
Refactor ChibiOS USB endpoints to be fully async (#21656)
For most users, this change will mean suspend and resume on ARM-based boards works correctly. Others will notice that their keyboard now works correctly in BIOS/UEFI.
Essentially, changes were made in the internals of how QMK interacts with USB for ARM-based devices. Before this change, whenever a packet was attempted to be sent from the keyboard to the host machine, QMK would wait for the transmission to complete. After this change, those packets are queued and sent when opportune; this results in much better "correctness" as far as the USB protocol is concerned, and means far less likelihood of failure scenarios such as "stuck keys" or "random lockups" and the like.
Compliance checks were run against QMK firmwares for the most popular ARM microcontrollers, as well as suspend/resume tests. As far as we can tell, a whole host of hard-to-reproduce issues are mitigated by this change.
The QMK team has been in discussion with the VIA maintainers and all VIA-related keymaps in the qmk_firmware repository will transition to a qmk_userspace-style repository under the VIA team's control at the end of the next breaking changes period. This allows the VIA team to support many more custom keyboard configurations, as well as reduces the turnaround time for any changes to the VIA protocol they wish to make.
At the end of the breaking changes cycle ending 2024-08-25, VIA-enabled keymaps will no longer be accepted into the QMK repository. At the time of migration, any open PRs against qmk_firmware which include new VIA-related keymaps will be subsequently be asked to remove those keymaps and instead raise a PR against the userspace repository containing all VIA keymaps.
August 2024 brings another maintenance release of QMK. Almost all PRs this cycle were to do with cleanup or re-organization of existing features and code.
One key item is that there are no longer any via-enabled keymaps in the QMK repository -- these have all transitioned to an External Userspace repository under the VIA team's control. Going forward, all PRs to qmk_firmware must not contain via keymaps; these should instead be redirected to the VIA QMK Userspace repository.
One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.
Old Keyboard Name
New Keyboard Name
dnworks/9973
dnworks/tkl87
maple_computing/lets_split_eh/eh
maple_computing/lets_split_eh
planck/ez/base
zsa/planck_ez/base
SparkFun Pro Micro RP2040 converter renamed (#24192)
The converter for the SparkFun Pro Micro RP2040 has been renamed.
Old
New
promicro_rp2040
sparkfun_rp2040
This change was made to avoid confusion between the clones named ProMicro RP2040 and the SparkFun Pro Micro RP2040. The clones should be using the rp2040_ce option.
Changes were made to key overrides in order to hook them into the keymap introspection system.
If you're using key overrides, your keymap.c will need a change to the signature of your list of key overrides, as well as removing the NULL terminator.
For example, you'll need to change existing code from (note the highlighted lines):
ADNS9800 and PMW33xx firmware upload now opt-in (#24001)
Due to ambiguity with licensing compatibility, QMK has made the firmware ROM uploads for the ADNS9800 and PMW33xx lines of pointing device sensors temporarily opt-in with the view to removing them. Historically they were included by default, but as of this PR this is now no longer the case.
Please get in touch with the QMK team if your sensor no longer functions without the firmware upload -- so far we've tested each device type and they still seem to function without a new firmware, but this has not been a 100% exhaustive validation.
To re-enable firmware upload for your own builds, add the following to your keymap's config.h:
Sensor
Define
ADNS9800
#define ADNS9800_UPLOAD_SROM
PMW33xx
#define PMW33XX_UPLOAD_SROM
Note
If no issues arise during this current breaking changes cycle, these sensor firmware ROMs will be removed from QMK entirely.
Last breaking changes cycle, the QMK team informed that via keymaps are moving to the control of the VIA team. As of this merge, any via-enabled keymaps should now be PR'ed to the VIA QMK Userspace repository.
Any existing or newly-opened PRs against qmk_firmware will now be asked to remove any via-enabled keymaps from their submissions.
ADNS9800 and PMW33xx sensor firmware ROM removal
As mentioned above, there's license compatibility issues between QMK and the firmware blobs historically uploaded for the ADNS9800 and PMW33xx sensors. This notice is to inform users that these firmware blobs will almost certainly be removed from QMK in the next breaking changes merge.
As previously noted this does not seem to have any detrimental effect to any of those devices, as they seem to include firmware on-chip without requiring one to be uploaded. Please get in touch with the QMK team on Discord if your sensor is no longer functional.
This page lays out the capabilities used by the QMK Firmware documentation, in order to aid future transitions to other page generators. Focuses mainly on things other than normal Markdown, as it's assumed that markdown generators should still function accordingly.
Click File > New > Makefile Project with Existing Code
Click File > Preferences > > Settings
Hit Ctrl-` (Grave) to bring up the terminal or go to View > Terminal (command workbench.action.terminal.toggleTerminal). A new terminal will be opened if there isn‘t one already.
This should start the terminal in the workspace's folder (so the qmk_firmware folder), and then you can compile your keyboard.
This page attempts to introduce developers to the QMK Compiler. It does not go into nitty gritty details- for that you should read code. What this will give you is a framework to hang your understanding on as you read the code.
The QMK Compile API consists of a few movings parts:
API Clients interact exclusively with the API service. This is where they submit jobs, check status, and download results. The API service inserts compile jobs into Redis Queue and checks both RQ and S3 for the results of those jobs.
Workers fetch new compile jobs from RQ, compile them, and then upload the source and the binary to an S3 compatible storage engine.
This is the main entrypoint for the API. A client's interaction starts here. The client POST's a JSON document describing their keyboard, and the API does some (very) basic validation of that JSON before submitting the compile job.
This is the most frequently called endpoint. It pulls the job details from redis, if they're still available, or the cached job details on S3 if they're not.
This service is an asynchronous API for compiling custom keymaps. You POST some JSON to the API, periodically check the status, and when your firmware has finished compiling you can download the resulting firmware and (if desired) source code for that firmware.
As you can see the payload describes all aspects of a keyboard necessary to create and generate a firmware. Each layer is a single list of QMK keycodes the same length as the keyboard's LAYOUT macro. If a keyboard supports multiple LAYOUT macros you can specify which macro to use.
To compile your keymap into a firmware simply POST your JSON to the /v1/compile endpoint. In the following example we've placed the JSON payload into a file named json_data.
If you're writing a tool that leverages constants used within QMK, the API is used to publish "locked-in" versions of those constants in order to ensure that any third-party tooling has a canonical set of information to work with.
The list of available constants can be retrieved by accessing one of the following endpoints:
Versions exported by the master endpoint are locked-in. Any extra versions that exist on the develop endpoint which don't exist in master are subject to change.
TIP
Only keycodes are currently published, but over time all other "externally visible" IDs are expected to appear on these endpoints.
To retrieve the constants associated with a subsystem, the endpoint format is as follows:
The QMK API provides an asynchronous API that Web and GUI tools can use to compile arbitrary keymaps for any keyboard supported by QMK. The stock keymap template supports all QMK keycodes that do not require supporting C code. Keyboard maintainers can supply their own custom templates to enable more functionality.
This page describes how to setup debugging for ARM MCUs using an SWD adapter and open-source/free tools. In this guide we will install GNU MCU Eclipse IDE for C/C++ Developers and OpenOCD together with all the necessary dependencies.
This guide is catered towards advance users and assumes you can compile an ARM compatible keyboard on your machine using the MAKE flow.
The main objective here is to get the MCU Eclipse IDE correctly installed on our machine. The necessary instructions are derived from this install guide.
This tool is a software package manager and it is used to help us get the necessary dependencies.
XPM runs using Node.js so grab that from here. After installation, open a terminal and type npm -v. A reply with the version number means that the installation was successful.
XPM installation instructions can be found here and are OS specific. Entering xpm --version to your terminal should return the software version.
Now it's time to install your programmer's drivers. This tutorial was made using an ST-Link v2 which you can get from almost anywhere. If you have an ST-Link the drivers can be found here otherwise consult the manufacturer of your tool.
Open up the Eclipse IDE we just downloaded. To import our QMK directory select File -> Import -> C/C++ -> Existing Code as Makefile Project. Select Next and use Browse to select your QMK folder. In the tool-chain list select ARM Cross GCC and select Finish.
Now you can see the QMK folder on the left hand side. Right click it and select Properties. On the left hand side, expand MCU and select ARM Toolchains Paths. Press xPack and OK. Repeat for OpenOCD Path and if you are on Windows for Build Tools Path. Select Apply and Close.
Now its time to install the necessary MCU packages. Go to Packs perspective by selecting Window -> Perspective -> Open Perspective -> Other... -> Packs. Now select the yellow refresh symbol next to the Packs tab. This will take a long time as it is requesting the MCU definitions from various places. If some of the links fail you can probably select Ignore.
When this finishes you must find the MCU which we will be building/debugging for. In this example I will be using the STM32F3 series MCUs. On the left, select STMicroelectronics -> STM32F3 Series. On the middle window we can see the pack. Right click and select Install. Once that is done we can go back to the default perspective, Window -> Perspective -> Open Perspective -> Other... -> C/C++.
We need to let eclipse know the device we intent to build QMK on. Right click on the QMK folder -> Properties -> C/C++ Build -> Settings. Select the Devices tab and under Devices select the appropriate variant of your MCU. For my example it is STM32F303CC
While we are here let's setup the build command as well. Select C/C++ Build and then the Behavior tab. On the Build command, replace all with your necessary make command. For example for a rev6 Planck with the default keymap this would be planck/rev6:default. Select Apply and Close.
ARM MCUs use the Single Wire Debug (SWD) protocol which comprises of the clock (SWCLK) signal and the data (SWDIO) signal. Connecting this two wires and ground should be enough to allow full manipulation of the MCU. Here we assume that the keyboard will be powered though USB. The RESET signal is not necessary as we can manually assert it using the reset button. For a more advance setup, the SWO signal can be used which pipes printf and scanf asynchronously to the host but for our setup we will ignore it.
NOTE: Make sure the SWCLK and SWDIO pins are not used in the matrix of your keyboard. If they are you can temporarily switch them for some other pins.
Right click on your QMK folder, select Debug As -> Debug Configurations... . Here double click on GDB OpenOCD Debugging. Select the Debugger tab and enter the configuration necessary for your MCU. This might take some fiddling and Googling to find out. The default script for the STM32F3 is called stm32f3discovery.cfg. To let OpenOCD know, in the Config options enter -f board/stm32f3discovery.cfg.
NOTE: In my case this configuration script requires editing to disable the reset assertion. The locations of the scripts can be found in the actual executable field usually under the path openocd/version/.content/scripts/board. Here I edited reset_config srst_only to reset_config none.
Press the bug icon and if all goes well you should soon find yourself in the Debug perspective. Here the program counter will pause at the beginning of the main function and wait for you to press Play. Most of the features of all debuggers work on Arm MCUs but for exact details Google is your friend!
Happy debugging!
+
+
+
+
\ No newline at end of file
diff --git a/assets/ChangeLog_20190830.md.Bivr4BOW.js b/assets/ChangeLog_20190830.md.Bivr4BOW.js
new file mode 100644
index 0000000..9d9e2e8
--- /dev/null
+++ b/assets/ChangeLog_20190830.md.Bivr4BOW.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2019 Aug 30","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20190830.md","filePath":"ChangeLog/20190830.md"}');
+const _sfc_main = { name: "ChangeLog/20190830.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
This document marks the inaugural Breaking Change merge. A list of changes follows.
Duplicate include guards have bypassed the expected header processing behavior
All keymaps affected are recommended to remove duplication of <keyboard>/config.h to <keyboard>/keymaps/<user>/config.h and only provide overrides at the keymap level
Backport changes to keymap language files from ZSA fork
Fixes an issue in the keymap_br_abnt2.h file that includes the wrong source (keymap_common.h instead of keymap.h)
Updates the keymap_swedish.h file to be specific to swedish, and not just "nordic" in general.
Any keymaps using this will need to remove NO_* and replace it with SE_*.
This should allow more flexibility with LUFA, and allow us to keep the sub-module up to date, a lot more easily. It was ~2 years out of date with no easy path to fix that. This prevents that from being an issue in the future
Migrating ACTION_BACKLIGHT_*() entries in fn_actions to BL_ keycodes
fn_actions is deprecated, and its functionality has been superseded by direct keycodes and process_record_user()
All keymaps using these actions have had the relevant KC_FN* keys replaced with the equivalent BL_* keys
If you currently use KC_FN* you will need to replace fn_actions with the custom keycode and macro features
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
A make git-submodule may be required after pulling the latest QMK firmware code to update affected submodules to the upgraded revisions
Enabling link-time-optimization (LINK_TIME_OPTIMIZATION_ENABLE = yes) should work on a lot more boards
Upgrade to ChibiOS ver19.1.3
This will allow QMK to update to upstream ChibiOS a lot easier -- the old version was ~2 years out of date. Automated update scripts have been made available to simplify future upgrades.
Includes improved MCU support and bugfixes
ChibiOS revision is now included in Command output
Timers should now be more accurate
Upgrade to newer ChibiOS-Contrib
Also includes improved MCU support and bugfixes
ChibiOS-Contrib revision is now included in Command output
Upgrade to newer uGFX
Required in order to support updated ChibiOS
Fix ChibiOS timer overflow for 16-bit SysTick devices
On 16-bit SysTick devices, the timer subsystem in QMK was incorrectly dealing with overflow.
When running at a 100000 SysTick frequency (possible on 16-bit devices, but uncommon), this overflow would occur after 0.65 seconds.
Timers are now correctly handling this overflow case and timing should now be correct on ChibiOS/ARM.
Flips the encoder direction so that clockwise == true is for actually turning the knob clockwise
Adds ENCODER_DIRECTION_FLIP define, so that reversing the expected dirction is simple for users.
Cleans up documentation page for encoders
Adding support for BACKLIGHT_ON_STATE for hardware PWM backlight
Previously, the define only affected software PWM, and hardware PWM always assumed an N-channel MOSFET.
The hardware PWM backlight setup has been updated to respect this option.
The default "on" state has been changed to 1 - this impacts all keyboards using software PWM backlight that do not define it explicitly. If your keyboard's backlight is acting strange, it may have a P-channel MOSFET, and will need to have #define BACKLIGHT_ON_STATE 0 added to the keyboard-level config.h. Please see the PR for more detailed information.
Migrating ACTION_LAYER_TAP_KEY() entries in fn_actions to LT() keycodes
fn_actions is deprecated, and its functionality has been superseded by direct keycodes and process_record_user()
The end result of removing this obsolete feature should result in a decent reduction in firmware size and code complexity
All keymaps affected are recommended to switch away from fn_actions in favour of the custom keycode and macro features
Moving backlight keycode handling to process_keycode/
This refactors the backlight keycode logic to be clearer and more modular.
All backlight-related keycodes are now actioned in a single file.
The ACTION_BACKLIGHT_* macros have also been deleted. If you are still using these in a fn_actions[] block, please switch to using the backlight keycodes or functions directly.
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
These PRs move the V-USB driver code out of the qmk_firmware repository and into a submodule pointed at https://github.com/obdev/v-usb. This will make it easier to update the codebase if needed, while applying any potential QMK-specific modifications by forking it to the QMK GitHub organization.
This is the last release of QMK that will work without having Python 3.6 (or later) installed. If your environment is not fully setup you will get a warning instructing you to set it up.
After the next breaking change you will not be able to build if bin/qmk hello does not work.
Changes RGB_DISABLE_AFTER_TIMEOUT to be based on milliseconds instead of ticks.
Includes a code cleanup, resulting in a savings of 100 bytes, depending on features used.
Fixed issues with timeouts / suspending at the wrong time not turning off all LEDs in some cases.
The RGB_DISABLE_AFTER_TIMEOUT definition is now deprecated, and has been superseded by RGB_DISABLE_TIMEOUT. To use the new definition, rename RGB_DISABLE_AFTER_TIMEOUT to RGB_DISABLE_TIMEOUT in your config.h file, and multiply the value set by 1200.
audio_avr.c does not default to any pin; there has to be a #define XX_AUDIO in config.h at some level for Audio to actually work. Otherwise, the Audio code ends up cluttering the firmware, possibly breaking builds because the maximum allowed firmware size is exceeded.
These changes fix this by disabling Audio on keyboards that have the feature misconfigured, and therefore non-functional.
Also, add a compile-time error to alert the user to a missing pin-configuration (on AVR boards) when AUDIO_ENABLE = yes is set.
Modifies the default firmware for Lily58 to use the split_common library, instead of including and depending on its own set of libraries for the following functionality:
SSD1306 display
i2c for OLED
Serial Communication
This allows current lily58 firmware to advance with updates to the split_common library, which is shared with many other split keyboards.
Find/Replace each instance of #ifdef SSD1306OLED with #ifdef OLED_DRIVER_ENABLE
The following changes are for compatibility with the OLED driver. If you don't use the OLED driver you may safely delete this section
Alternatively, if you did not change the OLED code from that in default, you may find it easier to simply copy the relevant section. Otherwise, the changes you need to make are as follows (sample change here)
#ifdef SSD1306OLED\n iota_gfx_init(!has_usb()); // turns on the display \n#endif
Within the block bounded by #ifdef OLED_DRIVER_ENABLE and #endif // OLED_DRIVER_ENABLE, add the following block to ensure that your two OLEDs are rotated correctly across the left and right sides:
c
oled_rotation_t oled_init_user(oled_rotation_t rotation) {\n if (!is_keyboard_master())\n return OLED_ROTATION_180; // flips the display 180 degrees if offhand\n return rotation;\n}
Remove the functions matrix_scan_user, matrix_update and iota_gfx_task_user
Find/Replace matrix_render_user(struct CharacterMatrix *matrix) with iota_gfx_task_user(void)
Find/Replace is_master with is_keyboard_master()
For each instance of matrix_write_ln(matrix, display_fn()), rewrite it as oled_write_ln(read_layer_state(), false);
For each instance of matrix_write(matrix, read_logo());, replace with oled_write(read_logo(), false);
Modifies the default firmware for TKC1800 to use the in-built I2C and OLED drivers, instead of including and depending on its own set of libraries for the following functionality:
SSD1306 display
i2c for OLED
This allows current TKC1800 firmware to advance with updates to those drivers, which are shared with other keyboards.
#ifdef SSD1306OLED\n iota_gfx_init(!has_usb()); // turns on the display \n#endif
Within the block bounded by #ifdef OLED_DRIVER_ENABLE and #endif // OLED_DRIVER_ENABLE, add the following block to ensure that your two OLEDs are rotated correctly across the left and right sides:
c
oled_rotation_t oled_init_user(oled_rotation_t rotation) {\n if (!is_keyboard_master())\n return OLED_ROTATION_180; // flips the display 180 degrees if offhand\n return rotation;\n}
Remove the function iota_gfx_task_user
Split HHKB to ANSI and JP layouts and Add VIA support for each
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
relocating boards by flehrad to flehrad/ folder (#9635)
Keyboards released by The Key Company and keyboards designed by flehrad have moved to vendor folders. If you own any of the keyboards listed below, please use the new names to compile your firmware moving forward.
This pull request changes the configuration for Keebio split boards to use the same RGB strip wiring for each half, which provides the following improvements:
Easier wiring due to one fewer wire needed (the wire between left DOut to extra data pin) and the fact that wiring is the same for both halves.
RGB LEDs can be controlled by each half now instead of just master half.
Extra data line is freed up to allow for I2C usage instead of serial.
If you have customized the value of RGBLED_SPLIT for your keymap, you will need to undefine it using #undef RGBLED_SPLIT before defining it to your customized value.
allow for WS2812 PWM to work on DMAMUX-capable devices (#9471)
Newer STM32 MCUs have a DMAMUX peripheral, which allows mapping of DMAs to different DMA streams, rather than hard-defining the target streams in silicon.
Affects STM32L4+ devices, as well as the soon-to-be-supported-by-QMK STM32G4/H7 families.
Tested on F303/Proton C (ChibiOS v19, non-DMAMUX), G474 (ChibiOS v20, with DMAMUX).
dual-bank STM32 bootloader support (#8778 and #9738)
Adds support for STM32 dual-bank flash bootloaders, by toggling a GPIO during early init in order to charge an RC circuit attached to BOOT0.
The main rationale behind this is that dual-bank STM32 devices unconditionally execute user-mode code, regardless of whether or not the user-mode code jumps to the bootloader. If either flash bank is valid (and BOOT0 is low), then the built-in bootloader will skip any sort of DFU.
This PR allows for the initialisation sequencing to charge the RC circuit based on the example circuit posted on Discord, effectively pulling BOOT0 high before issuing the system reset. As the RC circuit takes a while to discharge, the system reset executes the ROM bootloader which subsequently sees BOOT0 high, and starts executing the DFU routines.
Tested with STM32L082 (with current QMK+current ChibiOS), and STM32G474 (against ChibiOS 20.x).
update Space Cadet and Tap Dance features to use Custom Tapping Term when appropriate (#6259)
For the Tap Dance feature, this completely removes the need for the ACTION_TAP_DANCE_FN_ADVANCED_TIME dance.
This implements a joystick feature, including a joystick_task function called from TMK, specific keycodes for joystick buttons and a USB HID interface.
Tested on V-USB backend and Proton C; compiles but untested on LUFA.
In order to test, you have to add JOYSTICK_ENABLE = yes to your rules.mk and
work begun for consolidation of ChibiOS platform files (#8327 and #9315)
Start of the consolidation work to move the ChibiOS board definitions as well as the default set of configuration files for existing board definitions used by keyboards.
Uses /platforms/chibios as previously discussed on discord.
Consolidates the Proton C configs into the generic F303 definitions.
Allows for defining a default set of chconf.h, halconf.h, and mcuconf.h files within the platform definition, which is able to be overridden by the keyboard directly, though include path ordering.
Adds template chconf.h, halconf.h, mcuconf.h, and board.h that can be dropped into a keyboard directory, in order to override rather than replace the entire contents of the respective files.
Removed Proton C QMK board definitions, falling back to ChibiOS board definitions with QMK overrides.
Renamed keyboard_led_stats in lufa.c and ChibiOS usb_main.c to keyboard_led_state, as well as vusb_keyboard_leds, for consistency
Formatted CDC and MIDI descriptors better
Removed ENDPOINT_CONFIG macro, it seems pointless and removes the need for endpoint address defines in the middle of the endpoint numbering enum
Fixed (possibly?) V-USB GET_REPORT request handling. Not sure about this one, but the existing code appears to always return an empty report - now send_keyboard sets this variable to the current report, matching what the LUFA code does.
converted CONSUMER2BLUEFRUIT() and CONSUMER2RN42() macros to static inline functions (#9055)
Removing the UART stuff entirely, now that we have Console support. Also fixing up various other things; switching some debug() calls to dprintf(), moved raw_hid_report out of the way so that we can implement the shared endpoint stuff.
removed inclusion of adafruit_ble.h from ssd1306.c (#9355)
outputselect.c is no longer compiled if Bluetooth is disabled (#9356)
analogRead() deprecated in favor of analogReadPin() (#9023)
forcibly disable NKRO on V-USB controllers (#9054)
removed warning if running backlight on STM32F072 (#10040)
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
QMK's ChibiOS and ChibiOS-Contrib submodules have been updated to version 20.3.2.
Along with this, QMK now provides default configuration files for all commonly-supported ARM microcontrollers running on ChibiOS. As such, keyboards are now only required to define settings which differ from the defaults, thereby reducing the size of pull requests for keyboards running atop ChibiOS.
Python is now required to build QMK. The minimum Python version has been increased to 3.7.
The power of info.json has been massively expanded. Most keyboard parameters can now be expressed in info.json instead of config.h/rules.mk. This should make maintaining keyboards easier, and will enable tooling that can allow non-technical users to add and maintain QMK keyboards without writing any code.
To ease migration a new command has been provided, qmk generate-info-json -kb <keyboard>. You can use this command to generate a complete info.json file for a keyboard and then remove the duplicate information from config.h and rules.mk.
Detailed example showing how to generate a new info.json and identify duplicate keys:
user@hostname:~/qmk_firmware/keyboards/lets_split:0$ qmk generate-info-json > new-info.json\nuser@hostname:~/qmk_firmware/keyboards/lets_split:0$ mv new-info.json info.json\nuser@hostname:~/qmk_firmware/keyboards/lets_split:0$ qmk info\n⚠ lets_split/rev2: DEBOUNCE in config.h is overwriting debounce in info.json\n⚠ lets_split/rev2: DEVICE_VER in config.h is overwriting usb.device_ver in info.json\n⚠ lets_split/rev2: DIODE_DIRECTION in config.h is overwriting diode_direction in info.json\n⚠ lets_split/rev2: MANUFACTURER in config.h is overwriting manufacturer in info.json\n⚠ lets_split/rev2: RGB_DI_PIN in config.h is overwriting rgblight.pin in info.json\n⚠ lets_split/rev2: RGBLED_NUM in config.h is overwriting rgblight.led_count in info.json\n⚠ lets_split/rev2: PRODUCT_ID in config.h is overwriting usb.pid in info.json\n⚠ lets_split/rev2: VENDOR_ID in config.h is overwriting usb.vid in info.json\n⚠ lets_split/rev2: Matrix pins are specified in both info.json and config.h, the config.h values win.\n⚠ lets_split/rev2: LAYOUTS in rules.mk is overwriting community_layouts in info.json\n⚠ lets_split/rev2: Feature bootmagic is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature mousekey is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature extrakey is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature console is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature command is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature nkro is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature backlight is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature midi is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature audio is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature unicode is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature bluetooth is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature rgblight is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature sleep_led is specified in both info.json and rules.mk, the rules.mk value wins.\nKeyboard Name: Let's Split\nManufacturer: Wootpatoot\nWebsite:\nMaintainer: QMK Community\nKeyboard Folder: lets_split/rev2\nLayouts: LAYOUT, LAYOUT_ortho_4x12\nSize: 13 x 4\nProcessor: atmega32u4\nBootloader: caterina
A new qmk console command has been added for attaching to your keyboard's console. It operates similiarly to QMK Toolbox by allowing you to connect to one or more keyboard consoles to display debugging messages.
We've updated the qmk config command to show only the configuration items you have actually set. You can now display (almost) all of the available configuration options, along with their default values, using qmk config -a.
QMK has decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
This pull request changes the behavior of BOOTMAGIC_ENABLE such that specifying BOOTMAGIC_ENABLE = yes enables Bootmagic Lite instead of full Bootmagic.
If attempts to use Bootmagic functionality result in unexpected behavior, check your rules.mk file and change the BOOTMAGIC_ENABLE setting to specify either lite or full.
We've removed support for LAYOUT_kc macros, if your keymap uses one you will need to update it use a regular LAYOUT macro.
Encoder callbacks are now boolean (#12805, #12985)
To allow for keyboards to override (or not) keymap level code the encoder_update_kb function has been changed from void to bool. You will need to update your function definition to reflect this and ensure that you return a true or false value.
Example code before change:
c
void encoder_update_kb(uint8_t index, bool clockwise) {\n encoder_update_user(index, clockwise);\n}\n\nvoid encoder_update_user(uint8_t index, bool clockwise) {\n if (index == 0) { /* First encoder */\n if (clockwise) {\n tap_code(KC_PGDN);\n } else {\n tap_code(KC_PGUP);\n }\n } else if (index == 1) { /* Second encoder */\n if (clockwise) {\n tap_code(KC_DOWN);\n } else {\n tap_code(KC_UP);\n }\n }\n}
Example code after change:
c
bool encoder_update_kb(uint8_t index, bool clockwise) {\n return encoder_update_user(index, clockwise);\n}\n\nbool encoder_update_user(uint8_t index, bool clockwise) {\n if (index == 0) { /* First encoder */\n if (clockwise) {\n tap_code(KC_PGDN);\n } else {\n tap_code(KC_PGUP);\n }\n } else if (index == 1) { /* Second encoder */\n if (clockwise) {\n tap_code(KC_DOWN);\n } else {\n tap_code(KC_UP);\n }\n }\n return true; \n // If you return true, this will allow the keyboard level code to run, as well. \n //Returning false will override the keyboard level code. Depending on how the keyboard level function is set up.\n}
Combo processing has been reordered with respect to keypress handling, allowing for much better compatibility with mod taps.
It is also now possible to define combos that have keys overlapping with other combos, triggering only one. For example, a combo of A, B can coexist with a longer combo of A, B, C -- previous functionality would trigger both combos if all three keys were pressed.
QMK now has a new feature: key overrides. This feature allows for overriding the output of key combinations involving modifiers. As an example, pressing Shift+2 normally results in an @ on US-ANSI keyboard layouts -- the new key overrides allow for adding similar functionality, but for any modifier + key press.
To illustrate, it's now possible to use the key overrides feature to translate Shift + Backspace into Delete -- an often-requested example of where this functionality comes in handy.
There's far more to describe that what lives in this changelog, so head over to the key overrides documentation for more examples and info.
QMK gained the ability to pretend to be a digitizer device -- much like a tablet device. A mouse uses delta-coordinates -- move up, move right -- but a digitizer works with absolute coordinates -- top left, bottom right.
As noted during last breaking changes cycle, QMK has decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
This pull request changes the behavior of BOOTMAGIC_ENABLE such that specifying full results in an error, allowing only no, yes, or lite.
Currently lite is the equivalent of yes in rules.mk. Next cycle the use of the lite keyword will be prevented in favour of yes -- any new submissions should now be using yes or no to minimise disruption.
Split keyboards gained a significant amount of improvements during this breaking changes cycle, specifically:
Extensible split data sync (#11930) -- rewritten data sharing between sides, allowing for data transfer only when required, as well as enabling keyboards and keymaps to define their own shared data.
Full-duplex ARM USART split (#13081) -- adds to the previous half-duplex driver and now allows for full-duplex support on ARM.
Make solo half of split keyboards (more) usable. (#13523) -- allows the slave to be disconnected, enabling one-handed use.
Tags will let you categorize your keyboard, and will be used in the future to allow browsing and sorting through keyboards in QMK. Tags are free-form text identifiers that identify attributes about your keyboard. To add tags you simply add a tags key to your info.json:
We've added dozens of new keys to info.json so that you can configure more than ever without writing a single line of code. A quick overview of the new items you can configure:
QMK was originally based on TMK, and has grown in size considerably since its first inception. To keep moving things forward, restructure of some of the core areas of the code is needed to support new concepts and new hardware, and progress is happening along those lines:
Pointing device support has been reworked and reimplemented to allow for easier integration of new peripherals.
Usages of POINTING_DEVICE_ENABLE = yes in rules.mk files now need to be accompanied by a corresponding POINTING_DEVICE_DRIVER = ??? line, specifying which driver to use during the build. Existing keyboards have already been migrated across to the new usage pattern, so most likely no change is required by users.
QMK now has core-supplied support for the following pointing device peripherals:
rules.mk line
Supported device
POINTING_DEVICE_DRIVER = analog_joystick
Analog joysticks, such as PSP joysticks
POINTING_DEVICE_DRIVER = adns5050
ADNS 5050 sensor
POINTING_DEVICE_DRIVER = adns9800
ADNS 9800 laser sensor
POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c
Cirque touchpad, I2C mode
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
Cirque Touchpad, SPI mode
POINTING_DEVICE_DRIVER = pimoroni_trackball
Pimoroni Trackball
POINTING_DEVICE_DRIVER = pmw3360
PMW 3360
See the new documentation for the Pointing Device feature for more information on specific configuration for each driver.
For people who are starting out with tapping keys, or for people who think tapping keys don't "feel right", it's sometimes quite difficult to determine what duration of tapping term to use to make things seem natural.
If you're in this stage of discovery, you can now add DYNAMIC_TAPPING_TERM_ENABLE = yes to your rules.mk, which enables the use of the following keycodes in your keymap:
Key
Description
DT_PRNT
"Dynamic Tapping Term Print": Types the current tapping term, in milliseconds
DT_UP
"Dynamic Tapping Term Up": Increases the current tapping term by 5ms
DT_DOWN
"Dynamic Tapping Term Down": Decreases the current tapping term by 5ms
Coupled with the use of qmk console or QMK Toolbox to show console output from your keyboard, you can tweak the tapping term dynamically in order to narrow down what "feels right" to you. Once you're happy, drop in the resulting number into your keymap's config.h and you're good to go!
You can now define up to 32 macros in your keymap.json file, as used by QMK Configurator, and qmk compile. You can define these macros in a list under the macros keyword, like this:
The AVR platform has been problematic for some time, in the sense that it is severely resource-constrained -- this makes life difficult for anyone attempting to add new functionality such as display panels to their keymap code. The illustrious Drashna has contributed some newer documentation on how to attempt to free up some space on AVR-based keyboards that are in short supply.
Of course, there are much fewer constraints with ARM chips... 😉
Require explicit enabling of RGB Matrix modes (#15018)
Related to the previous section -- RGB Matrix modes have now been made to be opt-in, rather than opt-out. As these animations are now opt-in, you may find that your keyboard no longer has all the RGB modes you're expecting -- you may need to configure and recompile your firmware and enable your animations of choice... with any luck they'll still fit in the space available.
Most keyboards keep their original functionality, but over time the QMK maintainers have found that removal of animations ends up being the quickest way to free up space... and some keyboards have had animations such as reactive effects disabled by default in order to still fit within the flash space available.
The full list of configurables to turn specific animations back on can be found at on the RGB Matrix documentation page.
OLED display code was traditionally difficult to override in keymaps as they did not follow the standard pattern of bool *_kb() deferring to bool *_user() functions, allowing signalling to the higher level that processing had already been done.
This changes the standard OLED drawing function model to allow for a base implementation to be provided by a keyboard, but also still allow for keymap-level overrides without needing to modify the keyboard's code.
Keyboard designers should now structure their keyboard-level drawing routines like the following, in order to allow for keymap overrides:
c
bool oled_task_kb(void) {\n // Defer to the keymap if they want to override\n if(!oled_task_user()) { return false; }\n\n // default keyboard drawing code\n return false;\n}
As noted during previous breaking changes cycles, QMK decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
This removal is now complete!
This pull request changes the behavior of BOOTMAGIC_ENABLE such that specifying lite or full results in an error, allowing only yes or no, with yes mirroring historical lite functionality.
All use of the lite keyword within the repository has been migrated to yes -- any new submissions using lite will now fail to build and should be updated accordingly.
Due to minimal QWIIC adoption and other options for similar functionality, the QWIIC drivers were removed from QMK. Existing OLED usages have been migrated across to the normal QMK OLED driver instead.
There were a few EEPROM-related changes that landed during this breaking changes cycle, most prominently the long-awaited ability for the Drop boards to gain persistent storage. Any users of the Drop CTRL or Drop ALT should update QMK Toolbox as well -- coupled with a QMK firmware update settings should now be saved.
massdrop alt/ctrl: support saving into nvm (#6068)
A clang-compatible compilation database generator has been added as an option in order to help development environments such as Visual Studio Code.
Running qmk generate-compilation-database -kb <yourkb> -km <yourkeymap> from within the QMK firmware directory will generate a compile_commands.json file -- using a compatible IDE will likely see this and correctly start detecting the correct locations for source files as well as type and function information that are relevant to your build.
Do note that switching keyboards will require re-generation of this file.
New CLI subcommand to create clang-compatible compilation database (compile_commands.json) (#14370)
compiledb: query include paths from gcc directly. (#14462)
QMK continues on its restructuring journey, in order to make it easier to integrate newer features and add support for new hardware. This quarter's batch of changes include:
add 'include keyboard_features.mk' into build_keyboard.mk (#8422)
Legacy macro and action_function system removed (#16025)
The long time deprecated MACRO() and action_get_macro methods have been removed. Where possible, existing usages have been migrated over to core Macros.
Create a build error if no bootloader is specified (#16181)
Bootloader configuration is no longer assumed. Keyboards must now set either:
This is a new feature that allows for capslock-like functionality that turns itself off at the end of the word.
For instance, if you wish to type "QMK" without holding shift the entire time, you can either tap both left and right shift, or double-tap shift, to turn on Caps Word -- then type qmk (lowercase) without holding shift. Once you hit any key other than a--z, 0--9, -, _, delete, or backspace, this will go back to normal typing!
There are other activation mechanisms as well as configurable options like timeout and the like -- see the Caps Word documentation for more information.
QMK has had support for small OLED displays for some time now, but hasn't really gained too much ability to draw to panels other than the SSD1306 or SH1106 panels.
Quantum Painter is a new drawing subsystem available to suitable ARM and RISC-V boards that is capable of drawing to large panel RGB LCDs and RGB OLEDs. It also allows for a lot more flexibility with a larger set of drawing APIs -- lines, rectangles, circles, ellipses, text, images, and even animations.
The QMK CLI has new commands added to be able to generate images and fonts for Quantum Painter to digest -- it's even capable of converting animated gifs for display on screen.
See the Quantum Painter documentation for more information on how to set up the displays as well as how to convert images and fonts.
WARNING
Quantum Painter is not supported on AVR due to complexity and size constraints. Boards based on AVR such as ProMicro or Elite-C builds will not be able to leverage Quantum Painter.
One of the long-standing complaints with Encoders is that there has been no easy way to configure them in user keymaps. #13286 added support for Encoder Mapping, which allows users to define encoder functionality in a similar way to their normal keymap.
WARNING
This is not yet supported by QMK Configurator. It is also unlikely to ever be supported by VIA.
QMK is always in the process of picking up support for new hardware platforms. One of the side-effects for future integrations has shown that QMK's usage of RESET as a keycode is causing naming collisions. As a result, #17037 changed usages of RESET to the new keycode QK_BOOT in the majority of default-like keymaps. At this stage the old keycode is still usable but will likely be removed in the next breaking changes cycle. Users with keymaps containing RESET should also move to QK_BOOT.
Some keycodes used with SEND_STRING and its relatives have been deprecated and may have their old keycode usages removed at a later date. The list of deprecated keycodes should be consulted to determine if you're using one of the older names (the first identifier after #define) -- you should swap to the newer variant (the second identifier on the same line).
The merge of Quantum Painter added some new dependencies in the QMK CLI, most notably Pillow, which requires some installation in order for the CLI to function. If you've got an existing installation, you'll need to run some commands in order to get things working:
On Windows, if using QMK MSYS or msys2, you'll need to run the following command:
QMK finally picked up support for RP2040-based boards, such as the Raspberry Pi Pico, the Sparkfun Pro Micro RP2040, and the Adafruit KB2040. One of QMK's newest collaborators, @KarlK90, effectively did /micdrop with RP2040, with a massive set of changes to both QMK and the repository QMK uses for the base platform support, ChibiOS[-Contrib]. There has been a flurry of development this breaking changes cycle related to RP2040 from a large number of contributors -- so much so that almost all standard QMK hardware subsystems are supported.
Allow qmk flash to use prebuilt firmware binaries (#16584)
A long-requested capability of the QMK CLI has been the ability to flash binaries directly, without needing to build a firmware. QMK provides prebuilt develop-based default firmwares on our CI page -- normally people would need QMK Toolbox to flash them. This new functionality written by @Erovia allows qmk flash to be provided the prebuilt file instead, simplifying the workflow for people who haven't got Toolbox available.
QMK allows for controlling the maximum number of layers it supports through LAYER_STATE_(8|16|32)BIT. Each definition allows for the same number of maximum layers -- LAYER_STATE_8BIT => 8 layers. There is also a corresponding firmware size decrease that goes along with smaller numbers -- given the vast majority of users don't use more than 16 layers the default has been swapped to 16. AVR users who were not previously specifying their max layer count may see some space freed up as a result.
Following the last breaking changes cycle, QMK has been migrating usages of RESET to QK_BOOT due to naming collisions with our upstream board support packages. #17940 converts user keymaps across to use the new keycode name. RESET should also move to QK_BOOT.
QMK has decided to deprecate the specification of USB IDs inside config.h in favour of info.json, eventually leaving data-driven as the only method to specify USB information.
A significant number of keyboards have already been changed on master in a like-for-like fashion, and #18152 performs the same transformations for keyboards already on develop.
Historically QMK had a CONVERT_TO_PROTON_C directive for rules.mk to allow people to replace an AVR-based Pro Micro with a QMK Proton C. Global parts shortages have prompted people to create their own pin-compatible boards -- QMK has made this conversion generic and now allows for drop-in replacements for a lot more boards. see the Converters Feature documentation for the full list of supported replacement boards -- in this breaking changes cycle we've gone from 1 to 7.
Add cli command to import keyboard|keymap|kbfirmware (#16668)
To help with importing keyboards and keymaps from other sources, @zvecr added #16668 which adds a new set of commands to the CLI to automatically import keyboards (qmk import-keyboard -h), keymaps (qmk import-keymap -h), and kbfirmware definitions (qmk import-kbfirmware -h) into QMK.
The now-EOL kbfirmware allowed people who aren't set up with QMK the ability to create keyboard firmwares without requiring a full installation of QMK. Unfortunately, it targets a 7-year-old version of QMK -- adding frustration for users who want the newest features, as well as for QMK maintainers who have to spend time explaining why QMK can't just accept a drive-by code drop from kbfirmware. With any luck, this new command helps both camps!
QMK has had the ability to write to internal MCU flash in order to emulate EEPROM for some time now, but it was only limited to a small number of MCUs. The base HAL used by QMK for a large number of ARM devices provides a "proper" embedded MCU flash driver, so @tzarc decoupled the wear-leveling algorithm from the old flash writing code, improved it, wrote some tests, and enabled its use for a much larger number of other devices... including RP2040's XIP flash, and external SPI NOR Flash.
See the EEPROM Driver documentation for more information.
Ever since Pointing Device Driver support and Split Pointing Device support were added by @drashna and @daskygit, there has been increased interest in the development of the pointing device subsystem and its associated code.
Both the PMW33xx and the Cirque Pinnacle implementations have seen a lot of improvement to their code, as has the mouse code in general. Features like circular/edge scrolling for the Cirque, and Kinetic movement for any sensor with "lift detection" (#17482). Additionally, for those that make fast motions with their pointing devices, support for much larger mouse movement reports has been added (#16371).
@getreuer in their infinite wisdom decided that autocorrect was a feature needed by QMK. As is customary, @drashna adapted it to core and got it into a state that everyone else can use it. See Feature: Autocorrect for more ifnormation (grin).
QMK's keycodes got a very significant overhaul this breaking changes cycle, with the bulk of the work done by @zvecr and @fauxpark -- renaming, reordering, removing has been their focus in this area. In an attempt to standardise interoperation with host applications, keycode values now have strong versioning so that any connected application has confidence that the keys it thinks exist on the board actually match up with what's compiled in. These strongly-versioned keycode definitions are now published online and will not change, so tools that remap keycodes have a reference to work with. In future versions of QMK, any new or changed keycodes will result in a new version specification. See API docs for more information on the published versions if you're writing a tool to manage keycodes.
In most cases user keymaps in the repository have already been updated to reflect the new naming scheme. In some cases user keymaps outside the repository may strike a missing keycode with the old name -- it's highly likely that the name had already been deprecated for some time, and should have been updated previously.
See below for the full list of changesets.
WARNING
Keycode aliases have been put in place in most cases to cater for "old names" being mapped to "new names" -- the documentation already reflects all the new naming of keys.
QMK has decided to deprecate the specification of USB IDs inside config.h in favour of info.json, leaving data-driven as the only method to specify USB information. As per the deprecation schedule put forward last breaking changes cycle, USB information must be specified in info.json instead.
RGB Matrix and LED Matrix Indicator display code was traditionally difficult to override in keymaps as they did not follow the standard pattern of bool *_kb() deferring to bool *_user() functions, allowing signalling to the higher level that processing had already been done.
This changes the standard callback model to allow for a base implementation to be provided by a keyboard, but also still allow for keymap-level overrides without needing to modify the keyboard's code.
The old RGB Matrix keymap code went something like this:
c
void rgb_matrix_indicators_user(void) {\n // keymap LED code\n}
...but the new RGB Matrix keymap code looks like this:
c
bool rgb_matrix_indicators_user(void) {\n // keymap LED code\n return false;\n}
Keyboard designers should now structure their keyboard-level routines like the following, in order to allow for keymap overrides:
c
bool rgb_matrix_indicators_kb(void) {\n // Defer to the keymap if they want to override\n if (!rgb_matrix_indicators_user()) { return false; }\n\n // keyboard LED code\n return true;\n}
The equivalent transformations should be done for LED Matrix boards.
Unicode modes were renamed in order to prevent collision with equivalent keycodes. The available values for UNICODE_SELECTED_MODES changed -- see Feature: Unicode for the new list of values and how to configure them.
We aren't going to list each and every change -- they're far too numerous -- instead, we'll just list the related PRs in order to convey just how wide-reaching these changes were:
There was additional work in the space of board converters -- historically QMK allowed for "converting" a Pro Micro build to a QMK Proton-C build. The last few versions of QMK have added support for replacement boards much like the Proton-C, and this quarter was no exception:
Both pointing devices and digitizer got a host of updates this cycle. Inertia, automatic mouse layers, fixes for preventing sleep... you even get more buttons with digitizers!
IGNORE_MOD_TAP_INTERRUPT_PER_KEY has been removed and IGNORE_MOD_TAP_INTERRUPT deprecated as a stepping stone towards making IGNORE_MOD_TAP_INTERRUPT the new default behavior for mod-taps in the future.
In place of the now removed IGNORE_MOD_TAP_INTERRUPT_PER_KEY, one must use the pre-existing HOLD_ON_OTHER_KEY_PRESS option.
In most cases, updating get_ignore_mod_tap_interrupt to get_hold_on_other_key_press is simply a matter of renaming the function and swapping every true by false and vice versa. The one subtlety you may need to look out for is that the get_ignore_mod_tap_interrupt was only ever called with mod-taps passed in as the keycode argument, while the keycode argument of get_hold_on_other_key_press can be any dual-role key. This includes not only mod-taps, but also layer-taps, one shot keys, TT(layer) and more. This has an impact on the effect of the default case in a typical per-key configuration making use of a switch(keycode) statement.
To illustrate, let's take the example of a configuration where we'd want all mod-taps to activate the modifier if another key is pressed while held with the exception of LCTL_T(KC_A), which should ignore keys pressed while it is held and activate the modifier only if it has been held for longer than the tapping term. In addition, we would like to keep the default "ignore-interrupt" behavior of layer taps.
An old way to do this would be via the following code:
TAPPING_FORCE_HOLD feature is now replaced by QUICK_TAP_TERM. Instead of turning off auto-repeat completely, user will have the option to configure a QUICK_TAP_TERM in milliseconds. When the user holds a tap-hold key after tapping it within QUICK_TAP_TERM, QMK will send the tap keycode to the host, enabling auto-repeat.
Its value is set to TAPPING_TERM by default and it can be reduced to match typing habits to avoid false triggers. To disable auto-repeat completely, set QUICK_TAP_TERM to zero.
TAPPING_FORCE_HOLD_PER_KEY is also deprecated and replaced by QUICK_TAP_TERM_PER_KEY. The old granular control function for tapping force hold is:
The Leader Key feature API has been significantly improved, along with some bugfixes and added tests.
Instead of defining your leader sequences in matrix_scan_user(), they are now handled in the leader_end_user() callback, and the LEADER_EXTERNS()/LEADER_DICTIONARY() macros are no longer needed:
c
void leader_end_user(void) {\n if (leader_sequence_one_key(KC_F)) {\n // Leader, f => Types the below string\n SEND_STRING("QMK is awesome.");\n } else if (leader_sequence_two_keys(KC_D, KC_D)) {\n // Leader, d, d => Ctrl+A, Ctrl+C\n SEND_STRING(SS_LCTL("a") SS_LCTL("c"));\n } else if (leader_sequence_three_keys(KC_D, KC_D, KC_S)) {\n // Leader, d, d, s => Types the below string\n SEND_STRING("https://start.duckduckgo.com\\n");\n } else if (leader_sequence_two_keys(KC_A, KC_S)) {\n // Leader, a, s => GUI+S\n tap_code16(LGUI(KC_S));\n }\n}
As per last breaking changes cycle, there has been a lot of emphasis on behind-the-scenes changes, mainly around consolidation of core subsystems and constant values, as well as addressing tech debt. Whilst not outwardly visible, this cleanup and refactoring should start paying dividends as it simplifies future development and maintenance.
A handful of examples:
Standardised the lower/raise/adjust layer change pattern with explicit keycodes and configurable target layers
Cleaned up a lot of Makefile logic to simplify and speed up builds
Automated tooling to regenerate keycode values has been hooked into the PR pipeline and will trigger failures if they're incorrect
Many more configuration options have moved into info.json, such as backlight, encoders
Additional unit tests to ensure keycode behaviours don't accidentally change
As per last breaking changes cycle, there has been a lot of emphasis on behind-the-scenes changes, mainly around migration of configurables into info.json files, cleanup of info.json files, additional layout definitions for keyboards, adding support for general community layouts to keyboards, as well as addressing technical debt.
Of note for keyboard designers:
Layout and matrix definitions in info.json are now mandatory for merge into QMK.
Layout macros in <yourkeyboard>.h are no longer accepted into QMK Firmware.
Existing keyboards have been meticulously converted by the QMK collaborators
Layouts missing from keyboard definitions have been added in the process
Keys within layouts should not specify "w":1 or "h":1 if the key size is 1 -- w/h should only be present for sizes other than 1
config_common.h has been removed and should not be present anywhere in your keyboard code.
RGB_DI_PIN will now cause an error during build:
For WS2812-like LEDs, this should be moved to info.json: "ws2812": { "pin": "xxx" }
For APA102 LEDs, this should be moved to info.json: "apa102": { "data_pin": "xxx" }
Other mandatory data-driven changes should be automatically flagged during build
Keymaps with encoder_map should now have the following change made:
A new pair of keys has been added to QMK -- namely QK_REPEAT_KEY and QK_ALT_REPEAT_KEY (shortened: QK_REP/QK_AREP). These allow you to repeat the last key pressed, or in the case of the alternate key, press the "opposite" of the last key. For example, if you press KC_LEFT, pressing QK_REPEAT_KEY afterwards repeats KC_LEFT, but pressing QK_ALT_REPEAT_KEY instead sends KC_RIGHT.
The full list of default alternate keys is available on the Repeat Key documentation.
To enable these keys, in your keymap's rules.mk, add:
Two new boolean callback functions, pre_process_record_kb and pre_process_record_user, have been added. They are called at the beginning of process_record, right before process_combo.
Similar to existing *_kb and *_user callback functions, returning false will halt further processing of key events. The pre_process_record_user function will allow user space opportunity to handle or capture an input before it undergoes quantum processing. For example, while action tapping is still resolving the tap or hold output of a mod-tap key, pre_process_record_user can capture the next key record of an input event that follows. That key record can be used to influence the decision of the mod-tap key that is currently undergoing quantum processing.
Several build targets for the IBM Model M were cluttered in different folders. The maintainers of several Model M replacement controller projects agreed to consolidate them under one common folder.
The list of all moved keyboard locations is listed below.
Following up from the last breaking changes cycle, IGNORE_MOD_TAP_INTERRUPT has been removed and if present in keymap code, will now fail to build. The previous functionality for IGNORE_MOD_TAP_INTERRUPT is now default, and should you wish to revert to the old behaviour, you can use HOLD_ON_OTHER_KEY_PRESS instead.
For keyboards who have not yet been migrated to encoder map, a default set of encoder functionality is now enabled, gracefully degrading functionality depending on which flags are enabled by the keyboard:
If EXTRAKEY_ENABLE is enabled by the keyboard, the encoder will be mapped to KC_VOLU/KC_VOLD
If MOUSEKEY_ENABLE is enabled by the keyboard, the encoder will be mapped to KC_MS_WH_UP/KC_MS_WH_DOWN
Otherwise, KC_PGDN/KC_PGUP will be used
Additionally, this ensures that builds on QMK Configurator produce some sort of usable encoder mapping.
As per last few breaking changes cycles, there have been a lot of behind-the-scenes changes, mainly around migration of configurables into info.json files, cleanup of info.json files, additional layout definitions for keyboards, adding support for general community layouts to keyboards, as well as addressing technical debt.
One thing to note for this release -- qmk/qmk_firmware is no longer accepting PRs for keymaps other than for manufacturer-supported keymaps. User keymap workflow has been documented here for several years. This change is to progressively reduce the maintenance burden on the project, and to allow us to focus on the core features of QMK.
Existing user keymaps and userspace areas will likely be relocated/removed in the future -- non-building keymaps and userspace will be first targets, likely during the new breaking changes cycle. We will provide more information on Discord regarding this initiative as it becomes available.
Most RGB Matrix implementations now check whether or not RGB LED data has changed and skip transmission if it hasn't. This was measured to improve scan frequency in cases of static or infrequently-changing colors.
Some audio code relating to "notes" used double datatypes, which are implemented in software floating-point for most ARM microcontrollers. This has been changed to use float datatypes instead, which are implemented in hardware floating-point on most ARM microcontrollers. This change increases performance as well as reduces the firmware size by significant number of bytes.
AVR sees minimal (if any) benefit -- double was interpreted as float on AVR anyway.
Some keyboards "hacked" encoder support into spare slots in the key matrix in order to interoperate with VIA. This workaround is no longer necessary, and the code has been removed. If you have a keyboard that uses this workaround, you will need to update your keymap to use the new Encoder Map API instead.
Old OLED code using ssd1306.cssd1306.h, and SSD1306OLED and other similar files have been consolidated to use the standard OLED driver. External user keymaps will need to be updated to use the standard OLED driver accordingly.
In most circumstances this won't affect users -- only keyboard designers with currently-unmerged boards. The only users affected are people who have modified existing keyboards in order to add/modify haptics, lighting, or bluetooth -- and only if the base keyboard did not configure them already. Driver naming has been modified to be lowercase.
RGBLight (RGBLIGHT_DRIVER / rgblight.driver):
Old
New
WS2812
ws2812
APA102
apa102
LED Matrix (LED_MATRIX_DRIVER / led_matrix.driver):
As per last few breaking changes cycles, there have been a lot of behind-the-scenes changes, mainly around consolidation of config into info.json files, cleanup of info.json files, cleaning up driver naming, as well as addressing technical debt.
As a followup to last cycle's notable changes, as qmk/qmk_firmware is no longer accepting PRs for keymaps we're pleased to announce that storing and building keymaps externally from the normal QMK Firmware repository is now possible. This is done through the new External Userspace feature, more details below!
As mentioned above, the new External Userspace feature allows for keymaps to be stored and built externally from the main QMK Firmware repository. This allows for keymaps to be stored separately -- usually in their own repository -- and for users to be able to maintain and build their keymaps without needing to fork the main QMK Firmware repository.
A significant portion of user keymaps have already been removed from qmk/qmk_firmware and more will follow in coming weeks. You can still recover your keymap from the tag user-keymaps-still-present if required -- a perfect time to migrate to the new External Userspace!
WARNING
This feature is still in beta, and we're looking for feedback on it. Please try it out and let us know what you think -- a new #help-userspace channel has been set up on Discord.
Shutdown callbacks at the keyboard level were never present, preventing safe shutdown sequencing for peripherals such as OLEDs, RGB LEDs, and other devices. This PR adds a new shutdown_kb function, as well as amending shutdown_user, allowing for safe shutdown of peripherals at both keyboard and keymap level.
Along with the new shutdown_kb function, a new API oled_render_dirty(bool) function has been added. This allows OLED contents to be written deterministically when supplied with true -- that is, the OLED will be updated immediately, rather than waiting for the next OLED update cycle. This allows for OLEDs to show things such as "BOOTLOADER MODE" and the like if resetting to bootloader from QMK.
Switch statement helpers for keycode ranges (#20059)
Predefined ranges usable within switch statements have been added for groups of similar keycodes, where people who wish to handle entire blocks at once can do so. This allows keymaps to be immune to changes in keycode values, and also allows for more efficient code generation.
Quantum Painter has picked up support for SH1106 displays -- commonly seen as 128x64 OLEDs. Support for both I2C and SPI displays is available.
If you're already using OLED through OLED_DRIVER_ENABLE = yes or equivalent in info.json and wish to use Quantum Painter instead, you'll need to disable the old OLED system, instead enabling Quantum Painter as well as enabling the appropriate SH1106 driver. See the Quantum Painter driver documentation for more details. The old OLED driver is still available, and keymaps do not require migrating to Quantum Painter if you don't want to do so.
As you can probably tell by the list of PRs just above, there has been a lot of cleanup and consolidation this cycle when it comes to RGB/LED lighting drivers. The number of changes is too large to list here, but the general theme has been focusing on consistency of naming, both of drivers themselves and their respective implementation and configuration. Most changes only affect keyboard designers -- if you find that your in-development keyboard is no longer building due to naming of defines changing, your best bet is to refer to another board already in the repository which has had the changes applied.
When enabling peripherals such as I2C, SPI, or Analog/ADC, some required manual inclusion of source files in order to provide driver support, and in some cases, when multiple drivers were using the same underlying peripheral, files were being added to the build multiple times.
Most systems requiring other peripherals now mark their respective dependencies as "required", allowing the build system to check whether peripherals are necessary before including them in the build rather than having each location enable them manually.
For a concrete example, users or keyboard designers who previously added SRC += analog.c in order to allow for analog readings via an ADC now should specify ANALOG_DRIVER_REQUIRED = yes instead. The full list of added options is as follows:
New option
Old Equivalent
ANALOG_DRIVER_REQUIRED = yes
SRC += analog.c
APA102_DRIVER_REQUIRED = yes
SRC += apa102.c
I2C_DRIVER_REQUIRED = yes
SRC += i2c_master.c or QUANTUM_LIB_SRC += i2c_master.c
SPI_DRIVER_REQUIRED = yes
SRC += spi_master.c or QUANTUM_LIB_SRC += spi_master.c
NKRO is now available for ATmega32A and 328P-based keyboards (including PS2AVRGB/Bootmapper boards), thanks to some internal refactoring and cleanup. To enable it, the process is the same as always - add NKRO_ENABLE = yes to your rules.mk, then assign and press the NK_TOGG keycode to switch modes.
0.24.0 is mainly a maintenance release of QMK Firmware -- as per last few breaking changes cycles, there have been a lot of behind-the-scenes changes, mainly:
continued purge of user keymaps
migration of RGB matrix configuration into info.json files
Flashing keyboards that target atmel-dfu or qmk-dfu on Windows using qmk flash or QMK Toolbox have traditionally used libusb for access to the DFU USB device. Since QMK Toolbox 0.3.0, this has changed to WinUSB.
If you update QMK Toolbox or update QMK MSYS, you may find that flashing Atmel DFU keyboards no longer functions as intended. If you strike such issues when flashing new firmware, you will need to replace the libusb driver with WinUSB using Zadig. You can follow the Recovering from Installation to Wrong Device instructions to replace the driver associated with the Atmel DFU bootloader, skipping the section about removal as Zadig will safely replace the driver instead. Please ensure your keyboard is in bootloader mode and has libusb as the existing driver before attempting to use Zadig to replace the driver. If instead you see HidUsb you're not in bootloader mode and should not continue with driver replacement.
One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.
QMK has long used Arduino-style GPIO naming conventions. This has been confusing for users, as over time they've had new variations added, as well as users mistakenly thinking that QMK supports the rest of the Arduino ecosystem.
The decision was made to rename the GPIO manipulation functions with ones matching QMK Firmware's code styling.
Much like the GPIO refactoring, I2C APIs were also updated to conform to QMK naming standards. This is largely irrelevant to people using subsystem abstractions such as touchpads or RGB lighting, and only affects people manually communicating with other peripherals.
Old API
New API
i2c_readReg()
i2c_read_register()
i2c_readReg16()
i2c_read_register16()
i2c_writeReg()
i2c_write_register()
i2c_writeReg16()
i2c_write_register16()
Renaming Bootmagic Lite => Bootmagic (#22970, #22979)
Bootmagic "Lite" had no real meaning once the historical Bootmagic "Full" was deprecated and removed. Any references to Bootmagic Lite should now just refer to Bootmagic. We hope we got the majority of the code and the documentation, so if you find any more, let us know!
Threshold for automatic mouse layer activation (#21398)
In some cases, accidental automatic activation of the mouse layer made it difficult to continue typing, such as when brushing across a trackball. AUTO_MOUSE_THRESHOLD is now a configurable option in config.h which allows for specifying what the movement threshold is before automatically activating the mouse layer.
Much like Encoder Mapping, DIP Switch Mapping allows for specifying a table of actions to execute when a DIP switch state changes. See the DIP Switch Documentation for more information.
Quantum Painter picked up support for the following:
ILI9486 displays
SSD1306 displays, including smaller OLEDs
Native panel pixel format support for fonts
Quantum Painter now supports the majority of common OLED panels supported by the basic OLED driver, so if you're using an ARM-based board you may find Quantum Painter a much more feature-rich API in comparison.
May 2024 brings about another heavy maintenance release of QMK. Of the 209 PRs created this breaking changes cycle against the develop branch, 174 behind-the-scenes PRs (83%!) were aimed at converting, consolidating, and cleaning up keyboards and their configuration data. Not the most glamorous work, but it means QMK is in a much more manageable spot than what it was 3 months prior. The work steadily continues!
One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.
A bunch of legacy keycodes have been removed -- check the affected keycodes if you run into compilation problems, as it'll show you what the problematic keycodes should be replaced with.
The latest of these were officially deprecated within QMK in the August 2023 breaking changes -- the new keycodes are the way forward.
This PR removed the LAYOUT macro that was configured for the Spacey. If you have a keymap for this keyboard, you will need to update your keymap using the following steps:
Change your layout macro to LAYOUT_all.
Remove the two KC_NO keycodes following the Space and Delete keys on the bottom row.
Move the keycode for the encoder pushbutton (customarily Mute) to the end of the top row, after the customary Backspace key.
Move the keycode for the Right Arrow to the end of the Shift row, after the Down Arrow key.
This PR removed and changed some of the layouts that were configured for the ACR60. If you use one of the following layouts, you will need to update your keymap:
Change your layout macro to LAYOUT_60_ansi_arrow_split_bs.
Remove any keycodes for the key between Left Shift and QWERTY Z.
Remove any keycodes for the keys immediately before and after the 1.25u key of Split Spacebar.
If you need split spacebars, you may implement LAYOUT_60_ansi_arrow_split_space_split_bs and change your layout to it, removing the keycode between Left Shift and QWERTY Z.
One longer term goal of QMK is increased maintainability. As part of the continued push towards Data Driven Configuration, the build system has been updated to simplify the existing codebase, and power future workflows.
The keyboard.json configuration file allows the support of a single data file for keyboard level config.
Additionally,
info.json now represents potential fragments of config that can be shared across keyboard revisions.
rules.mk is now optional - Completely blank files are no longer required.
Currently supported keyboards have been migrated to reflect this change.
Backwards compatibility of the old system has been maintained, but will be removed in a future breaking changes cycle.
Refactor ChibiOS USB endpoints to be fully async (#21656)
For most users, this change will mean suspend and resume on ARM-based boards works correctly. Others will notice that their keyboard now works correctly in BIOS/UEFI.
Essentially, changes were made in the internals of how QMK interacts with USB for ARM-based devices. Before this change, whenever a packet was attempted to be sent from the keyboard to the host machine, QMK would wait for the transmission to complete. After this change, those packets are queued and sent when opportune; this results in much better "correctness" as far as the USB protocol is concerned, and means far less likelihood of failure scenarios such as "stuck keys" or "random lockups" and the like.
Compliance checks were run against QMK firmwares for the most popular ARM microcontrollers, as well as suspend/resume tests. As far as we can tell, a whole host of hard-to-reproduce issues are mitigated by this change.
The QMK team has been in discussion with the VIA maintainers and all VIA-related keymaps in the qmk_firmware repository will transition to a qmk_userspace-style repository under the VIA team's control at the end of the next breaking changes period. This allows the VIA team to support many more custom keyboard configurations, as well as reduces the turnaround time for any changes to the VIA protocol they wish to make.
At the end of the breaking changes cycle ending 2024-08-25, VIA-enabled keymaps will no longer be accepted into the QMK repository. At the time of migration, any open PRs against qmk_firmware which include new VIA-related keymaps will be subsequently be asked to remove those keymaps and instead raise a PR against the userspace repository containing all VIA keymaps.
August 2024 brings another maintenance release of QMK. Almost all PRs this cycle were to do with cleanup or re-organization of existing features and code.
One key item is that there are no longer any via-enabled keymaps in the QMK repository -- these have all transitioned to an External Userspace repository under the VIA team's control. Going forward, all PRs to qmk_firmware must not contain via keymaps; these should instead be redirected to the VIA QMK Userspace repository.
One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.
Old Keyboard Name
New Keyboard Name
dnworks/9973
dnworks/tkl87
maple_computing/lets_split_eh/eh
maple_computing/lets_split_eh
planck/ez/base
zsa/planck_ez/base
SparkFun Pro Micro RP2040 converter renamed (#24192)
The converter for the SparkFun Pro Micro RP2040 has been renamed.
Old
New
promicro_rp2040
sparkfun_rp2040
This change was made to avoid confusion between the clones named ProMicro RP2040 and the SparkFun Pro Micro RP2040. The clones should be using the rp2040_ce option.
Changes were made to key overrides in order to hook them into the keymap introspection system.
If you're using key overrides, your keymap.c will need a change to the signature of your list of key overrides, as well as removing the NULL terminator.
For example, you'll need to change existing code from (note the highlighted lines):
ADNS9800 and PMW33xx firmware upload now opt-in (#24001)
Due to ambiguity with licensing compatibility, QMK has made the firmware ROM uploads for the ADNS9800 and PMW33xx lines of pointing device sensors temporarily opt-in with the view to removing them. Historically they were included by default, but as of this PR this is now no longer the case.
Please get in touch with the QMK team if your sensor no longer functions without the firmware upload -- so far we've tested each device type and they still seem to function without a new firmware, but this has not been a 100% exhaustive validation.
To re-enable firmware upload for your own builds, add the following to your keymap's config.h:
Sensor
Define
ADNS9800
#define ADNS9800_UPLOAD_SROM
PMW33xx
#define PMW33XX_UPLOAD_SROM
Note
If no issues arise during this current breaking changes cycle, these sensor firmware ROMs will be removed from QMK entirely.
Last breaking changes cycle, the QMK team informed that via keymaps are moving to the control of the VIA team. As of this merge, any via-enabled keymaps should now be PR'ed to the VIA QMK Userspace repository.
Any existing or newly-opened PRs against qmk_firmware will now be asked to remove any via-enabled keymaps from their submissions.
ADNS9800 and PMW33xx sensor firmware ROM removal
As mentioned above, there's license compatibility issues between QMK and the firmware blobs historically uploaded for the ADNS9800 and PMW33xx sensors. This notice is to inform users that these firmware blobs will almost certainly be removed from QMK in the next breaking changes merge.
As previously noted this does not seem to have any detrimental effect to any of those devices, as they seem to include firmware on-chip without requiring one to be uploaded. Please get in touch with the QMK team on Discord if your sensor is no longer functional.
This page attempts to introduce developers to the QMK Compiler. It does not go into nitty gritty details- for that you should read code. What this will give you is a framework to hang your understanding on as you read the code.
The QMK Compile API consists of a few movings parts:
API Clients interact exclusively with the API service. This is where they submit jobs, check status, and download results. The API service inserts compile jobs into Redis Queue and checks both RQ and S3 for the results of those jobs.
Workers fetch new compile jobs from RQ, compile them, and then upload the source and the binary to an S3 compatible storage engine.
This is the main entrypoint for the API. A client's interaction starts here. The client POST's a JSON document describing their keyboard, and the API does some (very) basic validation of that JSON before submitting the compile job.
This is the most frequently called endpoint. It pulls the job details from redis, if they're still available, or the cached job details on S3 if they're not.
This service is an asynchronous API for compiling custom keymaps. You POST some JSON to the API, periodically check the status, and when your firmware has finished compiling you can download the resulting firmware and (if desired) source code for that firmware.
As you can see the payload describes all aspects of a keyboard necessary to create and generate a firmware. Each layer is a single list of QMK keycodes the same length as the keyboard's LAYOUT macro. If a keyboard supports multiple LAYOUT macros you can specify which macro to use.
To compile your keymap into a firmware simply POST your JSON to the /v1/compile endpoint. In the following example we've placed the JSON payload into a file named json_data.
If you're writing a tool that leverages constants used within QMK, the API is used to publish "locked-in" versions of those constants in order to ensure that any third-party tooling has a canonical set of information to work with.
The list of available constants can be retrieved by accessing one of the following endpoints:
Versions exported by the master endpoint are locked-in. Any extra versions that exist on the develop endpoint which don't exist in master are subject to change.
TIP
Only keycodes are currently published, but over time all other "externally visible" IDs are expected to appear on these endpoints.
To retrieve the constants associated with a subsystem, the endpoint format is as follows:
The QMK API provides an asynchronous API that Web and GUI tools can use to compile arbitrary keymaps for any keyboard supported by QMK. The stock keymap template supports all QMK keycodes that do not require supporting C code. Keyboard maintainers can supply their own custom templates to enable more functionality.
This page describes how to setup debugging for ARM MCUs using an SWD adapter and open-source/free tools. In this guide we will install GNU MCU Eclipse IDE for C/C++ Developers and OpenOCD together with all the necessary dependencies.
This guide is catered towards advance users and assumes you can compile an ARM compatible keyboard on your machine using the MAKE flow.
The main objective here is to get the MCU Eclipse IDE correctly installed on our machine. The necessary instructions are derived from this install guide.
This tool is a software package manager and it is used to help us get the necessary dependencies.
XPM runs using Node.js so grab that from here. After installation, open a terminal and type npm -v. A reply with the version number means that the installation was successful.
XPM installation instructions can be found here and are OS specific. Entering xpm --version to your terminal should return the software version.
Now it's time to install your programmer's drivers. This tutorial was made using an ST-Link v2 which you can get from almost anywhere. If you have an ST-Link the drivers can be found here otherwise consult the manufacturer of your tool.
Open up the Eclipse IDE we just downloaded. To import our QMK directory select File -> Import -> C/C++ -> Existing Code as Makefile Project. Select Next and use Browse to select your QMK folder. In the tool-chain list select ARM Cross GCC and select Finish.
Now you can see the QMK folder on the left hand side. Right click it and select Properties. On the left hand side, expand MCU and select ARM Toolchains Paths. Press xPack and OK. Repeat for OpenOCD Path and if you are on Windows for Build Tools Path. Select Apply and Close.
Now its time to install the necessary MCU packages. Go to Packs perspective by selecting Window -> Perspective -> Open Perspective -> Other... -> Packs. Now select the yellow refresh symbol next to the Packs tab. This will take a long time as it is requesting the MCU definitions from various places. If some of the links fail you can probably select Ignore.
When this finishes you must find the MCU which we will be building/debugging for. In this example I will be using the STM32F3 series MCUs. On the left, select STMicroelectronics -> STM32F3 Series. On the middle window we can see the pack. Right click and select Install. Once that is done we can go back to the default perspective, Window -> Perspective -> Open Perspective -> Other... -> C/C++.
We need to let eclipse know the device we intent to build QMK on. Right click on the QMK folder -> Properties -> C/C++ Build -> Settings. Select the Devices tab and under Devices select the appropriate variant of your MCU. For my example it is STM32F303CC
While we are here let's setup the build command as well. Select C/C++ Build and then the Behavior tab. On the Build command, replace all with your necessary make command. For example for a rev6 Planck with the default keymap this would be planck/rev6:default. Select Apply and Close.
ARM MCUs use the Single Wire Debug (SWD) protocol which comprises of the clock (SWCLK) signal and the data (SWDIO) signal. Connecting this two wires and ground should be enough to allow full manipulation of the MCU. Here we assume that the keyboard will be powered though USB. The RESET signal is not necessary as we can manually assert it using the reset button. For a more advance setup, the SWO signal can be used which pipes printf and scanf asynchronously to the host but for our setup we will ignore it.
NOTE: Make sure the SWCLK and SWDIO pins are not used in the matrix of your keyboard. If they are you can temporarily switch them for some other pins.
Right click on your QMK folder, select Debug As -> Debug Configurations... . Here double click on GDB OpenOCD Debugging. Select the Debugger tab and enter the configuration necessary for your MCU. This might take some fiddling and Googling to find out. The default script for the STM32F3 is called stm32f3discovery.cfg. To let OpenOCD know, in the Config options enter -f board/stm32f3discovery.cfg.
NOTE: In my case this configuration script requires editing to disable the reset assertion. The locations of the scripts can be found in the actual executable field usually under the path openocd/version/.content/scripts/board. Here I edited reset_config srst_only to reset_config none.
Press the bug icon and if all goes well you should soon find yourself in the Debug perspective. Here the program counter will pause at the beginning of the main function and wait for you to press Play. Most of the features of all debuggers work on Arm MCUs but for exact details Google is your friend!
Happy debugging!
', 43);
+const _hoisted_44 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_44);
+}
+const arm_debugging = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ arm_debugging as default
+};
diff --git a/assets/arm_debugging.md.DVeULkLA.lean.js b/assets/arm_debugging.md.DVeULkLA.lean.js
new file mode 100644
index 0000000..589fd25
--- /dev/null
+++ b/assets/arm_debugging.md.DVeULkLA.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"ARM Debugging using Eclipse","description":"","frontmatter":{},"headers":[],"relativePath":"arm_debugging.md","filePath":"arm_debugging.md"}');
+const _sfc_main = { name: "arm_debugging.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43);
+const _hoisted_44 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_44);
+}
+const arm_debugging = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ arm_debugging as default
+};
diff --git a/assets/badge-community-dark.PWO_temo.svg b/assets/badge-community-dark.PWO_temo.svg
new file mode 100644
index 0000000..dba561d
--- /dev/null
+++ b/assets/badge-community-dark.PWO_temo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/badge-community-light.DoYC_YjC.svg b/assets/badge-community-light.DoYC_YjC.svg
new file mode 100644
index 0000000..de4e0cf
--- /dev/null
+++ b/assets/badge-community-light.DoYC_YjC.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/breaking_changes.md.DWuHNvRs.js b/assets/breaking_changes.md.DWuHNvRs.js
new file mode 100644
index 0000000..696a58f
--- /dev/null
+++ b/assets/breaking_changes.md.DWuHNvRs.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes.md","filePath":"breaking_changes.md"}');
+const _sfc_main = { name: "breaking_changes.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This document describes QMK's Breaking Change process. A Breaking Change is any change which modifies how QMK behaves in a way that in incompatible or potentially dangerous. We limit these changes so that users can have confidence that updating their QMK tree will not break their keymaps.
This also includes any keyboard moves within the repository.
The breaking change period is when we will merge PRs that change QMK in dangerous or unexpected ways. There is a built-in period of testing so we are confident that any problems caused are rare or unable to be predicted.
Practically, this means QMK merges the develop branch into the master branch on a 3-month cadence.
What has been included in past Breaking Changes?
To see a list of breaking changes merge candidates you can look at the core label. This label is applied whenever a PR is raised or changed, but only if the PR includes changes to core areas of QMK Firmware. A PR with that label applied is not guaranteed to be merged in the current cycle. New changes might be added between now and when develop is closed, and it is generally the responsibility of the submitter to handle conflicts. There is also another label used by QMK Collaborators -- breaking_change_YYYYqN -- which signifies to maintainers that it is a strong candidate for inclusion, and should be prioritized for review.
If you want your breaking change to be included in this round you need to create a PR and have it accepted by QMK Collaborators before develop closes. After develop closes, new submissions will be deferred to the next breaking changes cycle.
The simpler your PR is, the easier it is for maintainers to review, thus a higher likelihood of a faster merge. Large PRs tend to require a lot of attention, refactoring, and back-and-forth with subsequent reviews -- with other PRs getting merged in the meantime larger unmerged PRs are far more likely to be susceptible to conflicts.
Criteria for acceptance:
The PR is complete and ready to merge
GitHub checks for the PR are green whenever possible
A "red" check may be disregarded by maintainers if the items flagged are unrelated to the change proposed in the PR
Modifications to existing files should not need to add license headers to pass lint, for instance.
If it's not directly related to your PR's functionality, prefer avoiding making a change.
Strongly suggested:
The PR has a ChangeLog file describing the changes under <qmk_firmware>/docs/Changelog/20241124.
This should be in Markdown format, with a name in the format PR12345.md, substituting the digits for your PRs ID.
One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability.
develop is now closed to existing PR merges, only bugfixes for previous merges may be included
Post call for testers: message @Breaking Changes Updates on #qmk_firmware in Discord.
@Breaking Changes Updates -- Hey folks, last day for functional PRs to be merged into qmk_firmware for this breaking changes cycle is today. After that, we're handling bugfixes only.
develop is now closed to PR merges, only critical bugfixes may be included
Announce that master will be closed from <2 Days Before> to <Day of Merge> -- message @Breaking Changes Updates on #qmk_firmware in Discord:
@Breaking Changes Updates -- Hey folks, last day for functional PRs to be merged into qmk_firmware for this breaking changes cycle is today. After that, we're handling bugfixes only.
@Breaking Changes Updates -- Hey folks, the master branch of qmk_firmware is now locked for the next couple of days while we prepare to merge the newest batch of changes from develop.
Update this file with the new dates: docs/breaking_changes.md
Create Events on the QMK Discord - "Somewhere Else" => "GitHub":
Event #1:
Field
Value
Topic
Last develop functionality PRs to be raised
Start Date
((5 weeks before merge)), 12:00am
End Date
((4 weeks before merge)), 12:00am
Description
This is the last window for functional PRs to be raised against develop for the current breaking changes cycle. After ((4 weeks before merge)), any new PRs targeting develop will be deferred to the next cycle.
Event #2:
Field
Value
Topic
Last develop functionality PRs to be merged
Start Date
((4 weeks before merge)), 12:00am
End Date
((2 weeks before merge)), 12:00am
Description
This is the last window for functional PRs to be merged into develop for the current breaking changes cycle. After ((2 weeks before merge)), only bugfix PRs targeting develop will be considered for merge.
Event #3:
Field
Value
Topic
develop closed for merges
Start Date
((2 weeks before merge)), 12:00am
End Date
((day of merge)), 12:00am
Description
This is the deadline for functionality bugfix PRs to be merged into develop for the current breaking changes cycle. After ((1 week before merge)), only critical bugfix PRs targeting develop will be considered for merge.
Event #4:
Field
Value
Topic
master closed for merges
Start Date
((2 days before merge)), 12:00am
End Date
((day of merge)), 12:00am
Description
This is the period that no PRs are to be merged to master, so that the merge of develop into master is stable.
Event #5:
Field
Value
Topic
develop merges to master
Start Date
((day of merge)), 12:00am
End Date
((day of merge)), 11:45pm
Description
At some point, QMK will merge develop into master and everyone will be able to reap the benefits of the newest batch of functionality.
', 37);
+const _hoisted_38 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_38);
+}
+const breaking_changes = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ breaking_changes as default
+};
diff --git a/assets/breaking_changes.md.DWuHNvRs.lean.js b/assets/breaking_changes.md.DWuHNvRs.lean.js
new file mode 100644
index 0000000..0e42f0a
--- /dev/null
+++ b/assets/breaking_changes.md.DWuHNvRs.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes.md","filePath":"breaking_changes.md"}');
+const _sfc_main = { name: "breaking_changes.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 37);
+const _hoisted_38 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_38);
+}
+const breaking_changes = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ breaking_changes as default
+};
diff --git a/assets/breaking_changes_history.md.Bkin0Zmd.js b/assets/breaking_changes_history.md.Bkin0Zmd.js
new file mode 100644
index 0000000..dd58c8b
--- /dev/null
+++ b/assets/breaking_changes_history.md.Bkin0Zmd.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Past Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_history.md","filePath":"breaking_changes_history.md"}');
+const _sfc_main = { name: "breaking_changes_history.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
A QMK member may have replied to your pull request stating that your submission is a breaking change. In their judgment, the changes you have proposed have greater implications for either QMK, or its users.
Some things that may cause a pull request to be flagged are:
Edits to User Keymaps A user may submit their keymap to QMK, then some time later open a pull request with further updates, only to find it can't be merged because it was edited in the qmk/qmk_firmware repository. As not all users are proficient at using Git or GitHub, the user may find themself unable to fix the issue on their own.
Changes to Expected Behavior Changes to QMK behavior may cause users to believe their hardware or QMK is broken if they flash new firmware that incorporates changes to existing QMK features, and find themselves without a means to restore the desired behavior.
Changes Requiring User Action Changes may also require action to be taken by users, such as updating a toolchain or taking some action in Git.
Changes Necessitating Increased Scrutiny On occasion, a submission may have implications for QMK as a project. This could be copyright/licensing issues, coding conventions, large feature overhauls, "high-risk" changes that need wider testing by our community, or something else entirely.
Changes Requiring Communication to End Users This includes warnings about future deprecations, outdated practices, and anything else that needs to be communicated but doesn't fit into one of the above categories.
If you are contributing core code, and the only reason it needs to go through breaking changes is that you are updating keymaps to match your change, consider whether you can submit your feature in a way that the old keymaps continue to work. Then submit a separate PR that goes through the breaking changes process to remove the old code.
Understanding the purpose for your submission, and possible implications or actions it will require can make the review process more straightforward. A changelog may suffice for this purpose, but more extensive changes may require a level of detail that is ill-suited for a changelog.
Commenting on your pull request and being responsive to questions, comments, and change requests is much appreciated.
Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or reach out to the QMK team on Discord.
', 13);
+const _hoisted_14 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_14);
+}
+const breaking_changes_instructions = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ breaking_changes_instructions as default
+};
diff --git a/assets/breaking_changes_instructions.md.C9StPyYH.lean.js b/assets/breaking_changes_instructions.md.C9StPyYH.lean.js
new file mode 100644
index 0000000..d6f7cd8
--- /dev/null
+++ b/assets/breaking_changes_instructions.md.C9StPyYH.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Breaking Changes: My Pull Request Was Flagged","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_instructions.md","filePath":"breaking_changes_instructions.md"}');
+const _sfc_main = { name: "breaking_changes_instructions.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 13);
+const _hoisted_14 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_14);
+}
+const breaking_changes_instructions = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ breaking_changes_instructions as default
+};
diff --git a/assets/capabilities.md.BPL75VHK.js b/assets/capabilities.md.BPL75VHK.js
new file mode 100644
index 0000000..39b4386
--- /dev/null
+++ b/assets/capabilities.md.BPL75VHK.js
@@ -0,0 +1,64 @@
+import { _ as _imports_0$1 } from "./chunks/color-wheel.DIUCmfNZ.js";
+import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js";
+const _imports_0 = "/assets/badge-community-light.DoYC_YjC.svg";
+const _imports_1 = "/assets/badge-community-dark.PWO_temo.svg";
+const __pageData = JSON.parse('{"title":"Documentation Capabilities","description":"","frontmatter":{},"headers":[],"relativePath":"__capabilities.md","filePath":"__capabilities.md"}');
+const _sfc_main = { name: "__capabilities.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This page lays out the capabilities used by the QMK Firmware documentation, in order to aid future transitions to other page generators. Focuses mainly on things other than normal Markdown, as it's assumed that markdown generators should still function accordingly.
Click File > New > Makefile Project with Existing Code
Click File > Preferences > > Settings
Hit Ctrl-` (Grave) to bring up the terminal or go to View > Terminal (command workbench.action.terminal.toggleTerminal). A new terminal will be opened if there isn‘t one already.
This should start the terminal in the workspace's folder (so the qmk_firmware folder), and then you can compile your keyboard.
ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a branch tied to the ChibiOS version in use and should not be mixed with different versions.
When merging a PR containing an upgrade of ChibiOS/ChibiOS-Contrib:
Update the target branch if the merge target was master:
git checkout qmk-master
git reset --hard develop_YYYY_qN
git push origin qmk-master --force-with-lease
Update the target branch if the merge target was develop:
git checkout qmk-develop
git reset --hard develop_YYYY_qN
git push origin qmk-develop --force-with-lease
Note that when merging develop to master, the first workflow should still be followed.
', 11);
+const _hoisted_12 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_12);
+}
+const chibios_upgrade_instructions = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ chibios_upgrade_instructions as default
+};
diff --git a/assets/chibios_upgrade_instructions.md.DIU6p99M.lean.js b/assets/chibios_upgrade_instructions.md.DIU6p99M.lean.js
new file mode 100644
index 0000000..a56c49a
--- /dev/null
+++ b/assets/chibios_upgrade_instructions.md.DIU6p99M.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"ChibiOS Upgrade Procedure","description":"","frontmatter":{},"headers":[],"relativePath":"chibios_upgrade_instructions.md","filePath":"chibios_upgrade_instructions.md"}');
+const _sfc_main = { name: "chibios_upgrade_instructions.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 11);
+const _hoisted_12 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_12);
+}
+const chibios_upgrade_instructions = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ chibios_upgrade_instructions as default
+};
diff --git a/assets/chunks/@localSearchIndexroot.Cbmy2VqK.js b/assets/chunks/@localSearchIndexroot.Cbmy2VqK.js
new file mode 100644
index 0000000..a5f1b37
--- /dev/null
+++ b/assets/chunks/@localSearchIndexroot.Cbmy2VqK.js
@@ -0,0 +1,4 @@
+const _localSearchIndexroot = `{"documentCount":2797,"nextId":2797,"documentIds":{"0":"/ChangeLog/20190830#qmk-breaking-change-2019-aug-30","1":"/ChangeLog/20190830#core-code-formatting-with-clang-format","2":"/ChangeLog/20190830#lufa-usb-descriptor-cleanup","3":"/ChangeLog/20190830#migrating-action-layer-momentary-entries-in-fn-actions-to-mo-keycodes","4":"/ChangeLog/20190830#update-atreus-to-current-code-conventions","5":"/ChangeLog/20190830#backport-changes-to-keymap-language-files-from-zsa-fork","6":"/ChangeLog/20190830#update-repo-to-use-lufa-as-a-git-submodule","7":"/ChangeLog/20190830#migrating-action-backlight-entries-in-fn-actions-to-bl-keycodes","8":"/ChangeLog/20190830#remove-kc-delt-alias-in-favor-of-kc-del","9":"/ChangeLog/20200229#qmk-breaking-change-2020-feb-29-changelog","10":"/ChangeLog/20200229#update-chibios-chibios-contrib-ugfx-submodules","11":"/ChangeLog/20200229#fix-chibios-timer-overflow-for-16-bit-systick-devices","12":"/ChangeLog/20200229#update-lufa-submodule","13":"/ChangeLog/20200229#encoder-flip","14":"/ChangeLog/20200229#adding-support-for-backlight-on-state-for-hardware-pwm-backlight","15":"/ChangeLog/20200229#migrating-action-layer-tap-key-entries-in-fn-actions-to-lt-keycodes","16":"/ChangeLog/20200229#moving-backlight-keycode-handling-to-process-keycode","17":"/ChangeLog/20200229#refactor-planck-keymaps-to-use-layout-macros","18":"/ChangeLog/20200229#gon-nerd-codebase-refactor","19":"/ChangeLog/20200530#qmk-breaking-change-2020-may-30-changelog","20":"/ChangeLog/20200530#core-changes","21":"/ChangeLog/20200530#converting-v-usb-usbdrv-to-a-submodule","22":"/ChangeLog/20200530#unify-tap-hold-functions-and-documentation","23":"/ChangeLog/20200530#python-required-in-the-build-process","24":"/ChangeLog/20200530#upgrade-from-tinyprintf-to-mpaland-printf","25":"/ChangeLog/20200530#fixed-rgb-disable-after-timeout-to-be-seconds-based-small-internals-cleanup","26":"/ChangeLog/20200530#switch-to-qmk-forks-for-everything","27":"/ChangeLog/20200530#code-cleanup-regarding-deprecated-macro-play-note-array-by-replacing-it-with-play-song","28":"/ChangeLog/20200530#fixing-wrong-configuration-of-audio-feature","29":"/ChangeLog/20200530#keyboard-refactors","30":"/ChangeLog/20200530#migrating-lily58-to-use-split-common","31":"/ChangeLog/20200530#to-migrate-existing-lily58-firmware","32":"/ChangeLog/20200530#refactor-zinc-to-use-split-common","33":"/ChangeLog/20200530#refactor-of-tkc1800-to-use-common-oled-code","34":"/ChangeLog/20200530#to-migrate-existing-tkc1800-firmware","35":"/ChangeLog/20200530#split-hhkb-to-ansi-and-jp-layouts-and-add-via-support-for-each","36":"/ChangeLog/20200530#migrating-existing-hhkb-keymaps","37":"/ChangeLog/20200530#keyboard-moves","38":"/ChangeLog/20200530#keycode-migration-prs","39":"/ChangeLog/20200829#qmk-breaking-change-2020-aug-29-changelog","40":"/ChangeLog/20200829#changes-requiring-user-action","41":"/ChangeLog/20200829#relocated-keyboards","42":"/ChangeLog/20200829#the-key-company-project-consolidation-9547","43":"/ChangeLog/20200829#relocating-boards-by-flehrad-to-flehrad-folder-9635","44":"/ChangeLog/20200829#keyboard-updates","45":"/ChangeLog/20200829#keebio-rgb-wiring-update-7754","46":"/ChangeLog/20200829#core-updates","47":"/ChangeLog/20200829#core-changes","48":"/ChangeLog/20200829#core-fixes","49":"/ChangeLog/20200829#core-additions","50":"/ChangeLog/20200829#core-optimizations","51":"/ChangeLog/20200829#qmk-internals","52":"/ChangeLog/20201128#qmk-breaking-change-2020-nov-28-changelog","53":"/ChangeLog/20201128#changes-requiring-user-action","54":"/ChangeLog/20201128#relocated-keyboards","55":"/ChangeLog/20201128#reduce-helix-keyboard-build-variation-8669","56":"/ChangeLog/20201128#update-the-speedo-firmware-for-v3-0-10657","57":"/ChangeLog/20201128#maartenwut-maarten-name-change-to-evyd13-evy-10274","58":"/ChangeLog/20201128#xelus-valor-and-dawn60-refactors-10512-10584","59":"/ChangeLog/20201128#keyboard-updates","60":"/ChangeLog/20201128#aeboards-ext65-refactor-10820","61":"/ChangeLog/20201128#core-changes","62":"/ChangeLog/20201128#core-fixes","63":"/ChangeLog/20201128#core-additions","64":"/ChangeLog/20201128#core-optimizations","65":"/ChangeLog/20201128#qmk-internals","66":"/ChangeLog/20210227#qmk-breaking-changes-2021-february-27-changelog","67":"/ChangeLog/20210227#changes-requiring-user-action","68":"/ChangeLog/20210227#core-changes","69":"/ChangeLog/20210227#chibios-update-and-config-migration","70":"/ChangeLog/20210227#qmk-infrastructure-and-internals","71":"/ChangeLog/20210227#detailed-change-list","72":"/ChangeLog/20210227#changes-requiring-user-action-1","73":"/ChangeLog/20210227#fixes","74":"/ChangeLog/20210227#additions-and-enhancements","75":"/ChangeLog/20210227#clean-ups-and-optimizations","76":"/ChangeLog/20210227#qmk-infrastructure-and-internals-1","77":"/ChangeLog/20210227#chibios-update-and-config-migration-1","78":"/ChangeLog/20210529#qmk-breaking-changes-2021-may-29-changelog","79":"/ChangeLog/20210529#notable-changes","80":"/ChangeLog/20210529#rgb-matrix-split-common","81":"/ChangeLog/20210529#teensy-3-6-support","82":"/ChangeLog/20210529#new-command-qmk-console","83":"/ChangeLog/20210529#improve-command-qmk-config","84":"/ChangeLog/20210529#led-matrix-improvements","85":"/ChangeLog/20210529#changes-requiring-user-action","86":"/ChangeLog/20210529#updated-keyboard-codebases","87":"/ChangeLog/20210529#bootmagic-deprecation-and-refactor","88":"/ChangeLog/20210529#tentative-deprecation-schedule","89":"/ChangeLog/20210529#removal-of-layout-kc","90":"/ChangeLog/20210529#encoder-callback-boolean","91":"/ChangeLog/20210529#core-changes","92":"/ChangeLog/20210529#core-fixes","93":"/ChangeLog/20210529#core-additions","94":"/ChangeLog/20210529#core-optimizations","95":"/ChangeLog/20210529#qmk-internals","96":"/ChangeLog/20210828#qmk-breaking-changes-2021-august-28-changelog","97":"/ChangeLog/20210828#notable-features","98":"/ChangeLog/20210828#combo-processing-improvements","99":"/ChangeLog/20210828#key-overrides","100":"/ChangeLog/20210828#digitizer-support-12851","101":"/ChangeLog/20210828#changes-requiring-user-action","102":"/ChangeLog/20210828#updated-keyboard-codebases","103":"/ChangeLog/20210828#bootmagic-full-removal","104":"/ChangeLog/20210828#bootmagic-full-deprecation-schedule","105":"/ChangeLog/20210828#dip-switch-boolean","106":"/ChangeLog/20210828#notable-core","107":"/ChangeLog/20210828#split-transport-improvements","108":"/ChangeLog/20210828#teensy-4-x-support","109":"/ChangeLog/20210828#data-driven-improvements-13366","110":"/ChangeLog/20210828#tags","111":"/ChangeLog/20210828#dot-notation","112":"/ChangeLog/20210828#new-configuration-keys","113":"/ChangeLog/20210828#codebase-restructure","114":"/ChangeLog/20210828#full-changelist","115":"/ChangeLog/20211127#qmk-breaking-changes-2021-november-27-changelog","116":"/ChangeLog/20211127#qmk-2000th-keyboard","117":"/ChangeLog/20211127#notable-features","118":"/ChangeLog/20211127#expanded-pointing-device","119":"/ChangeLog/20211127#dynamic-tapping-term","120":"/ChangeLog/20211127#macros-in-keymap-json","121":"/ChangeLog/20211127#changes-requiring-user-action","122":"/ChangeLog/20211127#updated-keyboard-codebases","123":"/ChangeLog/20211127#squeezing-space-from-avr","124":"/ChangeLog/20211127#explicit-rgb-modes","125":"/ChangeLog/20211127#oled-task-refactor","126":"/ChangeLog/20211127#bootmagic-full-removal","127":"/ChangeLog/20211127#bootmagic-full-deprecation-schedule-complete","128":"/ChangeLog/20211127#remove-qwiic","129":"/ChangeLog/20211127#notable-core","130":"/ChangeLog/20211127#new-mcu-support","131":"/ChangeLog/20211127#eeprom-changes","132":"/ChangeLog/20211127#compile-commands","133":"/ChangeLog/20211127#codebase-restructure","134":"/ChangeLog/20211127#full-changelist","135":"/ChangeLog/20220528#qmk-breaking-changes-2022-may-28-changelog","136":"/ChangeLog/20220528#notable-features","137":"/ChangeLog/20220528#caps-word","138":"/ChangeLog/20220528#quantum-painter","139":"/ChangeLog/20220528#encoder-mapping","140":"/ChangeLog/20220528#changes-requiring-user-action","141":"/ChangeLog/20220528#reset-2-qk_boot","142":"/ChangeLog/20220528#sendstring-keycodes","143":"/ChangeLog/20220528#pillow-install","144":"/ChangeLog/20220528#updated-keyboard-codebases","145":"/ChangeLog/20220528#full-changelist","146":"/ChangeLog/20220226#qmk-breaking-changes-2022-february-26-changelog","147":"/ChangeLog/20220226#notable-features","148":"/ChangeLog/20220226#default-usb-polling-rate-now-1khz-15352","149":"/ChangeLog/20220226#split-support-for-pointing-devices-15304","150":"/ChangeLog/20220226#changes-requiring-user-action","151":"/ChangeLog/20220226#legacy-macro-and-action-function-system-removed-16025","152":"/ChangeLog/20220226#create-a-build-error-if-no-bootloader-is-specified-16181","153":"/ChangeLog/20220226#rename-adafruitble-to-bluefruitle-16127","154":"/ChangeLog/20220226#updated-keyboard-codebases","155":"/ChangeLog/20220226#notable-core","156":"/ChangeLog/20220226#new-mcu-support","157":"/ChangeLog/20220226#new-drivers","158":"/ChangeLog/20220226#led","159":"/ChangeLog/20220226#gpio","160":"/ChangeLog/20220226#full-changelist","161":"/ChangeLog/20220827#qmk-breaking-changes-2022-august-27-changelog","162":"/ChangeLog/20220827#notable-features","163":"/ChangeLog/20220827#rp2040-support","164":"/ChangeLog/20220827#cli-flash-binaries","165":"/ChangeLog/20220827#changes-requiring-user-action","166":"/ChangeLog/20220827#default-layers-dropped-from-32-to-16-15286","167":"/ChangeLog/20220827#reset-2-qk_boot","168":"/ChangeLog/20220827#updated-keyboard-codebases","169":"/ChangeLog/20220827#usb-ids-Refactoring","170":"/ChangeLog/20220827#deprecation-schedule","171":"/ChangeLog/20220827#notable-core","172":"/ChangeLog/20220827#board-converters","173":"/ChangeLog/20220827#cli-import","174":"/ChangeLog/20220827#wear-leveling","175":"/ChangeLog/20220827#pointing-device-improvements","176":"/ChangeLog/20220827#full-changelist","177":"/ChangeLog/20221126#qmk-breaking-changes-2022-november-26-changelog","178":"/ChangeLog/20221126#notable-features","179":"/ChangeLog/20221126#autocorrect","180":"/ChangeLog/20221126#changes-requiring-user-action","181":"/ChangeLog/20221126#updated-keyboard-codebases","182":"/ChangeLog/20221126#keycodes-overhaul-user-action","183":"/ChangeLog/20221126#config-refactoring","184":"/ChangeLog/20221126#usb-ids-Refactoring","185":"/ChangeLog/20221126#led-callback-refactor","186":"/ChangeLog/20221126#unicode-mode-renaming","187":"/ChangeLog/20221126#notable-core","188":"/ChangeLog/20221126#keycodes-overhaul-core-changes","189":"/ChangeLog/20221126#board-converters","190":"/ChangeLog/20221126#pointing-and-digitizer","191":"/ChangeLog/20221126#full-changelist","192":"/ChangeLog/20230226#qmk-breaking-changes-2023-february-26-changelog","193":"/ChangeLog/20230226#changes-requiring-user-action","194":"/ChangeLog/20230226#i-m-t-i","195":"/ChangeLog/20230226#quick-tap-term","196":"/ChangeLog/20230226#leader-key-rework-leader-key-rework-19632","197":"/ChangeLog/20230226#updated-keyboard-codebases","198":"/ChangeLog/20230226#notable-core","199":"/ChangeLog/20230226#full-changelist","200":"/ChangeLog/20230528#qmk-breaking-changes-2023-may-28-changelog","201":"/ChangeLog/20230528#notable-changes","202":"/ChangeLog/20230528#repeat-last-key","203":"/ChangeLog/20230528#user-callback-for-pre-process-record","204":"/ChangeLog/20230528#consolidate-modelm","205":"/ChangeLog/20230528#changes-requiring-user-action","206":"/ChangeLog/20230528#i-m-t-i","207":"/ChangeLog/20230528#updated-keyboard-codebases","208":"/ChangeLog/20230528#notable-core","209":"/ChangeLog/20230528#encoder-functionality-fallback","210":"/ChangeLog/20230528#oled-driver-improvements","211":"/ChangeLog/20230528#full-changelist","212":"/ChangeLog/20230827#qmk-breaking-changes-2023-aug-27-changelog","213":"/ChangeLog/20230827#notable-changes","214":"/ChangeLog/20230827#rgb-matrix-optimizations","215":"/ChangeLog/20230827#audio-optimizations-21496-21498","216":"/ChangeLog/20230827#changes-requiring-user-action","217":"/ChangeLog/20230827#updated-keyboard-codebases","218":"/ChangeLog/20230827#remove-encoder-in-matrix-workaround-code","219":"/ChangeLog/20230827#unicodemap-keycodes-rename","220":"/ChangeLog/20230827#remove-old-oled-api-code","221":"/ChangeLog/20230827#driver-naming-consolidation","222":"/ChangeLog/20230827#full-changelist","223":"/ChangeLog/20231126#qmk-breaking-changes-2023-november-26-changelog","224":"/ChangeLog/20231126#notable-features","225":"/ChangeLog/20231126#changes-requiring-user-action","226":"/ChangeLog/20231126#updated-keyboard-codebases","227":"/ChangeLog/20231126#notable-core","228":"/ChangeLog/20231126#external-userspace-22222","229":"/ChangeLog/20231126#improve-and-cleanup-shutdown-callbacks","230":"/ChangeLog/20231126#oled-force-flush","231":"/ChangeLog/20231126#switch-statement-helpers-for-keycode-ranges","232":"/ChangeLog/20231126#quantum-painter-oled-support","233":"/ChangeLog/20231126#rgb-led-lighting-driver-naming-and-cleanup-21890-21891-21892-21903-21904-21905-21918-21929-21938-22004-22008-22009-22071-22090-22099-22126-22133-22163-22200-22308-22309-22311-22325-22365-22379-22380-22381-22383-22436","234":"/ChangeLog/20231126#peripheral-subsystem-enabling","235":"/ChangeLog/20231126#vusb-nkro","236":"/ChangeLog/20231126#full-changelist","237":"/ChangeLog/20240225#qmk-breaking-changes-2024-february-25-changelog","238":"/ChangeLog/20240225#notable-features","239":"/ChangeLog/20240225#changes-requiring-user-action","240":"/ChangeLog/20240225#windows-driver-changes-qmk-toolbox-0-3-0-release","241":"/ChangeLog/20240225#updated-keyboard-codebases","242":"/ChangeLog/20240225#notable-core","243":"/ChangeLog/20240225#gpio-rename","244":"/ChangeLog/20240225#i2c-driver-api-changes-22905","245":"/ChangeLog/20240225#bootmagic-rename","246":"/ChangeLog/20240225#auto-mouse-layer","247":"/ChangeLog/20240225#dip-switch-map","248":"/ChangeLog/20240225#qp-updates","249":"/ChangeLog/20240225#full-changelist","250":"/ChangeLog/20240526#qmk-breaking-changes-2024-may-26-changelog","251":"/ChangeLog/20240526#notable-features","252":"/ChangeLog/20240526#changes-requiring-user-action","253":"/ChangeLog/20240526#updated-keyboard-codebases","254":"/ChangeLog/20240526#remove-deprecated-quantum-keycodes-23407","255":"/ChangeLog/20240526#spacey-layout-updates","256":"/ChangeLog/20240526#acr60-layout-updates","257":"/ChangeLog/20240526#acr60-layout-hhkb","258":"/ChangeLog/20240526#acr60-layout-true-hhkb","259":"/ChangeLog/20240526#acr60-layout-directional","260":"/ChangeLog/20240526#acr60-layout-mitchsplit","261":"/ChangeLog/20240526#notable-core","262":"/ChangeLog/20240526#keyboard-json","263":"/ChangeLog/20240526#refactor-chibios-usb-endpoints-to-be-fully-async-21656","264":"/ChangeLog/20240526#deprecation-notices","265":"/ChangeLog/20240526#migration-of-via-keymaps-to-via-team-control","266":"/ChangeLog/20240526#full-changelist","267":"/ChangeLog/20240825#qmk-breaking-changes-2024-august-25-changelog","268":"/ChangeLog/20240825#notable-features","269":"/ChangeLog/20240825#changes-requiring-user-action","270":"/ChangeLog/20240825#updated-keyboard-codebases","271":"/ChangeLog/20240825#sparkfun-pro-micro-rp2040-converter-renamed-24192","272":"/ChangeLog/20240825#key-override-keymap-c-signature-change-24120","273":"/ChangeLog/20240825#adns9800-and-pmw33xx-firmware-upload-now-opt-in-24001","274":"/ChangeLog/20240825#deprecation-notices","275":"/ChangeLog/20240825#migration-of-via-keymaps-to-via-team-control","276":"/ChangeLog/20240825#adns9800-and-pmw33xx-sensor-firmware-rom-removal","277":"/ChangeLog/20240825#full-changelist","278":"/__capabilities#documentation-capabilities","279":"/__capabilities#overall-capabilities","280":"/__capabilities#dividing-lines","281":"/__capabilities#images","282":"/__capabilities#lists","283":"/__capabilities#emoji","284":"/__capabilities#direct","285":"/__capabilities#as-colon-name-colon","286":"/__capabilities#xml-entities","287":"/__capabilities#styling","288":"/__capabilities#css-ish","289":"/__capabilities#tables","290":"/__capabilities#indented-sections","291":"/__capabilities#keyboard-keys","292":"/__capabilities#code-blocks","293":"/__capabilities#sub-superscript","294":"/__capabilities#tabs","295":"/__capabilities#tab-one","296":"/__capabilities#nested-one","297":"/__capabilities#nested-two","298":"/__capabilities#tab-two","299":"/__capabilities#tab-three","300":"/__capabilities#details-sections","301":"/__capabilities#embed","302":"/api_development_overview#qmk-compiler-development-guide","303":"/api_development_overview#overview","304":"/api_development_overview#workers","305":"/api_development_overview#api-service","306":"/api_development_overview#app-route-v1-compile-methods-post","307":"/api_development_overview#app-route-v1-compile-string-job-id-methods-get","308":"/api_development_overview#app-route-v1-compile-string-job-id-download-methods-get","309":"/api_development_overview#app-route-v1-compile-string-job-id-source-methods-get","310":"/api_development_environment#development-environment-setup","311":"/api_docs#qmk-api","312":"/api_docs#overview","313":"/api_docs#example-json-payload","314":"/api_docs#submitting-a-compile-job","315":"/api_docs#checking-the-status","316":"/api_docs#examining-finished-results","317":"/api_docs#qmk-constants","318":"/api_overview#qmk-api","319":"/api_overview#app-developers","320":"/api_overview#keyboard-maintainers","321":"/api_overview#backend-developers","322":"/arm_debugging#arm-debugging-using-eclipse","323":"/arm_debugging#installing-the-software","324":"/arm_debugging#the-xpack-manager","325":"/arm_debugging#the-arm-toolchain","326":"/arm_debugging#windows-build-tools","327":"/arm_debugging#programmer-debugger-drivers","328":"/arm_debugging#openocd","329":"/arm_debugging#java","330":"/arm_debugging#gnu-mcu-eclipse-ide","331":"/arm_debugging#configuring-eclipse","332":"/arm_debugging#building","333":"/arm_debugging#debugging","334":"/arm_debugging#connecting-the-debugger","335":"/arm_debugging#configuring-the-debugger","336":"/arm_debugging#running-the-debugger","337":"/breaking_changes#breaking-changes","338":"/breaking_changes#what-has-been-included-in-past-breaking-changes","339":"/breaking_changes#when-is-the-next-breaking-change","340":"/breaking_changes#important-dates","341":"/breaking_changes#what-changes-will-be-included","342":"/breaking_changes#checklists","343":"/breaking_changes#_4-weeks-before-merge","344":"/breaking_changes#_2-weeks-before-merge","345":"/breaking_changes#_1-week-before-merge","346":"/breaking_changes#_2-days-before-merge","347":"/breaking_changes#day-of-merge","348":"/breaking_changes#post-merge-operations","349":"/breaking_changes#updating-the-develop-branch","350":"/breaking_changes#set-up-discord-events-for-the-next-cycle","351":"/breaking_changes_history#past-breaking-changes","352":"/breaking_changes_instructions#breaking-changes-my-pull-request-was-flagged","353":"/breaking_changes_instructions#what-do-i-do","354":"/breaking_changes_instructions#consider-splitting-up-your-pr","355":"/breaking_changes_instructions#document-your-changes","356":"/breaking_changes_instructions#ask-for-help","357":"/chibios_upgrade_instructions#chibios-upgrade-procedure","358":"/chibios_upgrade_instructions#getting-chibios","359":"/chibios_upgrade_instructions#getting-chibios-contrib","360":"/chibios_upgrade_instructions#updating-submodules","361":"/chibios_upgrade_instructions#when-merging-a-pr-containing-an-upgrade-of-chibios-chibios-contrib","362":"/cli#qmk-cli","363":"/cli#overview","364":"/cli#requirements","365":"/cli#install-using-homebrew","366":"/cli#install-using-easy_install-or-pip","367":"/cli#packaging-for-other-operating-systems","368":"/cli_commands#qmk-cli-commands","369":"/cli_commands#user-commands","370":"/cli_commands#qmk-compile","371":"/cli_commands#qmk-flash","372":"/cli_commands#qmk-config","373":"/cli_commands#qmk-cd","374":"/cli_commands#qmk-find","375":"/cli_commands#qmk-console","376":"/cli_commands#qmk-doctor","377":"/cli_commands#qmk-format-json","378":"/cli_commands#qmk-info","379":"/cli_commands#qmk-json2c","380":"/cli_commands#qmk-c2json","381":"/cli_commands#qmk-lint","382":"/cli_commands#qmk-list-keyboards","383":"/cli_commands#qmk-list-keymaps","384":"/cli_commands#qmk-migrate","385":"/cli_commands#qmk-new-keyboard","386":"/cli_commands#qmk-new-keymap","387":"/cli_commands#qmk-clean","388":"/cli_commands#qmk-via2json","389":"/cli_commands#qmk-import-keyboard","390":"/cli_commands#qmk-import-keymap","391":"/cli_commands#qmk-import-kbfirmware","392":"/cli_commands#external-userspace-commands","393":"/cli_commands#qmk-userspace-add","394":"/cli_commands#qmk-userspace-remove","395":"/cli_commands#qmk-userspace-list","396":"/cli_commands#qmk-userspace-compile","397":"/cli_commands#qmk-userspace-doctor","398":"/cli_commands#developer-commands","399":"/cli_commands#qmk-format-text","400":"/cli_commands#qmk-format-c","401":"/cli_commands#qmk-generate-compilation-database","402":"/cli_commands#qmk-docs","403":"/cli_commands#qmk-generate-docs","404":"/cli_commands#qmk-generate-rgb-breathe-table","405":"/cli_commands#qmk-kle2json","406":"/cli_commands#qmk-format-python","407":"/cli_commands#qmk-pytest","408":"/cli_commands#qmk-painter-convert-graphics","409":"/cli_commands#qmk-painter-make-font-image","410":"/cli_commands#qmk-painter-convert-font-image","411":"/cli_commands#qmk-test-c","412":"/cli_configuration#qmk-cli-configuration","413":"/cli_configuration#introduction","414":"/cli_configuration#simple-example","415":"/cli_configuration#setting-user-defaults","416":"/cli_configuration#cli-documentation-qmk-config","417":"/cli_configuration#setting-configuration-values","418":"/cli_configuration#reading-configuration-values","419":"/cli_configuration#entire-configuration-example","420":"/cli_configuration#whole-section-example","421":"/cli_configuration#single-key-example","422":"/cli_configuration#multiple-keys-example","423":"/cli_configuration#deleting-configuration-values","424":"/cli_configuration#multiple-operations","425":"/cli_configuration#user-configuration-options","426":"/cli_configuration#all-configuration-options","427":"/cli_development#qmk-cli-development","428":"/cli_development#overview","429":"/cli_development#developer-mode","430":"/cli_development#subcommands","431":"/cli_development#user-interaction","432":"/cli_development#printing-text","433":"/cli_development#logging-cli-log","434":"/cli_development#printing-cli-echo","435":"/cli_development#colorizing-text","436":"/cli_development#arguments-and-configuration","437":"/cli_development#reading-configuration-values","438":"/cli_development#setting-configuration-values","439":"/cli_development#deleting-configuration-values","440":"/cli_development#writing-the-configuration-file","441":"/cli_development#excluding-arguments-from-configuration","442":"/cli_development#testing-and-linting-and-formatting-oh-my","443":"/cli_development#testing-and-linting","444":"/cli_development#formatting","445":"/cli_development#formatting-details","446":"/cli_development#testing-details","447":"/cli_development#linting-details","448":"/cli_tab_complete#tab-completion-for-qmk","449":"/cli_tab_complete#setup","450":"/cli_tab_complete#for-your-user-only","451":"/cli_tab_complete#system-wide-symlink","452":"/cli_tab_complete#system-wide-copy","453":"/coding_conventions_c#coding-conventions-c","454":"/coding_conventions_c#auto-formatting-with-clang-format","455":"/coding_conventions_python#coding-conventions-python","456":"/coding_conventions_python#yapf","457":"/coding_conventions_python#imports","458":"/coding_conventions_python#import-examples","459":"/coding_conventions_python#statements","460":"/coding_conventions_python#naming","461":"/coding_conventions_python#names-to-avoid","462":"/coding_conventions_python#docstrings","463":"/coding_conventions_python#simple-docstring-example","464":"/coding_conventions_python#complex-docstring-example","465":"/coding_conventions_python#function-arguments-docstring-example","466":"/coding_conventions_python#exceptions","467":"/coding_conventions_python#tuples","468":"/coding_conventions_python#lists-and-dictionaries","469":"/coding_conventions_python#parentheses","470":"/coding_conventions_python#format-strings","471":"/coding_conventions_python#comprehensions-generator-expressions","472":"/coding_conventions_python#lambdas","473":"/coding_conventions_python#conditional-expressions","474":"/coding_conventions_python#default-argument-values","475":"/coding_conventions_python#properties","476":"/coding_conventions_python#true-false-evaluations","477":"/coding_conventions_python#decorators","478":"/coding_conventions_python#threading-and-multiprocessing","479":"/coding_conventions_python#power-features","480":"/coding_conventions_python#type-annotated-code","481":"/coding_conventions_python#function-length","482":"/coding_conventions_python#fixmes","483":"/coding_conventions_python#testing","484":"/coding_conventions_python#integration-tests","485":"/coding_conventions_python#unit-tests","486":"/compatible_microcontrollers#compatible-microcontrollers","487":"/compatible_microcontrollers#atmel-avr","488":"/compatible_microcontrollers#arm","489":"/compatible_microcontrollers#stmicroelectronics-stm32","490":"/compatible_microcontrollers#westberrytech-wb32","491":"/compatible_microcontrollers#nxp-kinetis","492":"/compatible_microcontrollers#raspberry-pi","493":"/compatible_microcontrollers#sonix-sn32","494":"/compatible_microcontrollers#risc-v","495":"/compatible_microcontrollers#gigadevice","496":"/config_options#configuring-qmk","497":"/config_options#qmk-default","498":"/config_options#keyboard","499":"/config_options#folders","500":"/config_options#keymap","501":"/config_options#the-config-h-file","502":"/config_options#hardware-options","503":"/config_options#features-that-can-be-disabled","504":"/config_options#features-that-can-be-enabled","505":"/config_options#behaviors-that-can-be-configured","506":"/config_options#rgb-light-configuration","507":"/config_options#mouse-key-options","508":"/config_options#split-keyboard-options","509":"/config_options#setting-handedness","510":"/config_options#defines-for-handedness","511":"/config_options#other-options","512":"/config_options#the-rules-mk-file","513":"/config_options#build-options","514":"/config_options#avr-mcu-options","515":"/config_options#feature-options","516":"/config_options#usb-endpoint-limitations","517":"/configurator_architecture#qmk-configurator-architecture","518":"/configurator_architecture#overview","519":"/configurator_architecture#detailed-description","520":"/configurator_architecture#configurator-frontend","521":"/configurator_architecture#keyboard-metadata","522":"/configurator_architecture#qmk-api","523":"/configurator_architecture#compile-job-queued","524":"/configurator_architecture#compile-job-running","525":"/configurator_architecture#compile-job-finished","526":"/configurator_architecture#redis-rq","527":"/configurator_architecture#qmk-compiler","528":"/configurator_default_keymaps#adding-default-keymaps","529":"/configurator_default_keymaps#technical-information","530":"/configurator_default_keymaps#example","531":"/configurator_default_keymaps#caveats","532":"/configurator_default_keymaps#layer-references","533":"/configurator_default_keymaps#custom-code","534":"/configurator_default_keymaps#custom-keycodes","535":"/configurator_default_keymaps#additional-reading","536":"/configurator_step_by_step#qmk-configurator-step-by-step","537":"/configurator_step_by_step#step-1-select-your-keyboard","538":"/configurator_step_by_step#step-2-select-your-keyboard-layout","539":"/configurator_step_by_step#step-3-name-your-keymap","540":"/configurator_step_by_step#step-4-define-your-keymap","541":"/configurator_step_by_step#step-5-save-your-keymap-for-future-changes","542":"/configurator_step_by_step#step-6-compile-your-firmware-file","543":"/configurator_step_by_step#next-steps-flashing-your-keyboard","544":"/configurator_troubleshooting#configurator-troubleshooting","545":"/configurator_troubleshooting#my-json-file-is-not-working","546":"/configurator_troubleshooting#there-are-extra-spaces-in-my-layout-what-do-i-do","547":"/configurator_troubleshooting#what-is-the-keycode-for","548":"/configurator_troubleshooting#it-won-t-compile","549":"/configurator_troubleshooting#problems-and-bugs","550":"/contributing#how-to-contribute","551":"/contributing#i-don-t-want-to-read-this-whole-thing-i-just-have-a-question","552":"/contributing#project-overview","553":"/contributing#where-can-i-go-for-help","554":"/contributing#how-do-i-make-a-contribution","555":"/contributing#coding-conventions","556":"/contributing#general-guidelines","557":"/contributing#documentation","558":"/contributing#previewing-the-documentation","559":"/contributing#keyboards","560":"/contributing#quantum-tmk-core","561":"/contributing#refactoring","562":"/contributing#what-does-the-code-of-conduct-mean-for-me","563":"/custom_matrix#custom-matrix","564":"/custom_matrix#prerequisites","565":"/custom_matrix#lite","566":"/custom_matrix#full-replacement","567":"/custom_quantum_functions#how-to-customize-your-keyboard-s-behavior","568":"/custom_quantum_functions#a-word-on-core-vs-keyboards-vs-keymap","569":"/custom_quantum_functions#custom-keycodes","570":"/custom_quantum_functions#defining-a-new-keycode","571":"/custom_quantum_functions#programming-the-behavior-of-any-keycode","572":"/custom_quantum_functions#example-process-record-user-implementation","573":"/custom_quantum_functions#process-record-function-documentation","574":"/custom_quantum_functions#keyboard-initialization-code","575":"/custom_quantum_functions#keyboard-pre-initialization-code","576":"/custom_quantum_functions#example-keyboard-pre-init-user-implementation","577":"/custom_quantum_functions#keyboard-pre-init-function-documentation","578":"/custom_quantum_functions#matrix-initialization-code","579":"/custom_quantum_functions#matrix-init-function-documentation","580":"/custom_quantum_functions#low-level-matrix-overrides","581":"/custom_quantum_functions#keyboard-post-initialization-code","582":"/custom_quantum_functions#example-keyboard-post-init-user-implementation","583":"/custom_quantum_functions#keyboard-post-init-function-documentation","584":"/custom_quantum_functions#matrix-scanning-code","585":"/custom_quantum_functions#example-matrix-scan-implementation","586":"/custom_quantum_functions#matrix-scan-function-documentation","587":"/custom_quantum_functions#keyboard-housekeeping","588":"/custom_quantum_functions#example-void-housekeeping-task-user-void-implementation","589":"/custom_quantum_functions#keyboard-idling-wake-code","590":"/custom_quantum_functions#example-suspend-power-down-user-and-suspend-wakeup-init-user-implementation","591":"/custom_quantum_functions#keyboard-suspend-wake-function-documentation","592":"/custom_quantum_functions#keyboard-shutdown-reboot-code","593":"/custom_quantum_functions#example-shutdown-kb-implementation","594":"/custom_quantum_functions#example-shutdown-user-implementation","595":"/custom_quantum_functions#keyboard-shutdown-reboot-function-documentation","596":"/custom_quantum_functions#deferred-execution","597":"/custom_quantum_functions#deferred-executor-callbacks","598":"/custom_quantum_functions#deferred-executor-registration","599":"/custom_quantum_functions#extending-a-deferred-execution","600":"/custom_quantum_functions#cancelling-a-deferred-execution","601":"/custom_quantum_functions#deferred-callback-limits","602":"/custom_quantum_functions#advanced-topics","603":"/custom_quantum_functions#layer-change-code","604":"/custom_quantum_functions#persistent-configuration-eeprom","605":"/data_driven_config#data-driven-configuration","606":"/data_driven_config#history","607":"/data_driven_config#overview","608":"/data_driven_config#adding-an-option-to-info-json","609":"/data_driven_config#add-it-to-the-schema","610":"/data_driven_config#add-a-mapping","611":"/data_driven_config#info-key","612":"/data_driven_config#value-types","613":"/data_driven_config#add-code-to-extract-it","614":"/data_driven_config#add-code-to-generate-it","615":"/documentation_best_practices#documentation-best-practices","616":"/documentation_best_practices#page-opening","617":"/documentation_best_practices#headings","618":"/documentation_best_practices#styled-hint-blocks","619":"/documentation_best_practices#important","620":"/documentation_best_practices#general-tips","621":"/documentation_best_practices#documenting-features","622":"/documentation_templates#documentation-templates","623":"/documentation_templates#keyboard-readmemd-template","624":"/documentation_templates#keyboard-readme-md-template","625":"/driver_installation_zadig#bootloader-driver-installation-with-zadig","626":"/driver_installation_zadig#installation","627":"/driver_installation_zadig#recovering-from-installation-to-wrong-device","628":"/driver_installation_zadig#uninstallation","629":"/driver_installation_zadig#list-of-known-bootloaders","630":"/drivers/adc#adc-driver","631":"/drivers/adc#usage","632":"/drivers/adc#channels","633":"/drivers/adc#avr","634":"/drivers/adc#arm","635":"/drivers/adc#stm32","636":"/drivers/adc#rp2040","637":"/drivers/adc#functions","638":"/drivers/adc#avr-1","639":"/drivers/adc#arm-1","640":"/drivers/adc#configuration","641":"/drivers/adc#arm-2","642":"/drivers/apa102#apa102-driver","643":"/drivers/apa102#usage","644":"/drivers/apa102#basic-configuration","645":"/drivers/apa102#api","646":"/drivers/apa102#api-apa102-init","647":"/drivers/apa102#api-apa102-set-color","648":"/drivers/apa102#api-apa102-set-color-arguments","649":"/drivers/apa102#api-apa102-set-color-all","650":"/drivers/apa102#api-apa102-set-color-all-arguments","651":"/drivers/apa102#api-apa102-flush","652":"/drivers/apa102#api-apa102-set-brightness","653":"/drivers/apa102#api-apa102-set-brightness-arguments","654":"/drivers/aw20216s#aw20216s-driver","655":"/drivers/aw20216s#usage","656":"/drivers/aw20216s#basic-configuration","657":"/drivers/aw20216s#global-current-control","658":"/drivers/aw20216s#arm-configuration","659":"/drivers/aw20216s#led-mapping","660":"/drivers/aw20216s#api","661":"/drivers/aw20216s#api-aw20216s-led-t","662":"/drivers/aw20216s#api-aw20216s-led-t-members","663":"/drivers/aw20216s#api-aw20216s-init","664":"/drivers/aw20216s#api-aw20216s-init-arguments","665":"/drivers/aw20216s#api-aw20216s-set-color","666":"/drivers/aw20216s#api-aw20216s-set-color-arguments","667":"/drivers/aw20216s#api-aw20216s-set-color-all","668":"/drivers/aw20216s#api-aw20216s-set-color-all-arguments","669":"/drivers/aw20216s#api-aw20216s-update-pwm-buffers","670":"/drivers/aw20216s#api-aw20216s-update-pwm-buffers-arguments","671":"/drivers/eeprom#eeprom-driver-configuration","672":"/drivers/eeprom#vendor-eeprom-driver-configuration","673":"/drivers/eeprom#stm32l0l1-eeprom-driver-configuration","674":"/drivers/eeprom#i2c-eeprom-driver-configuration","675":"/drivers/eeprom#spi-eeprom-driver-configuration","676":"/drivers/eeprom#transient-eeprom-driver-configuration","677":"/drivers/eeprom#wear_leveling-eeprom-driver-configuration","678":"/drivers/eeprom#wear_leveling-configuration","679":"/drivers/eeprom#wear_leveling-efl-driver-configuration","680":"/drivers/eeprom#wear_leveling-flash_spi-driver-configuration","681":"/drivers/eeprom#wear_leveling-rp2040-driver-configuration","682":"/drivers/eeprom#wear_leveling-legacy-driver-configuration","683":"/drivers/audio#audio-driver","684":"/drivers/audio#avr","685":"/drivers/audio#arm","686":"/drivers/audio#dac-basic","687":"/drivers/audio#dac-additive","688":"/drivers/audio#dac-config","689":"/drivers/audio#buffer-size","690":"/drivers/audio#pwm-hardware","691":"/drivers/audio#pwm-software","692":"/drivers/audio#testing-notes","693":"/drivers/flash#flash-driver-configuration","694":"/drivers/flash#spi-flash-driver-configuration","695":"/drivers/gpio#gpio-control","696":"/drivers/gpio#macros","697":"/drivers/gpio#advanced-settings","698":"/drivers/gpio#atomic-operation","699":"/drivers/i2c#i2c-master-driver","700":"/drivers/i2c#usage","701":"/drivers/i2c#note-on-i2c-addresses","702":"/drivers/i2c#avr-configuration","703":"/drivers/i2c#arm-configuration","704":"/drivers/i2c#arm-configuration-i2cv1","705":"/drivers/i2c#arm-configuration-i2cv2","706":"/drivers/i2c#api","707":"/drivers/i2c#api-i2c-init","708":"/drivers/i2c#api-i2c-transmit","709":"/drivers/i2c#api-i2c-transmit-arguments","710":"/drivers/i2c#api-i2c-transmit-return","711":"/drivers/i2c#api-i2c-receive","712":"/drivers/i2c#api-i2c-receive-arguments","713":"/drivers/i2c#api-i2c-receive-return","714":"/drivers/i2c#api-i2c-write-register","715":"/drivers/i2c#api-i2c-write-register-arguments","716":"/drivers/i2c#api-i2c-write-register-return","717":"/drivers/i2c#api-i2c-write-register16","718":"/drivers/i2c#api-i2c-write-register16-arguments","719":"/drivers/i2c#api-i2c-write-register16-return","720":"/drivers/i2c#api-i2c-read-register","721":"/drivers/i2c#api-i2c-read-register-arguments","722":"/drivers/i2c#api-i2c-read-register-return","723":"/drivers/i2c#api-i2c-read-register16","724":"/drivers/i2c#api-i2c-read-register16-arguments","725":"/drivers/i2c#api-i2c-read-register16-return","726":"/drivers/i2c#api-i2c-ping-address","727":"/drivers/i2c#arguments","728":"/drivers/i2c#return-value","729":"/drivers/is31fl3218#is31fl3218-driver","730":"/drivers/is31fl3218#usage","731":"/drivers/is31fl3218#basic-configuration","732":"/drivers/is31fl3218#i2c-addressing","733":"/drivers/is31fl3218#arm-configuration","734":"/drivers/is31fl3218#led-mapping","735":"/drivers/is31fl3218#api","736":"/drivers/is31fl3218#api-is31fl3218-led-t","737":"/drivers/is31fl3218#api-is31fl3218-led-t-members","738":"/drivers/is31fl3218#api-is31fl3218-init","739":"/drivers/is31fl3218#api-is31fl3218-write-register","740":"/drivers/is31fl3218#api-is31fl3218-write-register-arguments","741":"/drivers/is31fl3218#api-is31fl3218-set-color","742":"/drivers/is31fl3218#api-is31fl3218-set-color-arguments","743":"/drivers/is31fl3218#api-is31fl3218-set-color-all","744":"/drivers/is31fl3218#api-is31fl3218-set-color-all-arguments","745":"/drivers/is31fl3218#api-is31fl3218-set-value","746":"/drivers/is31fl3218#api-is31fl3218-set-value-arguments","747":"/drivers/is31fl3218#api-is31fl3218-set-value-all","748":"/drivers/is31fl3218#api-is31fl3218-set-value-all-arguments","749":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-rgb","750":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-rgb-arguments","751":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-mono","752":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-mono-arguments","753":"/drivers/is31fl3218#api-is31fl3218-update-pwm-buffers","754":"/drivers/is31fl3218#api-is31fl3218-update-led-control-registers","755":"/drivers/is31fl3236#is31fl3236-driver","756":"/drivers/is31fl3236#usage","757":"/drivers/is31fl3236#basic-configuration","758":"/drivers/is31fl3236#i2c-addressing","759":"/drivers/is31fl3236#arm-configuration","760":"/drivers/is31fl3236#led-mapping","761":"/drivers/is31fl3236#api","762":"/drivers/is31fl3236#api-is31fl3236-led-t","763":"/drivers/is31fl3236#api-is31fl3236-led-t-members","764":"/drivers/is31fl3236#api-is31fl3236-init","765":"/drivers/is31fl3236#api-is31fl3236-init-arguments","766":"/drivers/is31fl3236#api-is31fl3236-write-register","767":"/drivers/is31fl3236#api-is31fl3236-write-register-arguments","768":"/drivers/is31fl3236#api-is31fl3236-set-color","769":"/drivers/is31fl3236#api-is31fl3236-set-color-arguments","770":"/drivers/is31fl3236#api-is31fl3236-set-color-all","771":"/drivers/is31fl3236#api-is31fl3236-set-color-all-arguments","772":"/drivers/is31fl3236#api-is31fl3236-set-value","773":"/drivers/is31fl3236#api-is31fl3236-set-value-arguments","774":"/drivers/is31fl3236#api-is31fl3236-set-value-all","775":"/drivers/is31fl3236#api-is31fl3236-set-value-all-arguments","776":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-rgb","777":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-rgb-arguments","778":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-mono","779":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-mono-arguments","780":"/drivers/is31fl3236#api-is31fl3236-update-pwm-buffers","781":"/drivers/is31fl3236#api-is31fl3236-update-pwm-buffers-arguments","782":"/drivers/is31fl3236#api-is31fl3236-update-led-control-registers","783":"/drivers/is31fl3236#api-is31fl3236-update-led-control-registers-arguments","784":"/drivers/is31fl3729#is31fl3729-driver","785":"/drivers/is31fl3729#usage","786":"/drivers/is31fl3729#basic-configuration","787":"/drivers/is31fl3729#i2c-addressing","788":"/drivers/is31fl3729#pwm-frequency","789":"/drivers/is31fl3729#de-ghosting","790":"/drivers/is31fl3729#global-current-control","791":"/drivers/is31fl3729#arm-configuration","792":"/drivers/is31fl3729#led-mapping","793":"/drivers/is31fl3729#api","794":"/drivers/is31fl3729#api-is31fl3729-led-t","795":"/drivers/is31fl3729#api-is31fl3729-led-t-members","796":"/drivers/is31fl3729#api-is31fl3729-init","797":"/drivers/is31fl3729#api-is31fl3729-init-arguments","798":"/drivers/is31fl3729#api-is31fl3729-write-register","799":"/drivers/is31fl3729#api-is31fl3729-write-register-arguments","800":"/drivers/is31fl3729#api-is31fl3729-set-color","801":"/drivers/is31fl3729#api-is31fl3729-set-color-arguments","802":"/drivers/is31fl3729#api-is31fl3729-set-color-all","803":"/drivers/is31fl3729#api-is31fl3729-set-color-all-arguments","804":"/drivers/is31fl3729#api-is31fl3729-set-value","805":"/drivers/is31fl3729#api-is31fl3729-set-value-arguments","806":"/drivers/is31fl3729#api-is31fl3729-set-value-all","807":"/drivers/is31fl3729#api-is31fl3729-set-value-all-arguments","808":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-rgb","809":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-rgb-arguments","810":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-mono","811":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-mono-arguments","812":"/drivers/is31fl3729#api-is31fl3729-update-pwm-buffers","813":"/drivers/is31fl3729#api-is31fl3729-update-pwm-buffers-arguments","814":"/drivers/is31fl3729#api-is31fl3729-update-scaling-registers","815":"/drivers/is31fl3729#api-is31fl3729-update-scaling-registers-arguments","816":"/drivers/is31fl3731#is31fl3731-driver","817":"/drivers/is31fl3731#usage","818":"/drivers/is31fl3731#basic-configuration","819":"/drivers/is31fl3731#i2c-addressing","820":"/drivers/is31fl3731#de-ghosting","821":"/drivers/is31fl3731#arm-configuration","822":"/drivers/is31fl3731#led-mapping","823":"/drivers/is31fl3731#api","824":"/drivers/is31fl3731#api-is31fl3731-led-t","825":"/drivers/is31fl3731#api-is31fl3731-led-t-members","826":"/drivers/is31fl3731#api-is31fl3731-init","827":"/drivers/is31fl3731#api-is31fl3731-init-arguments","828":"/drivers/is31fl3731#api-is31fl3731-write-register","829":"/drivers/is31fl3731#api-is31fl3731-write-register-arguments","830":"/drivers/is31fl3731#api-is31fl3731-select-page","831":"/drivers/is31fl3731#api-is31fl3731-select-page-arguments","832":"/drivers/is31fl3731#api-is31fl3731-set-color","833":"/drivers/is31fl3731#api-is31fl3731-set-color-arguments","834":"/drivers/is31fl3731#api-is31fl3731-set-color-all","835":"/drivers/is31fl3731#api-is31fl3731-set-color-all-arguments","836":"/drivers/is31fl3731#api-is31fl3731-set-value","837":"/drivers/is31fl3731#api-is31fl3731-set-value-arguments","838":"/drivers/is31fl3731#api-is31fl3731-set-value-all","839":"/drivers/is31fl3731#api-is31fl3731-set-value-all-arguments","840":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-rgb","841":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-rgb-arguments","842":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-mono","843":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-mono-arguments","844":"/drivers/is31fl3731#api-is31fl3731-update-pwm-buffers","845":"/drivers/is31fl3731#api-is31fl3731-update-pwm-buffers-arguments","846":"/drivers/is31fl3731#api-is31fl3731-update-led-control-registers","847":"/drivers/is31fl3731#api-is31fl3731-update-led-control-registers-arguments","848":"/drivers/is31fl3733#is31fl3733-driver","849":"/drivers/is31fl3733#usage","850":"/drivers/is31fl3733#basic-configuration","851":"/drivers/is31fl3733#i2c-addressing","852":"/drivers/is31fl3733#multi-driver-synchronization","853":"/drivers/is31fl3733#pwm-frequency","854":"/drivers/is31fl3733#de-ghosting","855":"/drivers/is31fl3733#global-current-control","856":"/drivers/is31fl3733#arm-configuration","857":"/drivers/is31fl3733#led-mapping","858":"/drivers/is31fl3733#api","859":"/drivers/is31fl3733#api-is31fl3733-led-t","860":"/drivers/is31fl3733#api-is31fl3733-led-t-members","861":"/drivers/is31fl3733#api-is31fl3733-init","862":"/drivers/is31fl3733#api-is31fl3733-init-arguments","863":"/drivers/is31fl3733#api-is31fl3733-write-register","864":"/drivers/is31fl3733#api-is31fl3733-write-register-arguments","865":"/drivers/is31fl3733#api-is31fl3733-select-page","866":"/drivers/is31fl3733#api-is31fl3733-select-page-arguments","867":"/drivers/is31fl3733#api-is31fl3733-set-color","868":"/drivers/is31fl3733#api-is31fl3733-set-color-arguments","869":"/drivers/is31fl3733#api-is31fl3733-set-color-all","870":"/drivers/is31fl3733#api-is31fl3733-set-color-all-arguments","871":"/drivers/is31fl3733#api-is31fl3733-set-value","872":"/drivers/is31fl3733#api-is31fl3733-set-value-arguments","873":"/drivers/is31fl3733#api-is31fl3733-set-value-all","874":"/drivers/is31fl3733#api-is31fl3733-set-value-all-arguments","875":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-rgb","876":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-rgb-arguments","877":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-mono","878":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-mono-arguments","879":"/drivers/is31fl3733#api-is31fl3733-update-pwm-buffers","880":"/drivers/is31fl3733#api-is31fl3733-update-pwm-buffers-arguments","881":"/drivers/is31fl3733#api-is31fl3733-update-led-control-registers","882":"/drivers/is31fl3733#api-is31fl3733-update-led-control-registers-arguments","883":"/drivers/is31fl3736#is31fl3736-driver","884":"/drivers/is31fl3736#usage","885":"/drivers/is31fl3736#basic-configuration","886":"/drivers/is31fl3736#i2c-addressing","887":"/drivers/is31fl3736#pwm-frequency","888":"/drivers/is31fl3736#de-ghosting","889":"/drivers/is31fl3736#global-current-control","890":"/drivers/is31fl3736#arm-configuration","891":"/drivers/is31fl3736#led-mapping","892":"/drivers/is31fl3736#api","893":"/drivers/is31fl3736#api-is31fl3736-led-t","894":"/drivers/is31fl3736#api-is31fl3736-led-t-members","895":"/drivers/is31fl3736#api-is31fl3736-init","896":"/drivers/is31fl3736#api-is31fl3736-init-arguments","897":"/drivers/is31fl3736#api-is31fl3736-write-register","898":"/drivers/is31fl3736#api-is31fl3736-write-register-arguments","899":"/drivers/is31fl3736#api-is31fl3736-select-page","900":"/drivers/is31fl3736#api-is31fl3736-select-page-arguments","901":"/drivers/is31fl3736#api-is31fl3736-set-color","902":"/drivers/is31fl3736#api-is31fl3736-set-color-arguments","903":"/drivers/is31fl3736#api-is31fl3736-set-color-all","904":"/drivers/is31fl3736#api-is31fl3736-set-color-all-arguments","905":"/drivers/is31fl3736#api-is31fl3736-set-value","906":"/drivers/is31fl3736#api-is31fl3736-set-value-arguments","907":"/drivers/is31fl3736#api-is31fl3736-set-value-all","908":"/drivers/is31fl3736#api-is31fl3736-set-value-all-arguments","909":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-rgb","910":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-rgb-arguments","911":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-mono","912":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-mono-arguments","913":"/drivers/is31fl3736#api-is31fl3736-update-pwm-buffers","914":"/drivers/is31fl3736#api-is31fl3736-update-pwm-buffers-arguments","915":"/drivers/is31fl3736#api-is31fl3736-update-led-control-registers","916":"/drivers/is31fl3736#api-is31fl3736-update-led-control-registers-arguments","917":"/drivers/is31fl3737#is31fl3737-driver","918":"/drivers/is31fl3737#usage","919":"/drivers/is31fl3737#basic-configuration","920":"/drivers/is31fl3737#i2c-addressing","921":"/drivers/is31fl3737#pwm-frequency","922":"/drivers/is31fl3737#de-ghosting","923":"/drivers/is31fl3737#global-current-control","924":"/drivers/is31fl3737#arm-configuration","925":"/drivers/is31fl3737#led-mapping","926":"/drivers/is31fl3737#api","927":"/drivers/is31fl3737#api-is31fl3737-led-t","928":"/drivers/is31fl3737#api-is31fl3737-led-t-members","929":"/drivers/is31fl3737#api-is31fl3737-init","930":"/drivers/is31fl3737#api-is31fl3737-init-arguments","931":"/drivers/is31fl3737#api-is31fl3737-write-register","932":"/drivers/is31fl3737#api-is31fl3737-write-register-arguments","933":"/drivers/is31fl3737#api-is31fl3737-select-page","934":"/drivers/is31fl3737#api-is31fl3737-select-page-arguments","935":"/drivers/is31fl3737#api-is31fl3737-set-color","936":"/drivers/is31fl3737#api-is31fl3737-set-color-arguments","937":"/drivers/is31fl3737#api-is31fl3737-set-color-all","938":"/drivers/is31fl3737#api-is31fl3737-set-color-all-arguments","939":"/drivers/is31fl3737#api-is31fl3737-set-value","940":"/drivers/is31fl3737#api-is31fl3737-set-value-arguments","941":"/drivers/is31fl3737#api-is31fl3737-set-value-all","942":"/drivers/is31fl3737#api-is31fl3737-set-value-all-arguments","943":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-rgb","944":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-rgb-arguments","945":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-mono","946":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-mono-arguments","947":"/drivers/is31fl3737#api-is31fl3737-update-pwm-buffers","948":"/drivers/is31fl3737#api-is31fl3737-update-pwm-buffers-arguments","949":"/drivers/is31fl3737#api-is31fl3737-update-led-control-registers","950":"/drivers/is31fl3737#api-is31fl3737-update-led-control-registers-arguments","951":"/drivers/is31fl3741#is31fl3741-driver","952":"/drivers/is31fl3741#usage","953":"/drivers/is31fl3741#basic-configuration","954":"/drivers/is31fl3741#i2c-addressing","955":"/drivers/is31fl3741#pwm-frequency","956":"/drivers/is31fl3741#de-ghosting","957":"/drivers/is31fl3741#global-current-control","958":"/drivers/is31fl3741#arm-configuration","959":"/drivers/is31fl3741#led-mapping","960":"/drivers/is31fl3741#api","961":"/drivers/is31fl3741#api-is31fl3741-led-t","962":"/drivers/is31fl3741#api-is31fl3741-led-t-members","963":"/drivers/is31fl3741#api-is31fl3741-init","964":"/drivers/is31fl3741#api-is31fl3741-init-arguments","965":"/drivers/is31fl3741#api-is31fl3741-write-register","966":"/drivers/is31fl3741#api-is31fl3741-write-register-arguments","967":"/drivers/is31fl3741#api-is31fl3741-select-page","968":"/drivers/is31fl3741#api-is31fl3741-select-page-arguments","969":"/drivers/is31fl3741#api-is31fl3741-set-color","970":"/drivers/is31fl3741#api-is31fl3741-set-color-arguments","971":"/drivers/is31fl3741#api-is31fl3741-set-color-all","972":"/drivers/is31fl3741#api-is31fl3741-set-color-all-arguments","973":"/drivers/is31fl3741#api-is31fl3741-set-value","974":"/drivers/is31fl3741#api-is31fl3741-set-value-arguments","975":"/drivers/is31fl3741#api-is31fl3741-set-value-all","976":"/drivers/is31fl3741#api-is31fl3741-set-value-all-arguments","977":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-rgb","978":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-rgb-arguments","979":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-mono","980":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-mono-arguments","981":"/drivers/is31fl3741#api-is31fl3741-update-pwm-buffers","982":"/drivers/is31fl3741#api-is31fl3741-update-pwm-buffers-arguments","983":"/drivers/is31fl3741#api-is31fl3741-update-led-control-registers","984":"/drivers/is31fl3741#api-is31fl3741-update-led-control-registers-arguments","985":"/drivers/is31fl3742a#is31fl3742a-driver","986":"/drivers/is31fl3742a#usage","987":"/drivers/is31fl3742a#basic-configuration","988":"/drivers/is31fl3742a#i2c-addressing","989":"/drivers/is31fl3742a#pwm-frequency","990":"/drivers/is31fl3742a#de-ghosting","991":"/drivers/is31fl3742a#global-current-control","992":"/drivers/is31fl3742a#arm-configuration","993":"/drivers/is31fl3742a#led-mapping","994":"/drivers/is31fl3742a#api","995":"/drivers/is31fl3742a#api-is31fl3742a-led-t","996":"/drivers/is31fl3742a#api-is31fl3742a-led-t-members","997":"/drivers/is31fl3742a#api-is31fl3742a-init","998":"/drivers/is31fl3742a#api-is31fl3742a-init-arguments","999":"/drivers/is31fl3742a#api-is31fl3742a-write-register","1000":"/drivers/is31fl3742a#api-is31fl3742a-write-register-arguments","1001":"/drivers/is31fl3742a#api-is31fl3742a-select-page","1002":"/drivers/is31fl3742a#api-is31fl3742a-select-page-arguments","1003":"/drivers/is31fl3742a#api-is31fl3742a-set-color","1004":"/drivers/is31fl3742a#api-is31fl3742a-set-color-arguments","1005":"/drivers/is31fl3742a#api-is31fl3742a-set-color-all","1006":"/drivers/is31fl3742a#api-is31fl3742a-set-color-all-arguments","1007":"/drivers/is31fl3742a#api-is31fl3742a-set-value","1008":"/drivers/is31fl3742a#api-is31fl3742a-set-value-arguments","1009":"/drivers/is31fl3742a#api-is31fl3742a-set-value-all","1010":"/drivers/is31fl3742a#api-is31fl3742a-set-value-all-arguments","1011":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-rgb","1012":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-rgb-arguments","1013":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-mono","1014":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-mono-arguments","1015":"/drivers/is31fl3742a#api-is31fl3742a-update-pwm-buffers","1016":"/drivers/is31fl3742a#api-is31fl3742a-update-pwm-buffers-arguments","1017":"/drivers/is31fl3742a#api-is31fl3742a-update-scaling-registers","1018":"/drivers/is31fl3742a#api-is31fl3742a-update-scaling-registers-arguments","1019":"/drivers/is31fl3743a#is31fl3743a-driver","1020":"/drivers/is31fl3743a#usage","1021":"/drivers/is31fl3743a#basic-configuration","1022":"/drivers/is31fl3743a#i2c-addressing","1023":"/drivers/is31fl3743a#multi-driver-synchronization","1024":"/drivers/is31fl3743a#de-ghosting","1025":"/drivers/is31fl3743a#global-current-control","1026":"/drivers/is31fl3743a#arm-configuration","1027":"/drivers/is31fl3743a#led-mapping","1028":"/drivers/is31fl3743a#api","1029":"/drivers/is31fl3743a#api-is31fl3743a-led-t","1030":"/drivers/is31fl3743a#api-is31fl3743a-led-t-members","1031":"/drivers/is31fl3743a#api-is31fl3743a-init","1032":"/drivers/is31fl3743a#api-is31fl3743a-init-arguments","1033":"/drivers/is31fl3743a#api-is31fl3743a-write-register","1034":"/drivers/is31fl3743a#api-is31fl3743a-write-register-arguments","1035":"/drivers/is31fl3743a#api-is31fl3743a-select-page","1036":"/drivers/is31fl3743a#api-is31fl3743a-select-page-arguments","1037":"/drivers/is31fl3743a#api-is31fl3743a-set-color","1038":"/drivers/is31fl3743a#api-is31fl3743a-set-color-arguments","1039":"/drivers/is31fl3743a#api-is31fl3743a-set-color-all","1040":"/drivers/is31fl3743a#api-is31fl3743a-set-color-all-arguments","1041":"/drivers/is31fl3743a#api-is31fl3743a-set-value","1042":"/drivers/is31fl3743a#api-is31fl3743a-set-value-arguments","1043":"/drivers/is31fl3743a#api-is31fl3743a-set-value-all","1044":"/drivers/is31fl3743a#api-is31fl3743a-set-value-all-arguments","1045":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-rgb","1046":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-rgb-arguments","1047":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-mono","1048":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-mono-arguments","1049":"/drivers/is31fl3743a#api-is31fl3743a-update-pwm-buffers","1050":"/drivers/is31fl3743a#api-is31fl3743a-update-pwm-buffers-arguments","1051":"/drivers/is31fl3743a#api-is31fl3743a-update-scaling-registers","1052":"/drivers/is31fl3743a#api-is31fl3743a-update-scaling-registers-arguments","1053":"/drivers/is31fl3745#is31fl3745-driver","1054":"/drivers/is31fl3745#usage","1055":"/drivers/is31fl3745#basic-configuration","1056":"/drivers/is31fl3745#i2c-addressing","1057":"/drivers/is31fl3745#multi-driver-synchronization","1058":"/drivers/is31fl3745#de-ghosting","1059":"/drivers/is31fl3745#global-current-control","1060":"/drivers/is31fl3745#arm-configuration","1061":"/drivers/is31fl3745#led-mapping","1062":"/drivers/is31fl3745#api","1063":"/drivers/is31fl3745#api-is31fl3745-led-t","1064":"/drivers/is31fl3745#api-is31fl3745-led-t-members","1065":"/drivers/is31fl3745#api-is31fl3745-init","1066":"/drivers/is31fl3745#api-is31fl3745-init-arguments","1067":"/drivers/is31fl3745#api-is31fl3745-write-register","1068":"/drivers/is31fl3745#api-is31fl3745-write-register-arguments","1069":"/drivers/is31fl3745#api-is31fl3745-select-page","1070":"/drivers/is31fl3745#api-is31fl3745-select-page-arguments","1071":"/drivers/is31fl3745#api-is31fl3745-set-color","1072":"/drivers/is31fl3745#api-is31fl3745-set-color-arguments","1073":"/drivers/is31fl3745#api-is31fl3745-set-color-all","1074":"/drivers/is31fl3745#api-is31fl3745-set-color-all-arguments","1075":"/drivers/is31fl3745#api-is31fl3745-set-value","1076":"/drivers/is31fl3745#api-is31fl3745-set-value-arguments","1077":"/drivers/is31fl3745#api-is31fl3745-set-value-all","1078":"/drivers/is31fl3745#api-is31fl3745-set-value-all-arguments","1079":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-rgb","1080":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-rgb-arguments","1081":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-mono","1082":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-mono-arguments","1083":"/drivers/is31fl3745#api-is31fl3745-update-pwm-buffers","1084":"/drivers/is31fl3745#api-is31fl3745-update-pwm-buffers-arguments","1085":"/drivers/is31fl3745#api-is31fl3745-update-scaling-registers","1086":"/drivers/is31fl3745#api-is31fl3745-update-scaling-registers-arguments","1087":"/drivers/is31fl3746a#is31fl3746a-driver","1088":"/drivers/is31fl3746a#usage","1089":"/drivers/is31fl3746a#basic-configuration","1090":"/drivers/is31fl3746a#i2c-addressing","1091":"/drivers/is31fl3746a#pwm-frequency","1092":"/drivers/is31fl3746a#de-ghosting","1093":"/drivers/is31fl3746a#global-current-control","1094":"/drivers/is31fl3746a#arm-configuration","1095":"/drivers/is31fl3746a#led-mapping","1096":"/drivers/is31fl3746a#api","1097":"/drivers/is31fl3746a#api-is31fl3746a-led-t","1098":"/drivers/is31fl3746a#api-is31fl3746a-led-t-members","1099":"/drivers/is31fl3746a#api-is31fl3746a-init","1100":"/drivers/is31fl3746a#api-is31fl3746a-init-arguments","1101":"/drivers/is31fl3746a#api-is31fl3746a-write-register","1102":"/drivers/is31fl3746a#api-is31fl3746a-write-register-arguments","1103":"/drivers/is31fl3746a#api-is31fl3746a-select-page","1104":"/drivers/is31fl3746a#api-is31fl3746a-select-page-arguments","1105":"/drivers/is31fl3746a#api-is31fl3746a-set-color","1106":"/drivers/is31fl3746a#api-is31fl3746a-set-color-arguments","1107":"/drivers/is31fl3746a#api-is31fl3746a-set-color-all","1108":"/drivers/is31fl3746a#api-is31fl3746a-set-color-all-arguments","1109":"/drivers/is31fl3746a#api-is31fl3746a-set-value","1110":"/drivers/is31fl3746a#api-is31fl3746a-set-value-arguments","1111":"/drivers/is31fl3746a#api-is31fl3746a-set-value-all","1112":"/drivers/is31fl3746a#api-is31fl3746a-set-value-all-arguments","1113":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-rgb","1114":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-rgb-arguments","1115":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-mono","1116":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-mono-arguments","1117":"/drivers/is31fl3746a#api-is31fl3746a-update-pwm-buffers","1118":"/drivers/is31fl3746a#api-is31fl3746a-update-pwm-buffers-arguments","1119":"/drivers/is31fl3746a#api-is31fl3746a-update-scaling-registers","1120":"/drivers/is31fl3746a#api-is31fl3746a-update-scaling-registers-arguments","1121":"/drivers/serial#serial-driver","1122":"/drivers/serial#bitbang","1123":"/drivers/serial#pin-configuration","1124":"/drivers/serial#setup","1125":"/drivers/serial#usart-half-duplex","1126":"/drivers/serial#pin-configuration-1","1127":"/drivers/serial#setup-1","1128":"/drivers/serial#usart-full-duplex","1129":"/drivers/serial#pin-configuration-2","1130":"/drivers/serial#setup-2","1131":"/drivers/serial#choosing-a-driver-subsystem","1132":"/drivers/serial#the-serial-driver","1133":"/drivers/serial#the-sio-driver","1134":"/drivers/serial#the-pio-driver","1135":"/drivers/serial#advanced-configuration","1136":"/drivers/serial#baudrate","1137":"/drivers/serial#timeout","1138":"/drivers/serial#troubleshooting","1139":"/drivers/serial#alternate-functions-for-selected-stm32-mcus","1140":"/drivers/serial#stm32f303-proton-c-datasheet","1141":"/drivers/serial#stm32f072-datasheet","1142":"/drivers/serial#stm32f103-medium-density-c8-cb-datasheet","1143":"/drivers/sled1734x#sled1734x-driver","1144":"/drivers/sled1734x#usage","1145":"/drivers/sled1734x#basic-configuration","1146":"/drivers/sled1734x#i2c-addressing","1147":"/drivers/sled1734x#arm-configuration","1148":"/drivers/sled1734x#led-mapping","1149":"/drivers/sled1734x#api","1150":"/drivers/sled1734x#api-sled1734x-led-t","1151":"/drivers/sled1734x#api-sled1734x-led-t-members","1152":"/drivers/sled1734x#api-sled1734x-init","1153":"/drivers/sled1734x#api-sled1734x-init-arguments","1154":"/drivers/sled1734x#api-sled1734x-write-register","1155":"/drivers/sled1734x#api-sled1734x-write-register-arguments","1156":"/drivers/sled1734x#api-sled1734x-select-page","1157":"/drivers/sled1734x#api-sled1734x-select-page-arguments","1158":"/drivers/sled1734x#api-sled1734x-set-color","1159":"/drivers/sled1734x#api-sled1734x-set-color-arguments","1160":"/drivers/sled1734x#api-sled1734x-set-color-all","1161":"/drivers/sled1734x#api-sled1734x-set-color-all-arguments","1162":"/drivers/sled1734x#api-sled1734x-set-led-control-register-rgb","1163":"/drivers/sled1734x#api-sled1734x-set-led-control-register-rgb-arguments","1164":"/drivers/sled1734x#api-sled1734x-update-pwm-buffers","1165":"/drivers/sled1734x#api-sled1734x-update-pwm-buffers-arguments","1166":"/drivers/sled1734x#api-sled1734x-update-led-control-registers","1167":"/drivers/sled1734x#api-sled1734x-update-led-control-registers-arguments","1168":"/drivers/sn32f2xx#sn32f2xx-driver","1169":"/drivers/sn32f2xx#hardware-configuration","1170":"/drivers/sn32f2xx#usage","1171":"/drivers/sn32f2xx#basic-configuration","1172":"/drivers/sn32f2xx#shared-matrix","1173":"/drivers/sn32f2xx#arm-configuration","1174":"/drivers/sn32f2xx#arm-pwm-driver","1175":"/drivers/sn32f2xx#api","1176":"/drivers/sn32f2xx#api-sn32f2xx-set-color","1177":"/drivers/sn32f2xx#api-sn32f2xx-set-color-arguments","1178":"/drivers/sn32f2xx#api-sn32f2xx-set-color-all","1179":"/drivers/sn32f2xx#api-sn32f2xx-set-color-all-arguments","1180":"/drivers/snled27351#snled27351-driver","1181":"/drivers/snled27351#usage","1182":"/drivers/snled27351#basic-configuration","1183":"/drivers/snled27351#i2c-addressing","1184":"/drivers/snled27351#arm-configuration","1185":"/drivers/snled27351#led-mapping","1186":"/drivers/snled27351#api","1187":"/drivers/snled27351#api-snled27351-led-t","1188":"/drivers/snled27351#api-snled27351-led-t-members","1189":"/drivers/snled27351#api-snled27351-init","1190":"/drivers/snled27351#api-snled27351-init-arguments","1191":"/drivers/snled27351#api-snled27351-write-register","1192":"/drivers/snled27351#api-snled27351-write-register-arguments","1193":"/drivers/snled27351#api-snled27351-select-page","1194":"/drivers/snled27351#api-snled27351-select-page-arguments","1195":"/drivers/snled27351#api-snled27351-set-color","1196":"/drivers/snled27351#api-snled27351-set-color-arguments","1197":"/drivers/snled27351#api-snled27351-set-color-all","1198":"/drivers/snled27351#api-snled27351-set-color-all-arguments","1199":"/drivers/snled27351#api-snled27351-set-value","1200":"/drivers/snled27351#api-snled27351-set-value-arguments","1201":"/drivers/snled27351#api-snled27351-set-value-all","1202":"/drivers/snled27351#api-snled27351-set-value-all-arguments","1203":"/drivers/snled27351#api-snled27351-set-led-control-register-rgb","1204":"/drivers/snled27351#api-snled27351-set-led-control-register-rgb-arguments","1205":"/drivers/snled27351#api-snled27351-set-led-control-register-mono","1206":"/drivers/snled27351#api-snled27351-set-led-control-register-mono-arguments","1207":"/drivers/snled27351#api-snled27351-update-pwm-buffers","1208":"/drivers/snled27351#api-snled27351-update-pwm-buffers-arguments","1209":"/drivers/snled27351#api-snled27351-update-led-control-registers","1210":"/drivers/snled27351#api-snled27351-update-led-control-registers-arguments","1211":"/drivers/spi#spi-master-driver","1212":"/drivers/spi#usage","1213":"/drivers/spi#avr-configuration","1214":"/drivers/spi#arm-configuration","1215":"/drivers/spi#api","1216":"/drivers/spi#api-spi-init","1217":"/drivers/spi#api-spi-start","1218":"/drivers/spi#api-spi-start-arguments","1219":"/drivers/spi#api-spi-start-return","1220":"/drivers/spi#api-spi-write","1221":"/drivers/spi#api-spi-write-arguments","1222":"/drivers/spi#api-spi-write-return","1223":"/drivers/spi#api-spi-read","1224":"/drivers/spi#api-spi-read-return","1225":"/drivers/spi#api-spi-transmit","1226":"/drivers/spi#api-spi-transmit-arguments","1227":"/drivers/spi#api-spi-transmit-return","1228":"/drivers/spi#api-spi-receive","1229":"/drivers/spi#api-spi-receive-arguments","1230":"/drivers/spi#api-spi-receive-return","1231":"/drivers/spi#api-spi-stop","1232":"/drivers/uart#uart-driver","1233":"/drivers/uart#usage","1234":"/drivers/uart#avr-configuration","1235":"/drivers/uart#arm-configuration","1236":"/drivers/uart#api","1237":"/drivers/uart#api-uart-init","1238":"/drivers/uart#api-uart-init-arguments","1239":"/drivers/uart#api-uart-write","1240":"/drivers/uart#api-uart-write-arguments","1241":"/drivers/uart#api-uart-read","1242":"/drivers/uart#api-uart-read-return","1243":"/drivers/uart#api-uart-transmit","1244":"/drivers/uart#api-uart-transmit-arguments","1245":"/drivers/uart#api-uart-receive","1246":"/drivers/uart#api-uart-receive-arguments","1247":"/drivers/uart#api-uart-available","1248":"/drivers/uart#api-uart-available-return","1249":"/drivers/ws2812#ws2812-driver","1250":"/drivers/ws2812#usage","1251":"/drivers/ws2812#basic-configuration","1252":"/drivers/ws2812#timing-adjustment","1253":"/drivers/ws2812#byte-order","1254":"/drivers/ws2812#rgbw-support","1255":"/drivers/ws2812#driver-configuration","1256":"/drivers/ws2812#bitbang-driver","1257":"/drivers/ws2812#i2c-driver","1258":"/drivers/ws2812#pio-driver","1259":"/drivers/ws2812#pwm-driver","1260":"/drivers/ws2812#spi-driver","1261":"/drivers/ws2812#arm-configuration","1262":"/drivers/ws2812#push-pull-open-drain","1263":"/drivers/ws2812#arm-spi-driver","1264":"/drivers/ws2812#arm-spi-baudrate","1265":"/drivers/ws2812#arm-spi-circular-buffer","1266":"/drivers/ws2812#arm-pio-driver","1267":"/drivers/ws2812#arm-pwm-driver","1268":"/drivers/ws2812#api","1269":"/drivers/ws2812#api-ws2812-setleds","1270":"/drivers/ws2812#api-ws2812-setleds-arguments","1271":"/easy_maker#easy-maker-build-one-off-projects-in-configurator","1272":"/easy_maker#quickstart","1273":"/easy_maker#direct-pin","1274":"/faq_build#frequently-asked-build-questions","1275":"/faq_build#can-t-program-on-linux","1276":"/faq_build#linux-udev-rules","1277":"/faq_build#serial-device-is-not-detected-in-bootloader-mode-on-linux","1278":"/faq_build#unknown-device-for-dfu-bootloader","1279":"/faq_build#usb-vid-and-pid","1280":"/faq_build#i-just-flashed-my-keyboard-and-it-does-nothing-keypresses-don-t-register-it-s-also-arm-rev6-planck-clueboard-60-hs60v2-etc-feb-2019","1281":"/faq_debug#debugging-faq","1282":"/faq_debug#debugging","1283":"/faq_debug#debugging-tools","1284":"/faq_debug#debugging-with-qmk-toolbox","1285":"/faq_debug#debugging-with-qmk-cli","1286":"/faq_debug#debugging-with-hid-listen","1287":"/faq_debug#debug-api","1288":"/faq_debug#debug-examples","1289":"/faq_debug#which-matrix-position-is-this-keypress","1290":"/faq_debug#how-long-did-it-take-to-scan-for-a-keypress","1291":"/faq_debug#hid-listen-can-t-recognize-device","1292":"/faq_debug#can-t-get-message-on-console","1293":"/faq_general#frequently-asked-questions","1294":"/faq_general#what-is-qmk","1295":"/faq_general#i-don-t-know-where-to-start","1296":"/faq_general#how-can-i-flash-the-firmware-i-built","1297":"/faq_general#what-if-i-have-an-issue-that-isn-t-covered-here","1298":"/faq_general#what-if-i-found-a-bug","1299":"/faq_general#but-git-and-github-are-intimidating","1300":"/faq_general#i-have-a-keyboard-that-i-want-to-add-support-for","1301":"/faq_general#what-if-i-want-to-brand-it-with-qmk","1302":"/faq_general#what-differences-are-there-between-qmk-and-tmk","1303":"/faq_keymap#keymap-faq","1304":"/faq_keymap#what-keycodes-can-i-use","1305":"/faq_keymap#what-are-the-default-keycodes","1306":"/faq_keymap#how-can-i-make-custom-names-for-complex-keycodes","1307":"/faq_keymap#my-keymap-doesn-t-update-when-i-flash-it","1308":"/faq_keymap#some-of-my-keys-are-swapped-or-not-working","1309":"/faq_keymap#the-menu-key-isn-t-working","1310":"/faq_keymap#power-keys-aren-t-working","1311":"/faq_keymap#one-shot-modifier","1312":"/faq_keymap#modifier-layer-stuck","1313":"/faq_keymap#mechanical-lock-switch-support","1314":"/faq_keymap#input-special-characters-other-than-ascii-like-cedille-c","1315":"/faq_keymap#fn-key-on-macos","1316":"/faq_keymap#keys-supported-in-mac-osx","1317":"/faq_keymap#jis-keys-in-mac-osx","1318":"/faq_keymap#rn-42-bluetooth-doesn-t-work-with-karabiner","1319":"/faq_keymap#esc-and-on-a-single-key","1320":"/faq_keymap#eject-on-mac-osx","1321":"/faq_keymap#what-are-real-and-weak-modifiers","1322":"/faq_misc#miscellaneous-faq","1323":"/faq_misc#testing","1324":"/faq_misc#safety-considerations","1325":"/faq_misc#nkro-doesn-t-work","1326":"/faq_misc#trackpoint-needs-reset-circuit-ps-2-mouse-support","1327":"/faq_misc#can-t-read-column-of-matrix-beyond-16","1328":"/faq_misc#special-extra-key-doesn-t-work-system-audio-control-keys","1329":"/faq_misc#wake-from-sleep-doesn-t-work","1330":"/faq_misc#using-arduino","1331":"/faq_misc#enabling-jtag","1332":"/faq_misc#usb-3-compatibility","1333":"/faq_misc#mac-compatibility","1334":"/faq_misc#os-x-10-11-and-hub","1335":"/faq_misc#problem-in-bios-uefi-setup-resume-sleep-wake-power-cycles","1336":"/feature_advanced_keycodes#modifier-keys","1337":"/feature_advanced_keycodes#checking-modifier-state","1338":"/feature_advanced_keycodes#examples","1339":"/feature_advanced_keycodes#alt-escape-for-alt-tab","1340":"/feature_advanced_keycodes#shift-backspace-for-delete","1341":"/feature_advanced_keycodes#advanced-topics","1342":"/feature_advanced_keycodes#switching-and-toggling-layers","1343":"/feature_advanced_keycodes#mod-tap","1344":"/feature_advanced_keycodes#one-shot-keys","1345":"/feature_advanced_keycodes#tap-hold-configuration-options","1346":"/feature_advanced_keycodes#key-overrides","1347":"/feature_converters#converters","1348":"/feature_converters#supported-converters","1349":"/feature_converters#overview","1350":"/feature_converters#conditional-configuration","1351":"/feature_converters#pin-compatibility","1352":"/feature_converters#pro-micro","1353":"/feature_converters#proton_c","1354":"/feature_converters#kb2040","1355":"/feature_converters#sparkfun_pm2040","1356":"/feature_converters#stemcell","1357":"/feature_converters#bonsai_c4","1358":"/feature_converters#rp2040_ce","1359":"/feature_converters#elite-c","1360":"/feature_converters#stemcell-stemcell-elite","1361":"/feature_converters#rp2040_ce_elite","1362":"/feature_debounce_type#contact-bounce-contact-chatter","1363":"/feature_debounce_type#types-of-debounce-algorithms","1364":"/feature_debounce_type#supported-debounce-algorithms","1365":"/feature_debounce_type#debounce-time","1366":"/feature_debounce_type#debounce-method","1367":"/feature_debounce_type#implementing-your-own-debouncing-code","1368":"/feature_eeprom#persistent-configuration-eeprom","1369":"/feature_eeprom#example-implementation","1370":"/feature_eeprom#eeconfig-function-documentation","1371":"/feature_layers#layers","1372":"/feature_layers#switching-and-toggling-layers","1373":"/feature_layers#caveats","1374":"/feature_layers#working-with-layers","1375":"/feature_layers#beginners","1376":"/feature_layers#intermediate-users","1377":"/feature_layers#advanced-users","1378":"/feature_layers#functions","1379":"/feature_layers#layer-change-code","1380":"/feature_layers#example-layer-state-set-implementation","1381":"/feature_layers#example-keycode-to-cycle-through-layers","1382":"/feature_layers#layer-state-set-function-documentation","1383":"/feature_layouts#layouts-using-a-keymap-with-multiple-keyboards","1384":"/feature_layouts#supporting-a-layout","1385":"/feature_layouts#building-a-keymap","1386":"/feature_layouts#conflicting-layouts","1387":"/feature_layouts#tips-for-making-layouts-keyboard-agnostic","1388":"/feature_layouts#includes","1389":"/feature_layouts#keymaps","1390":"/feature_macros#macros","1391":"/feature_macros#using-macros-in-json-keymaps","1392":"/feature_macros#selecting-your-host-keyboard-layout","1393":"/feature_macros#macro-basics","1394":"/feature_macros#object-format","1395":"/feature_macros#using-macros-in-c-keymaps","1396":"/feature_macros#send-string-process-record-user","1397":"/feature_macros#advanced-macros","1398":"/feature_macros#tap-down-and-up","1399":"/feature_macros#alternative-keymaps","1400":"/feature_macros#strings-in-memory","1401":"/feature_macros#advanced-macro-functions","1402":"/feature_macros#record-event-pressed","1403":"/feature_macros#register-code-kc","1404":"/feature_macros#unregister-code-kc","1405":"/feature_macros#tap-code-kc","1406":"/feature_macros#tap-code-delay-kc-delay","1407":"/feature_macros#register-code16-kc-unregister-code16-kc-tap-code16-kc-and-tap-code16-delay-kc-delay","1408":"/feature_macros#clear-keyboard","1409":"/feature_macros#clear-mods","1410":"/feature_macros#clear-keyboard-but-mods","1411":"/feature_macros#advanced-example","1412":"/feature_macros#super-alt↯tab","1413":"/feature_userspace#userspace-sharing-code-between-keymaps","1414":"/feature_userspace#rules-mk","1415":"/feature_userspace#override-default-userspace","1416":"/feature_userspace#configuration-options-config-h","1417":"/feature_userspace#readme-readme-md","1418":"/feature_userspace#build-all-keyboards-that-support-a-specific-keymap","1419":"/feature_userspace#examples","1420":"/feature_userspace#customized-functions","1421":"/feature_userspace#custom-features","1422":"/feature_userspace#consolidated-macros","1423":"/features/audio#audio","1424":"/features/audio#avr-based-boards","1425":"/features/audio#wiring","1426":"/features/audio#arm-based-boards","1427":"/features/audio#dac-basic","1428":"/features/audio#wiring-1","1429":"/features/audio#proton-c-example","1430":"/features/audio#dac-additive","1431":"/features/audio#pwm-software","1432":"/features/audio#wiring-2","1433":"/features/audio#pwm-hardware","1434":"/features/audio#tone-multiplexing","1435":"/features/audio#songs","1436":"/features/audio#audio-config","1437":"/features/audio#tempo","1438":"/features/audio#arm-audio-volume","1439":"/features/audio#voices","1440":"/features/audio#music-mode","1441":"/features/audio#music-mask","1442":"/features/audio#music-map","1443":"/features/audio#audio-click","1444":"/features/audio#midi-functionality","1445":"/features/audio#audio-keycodes","1446":"/features/auto_shift#auto-shift-why-do-we-need-a-shift-key","1447":"/features/auto_shift#why-auto-shift","1448":"/features/auto_shift#how-does-it-work","1449":"/features/auto_shift#are-there-limitations-to-auto-shift","1450":"/features/auto_shift#how-do-i-enable-auto-shift","1451":"/features/auto_shift#modifiers","1452":"/features/auto_shift#configuring-auto-shift","1453":"/features/auto_shift#auto-shift-timeout-value-in-ms","1454":"/features/auto_shift#no-auto-shift-special-simple-define","1455":"/features/auto_shift#no-auto-shift-tab-simple-define","1456":"/features/auto_shift#no-auto-shift-symbols-simple-define","1457":"/features/auto_shift#no-auto-shift-numeric-simple-define","1458":"/features/auto_shift#no-auto-shift-alpha-simple-define","1459":"/features/auto_shift#auto-shift-enter-simple-define","1460":"/features/auto_shift#auto-shift-per-key","1461":"/features/auto_shift#auto-shift-repeat-simple-define","1462":"/features/auto_shift#auto-shift-no-auto-repeat-simple-define","1463":"/features/auto_shift#auto-shift-alpha-predefined-key-group","1464":"/features/auto_shift#auto-shift-numeric-predefined-key-group","1465":"/features/auto_shift#auto-shift-symbols-predefined-key-group","1466":"/features/auto_shift#auto-shift-special-predefined-key-group","1467":"/features/auto_shift#custom-shifted-values","1468":"/features/auto_shift#retro-shift","1469":"/features/auto_shift#retro-shift-and-tap-hold-configurations","1470":"/features/auto_shift#using-auto-shift-setup","1471":"/features/auto_shift#setup","1472":"/features/auto_shift#use","1473":"/features/auto_shift#an-example-run","1474":"/features/autocorrect#autocorrect","1475":"/features/autocorrect#how-does-it-work","1476":"/features/autocorrect#how-do-i-enable-autocorrection","1477":"/features/autocorrect#customizing-autocorrect-library","1478":"/features/autocorrect#avoiding-false-triggers","1479":"/features/autocorrect#overriding-autocorrect","1480":"/features/autocorrect#keycodes","1481":"/features/autocorrect#user-callback-functions","1482":"/features/autocorrect#process-autocorrect","1483":"/features/autocorrect#process-autocorrect-example","1484":"/features/autocorrect#apply-autocorrect","1485":"/features/autocorrect#apply-autocorrect-example","1486":"/features/autocorrect#autocorrect-status","1487":"/features/autocorrect#appendix","1488":"/features/autocorrect#encoding","1489":"/features/autocorrect#decoding","1490":"/features/autocorrect#credits","1491":"/features/backlight#backlighting","1492":"/features/backlight#usage","1493":"/features/backlight#keycodes","1494":"/features/backlight#basic-configuration","1495":"/features/backlight#on-state","1496":"/features/backlight#multiple-backlight-pins","1497":"/features/backlight#driver-configuration","1498":"/features/backlight#pwm-driver","1499":"/features/backlight#timer-driver","1500":"/features/backlight#software-driver","1501":"/features/backlight#custom-driver","1502":"/features/backlight#avr-configuration","1503":"/features/backlight#avr-pwm-driver","1504":"/features/backlight#avr-timer-driver","1505":"/features/backlight#arm-configuration","1506":"/features/backlight#arm-pwm-driver","1507":"/features/backlight#arm-timer-driver","1508":"/features/backlight#example-schematic","1509":"/features/backlight#api","1510":"/features/backlight#api-backlight-toggle","1511":"/features/backlight#api-backlight-enable","1512":"/features/backlight#api-backlight-disable","1513":"/features/backlight#api-backlight-step","1514":"/features/backlight#api-backlight-increase","1515":"/features/backlight#api-backlight-decrease","1516":"/features/backlight#api-backlight-level","1517":"/features/backlight#api-backlight-level-arguments","1518":"/features/backlight#api-get-backlight-level","1519":"/features/backlight#api-get-backlight-level-return","1520":"/features/backlight#api-is-backlight-enabled","1521":"/features/backlight#api-is-backlight-enabled-return","1522":"/features/backlight#api-backlight-toggle-breathing","1523":"/features/backlight#api-backlight-enable-breathing","1524":"/features/backlight#api-backlight-disable-breathing","1525":"/features/backlight#api-is-backlight-breathing","1526":"/features/backlight#api-is-backlight-breathing-return","1527":"/features/bluetooth#bluetooth","1528":"/features/bluetooth#bluetooth-known-supported-hardware","1529":"/features/bluetooth#adafruit-ble-spi-friend","1530":"/features/bluetooth#bluetooth-rules-mk-options","1531":"/features/bluetooth#bluetooth-keycodes","1532":"/features/bootmagic#bootmagic","1533":"/features/bootmagic#split-keyboards","1534":"/features/bootmagic#advanced-bootmagic","1535":"/features/bootmagic#addenda","1536":"/features/caps_word#caps-word","1537":"/features/caps_word#how-do-i-enable-caps-word","1538":"/features/caps_word#troubleshooting-command","1539":"/features/caps_word#customizing-caps-word","1540":"/features/caps_word#invert-on-shift","1541":"/features/caps_word#idle-timeout","1542":"/features/caps_word#functions","1543":"/features/caps_word#configure-which-keys-are-word-breaking","1544":"/features/caps_word#representing-caps-word-state","1545":"/features/combo#combos","1546":"/features/combo#advanced-keycodes-support","1547":"/features/combo#overlapping-combos","1548":"/features/combo#examples","1549":"/features/combo#keycodes","1550":"/features/combo#advanced-configuration","1551":"/features/combo#combo-term","1552":"/features/combo#buffer-and-state-sizes","1553":"/features/combo#modifier-combos","1554":"/features/combo#strict-key-press-order","1555":"/features/combo#per-combo-timing-holding-tapping-and-key-press-order","1556":"/features/combo#generic-hook-to-dis-allow-a-combo-activation","1557":"/features/combo#combo-timer","1558":"/features/combo#define-combo-strict-timer","1559":"/features/combo#define-combo-no-timer","1560":"/features/combo#customizable-key-releases","1561":"/features/combo#customizable-key-repress","1562":"/features/combo#layer-independent-combos","1563":"/features/combo#combo-reference-layers-by-layer","1564":"/features/combo#user-callbacks","1565":"/features/combo#dictionary-management","1566":"/features/command#command","1567":"/features/command#usage","1568":"/features/command#configuration","1569":"/features/digitizer#digitizer","1570":"/features/digitizer#usage","1571":"/features/digitizer#positioning","1572":"/features/digitizer#examples","1573":"/features/digitizer#api","1574":"/features/digitizer#api-digitizer-t","1575":"/features/digitizer#api-digitizer-t-members","1576":"/features/digitizer#api-digitizer-flush","1577":"/features/digitizer#api-digitizer-in-range-on","1578":"/features/digitizer#api-digitizer-in-range-off","1579":"/features/digitizer#api-digitizer-tip-switch-on","1580":"/features/digitizer#api-digitizer-tip-switch-off","1581":"/features/digitizer#api-digitizer-barrel-switch-on","1582":"/features/digitizer#api-digitizer-barrel-switch-off","1583":"/features/digitizer#api-digitizer-set-position","1584":"/features/digitizer#api-digitizer-set-position-arguments","1585":"/features/dip_switch#dip-switches","1586":"/features/dip_switch#dip-switch-map","1587":"/features/dip_switch#callbacks","1588":"/features/dip_switch#hardware","1589":"/features/dip_switch#connects-each-switch-in-the-dip-switch-to-the-gpio-pin-of-the-mcu","1590":"/features/dip_switch#connect-each-switch-in-the-dip-switch-to-an-unused-intersections-in-the-key-matrix","1591":"/features/dynamic_macros#dynamic-macros-record-and-replay-macros-in-runtime","1592":"/features/dynamic_macros#customization","1593":"/features/dynamic_macros#dynamic-macro-user-call","1594":"/features/dynamic_macros#user-hooks","1595":"/features/encoders#encoders","1596":"/features/encoders#split-keyboards","1597":"/features/encoders#encoder-map","1598":"/features/encoders#callbacks","1599":"/features/encoders#hardware","1600":"/features/encoders#multiple-encoders","1601":"/features/grave_esc#grave-escape","1602":"/features/grave_esc#usage","1603":"/features/grave_esc#what-your-os-sees","1604":"/features/grave_esc#keycodes","1605":"/features/grave_esc#caveats","1606":"/features/grave_esc#configuration","1607":"/features/haptic_feedback#haptic-feedback","1608":"/features/haptic_feedback#haptic-feedback-rules-mk-options","1609":"/features/haptic_feedback#known-supported-hardware","1610":"/features/haptic_feedback#haptic-keycodes","1611":"/features/haptic_feedback#solenoids","1612":"/features/haptic_feedback#drv2605l","1613":"/features/haptic_feedback#feedback-motor-setup","1614":"/features/haptic_feedback#erm","1615":"/features/haptic_feedback#lra","1616":"/features/haptic_feedback#drv2605l-waveform-library","1617":"/features/haptic_feedback#optional-drv2605l-defines","1618":"/features/haptic_feedback#drv2605l-continuous-haptic-mode","1619":"/features/haptic_feedback#haptic-key-exclusion","1620":"/features/haptic_feedback#no-haptic-mod","1621":"/features/haptic_feedback#no-haptic-alpha","1622":"/features/haptic_feedback#no-haptic-punctuation","1623":"/features/haptic_feedback#no-haptic-lockkeys","1624":"/features/haptic_feedback#no-haptic-nav","1625":"/features/haptic_feedback#no-haptic-numeric","1626":"/features/hd44780#hd44780-lcd-driver","1627":"/features/hd44780#supported-hardware","1628":"/features/hd44780#usage","1629":"/features/hd44780#basic-configuration","1630":"/features/hd44780#examples","1631":"/features/hd44780#example-hello-world","1632":"/features/hd44780#example-custom-character","1633":"/features/hd44780#api","1634":"/features/hd44780#api-hd44780-init","1635":"/features/hd44780#api-hd44780-init-arguments","1636":"/features/hd44780#api-hd44780-clear","1637":"/features/hd44780#api-hd44780-home","1638":"/features/hd44780#api-hd44780-on","1639":"/features/hd44780#api-hd44780-on-arguments","1640":"/features/hd44780#api-hd44780-off","1641":"/features/hd44780#api-hd44780-set-cursor","1642":"/features/hd44780#api-hd44780-set-cursor-arguments","1643":"/features/hd44780#api-hd44780-putc","1644":"/features/hd44780#api-hd44780-putc-arguments","1645":"/features/hd44780#api-hd44780-puts","1646":"/features/hd44780#api-hd44780-puts-arguments","1647":"/features/hd44780#api-hd44780-puts-p","1648":"/features/hd44780#api-hd44780-puts-p-arguments","1649":"/features/hd44780#api-hd44780-define-char","1650":"/features/hd44780#api-hd44780-define-char-arguments","1651":"/features/hd44780#api-hd44780-define-char-p","1652":"/features/hd44780#api-hd44780-define-char-p-arguments","1653":"/features/hd44780#api-hd44780-busy","1654":"/features/hd44780#api-hd44780-busy-arguments","1655":"/features/hd44780#api-hd44780-write","1656":"/features/hd44780#api-hd44780-write-arguments","1657":"/features/hd44780#api-hd44780-read","1658":"/features/hd44780#api-hd44780-read-arguments","1659":"/features/hd44780#api-hd44780-read-return","1660":"/features/hd44780#api-hd44780-command","1661":"/features/hd44780#api-hd44780-command-arguments","1662":"/features/hd44780#api-hd44780-data","1663":"/features/hd44780#api-hd44780-data-arguments","1664":"/features/hd44780#api-hd44780-set-cgram-address","1665":"/features/hd44780#api-hd44780-set-cgram-address-arguments","1666":"/features/hd44780#api-hd44780-set-ddram-address","1667":"/features/hd44780#api-hd44780-set-ddram-address-arguments","1668":"/features/joystick#joystick","1669":"/features/joystick#usage","1670":"/features/joystick#configuration","1671":"/features/joystick#axes","1672":"/features/joystick#virtual-axes","1673":"/features/joystick#keycodes","1674":"/features/joystick#api","1675":"/features/joystick#api-joystick-t","1676":"/features/joystick#api-joystick-t-members","1677":"/features/joystick#api-joystick-config-t","1678":"/features/joystick#api-joystick-config-t-members","1679":"/features/joystick#api-joystick-flush","1680":"/features/joystick#api-register-joystick-button","1681":"/features/joystick#api-register-joystick-button-arguments","1682":"/features/joystick#api-unregister-joystick-button","1683":"/features/joystick#api-unregister-joystick-button-arguments","1684":"/features/joystick#api-joystick-read-axis","1685":"/features/joystick#api-joystick-read-axis-arguments","1686":"/features/joystick#api-joystick-read-axis-return","1687":"/features/joystick#api-joystick-set-axis","1688":"/features/joystick#api-joystick-set-axis-arguments","1689":"/features/key_lock#key-lock","1690":"/features/key_lock#usage","1691":"/features/key_lock#keycodes","1692":"/features/key_lock#caveats","1693":"/features/key_overrides#key-overrides","1694":"/features/key_overrides#a-few-more-examples-to-get-started-you-could-use-key-overrides-to","1695":"/features/key_overrides#setup","1696":"/features/key_overrides#creating-key-overrides","1697":"/features/key_overrides#ko-make-basic-modifiers-key-replacement","1698":"/features/key_overrides#ko-make-with-layers-modifiers-key-replacement-layers","1699":"/features/key_overrides#ko-make-with-layers-and-negmods-modifiers-key-replacement-layers-negative-mods","1700":"/features/key_overrides#ko-make-with-layers-negmods-and-options-modifiers-key-replacement-layers-negative-mods-options","1701":"/features/key_overrides#simple-example","1702":"/features/key_overrides#intermediate-difficulty-examples","1703":"/features/key_overrides#media-controls-amp-screen-brightness","1704":"/features/key_overrides#flexible-macos-friendly-grave-escape","1705":"/features/key_overrides#advanced-examples","1706":"/features/key_overrides#modifiers-as-layer-keys","1707":"/features/key_overrides#keycodes","1708":"/features/key_overrides#reference-for-key_override_t","1709":"/features/key_overrides#reference-for-ko_option_t","1710":"/features/key_overrides#for-advanced-users-inner-workings","1711":"/features/key_overrides#activation","1712":"/features/key_overrides#deactivation","1713":"/features/key_overrides#key-repeat-delay","1714":"/features/key_overrides#difference-to-combos","1715":"/features/key_overrides#neutralize-flashing-modifiers","1716":"/features/leader_key#the-leader-key","1717":"/features/leader_key#usage","1718":"/features/leader_key#callbacks","1719":"/features/leader_key#basic-configuration","1720":"/features/leader_key#timeout","1721":"/features/leader_key#per-key-timeout","1722":"/features/leader_key#disabling-initial-timeout","1723":"/features/leader_key#strict-key-processing","1724":"/features/leader_key#example","1725":"/features/leader_key#keycodes","1726":"/features/leader_key#api","1727":"/features/leader_key#api-leader-start-user","1728":"/features/leader_key#api-leader-end-user","1729":"/features/leader_key#api-leader-start","1730":"/features/leader_key#api-leader-end","1731":"/features/leader_key#api-leader-sequence-active","1732":"/features/leader_key#api-leader-sequence-add","1733":"/features/leader_key#api-leader-sequence-add-arguments","1734":"/features/leader_key#api-leader-sequence-add-return","1735":"/features/leader_key#api-leader-sequence-timed-out","1736":"/features/leader_key#api-leader-reset-timer","1737":"/features/leader_key#api-leader-sequence-one-key","1738":"/features/leader_key#api-leader-sequence-one-key-arguments","1739":"/features/leader_key#api-leader-sequence-one-key-return","1740":"/features/leader_key#api-leader-sequence-two-keys","1741":"/features/leader_key#api-leader-sequence-two-keys-arguments","1742":"/features/leader_key#api-leader-sequence-two-keys-return","1743":"/features/leader_key#api-leader-sequence-three-keys","1744":"/features/leader_key#api-leader-sequence-three-keys-arguments","1745":"/features/leader_key#api-leader-sequence-three-keys-return","1746":"/features/leader_key#api-leader-sequence-four-keys","1747":"/features/leader_key#api-leader-sequence-four-keys-arguments","1748":"/features/leader_key#api-leader-sequence-four-keys-return","1749":"/features/leader_key#api-leader-sequence-five-keys","1750":"/features/leader_key#api-leader-sequence-five-keys-arguments","1751":"/features/leader_key#api-leader-sequence-five-keys-return","1752":"/features/led_indicators#led-indicators","1753":"/features/led_indicators#configuration-options","1754":"/features/led_indicators#led-update-function","1755":"/features/led_indicators#example-of-keyboard-led-update-implementation","1756":"/features/led_indicators#example-of-user-led-update-implementation","1757":"/features/led_indicators#host-keyboard-led-state","1758":"/features/led_indicators#led-update-ports","1759":"/features/led_indicators#setting-physical-led-state","1760":"/features/led_indicators#ergodox-boards","1761":"/features/led_matrix#led-matrix-lighting","1762":"/features/led_matrix#driver-configuration","1763":"/features/led_matrix#common-configuration","1764":"/features/led_matrix#flags","1765":"/features/led_matrix#keycodes","1766":"/features/led_matrix#led-matrix-effects","1767":"/features/led_matrix#custom-led-matrix-effects","1768":"/features/led_matrix#additional-configh-options","1769":"/features/led_matrix#eeprom-storage","1770":"/features/led_matrix#callbacks","1771":"/features/led_matrix#indicators","1772":"/features/led_matrix#api","1773":"/features/led_matrix#api-led-matrix-toggle","1774":"/features/led_matrix#api-led-matrix-toggle-noeeprom","1775":"/features/led_matrix#api-led-matrix-enable","1776":"/features/led_matrix#api-led-matrix-enable-noeeprom","1777":"/features/led_matrix#api-led-matrix-disable","1778":"/features/led_matrix#api-led-matrix-disable-noeeprom","1779":"/features/led_matrix#api-led-matrix-is-enabled","1780":"/features/led_matrix#api-led-matrix-is-enabled-return","1781":"/features/led_matrix#led-matrix-set-value","1782":"/features/led_matrix#api-led-matrix-set-value-arguments","1783":"/features/led_matrix#api-led-matrix-set-value-all","1784":"/features/led_matrix#api-led-matrix-set-value-all-arguments","1785":"/features/led_matrix#api-led-matrix-mode","1786":"/features/led_matrix#api-led-matrix-mode-arguments","1787":"/features/led_matrix#api-led-matrix-mode-noeeprom","1788":"/features/led_matrix#api-led-matrix-mode-noeeprom-arguments","1789":"/features/led_matrix#api-led-matrix-step","1790":"/features/led_matrix#api-led-matrix-step-noeeprom","1791":"/features/led_matrix#api-led-matrix-step-reverse","1792":"/features/led_matrix#api-led-matrix-step-reverse-noeeprom","1793":"/features/led_matrix#api-led-matrix-get-mode","1794":"/features/led_matrix#api-led-matrix-get-mode-return","1795":"/features/led_matrix#api-led-matrix-increase-val","1796":"/features/led_matrix#api-led-matrix-increase-val-noeeprom","1797":"/features/led_matrix#api-led-matrix-decrease-val","1798":"/features/led_matrix#api-led-matrix-decrease-val-noeeprom","1799":"/features/led_matrix#api-led-matrix-get-val","1800":"/features/led_matrix#api-led-matrix-get-val-return","1801":"/features/led_matrix#api-led-matrix-increase-speed","1802":"/features/led_matrix#api-led-matrix-increase-speed-noeeprom","1803":"/features/led_matrix#api-led-matrix-decrease-speed","1804":"/features/led_matrix#api-led-matrix-decrease-speed-noeeprom","1805":"/features/led_matrix#api-led-matrix-set-speed","1806":"/features/led_matrix#api-led-matrix-set-speed-arguments","1807":"/features/led_matrix#api-led-matrix-set-speed-noeeprom","1808":"/features/led_matrix#api-led-matrix-set-speed-noeeprom-arguments","1809":"/features/led_matrix#api-led-matrix-get-speed","1810":"/features/led_matrix#api-led-matrix-get-speed-return","1811":"/features/led_matrix#api-led-matrix-reload-from-eeprom","1812":"/features/led_matrix#api-led-matrix-get-suspend-state","1813":"/features/led_matrix#api-led-matrix-get-suspend-state-return","1814":"/features/led_matrix#api-led-matrix-indicators-kb","1815":"/features/led_matrix#api-led-matrix-indicators-kb-return","1816":"/features/led_matrix#api-led-matrix-indicators-user","1817":"/features/led_matrix#api-led-matrix-indicators-user-return","1818":"/features/led_matrix#api-led-matrix-indicators-advanced-kb","1819":"/features/led_matrix#api-led-matrix-indicators-advanced-kb-arguments","1820":"/features/led_matrix#api-led-matrix-indicators-advanced-kb-return","1821":"/features/led_matrix#api-led-matrix-indicators-advanced-user","1822":"/features/led_matrix#api-led-matrix-indicators-advanced-user-arguments","1823":"/features/led_matrix#api-led-matrix-indicators-advanced-user-return","1824":"/features/midi#midi","1825":"/features/midi#usage","1826":"/features/midi#caveats","1827":"/features/midi#basic-midi","1828":"/features/midi#advanced-midi","1829":"/features/midi#sending-control-change-cc-messages","1830":"/features/midi#example-code-for-using-generic-on-off-switches-as-per-midi-specification","1831":"/features/midi#keycodes","1832":"/features/midi#configuration","1833":"/features/midi#references","1834":"/features/midi#midi-specification","1835":"/features/midi#qmk-c-files","1836":"/features/mouse_keys#mouse-keys","1837":"/features/mouse_keys#adding-mouse-keys-to-your-keyboard","1838":"/features/mouse_keys#enabling-mouse-keys","1839":"/features/mouse_keys#mapping-mouse-actions","1840":"/features/mouse_keys#configuring-mouse-keys","1841":"/features/mouse_keys#accelerated-mode","1842":"/features/mouse_keys#kinetic-mode","1843":"/features/mouse_keys#constant-mode","1844":"/features/mouse_keys#combined-mode","1845":"/features/mouse_keys#inertia-mode","1846":"/features/mouse_keys#overlapping-mouse-key-control","1847":"/features/mouse_keys#use-with-ps-2-mouse-and-pointing-device","1848":"/features/oled_driver#oled-driver","1849":"/features/oled_driver#supported-hardware","1850":"/features/oled_driver#usage","1851":"/features/oled_driver#oled-type","1852":"/features/oled_driver#logo-example","1853":"/features/oled_driver#buffer-read-example","1854":"/features/oled_driver#other-examples","1855":"/features/oled_driver#basic-configuration","1856":"/features/oled_driver#i2c-configuration","1857":"/features/oled_driver#spi-configuration","1858":"/features/oled_driver#_128x64-custom-sized-oled-displays","1859":"/features/oled_driver#_90-degree-rotation-technical-mumbo-jumbo","1860":"/features/oled_driver#oled-api","1861":"/features/oled_driver#ssd1306-h-driver-conversion-guide","1862":"/features/os_detection#os-detection","1863":"/features/os_detection#usage","1864":"/features/os_detection#callbacks","1865":"/features/os_detection#os-detection-stability","1866":"/features/os_detection#kvm-and-usb-switches","1867":"/features/os_detection#configuration-options","1868":"/features/os_detection#debug","1869":"/features/os_detection#credits","1870":"/features/programmable_button#programmable-button","1871":"/features/programmable_button#usage","1872":"/features/programmable_button#keycodes","1873":"/features/programmable_button#api","1874":"/features/programmable_button#api-programmable-button-clear","1875":"/features/programmable_button#api-programmable-button-add","1876":"/features/programmable_button#api-programmable-button-add-arguments","1877":"/features/programmable_button#api-programmable-button-remove","1878":"/features/programmable_button#api-programmable-button-remove-arguments","1879":"/features/programmable_button#api-programmable-button-register","1880":"/features/programmable_button#api-programmable-button-register-arguments","1881":"/features/programmable_button#api-programmable-button-unregister","1882":"/features/programmable_button#api-programmable-button-unregister-arguments","1883":"/features/programmable_button#api-programmable-button-is-on","1884":"/features/programmable_button#api-programmable-button-is-on-arguments","1885":"/features/programmable_button#api-programmable-button-is-on-return","1886":"/features/programmable_button#api-programmable-button-flush","1887":"/features/programmable_button#api-programmable-button-get-report","1888":"/features/programmable_button#api-programmable-button-get-report-return","1889":"/features/programmable_button#api-programmable-button-set-report","1890":"/features/programmable_button#api-programmable-button-set-report-arguments","1891":"/features/ps2_mouse#ps2-mouse-support","1892":"/features/ps2_mouse#the-circuitry-between-trackpoint-and-controller","1893":"/features/ps2_mouse#busywait-version","1894":"/features/ps2_mouse#interrupt-version-avr","1895":"/features/ps2_mouse#interrupt-version-chibios","1896":"/features/ps2_mouse#usart-version","1897":"/features/ps2_mouse#rp2040-pio-version","1898":"/features/ps2_mouse#additional-settings","1899":"/features/ps2_mouse#ps2-mouse-features","1900":"/features/ps2_mouse#fine-control","1901":"/features/ps2_mouse#scroll-button","1902":"/features/ps2_mouse#invert-buttons","1903":"/features/ps2_mouse#invert-mouse-and-scroll-axes","1904":"/features/ps2_mouse#rotate-mouse-axes","1905":"/features/ps2_mouse#debug-settings","1906":"/features/ps2_mouse#movement-hook","1907":"/features/repeat_key#repeat-key","1908":"/features/repeat_key#how-do-i-enable-repeat-key","1909":"/features/repeat_key#keycodes","1910":"/features/repeat_key#alternate-repeating","1911":"/features/repeat_key#defining-alternate-keys","1912":"/features/repeat_key#eliminating-sfbs","1913":"/features/repeat_key#typing-shortcuts","1914":"/features/repeat_key#ignoring-certain-keys-and-mods","1915":"/features/repeat_key#ignoring-a-key","1916":"/features/repeat_key#filtering-remembered-mods","1917":"/features/repeat_key#further-conditions","1918":"/features/repeat_key#handle-how-a-key-is-repeated","1919":"/features/repeat_key#handle-how-a-key-is-alternate-repeated","1920":"/features/repeat_key#functions","1921":"/features/repeat_key#additional-alternate-keys","1922":"/features/rawhid#raw-hid","1923":"/features/rawhid#usage","1924":"/features/rawhid#basic-configuration","1925":"/features/rawhid#sending-data-to-the-keyboard","1926":"/features/rawhid#receiving-data-from-the-keyboard","1927":"/features/rawhid#simple-example","1928":"/features/rawhid#api","1929":"/features/rawhid#api-raw-hid-receive","1930":"/features/rawhid#api-raw-hid-receive-arguments","1931":"/features/rawhid#api-raw-hid-send","1932":"/features/rawhid#api-raw-hid-send-arguments","1933":"/features/pointing_device#pointing-device","1934":"/features/pointing_device#sensor-drivers","1935":"/features/pointing_device#adns-5050-sensor","1936":"/features/pointing_device#adns-9800-sensor","1937":"/features/pointing_device#analog-joystick","1938":"/features/pointing_device#azoteq-iqs5xx-trackpad","1939":"/features/pointing_device#device-settings","1940":"/features/pointing_device#gesture-settings","1941":"/features/pointing_device#rotation-settings","1942":"/features/pointing_device#cirque-trackpad","1943":"/features/pointing_device#common-settings","1944":"/features/pointing_device#absolute-mode-settings","1945":"/features/pointing_device#absolute-mode-gestures","1946":"/features/pointing_device#relative-mode-gestures","1947":"/features/pointing_device#paw-3204-sensor","1948":"/features/pointing_device#pimoroni-trackball","1949":"/features/pointing_device#pmw3320-sensor","1950":"/features/pointing_device#pmw-3360-and-pmw-3389-sensor","1951":"/features/pointing_device#custom-driver","1952":"/features/pointing_device#common-configuration","1953":"/features/pointing_device#split-keyboard-configuration","1954":"/features/pointing_device#callbacks-and-functions","1955":"/features/pointing_device#split-keyboard-callbacks-and-functions","1956":"/features/pointing_device#manipulating-mouse-reports","1957":"/features/pointing_device#examples","1958":"/features/pointing_device#custom-mouse-keycode","1959":"/features/pointing_device#drag-scroll-or-mouse-scroll","1960":"/features/pointing_device#advanced-drag-scroll","1961":"/features/pointing_device#split-examples","1962":"/features/pointing_device#single-pointing-device","1963":"/features/pointing_device#combined-pointing-devices","1964":"/features/pointing_device#troubleshooting","1965":"/features/pointing_device#pointing-device-auto-mouse","1966":"/features/pointing_device#behaviour-of-layer-keys-that-activate-the-target-layer","1967":"/features/pointing_device#how-to-enable","1968":"/features/pointing_device#how-to-customize","1969":"/features/pointing_device#config-h-options","1970":"/features/pointing_device#adding-mouse-keys","1971":"/features/pointing_device#callbacks-for-setting-up-additional-key-codes-as-mouse-keys","1972":"/features/pointing_device#to-use-the-callback-function-to-add-mouse-keys","1973":"/features/pointing_device#advanced-control","1974":"/features/pointing_device#functions-to-control-auto-mouse-enable-and-target-layer","1975":"/features/pointing_device#functions-for-handling-custom-key-events","1976":"/features/pointing_device#advanced-control-examples","1977":"/features/pointing_device#disable-auto-mouse-on-certain-layers","1978":"/features/pointing_device#set-different-target-layer-when-a-particular-layer-is-active","1979":"/features/pointing_device#use-custom-keys-to-control-auto-mouse","1980":"/features/pointing_device#customize-target-layer-activation","1981":"/features/pointing_device#auto-mouse-for-custom-pointing-device-task","1982":"/features/rgb_matrix#rgb-matrix-lighting","1983":"/features/rgb_matrix#driver-configuration","1984":"/features/rgb_matrix#common-configuration","1985":"/features/rgb_matrix#flags","1986":"/features/rgb_matrix#keycodes","1987":"/features/rgb_matrix#rgb-matrix-effects","1988":"/features/rgb_matrix#rgb-matrix-effect-typing-heatmap","1989":"/features/rgb_matrix#rgb-matrix-effect-solid-reactive","1990":"/features/rgb_matrix#custom-rgb-matrix-effects","1991":"/features/rgb_matrix#colors","1992":"/features/rgb_matrix#additional-configh-options","1993":"/features/rgb_matrix#eeprom-storage","1994":"/features/rgb_matrix#callbacks","1995":"/features/rgb_matrix#indicators","1996":"/features/rgb_matrix#indicator-examples","1997":"/features/rgb_matrix#indicator-examples-2","1998":"/features/rgb_matrix#indicators-without-rgb-matrix-effect","1999":"/features/rgb_matrix#api","2000":"/features/rgb_matrix#api-rgb-matrix-toggle","2001":"/features/rgb_matrix#api-rgb-matrix-toggle-noeeprom","2002":"/features/rgb_matrix#api-rgb-matrix-enable","2003":"/features/rgb_matrix#api-rgb-matrix-enable-noeeprom","2004":"/features/rgb_matrix#api-rgb-matrix-disable","2005":"/features/rgb_matrix#api-rgb-matrix-disable-noeeprom","2006":"/features/rgb_matrix#api-rgb-matrix-is-enabled","2007":"/features/rgb_matrix#api-rgb-matrix-is-enabled-return","2008":"/features/rgb_matrix#api-rgb-matrix-set-color","2009":"/features/rgb_matrix#api-rgb-matrix-set-color-arguments","2010":"/features/rgb_matrix#api-rgb-matrix-set-color-all","2011":"/features/rgb_matrix#api-rgb-matrix-set-color-all-arguments","2012":"/features/rgb_matrix#api-rgb-matrix-mode","2013":"/features/rgb_matrix#api-rgb-matrix-mode-arguments","2014":"/features/rgb_matrix#api-rgb-matrix-mode-noeeprom","2015":"/features/rgb_matrix#api-rgb-matrix-mode-noeeprom-arguments","2016":"/features/rgb_matrix#api-rgb-matrix-step","2017":"/features/rgb_matrix#api-rgb-matrix-step-noeeprom","2018":"/features/rgb_matrix#api-rgb-matrix-step-reverse","2019":"/features/rgb_matrix#api-rgb-matrix-step-reverse-noeeprom","2020":"/features/rgb_matrix#api-rgb-matrix-get-mode","2021":"/features/rgb_matrix#api-rgb-matrix-get-mode-return","2022":"/features/rgb_matrix#api-rgb-matrix-increase-hue","2023":"/features/rgb_matrix#api-rgb-matrix-increase-hue-noeeprom","2024":"/features/rgb_matrix#api-rgb-matrix-decrease-hue","2025":"/features/rgb_matrix#api-rgb-matrix-decrease-hue-noeeprom","2026":"/features/rgb_matrix#api-rgb-matrix-get-hue","2027":"/features/rgb_matrix#api-rgb-matrix-get-hue-return","2028":"/features/rgb_matrix#api-rgb-matrix-increase-sat","2029":"/features/rgb_matrix#api-rgb-matrix-increase-sat-noeeprom","2030":"/features/rgb_matrix#api-rgb-matrix-decrease-sat","2031":"/features/rgb_matrix#api-rgb-matrix-decrease-sat-noeeprom","2032":"/features/rgb_matrix#api-rgb-matrix-get-sat","2033":"/features/rgb_matrix#api-rgb-matrix-get-sat-return","2034":"/features/rgb_matrix#api-rgb-matrix-increase-val","2035":"/features/rgb_matrix#api-rgb-matrix-increase-val-noeeprom","2036":"/features/rgb_matrix#api-rgb-matrix-decrease-val","2037":"/features/rgb_matrix#api-rgb-matrix-decrease-val-noeeprom","2038":"/features/rgb_matrix#api-rgb-matrix-get-val","2039":"/features/rgb_matrix#api-rgb-matrix-get-val-return","2040":"/features/rgb_matrix#api-rgb-matrix-increase-speed","2041":"/features/rgb_matrix#api-rgb-matrix-increase-speed-noeeprom","2042":"/features/rgb_matrix#api-rgb-matrix-decrease-speed","2043":"/features/rgb_matrix#api-rgb-matrix-decrease-speed-noeeprom","2044":"/features/rgb_matrix#api-rgb-matrix-set-speed","2045":"/features/rgb_matrix#api-rgb-matrix-set-speed-arguments","2046":"/features/rgb_matrix#api-rgb-matrix-set-speed-noeeprom","2047":"/features/rgb_matrix#api-rgb-matrix-set-speed-noeeprom-arguments","2048":"/features/rgb_matrix#api-rgb-matrix-get-speed","2049":"/features/rgb_matrix#api-rgb-matrix-get-speed-return","2050":"/features/rgb_matrix#api-rgb-matrix-sethsv","2051":"/features/rgb_matrix#api-rgb-matrix-sethsv-arguments","2052":"/features/rgb_matrix#api-rgb-matrix-sethsv-noeeprom","2053":"/features/rgb_matrix#api-rgb-matrix-sethsv-noeeprom-arguments","2054":"/features/rgb_matrix#api-rgb-matrix-get-hsv","2055":"/features/rgb_matrix#api-rgb-matrix-get-hsv-return","2056":"/features/rgb_matrix#api-rgb-matrix-reload-from-eeprom","2057":"/features/rgb_matrix#api-rgb-matrix-get-suspend-state","2058":"/features/rgb_matrix#api-rgb-matrix-get-suspend-state-return","2059":"/features/rgb_matrix#api-rgb-matrix-indicators-kb","2060":"/features/rgb_matrix#api-rgb-matrix-indicators-kb-return","2061":"/features/rgb_matrix#api-rgb-matrix-indicators-user","2062":"/features/rgb_matrix#api-rgb-matrix-indicators-user-return","2063":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-kb","2064":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-kb-arguments","2065":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-kb-return","2066":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-user","2067":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-user-arguments","2068":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-user-return","2069":"/features/rgblight#rgb-lighting","2070":"/features/rgblight#usage","2071":"/features/rgblight#color-selection","2072":"/features/rgblight#keycodes","2073":"/features/rgblight#configuration","2074":"/features/rgblight#effects-and-animations","2075":"/features/rgblight#effect-and-animation-toggles","2076":"/features/rgblight#effect-and-animation-settings","2077":"/features/rgblight#example-usage-to-reduce-memory-footprint","2078":"/features/rgblight#animation-speed","2079":"/features/rgblight#lighting-layers","2080":"/features/rgblight#defining-lighting-layers","2081":"/features/rgblight#enabling-lighting-layers","2082":"/features/rgblight#lighting-layer-blink","2083":"/features/rgblight#overriding-rgb-lighting-on-off-status","2084":"/features/rgblight#retain-brightness","2085":"/features/rgblight#functions","2086":"/features/rgblight#low-level-functions","2087":"/features/rgblight#effects-and-animations-functions","2088":"/features/rgblight#effect-range-setting","2089":"/features/rgblight#direct-operation","2090":"/features/rgblight#effect-mode-change","2091":"/features/rgblight#effects-mode-disable-enable","2092":"/features/rgblight#hue-sat-val-change","2093":"/features/rgblight#speed-functions","2094":"/features/rgblight#layer-functions","2095":"/features/rgblight#query","2096":"/features/rgblight#colors","2097":"/features/rgblight#changing-the-order-of-the-leds","2098":"/features/rgblight#clipping-range","2099":"/features/rgblight#hardware-modification","2100":"/features/rgblight#velocikey","2101":"/features/rgblight#usage-1","2102":"/features/rgblight#configuration-1","2103":"/features/secure#secure","2104":"/features/secure#unlock-sequence","2105":"/features/secure#automatic-locking","2106":"/features/secure#usage","2107":"/features/secure#keycodes","2108":"/features/secure#configuration","2109":"/features/secure#functions","2110":"/features/send_string#send-string","2111":"/features/send_string#usage","2112":"/features/send_string#basic-configuration","2113":"/features/send_string#keycodes","2114":"/features/send_string#language-support","2115":"/features/send_string#examples","2116":"/features/send_string#example-hello-world","2117":"/features/send_string#example-keycode-injection","2118":"/features/send_string#api","2119":"/features/send_string#api-send-string","2120":"/features/send_string#api-send-string-arguments","2121":"/features/send_string#api-send-string-with-delay","2122":"/features/send_string#api-send-string-with-delay-arguments","2123":"/features/send_string#api-send-string-p","2124":"/features/send_string#api-send-string-p-arguments","2125":"/features/send_string#api-send-string-with-delay-p","2126":"/features/send_string#api-send-string-with-delay-p-arguments","2127":"/features/send_string#api-send-char","2128":"/features/send_string#api-send-char-arguments","2129":"/features/send_string#api-send-dword","2130":"/features/send_string#api-send-dword-arguments","2131":"/features/send_string#api-send-word","2132":"/features/send_string#api-send-word-arguments","2133":"/features/send_string#api-send-bytes","2134":"/features/send_string#api-send-byte-arguments","2135":"/features/send_string#api-send-nibble","2136":"/features/send_string#api-send-nibble-arguments","2137":"/features/send_string#api-tap-random-base64","2138":"/features/send_string#api-send-string-macro","2139":"/features/send_string#api-send-string-delay-macro","2140":"/features/sequencer#sequencer","2141":"/features/sequencer#enable-the-step-sequencer","2142":"/features/sequencer#tracks","2143":"/features/sequencer#resolutions","2144":"/features/sequencer#keycodes","2145":"/features/sequencer#functions","2146":"/features/space_cadet#space-cadet-the-future-built-in","2147":"/features/space_cadet#usage","2148":"/features/space_cadet#keycodes","2149":"/features/space_cadet#caveats","2150":"/features/space_cadet#configuration","2151":"/features/space_cadet#obsolete-configuration","2152":"/features/split_keyboard#split-keyboard","2153":"/features/split_keyboard#compatibility-overview","2154":"/features/split_keyboard#hardware-configuration","2155":"/features/split_keyboard#required-hardware","2156":"/features/split_keyboard#considerations","2157":"/features/split_keyboard#serial-wiring","2158":"/features/split_keyboard#i2c-wiring","2159":"/features/split_keyboard#firmware-configuration","2160":"/features/split_keyboard#layout-macro","2161":"/features/split_keyboard#setting-handedness","2162":"/features/split_keyboard#handedness-by-pin","2163":"/features/split_keyboard#handedness-by-matrix-pin","2164":"/features/split_keyboard#handedness-by-eeprom","2165":"/features/split_keyboard#handedness-by-define","2166":"/features/split_keyboard#communication-options","2167":"/features/split_keyboard#data-sync-options","2168":"/features/split_keyboard#custom-data-sync","2169":"/features/split_keyboard#hardware-configuration-options","2170":"/features/split_keyboard#hardware-considerations-and-mods","2171":"/features/split_keyboard#teensy-boards","2172":"/features/split_keyboard#additional-resources","2173":"/features/st7565#st7565-lcd-driver","2174":"/features/st7565#supported-hardware","2175":"/features/st7565#usage","2176":"/features/st7565#logo-example","2177":"/features/st7565#buffer-read-example","2178":"/features/st7565#other-examples","2179":"/features/st7565#basic-configuration","2180":"/features/st7565#custom-sized-displays","2181":"/features/st7565#api","2182":"/features/stenography#stenography-in-qmk","2183":"/features/stenography#plover-with-qwerty-keyboard","2184":"/features/stenography#plover-with-steno-protocol","2185":"/features/stenography#tx-bolt","2186":"/features/stenography#geminipr","2187":"/features/stenography#switching-protocols-on-the-fly","2188":"/features/stenography#configuring-qmk-for-steno","2189":"/features/stenography#learning-stenography","2190":"/features/stenography#interfacing-with-the-code","2191":"/features/stenography#keycode-reference","2192":"/features/swap_hands#swap-hands-action","2193":"/features/swap_hands#configuration","2194":"/features/swap_hands#swap-keycodes","2195":"/features/swap_hands#encoder-mapping","2196":"/features/swap_hands#functions","2197":"/features/tap_dance#tap-dance-a-single-key-can-do-3-5-or-100-different-things","2198":"/features/tap_dance#introduction","2199":"/features/tap_dance#how-to-use","2200":"/features/tap_dance#implementation","2201":"/features/tap_dance#examples","2202":"/features/tap_dance#simple-example","2203":"/features/tap_dance#complex-examples","2204":"/features/tap_dance#example-1","2205":"/features/tap_dance#example-2","2206":"/features/tap_dance#example-3","2207":"/features/tap_dance#example-4","2208":"/features/tap_dance#example-5","2209":"/features/tap_dance#example-6","2210":"/features/tri_layer#tri-layers","2211":"/features/tri_layer#keycodes","2212":"/features/tri_layer#configuration","2213":"/features/tri_layer#functions","2214":"/features/unicode#unicode","2215":"/features/unicode#caveats","2216":"/features/unicode#usage","2217":"/features/unicode#basic-configuration","2218":"/features/unicode#audio-feedback","2219":"/features/unicode#input-subsystems","2220":"/features/unicode#unicodemap-pairs","2221":"/features/unicode#input-modes","2222":"/features/unicode#keycodes","2223":"/features/unicode#api","2224":"/features/unicode#api-get-unicode-input-mode","2225":"/features/unicode#api-get-unicode-input-mode-return-value","2226":"/features/unicode#api-set-unicode-input-mode","2227":"/features/unicode#api-set-unicode-input-mode-arguments","2228":"/features/unicode#api-unicode-input-mode-step","2229":"/features/unicode#api-unicode-input-mode-step-reverse","2230":"/features/unicode#api-unicode-input-mode-set-user","2231":"/features/unicode#api-unicode-input-mode-set-user-arguments","2232":"/features/unicode#api-unicode-input-mode-set-kb","2233":"/features/unicode#api-unicode-input-mode-set-kb-arguments","2234":"/features/unicode#api-unicode-input-start","2235":"/features/unicode#api-unicode-input-finish","2236":"/features/unicode#api-unicode-input-cancel","2237":"/features/unicode#api-register-unicode","2238":"/features/unicode#api-register-unicode-arguments","2239":"/features/unicode#api-send-unicode-string","2240":"/features/unicode#api-send-unicode-string-arguments","2241":"/features/unicode#api-unicodemap-index","2242":"/features/unicode#api-unicodemap-index-arguments","2243":"/features/unicode#api-unicodemap-index-return-value","2244":"/features/unicode#api-unicodemap-get-code-point","2245":"/features/unicode#unicodemap-get-code-point-arguments","2246":"/features/unicode#unicodemap-get-code-point-return-value","2247":"/features/unicode#api-register-unicodemap","2248":"/features/unicode#api-register-unicodemap-arguments","2249":"/features/unicode#api-ucis-start","2250":"/features/unicode#api-ucis-active","2251":"/features/unicode#api-ucis-active-return-value","2252":"/features/unicode#api-ucis-count","2253":"/features/unicode#api-ucis-count-return-value","2254":"/features/unicode#api-ucis-add","2255":"/features/unicode#api-ucis-add-arguments","2256":"/features/unicode#api-ucis-add-return-value","2257":"/features/unicode#api-ucis-remove-last","2258":"/features/unicode#api-ucis-remove-last-return-value","2259":"/features/unicode#api-ucis-finish","2260":"/features/unicode#api-ucis-cancel","2261":"/features/unicode#api-register-ucis","2262":"/features/unicode#api-register-ucis-arguments","2263":"/features/wpm#word-per-minute-wpm-calculation","2264":"/features/wpm#configuration","2265":"/features/wpm#public-functions","2266":"/features/wpm#callbacks","2267":"/flashing#flashing-instructions-and-bootloader-information","2268":"/flashing#atmel-dfu","2269":"/flashing#qmk-dfu","2270":"/flashing#make-targets","2271":"/flashing#caterina","2272":"/flashing#make-targets-1","2273":"/flashing#halfkay","2274":"/flashing#usbasploader","2275":"/flashing#bootloadhid","2276":"/flashing#qmk-hid","2277":"/flashing#make-targets-2","2278":"/flashing#stm32-apm32-dfu","2279":"/flashing#make-targets-3","2280":"/flashing#stm32duino","2281":"/flashing#kiibohd-dfu","2282":"/flashing#wb32-dfu","2283":"/flashing#tinyuf2","2284":"/flashing#make-targets-4","2285":"/flashing#uf2boot","2286":"/flashing#make-targets-5","2287":"/flashing#raspberry-pi-rp2040-uf2","2288":"/flashing#sn32-dfu","2289":"/getting_started_docker#docker-quick-start","2290":"/getting_started_docker#requirements","2291":"/getting_started_docker#usage","2292":"/getting_started_docker#faq","2293":"/getting_started_docker#why-can-t-i-flash-on-windows-macos","2294":"/getting_started_introduction#introduction","2295":"/getting_started_introduction#basic-qmk-structure","2296":"/getting_started_introduction#userspace-structure","2297":"/getting_started_introduction#keyboard-project-structure","2298":"/getting_started_introduction#keymap-structure","2299":"/getting_started_introduction#the-config-h-file","2300":"/getting_started_make_guide#more-detailed-make-instructions","2301":"/getting_started_make_guide#rules-mk-options","2302":"/getting_started_make_guide#customizing-makefile-options-on-a-per-keymap-basis","2303":"/getting_started_github#how-to-use-github-with-qmk","2304":"/hand_wire#hand-wiring-guide","2305":"/hand_wire#parts-list","2306":"/hand_wire#starting-the-build","2307":"/hand_wire#planning-the-matrix","2308":"/hand_wire#common-microcontroller-boards","2309":"/hand_wire#wiring-the-matrix","2310":"/hand_wire#a-note-on-split-keyboards","2311":"/hand_wire#soldering","2312":"/hand_wire#soldering-the-diodes","2313":"/hand_wire#soldering-the-columns","2314":"/hand_wire#wiring-up-the-controller","2315":"/hand_wire#specific-instructions-for-the-teensy-2-0","2316":"/hand_wire#getting-some-basic-firmware-set-up","2317":"/hand_wire#flashing-the-firmware","2318":"/hand_wire#testing-your-firmware","2319":"/hand_wire#finishing-up","2320":"/hand_wire#links-to-other-guides","2321":"/hand_wire#legacy-content","2322":"/hand_wire#preamble-how-a-keyboard-matrix-works-and-why-we-need-diodes","2323":"/hardware_drivers#qmk-hardware-drivers","2324":"/hardware_drivers#available-drivers","2325":"/hardware_drivers#promicro-avr-only","2326":"/hardware_drivers#ssd1306-oled-driver","2327":"/hardware_drivers#ws2812","2328":"/hardware_drivers#is31fl3731","2329":"/hardware_drivers#is31fl3733","2330":"/hardware_drivers#_24xx-series-external-i2c-eeprom","2331":"/hardware_keyboard_guidelines#qmk-keyboard-guidelines","2332":"/hardware_keyboard_guidelines#use-qmk-lint","2333":"/hardware_keyboard_guidelines#naming-your-keyboard-project","2334":"/hardware_keyboard_guidelines#sub-folders","2335":"/hardware_keyboard_guidelines#keyboard-folder-structure","2336":"/hardware_keyboard_guidelines#readme-md","2337":"/hardware_keyboard_guidelines#info-json","2338":"/hardware_keyboard_guidelines#config-h","2339":"/hardware_keyboard_guidelines#rules-mk","2340":"/hardware_keyboard_guidelines#keyboard-name-c","2341":"/hardware_keyboard_guidelines#keyboard-name-h","2342":"/hardware_keyboard_guidelines#image-hardware-files","2343":"/hardware_keyboard_guidelines#keyboard-defaults","2344":"/hardware_keyboard_guidelines#magic-keycodes-and-command","2345":"/hardware_keyboard_guidelines#custom-keyboard-programming","2346":"/hardware_keyboard_guidelines#non-production-handwired-projects","2347":"/hardware_keyboard_guidelines#warnings-as-errors","2348":"/hardware_keyboard_guidelines#copyright-blurb","2349":"/hardware_keyboard_guidelines#license","2350":"/how_a_matrix_works#how-a-keyboard-matrix-works","2351":"/how_keyboards_work#how-keys-are-registered-and-interpreted-by-computers","2352":"/how_keyboards_work#schematic-view","2353":"/how_keyboards_work#_1-you-press-a-key","2354":"/how_keyboards_work#_2-what-the-firmware-sends","2355":"/how_keyboards_work#_3-what-the-event-input-kernel-does","2356":"/how_keyboards_work#_4-what-the-operating-system-does","2357":"/how_keyboards_work#back-to-the-firmware","2358":"/how_keyboards_work#list-of-characters-you-can-send","2359":"/how_keyboards_work#how-to-maybe-enter-unicode-characters","2360":"/#quantum-mechanical-keyboard-firmware","2361":"/#what-is-qmk-firmware","2362":"/#get-started","2363":"/#make-it-yours","2364":"/#need-help","2365":"/#give-back","2366":"/isp_flashing_guide#isp-flashing-guide","2367":"/isp_flashing_guide#hardware","2368":"/isp_flashing_guide#pro-micro-as-isp","2369":"/isp_flashing_guide#wiring","2370":"/isp_flashing_guide#arduino-uno-micro-as-isp","2371":"/isp_flashing_guide#wiring-1","2372":"/isp_flashing_guide#teensy-2-0-as-isp","2373":"/isp_flashing_guide#wiring-2","2374":"/isp_flashing_guide#sparkfun-pocketavr-usbtinyisp","2375":"/isp_flashing_guide#wiring-3","2376":"/isp_flashing_guide#usbasp","2377":"/isp_flashing_guide#wiring-4","2378":"/isp_flashing_guide#bus-pirate","2379":"/isp_flashing_guide#wiring-5","2380":"/isp_flashing_guide#software","2381":"/isp_flashing_guide#bootloader-firmware","2382":"/isp_flashing_guide#atmel-dfu","2383":"/isp_flashing_guide#caterina","2384":"/isp_flashing_guide#bootloadhid-ps2avrgb","2385":"/isp_flashing_guide#usbasploader","2386":"/isp_flashing_guide#flashing-the-bootloader","2387":"/isp_flashing_guide#setting-the-fuses","2388":"/isp_flashing_guide#creating-a-production-firmware","2389":"/isp_flashing_guide#flashing-stm32duino-bootloader","2390":"/isp_flashing_guide#software-1","2391":"/isp_flashing_guide#wiring-6","2392":"/isp_flashing_guide#flashing","2393":"/keycodes#keycodes-overview","2394":"/keycodes#basic-keycodes","2395":"/keycodes#quantum-keycodes","2396":"/keycodes#audio-keys","2397":"/keycodes#auto-shift","2398":"/keycodes#autocorrect","2399":"/keycodes#backlighting","2400":"/keycodes#bluetooth","2401":"/keycodes#caps-word","2402":"/keycodes#dynamic-macros","2403":"/keycodes#grave-escape","2404":"/keycodes#joystick","2405":"/keycodes#key-lock","2406":"/keycodes#layer-switching","2407":"/keycodes#leader-key","2408":"/keycodes#led-matrix","2409":"/keycodes#magic-keycodes","2410":"/keycodes#midi","2411":"/keycodes#mouse-keys","2412":"/keycodes#modifiers","2413":"/keycodes#mod-tap-keys","2414":"/keycodes#tapping-term-keys","2415":"/keycodes#rgb-lighting","2416":"/keycodes#rgb-matrix-lighting","2417":"/keycodes#us-ansi-shifted-symbols","2418":"/keycodes#one-shot-keys","2419":"/keycodes#programmable-button","2420":"/keycodes#repeat-key","2421":"/keycodes#space-cadet","2422":"/keycodes#swap-hands","2423":"/keycodes#unicode-support","2424":"/keycodes_basic#basic-keycodes","2425":"/keycodes_basic#letters-and-numbers","2426":"/keycodes_basic#f-keys","2427":"/keycodes_basic#punctuation","2428":"/keycodes_basic#lock-keys","2429":"/keycodes_basic#modifiers","2430":"/keycodes_basic#international","2431":"/keycodes_basic#commands","2432":"/keycodes_basic#media-keys","2433":"/keycodes_basic#number-pad","2434":"/keycodes_basic#special-keys","2435":"/keycodes_magic#magic-keycodes","2436":"/keycodes_us_ansi_shifted#us-ansi-shifted-symbols","2437":"/keycodes_us_ansi_shifted#caveats","2438":"/keycodes_us_ansi_shifted#keycodes","2439":"/keymap#keymap-overview","2440":"/keymap#keymap-and-layers","2441":"/keymap#keymap-layer-status","2442":"/keymap#layer-precedence-and-transparency","2443":"/keymap#anatomy-of-a-keymap-c","2444":"/keymap#definitions","2445":"/keymap#layers-and-keymaps","2446":"/keymap#base-layer","2447":"/keymap#function-overlay-layer","2448":"/keymap#nitty-gritty-details","2449":"/mod_tap#mod-tap","2450":"/mod_tap#caveats","2451":"/mod_tap#intercepting-mod-taps","2452":"/mod_tap#changing-tap-function","2453":"/mod_tap#changing-hold-function","2454":"/mod_tap#changing-both-tap-and-hold","2455":"/mod_tap#other-resources","2456":"/newbs#the-qmk-tutorial","2457":"/newbs#overview","2458":"/newbs#additional-resources","2459":"/newbs_building_firmware#building-your-first-firmware","2460":"/newbs_building_firmware#configure-your-build-environment-defaults-optional","2461":"/newbs_building_firmware#create-a-new-keymap","2462":"/newbs_building_firmware#open-keymap-c-in-your-favorite-text-editor","2463":"/newbs_building_firmware#customize-the-layout-to-your-liking","2464":"/newbs_building_firmware#build-your-firmware","2465":"/newbs_building_firmware#flash-your-firmware","2466":"/newbs_building_firmware_configurator#qmk-configurator","2467":"/newbs_building_firmware_workflow#building-qmk-with-github-userspace","2468":"/newbs_building_firmware_workflow#prerequisites","2469":"/newbs_building_firmware_workflow#environment-setup","2470":"/newbs_building_firmware_workflow#_1-install-git","2471":"/newbs_building_firmware_workflow#_2-github-authentication","2472":"/newbs_building_firmware_workflow#_3-create-a-repository","2473":"/newbs_building_firmware_workflow#initial-code-commit","2474":"/newbs_building_firmware_workflow#create-template-files","2475":"/newbs_building_firmware_workflow#add-a-json-keymap","2476":"/newbs_building_firmware_workflow#add-a-github-action-workflow","2477":"/newbs_building_firmware_workflow#commit-files-to-github","2478":"/newbs_building_firmware_workflow#review-workflow-output","2479":"/newbs_building_firmware_workflow#customising-your-keymap","2480":"/newbs_external_userspace#external-qmk-userspace","2481":"/newbs_external_userspace#setting-up-qmk-locally","2482":"/newbs_external_userspace#external-userspace-repository-setup-forked-on-github","2483":"/newbs_external_userspace#external-userspace-setup-locally-stored-only","2484":"/newbs_external_userspace#adding-a-keymap","2485":"/newbs_external_userspace#adding-the-keymap-to-external-userspace-build-targets","2486":"/newbs_external_userspace#compiling-external-userspace-build-targets","2487":"/newbs_external_userspace#using-github-actions","2488":"/newbs_flashing#flashing-your-keyboard","2489":"/newbs_flashing#put-your-keyboard-into-dfu-bootloader-mode","2490":"/newbs_flashing#flashing-your-keyboard-with-qmk-toolbox","2491":"/newbs_flashing#load-the-file-into-qmk-toolbox","2492":"/newbs_flashing#flash-your-keyboard","2493":"/newbs_flashing#flash-your-keyboard-from-the-command-line","2494":"/newbs_flashing#test-it-out","2495":"/newbs_getting_started#setting-up-your-qmk-environment","2496":"/newbs_getting_started#_1-prerequisites","2497":"/newbs_getting_started#set-up-your-environment","2498":"/newbs_getting_started#prerequisites","2499":"/newbs_getting_started#prerequisites-1","2500":"/newbs_getting_started#installation","2501":"/newbs_getting_started#prerequisites-2","2502":"/newbs_getting_started#installation-1","2503":"/newbs_getting_started#prerequisites-3","2504":"/newbs_getting_started#installation-2","2505":"/newbs_getting_started#community-packages","2506":"/newbs_getting_started#installation-3","2507":"/newbs_getting_started#set-up-qmk","2508":"/newbs_getting_started#_4-test-your-build-environment","2509":"/newbs_getting_started#creating-your-keymap","2510":"/newbs_git_best_practices#best-git-practices-for-working-with-qmk","2511":"/newbs_git_best_practices#or-how-i-learned-to-stop-worrying-and-love-git","2512":"/newbs_git_resolving_merge_conflicts#resolving-merge-conflicts","2513":"/newbs_git_resolving_merge_conflicts#rebasing-your-changes","2514":"/newbs_git_resynchronize_a_branch#resynchronizing-an-out-of-sync-git-branch","2515":"/newbs_git_resynchronize_a_branch#backing-up-the-changes-on-your-own-master-branch-optional","2516":"/newbs_git_resynchronize_a_branch#resynchronizing-your-branch","2517":"/newbs_learn_more_resources#learning-resources","2518":"/newbs_learn_more_resources#qmk-resources","2519":"/newbs_learn_more_resources#command-line-resources","2520":"/newbs_learn_more_resources#text-editor-resources","2521":"/newbs_learn_more_resources#git-resources","2522":"/newbs_testing_debugging#testing-and-debugging","2523":"/newbs_testing_debugging#testing","2524":"/newbs_testing_debugging#debugging","2525":"/newbs_git_using_your_master_branch#your-fork-s-master-update-often-commit-never","2526":"/newbs_git_using_your_master_branch#updating-your-master-branch","2527":"/newbs_git_using_your_master_branch#making-changes","2528":"/newbs_git_using_your_master_branch#publishing-your-changes","2529":"/one_shot_keys#one-shot-keys","2530":"/one_shot_keys#callbacks","2531":"/other_eclipse#setting-up-eclipse-for-qmk-development","2532":"/other_eclipse#prerequisites","2533":"/other_eclipse#build-environment","2534":"/other_eclipse#java","2535":"/other_eclipse#install-eclipse-and-its-plugins","2536":"/other_eclipse#download-and-install-eclipse-cdt","2537":"/other_eclipse#first-launch","2538":"/other_eclipse#install-the-necessary-plugins","2539":"/other_eclipse#configure-eclipse-for-qmk","2540":"/other_eclipse#importing-the-project","2541":"/other_eclipse#build-your-keyboard","2542":"/other_vscode#setting-up-visual-studio-code-for-qmk-development","2543":"/other_vscode#set-up-vs-code","2544":"/other_vscode#windows","2545":"/other_vscode#prerequisites","2546":"/other_vscode#installing-vs-code","2547":"/other_vscode#msys2-setup","2548":"/other_vscode#every-other-operating-system","2549":"/other_vscode#extensions","2550":"/other_vscode#configure-vs-code-for-qmk","2551":"/other_vscode#configuring-vs-code","2552":"/other_vscode#debugging-arm-mcus-with-visual-studio-code","2553":"/platformdev_blackpill_f4x1#weact-blackpill-stm32f4x1","2554":"/platformdev_blackpill_f4x1#pin-usage-limitations","2555":"/platformdev_blackpill_f4x1#unusable-pins","2556":"/platformdev_blackpill_f4x1#pins-to-be-avoided","2557":"/platformdev_blackpill_f4x1#shared-usage","2558":"/platformdev_blackpill_f4x1#limited-usage","2559":"/platformdev_blackpill_f4x1#additional-information","2560":"/platformdev_blackpill_f4x1#bootloader-issues","2561":"/platformdev_blackpill_f4x1#tiny-uf2-support","2562":"/platformdev_chibios_earlyinit#chibios-early-init","2563":"/platformdev_chibios_earlyinit#early-hardware-init-pre","2564":"/platformdev_chibios_earlyinit#early-hardware-init-post","2565":"/platformdev_chibios_earlyinit#board-init","2566":"/platformdev_proton_c#proton-c","2567":"/platformdev_proton_c#features","2568":"/platformdev_proton_c#warnings","2569":"/platformdev_proton_c#manual-conversion","2570":"/platformdev_rp2040#raspberry-pi-rp2040","2571":"/platformdev_rp2040#gpio","2572":"/platformdev_rp2040#pin-nomenclature","2573":"/platformdev_rp2040#alternate-functions","2574":"/platformdev_rp2040#selecting-hardware-peripherals-and-drivers","2575":"/platformdev_rp2040#i2c-driver","2576":"/platformdev_rp2040#spi-driver","2577":"/platformdev_rp2040#uart-driver","2578":"/platformdev_rp2040#double-tap","2579":"/platformdev_rp2040#pre-defined-rp2040-boards","2580":"/platformdev_rp2040#generic-pro-micro-rp2040","2581":"/platformdev_rp2040#generic-rp2040-board","2582":"/platformdev_rp2040#split-keyboard-support","2583":"/platformdev_rp2040#rp2040-second-stage-bootloader-selection","2584":"/platformdev_rp2040#rp2040_ce","2585":"/platformdev_selecting_arm_mcu#choose-arm-mcu","2586":"/platformdev_selecting_arm_mcu#selecting-already-supported-mcu","2587":"/platformdev_selecting_arm_mcu#stm32-families","2588":"/platformdev_selecting_arm_mcu#non-stm32-families","2589":"/platformdev_selecting_arm_mcu#add-new-stm32-mcu","2590":"/platformdev_selecting_arm_mcu#add-new-stm32-family","2591":"/platformdev_selecting_arm_mcu#add-new-mcu-family","2592":"/porting_your_keyboard_to_qmk#adding-your-keyboard-to-qmk","2593":"/porting_your_keyboard_to_qmk#readme-md","2594":"/porting_your_keyboard_to_qmk#info-json","2595":"/porting_your_keyboard_to_qmk#hardware-configuration","2596":"/porting_your_keyboard_to_qmk#matrix-configuration","2597":"/porting_your_keyboard_to_qmk#direct-pin-matrix","2598":"/porting_your_keyboard_to_qmk#layout-macros","2599":"/porting_your_keyboard_to_qmk#additional-configuration","2600":"/porting_your_keyboard_to_qmk#configuration-options","2601":"/porting_your_keyboard_to_qmk#build-options","2602":"/pr_checklist#pr-checklists","2603":"/pr_checklist#requirements-for-all-prs","2604":"/pr_checklist#keymap-prs","2605":"/pr_checklist#keyboard-prs","2606":"/pr_checklist#core-pr","2607":"/pr_checklist#notes","2608":"/pr_checklist#review-process","2609":"/pr_checklist#example-gplv2-header","2610":"/quantum_keycodes#quantum-keycodes","2611":"/quantum_keycodes#qmk-keycodes","2612":"/quantum_painter#quantum-painter","2613":"/quantum_painter#quantum-painter-config","2614":"/quantum_painter#quantum-painter-cli","2615":"/quantum_painter#quantum-painter-drivers","2616":"/quantum_painter#quantum-painter-api","2617":"/quantum_painter_lvgl#lvgl","2618":"/quantum_painter_lvgl#lvgl-enabling","2619":"/quantum_painter_lvgl#lvgl-api","2620":"/quantum_painter_lvgl#lvgl-api-init","2621":"/quantum_painter_lvgl#lvgl-api-detach","2622":"/quantum_painter_lvgl#lvgl-configuring","2623":"/quantum_painter_lvgl#changing-the-lvgl-task-frequency","2624":"/quantum_painter_qff#qmk-font-format","2625":"/quantum_painter_qff#qff-block-header","2626":"/quantum_painter_qff#qff-font-descriptor","2627":"/quantum_painter_qff#qff-ascii-table","2628":"/quantum_painter_qff#qff-unicode-table","2629":"/quantum_painter_qff#qff-palette-descriptor","2630":"/quantum_painter_qff#qff-data-descriptor","2631":"/quantum_painter_qgf#qmk-graphics-format","2632":"/quantum_painter_qgf#qgf-block-header","2633":"/quantum_painter_qgf#qgf-graphics-descriptor","2634":"/quantum_painter_qgf#qgf-frame-offset-descriptor","2635":"/quantum_painter_qgf#qgf-frame-descriptor","2636":"/quantum_painter_qgf#qgf-frame-palette-descriptor","2637":"/quantum_painter_qgf#qgf-frame-delta-descriptor","2638":"/quantum_painter_qgf#qgf-frame-data-descriptor","2639":"/quantum_painter_rle#qmk-qp-rle-schema","2640":"/ref_functions#list-of-useful-core-functions-to-make-your-keyboard-better","2641":"/ref_functions#olkb-tri-layers","2642":"/ref_functions#update-tri-layer-x-y-z","2643":"/ref_functions#example","2644":"/ref_functions#update-tri-layer-state-state-x-y-z","2645":"/ref_functions#example-1","2646":"/ref_functions#setting-the-persistent-default-layer","2647":"/ref_functions#resetting-the-keyboard","2648":"/ref_functions#reset-to-bootloader","2649":"/ref_functions#wiping-the-eeprom-persistent-storage","2650":"/ref_functions#tap-random-key","2651":"/ref_functions#software-timers","2652":"/reference_configurator_support#supporting-your-keyboard-in-qmk-configurator","2653":"/reference_configurator_support#how-the-configurator-understands-keyboards","2654":"/reference_configurator_support#building-the-json-file","2655":"/reference_configurator_support#how-the-configurator-programs-keys","2656":"/reference_configurator_support#issues-and-hazards","2657":"/reference_configurator_support#workarounds","2658":"/reference_configurator_support#non-rectangular-keys","2659":"/reference_configurator_support#vertically-offset-keys","2660":"/reference_glossary#glossary-of-qmk-terms","2661":"/reference_glossary#arm","2662":"/reference_glossary#avr","2663":"/reference_glossary#azerty","2664":"/reference_glossary#backlight","2665":"/reference_glossary#bluetooth","2666":"/reference_glossary#bootloader","2667":"/reference_glossary#bootmagic","2668":"/reference_glossary#c","2669":"/reference_glossary#colemak","2670":"/reference_glossary#compile","2671":"/reference_glossary#dvorak","2672":"/reference_glossary#dynamic-macro","2673":"/reference_glossary#eclipse","2674":"/reference_glossary#firmware","2675":"/reference_glossary#git","2676":"/reference_glossary#github","2677":"/reference_glossary#isp","2678":"/reference_glossary#hid-listen","2679":"/reference_glossary#keycode","2680":"/reference_glossary#key-down","2681":"/reference_glossary#key-up","2682":"/reference_glossary#keymap","2683":"/reference_glossary#layer","2684":"/reference_glossary#leader-key","2685":"/reference_glossary#led","2686":"/reference_glossary#make","2687":"/reference_glossary#matrix","2688":"/reference_glossary#macro","2689":"/reference_glossary#mcu","2690":"/reference_glossary#modifier","2691":"/reference_glossary#mousekeys","2692":"/reference_glossary#n-key-rollover-nkro","2693":"/reference_glossary#oneshot-modifier","2694":"/reference_glossary#promicro","2695":"/reference_glossary#pull-request","2696":"/reference_glossary#qwerty","2697":"/reference_glossary#qwertz","2698":"/reference_glossary#rollover","2699":"/reference_glossary#scancode","2700":"/reference_glossary#space-cadet-shift","2701":"/reference_glossary#tap","2702":"/reference_glossary#tap-dance","2703":"/reference_glossary#teensy","2704":"/reference_glossary#underlight","2705":"/reference_glossary#unicode","2706":"/reference_glossary#unit-testing","2707":"/reference_glossary#usb","2708":"/reference_glossary#usb-host-or-simply-host","2709":"/reference_glossary#couldn-t-find-the-term-you-re-looking-for","2710":"/reference_info_json#info-json-reference","2711":"/reference_info_json#general-metadata","2712":"/reference_info_json#hardware-configuration","2713":"/reference_info_json#firmware-configuration","2714":"/reference_info_json#apa102","2715":"/reference_info_json#audio","2716":"/reference_info_json#backlight","2717":"/reference_info_json#bluetooth","2718":"/reference_info_json#bootmagic","2719":"/reference_info_json#caps-word","2720":"/reference_info_json#combo","2721":"/reference_info_json#dip-switch","2722":"/reference_info_json#eeprom","2723":"/reference_info_json#encoder","2724":"/reference_info_json#indicators","2725":"/reference_info_json#layouts","2726":"/reference_info_json#leader-key","2727":"/reference_info_json#led-matrix","2728":"/reference_info_json#matrix","2729":"/reference_info_json#mouse-keys","2730":"/reference_info_json#one-shot","2731":"/reference_info_json#ps2","2732":"/reference_info_json#qmk-lufa-bootloader","2733":"/reference_info_json#rgblight","2734":"/reference_info_json#rgb-matrix","2735":"/reference_info_json#secure","2736":"/reference_info_json#split-keyboard","2737":"/reference_info_json#stenography","2738":"/reference_info_json#usb","2739":"/reference_info_json#ws2812","2740":"/reference_keymap_extras#language-specific-keycodes","2741":"/reference_keymap_extras#sendstring-support","2742":"/reference_keymap_extras#header-files","2743":"/squeezing_avr#squeezing-the-most-out-of-avr","2744":"/squeezing_avr#rules-mk-settings","2745":"/squeezing_avr#config-h-settings","2746":"/squeezing_avr#audio-settings","2747":"/squeezing_avr#layers","2748":"/squeezing_avr#magic-functions","2749":"/squeezing_avr#oled-tweaks","2750":"/squeezing_avr#rgb-settings","2751":"/squeezing_avr#final-thoughts","2752":"/support#getting-help","2753":"/support#realtime-chat","2754":"/support#olkb-subreddit","2755":"/support#github-issues","2756":"/support_deprecation_policy#feature-support-policies","2757":"/support_deprecation_policy#system-constraints","2758":"/support_deprecation_policy#deprecation-removal-policy","2759":"/support_deprecation_policy#how-much-advance-notice-will-be-given","2760":"/support_deprecation_policy#how-will-deprecation-be-communicated","2761":"/syllabus#qmk-syllabus","2762":"/syllabus#beginning-topics","2763":"/syllabus#intermediate-topics","2764":"/syllabus#advanced-topics","2765":"/tap_hold#tap-hold-configuration-options","2766":"/tap_hold#tapping-term","2767":"/tap_hold#dynamic-tapping-term","2768":"/tap_hold#tap-or-hold-decision-modes","2769":"/tap_hold#comparison","2770":"/tap_hold#distinct-taps","2771":"/tap_hold#nested-tap","2772":"/tap_hold#rolling-keys","2773":"/tap_hold#default-mode","2774":"/tap_hold#permissive-hold","2775":"/tap_hold#hold-on-other-key-press","2776":"/tap_hold#quick-tap-term","2777":"/tap_hold#retro-tapping","2778":"/tap_hold#retro-shift","2779":"/tap_hold#why-do-we-include-the-key-record-for-the-per-key-functions","2780":"/tap_hold#why-are-there-no-kb-or-user-functions","2781":"/understanding_qmk#understanding-qmk-s-code","2782":"/understanding_qmk#startup","2783":"/understanding_qmk#the-main-loop","2784":"/understanding_qmk#matrix-scanning","2785":"/understanding_qmk#matrix-to-physical-layout-map","2786":"/understanding_qmk#keycode-assignment","2787":"/understanding_qmk#state-change-detection","2788":"/understanding_qmk#process-record","2789":"/unit_testing#unit-testing","2790":"/unit_testing#google-test-and-google-mock","2791":"/unit_testing#use-of-c","2792":"/unit_testing#adding-tests-for-new-or-existing-features","2793":"/unit_testing#running-the-tests","2794":"/unit_testing#debugging-the-tests","2795":"/unit_testing#full-integration-tests","2796":"/unit_testing#tracing-variables"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[6,1,56],"1":[6,6,41],"2":[4,6,36],"3":[11,6,49],"4":[6,6,33],"5":[9,6,41],"6":[9,6,47],"7":[10,6,44],"8":[8,6,34],"9":[7,1,47],"10":[5,7,90],"11":[9,7,46],"12":[3,7,19],"13":[2,7,30],"14":[9,7,69],"15":[12,7,49],"16":[7,7,44],"17":[7,7,25],"18":[4,7,30],"19":[7,1,51],"20":[2,7,1],"21":[7,9,50],"22":[6,9,46],"23":[6,9,47],"24":[6,9,43],"25":[13,9,69],"26":[6,9,12],"27":[13,9,20],"28":[6,9,77],"29":[2,7,1],"30":[6,9,44],"31":[6,15,121],"32":[6,9,45],"33":[8,9,42],"34":[6,17,100],"35":[12,9,22],"36":[4,21,57],"37":[2,7,60],"38":[3,7,58],"39":[7,1,47],"40":[4,7,1],"41":[2,11,1],"42":[6,13,1],"43":[7,13,48],"44":[3,11,1],"45":[5,14,91],"46":[4,11,35],"47":[2,7,1],"48":[1,9,22],"49":[3,9,349],"50":[4,9,260],"51":[4,7,31],"52":[7,1,47],"53":[4,7,1],"54":[2,11,1],"55":[6,13,47],"56":[8,13,21],"57":[8,13,39],"58":[6,13,25],"59":[3,11,1],"60":[4,14,15],"61":[2,7,1],"62":[1,9,26],"63":[3,9,83],"64":[4,9,45],"65":[4,7,121],"66":[7,1,1],"67":[4,7,48],"68":[2,7,1],"69":[5,8,51],"70":[4,8,171],"71":[3,7,1],"72":[4,10,35],"73":[1,10,113],"74":[3,10,149],"75":[4,10,117],"76":[4,10,90],"77":[5,10,68],"78":[7,1,1],"79":[2,7,1],"80":[7,8,13],"81":[5,8,9],"82":[5,8,31],"83":[4,8,33],"84":[4,8,14],"85":[4,7,1],"86":[3,10,86],"87":[5,10,50],"88":[3,15,39],"89":[5,10,24],"90":[6,10,75],"91":[2,7,1],"92":[1,8,112],"93":[3,8,234],"94":[4,8,145],"95":[4,8,35],"96":[7,1,1],"97":[2,7,1],"98":[4,9,54],"99":[3,9,74],"100":[3,9,29],"101":[4,7,1],"102":[3,10,85],"103":[4,10,63],"104":[4,14,41],"105":[7,10,65],"106":[3,7,1],"107":[3,10,84],"108":[5,10,19],"109":[4,10,21],"110":[1,14,42],"111":[2,14,107],"112":[3,14,117],"113":[4,10,105],"114":[2,7,1145],"115":[7,1,1],"116":[3,7,42],"117":[2,7,1],"118":[5,9,106],"119":[4,9,104],"120":[5,9,78],"121":[4,7,1],"122":[3,10,44],"123":[6,10,62],"124":[8,10,95],"125":[4,10,86],"126":[4,10,69],"127":[6,14,40],"128":[4,10,28],"129":[3,7,1],"130":[3,10,50],"131":[2,10,78],"132":[2,10,87],"133":[4,10,179],"134":[2,7,847],"135":[7,1,1],"136":[2,7,1],"137":[3,9,80],"138":[3,9,111],"139":[3,9,54],"140":[4,7,1],"141":[6,10,65],"142":[4,10,50],"143":[3,10,73],"144":[3,10,51],"145":[2,7,516],"146":[7,1,1],"147":[2,7,1],"148":[7,9,22],"149":[6,9,28],"150":[4,7,1],"151":[8,10,23],"152":[10,10,19],"153":[5,10,22],"154":[3,10,291],"155":[3,7,1],"156":[3,10,18],"157":[2,10,12],"158":[1,12,5],"159":[1,12,3],"160":[2,7,866],"161":[7,1,1],"162":[2,7,1],"163":[6,9,73],"164":[9,9,57],"165":[4,7,1],"166":[8,10,71],"167":[6,10,38],"168":[3,10,29],"169":[6,10,75],"170":[2,16,27],"171":[3,7,1],"172":[3,10,67],"173":[7,10,87],"174":[7,10,75],"175":[4,10,100],"176":[2,7,977],"177":[7,1,1],"178":[2,7,1],"179":[2,9,38],"180":[4,7,1],"181":[3,10,38],"182":[2,10,137],"183":[3,10,34],"184":[6,10,66],"185":[5,10,93],"186":[3,10,31],"187":[3,7,21],"188":[2,10,171],"189":[2,10,67],"190":[5,10,79],"191":[2,7,1144],"192":[7,1,1],"193":[4,7,1],"194":[7,10,182],"195":[9,10,106],"196":[7,10,89],"197":[3,10,37],"198":[3,7,105],"199":[2,7,907],"200":[7,1,1],"201":[2,7,147],"202":[4,8,71],"203":[7,8,74],"204":[3,8,37],"205":[4,7,1],"206":[7,10,60],"207":[3,10,49],"208":[3,7,1],"209":[4,10,60],"210":[4,10,31],"211":[2,7,1441],"212":[7,1,1],"213":[2,7,110],"214":[4,8,35],"215":[3,8,54],"216":[4,7,1],"217":[3,10,46],"218":[7,10,49],"219":[4,10,15],"220":[6,10,29],"221":[4,10,105],"222":[2,7,740],"223":[7,1,1],"224":[2,7,75],"225":[4,7,1],"226":[3,10,47],"227":[3,7,1],"228":[3,10,94],"229":[6,10,45],"230":[4,10,55],"231":[7,10,127],"232":[5,10,68],"233":[8,10,78],"234":[4,10,112],"235":[6,10,44],"236":[2,7,816],"237":[7,1,1],"238":[2,7,45],"239":[4,7,1],"240":[4,10,94],"241":[3,10,110],"242":[3,7,1],"243":[7,10,76],"244":[5,10,50],"245":[6,10,40],"246":[7,10,44],"247":[4,10,50],"248":[4,10,50],"249":[2,7,827],"250":[7,1,1],"251":[2,7,62],"252":[4,7,1],"253":[3,10,75],"254":[5,10,45],"255":[5,10,59],"256":[5,10,31],"257":[2,15,21],"258":[3,15,22],"259":[2,15,44],"260":[2,15,8],"261":[3,7,1],"262":[5,10,85],"263":[9,10,104],"264":[2,7,15],"265":[7,9,81],"266":[2,7,686],"267":[7,1,1],"268":[2,7,64],"269":[4,7,1],"270":[3,10,47],"271":[7,10,34],"272":[7,10,52],"273":[9,10,104],"274":[2,7,15],"275":[7,9,45],"276":[7,9,73],"277":[2,7,446],"278":[2,1,37],"279":[2,2,47],"280":[2,4,1],"281":[1,4,1],"282":[1,4,93],"283":[1,4,1],"284":[2,5,15],"285":[4,5,14],"286":[2,4,19],"287":[1,2,1],"288":[2,3,9],"289":[1,3,6],"290":[2,3,28],"291":[2,3,60],"292":[2,3,89],"293":[2,3,9],"294":[1,3,12],"295":[3,4,3],"296":[3,7,4],"297":[3,7,4],"298":[3,4,3],"299":[3,4,8],"300":[2,2,18],"301":[1,2,8],"302":[4,1,36],"303":[1,1,53],"304":[1,1,50],"305":[2,1,18],"306":[7,2,34],"307":[12,2,24],"308":[13,2,11],"309":[13,2,12],"310":[3,1,12],"311":[2,1,23],"312":[1,2,35],"313":[4,3,143],"314":[4,2,48],"315":[3,2,98],"316":[3,2,46],"317":[1,2,130],"318":[2,1,45],"319":[2,2,20],"320":[2,2,21],"321":[2,2,25],"322":[4,1,56],"323":[3,4,25],"324":[3,7,55],"325":[3,7,23],"326":[3,7,17],"327":[3,7,37],"328":[1,7,22],"329":[1,7,12],"330":[4,7,16],"331":[2,4,168],"332":[1,4,20],"333":[1,4,1],"334":[3,4,86],"335":[3,4,85],"336":[4,4,51],"337":[2,1,82],"338":[9,2,10],"339":[7,2,11],"340":[2,8,53],"341":[6,2,187],"342":[1,2,14],"343":[4,3,39],"344":[4,3,46],"345":[4,3,54],"346":[4,3,35],"347":[3,3,67],"348":[3,2,1],"349":[4,5,139],"350":[8,5,95],"351":[3,1,50],"352":[7,1,159],"353":[4,7,22],"354":[5,11,42],"355":[3,11,50],"356":[3,11,31],"357":[3,1,24],"358":[2,3,67],"359":[3,3,35],"360":[2,3,63],"361":[11,3,33],"362":[2,1,1],"363":[1,2,34],"364":[1,3,33],"365":[7,3,33],"366":[3,3,51],"367":[5,3,59],"368":[3,1,1],"369":[2,1,1],"370":[2,2,127],"371":[2,2,112],"372":[2,2,23],"373":[2,2,39],"374":[2,2,131],"375":[2,2,67],"376":[2,2,38],"377":[3,2,35],"378":[2,2,63],"379":[2,2,15],"380":[2,2,51],"381":[2,2,42],"382":[3,2,14],"383":[3,2,31],"384":[2,2,31],"385":[3,2,52],"386":[3,2,32],"387":[2,2,29],"388":[2,2,58],"389":[3,2,51],"390":[3,2,51],"391":[3,2,61],"392":[3,1,1],"393":[3,3,63],"394":[3,3,64],"395":[3,3,44],"396":[3,3,77],"397":[3,3,30],"398":[2,1,1],"399":[3,2,37],"400":[3,2,54],"401":[4,2,103],"402":[2,2,47],"403":[3,2,57],"404":[5,2,45],"405":[2,2,60],"406":[3,2,11],"407":[2,2,33],"408":[4,2,26],"409":[5,2,27],"410":[5,2,22],"411":[3,2,75],"412":[3,1,8],"413":[1,1,33],"414":[2,1,58],"415":[3,1,56],"416":[5,1,38],"417":[3,5,43],"418":[3,5,25],"419":[3,7,3],"420":[3,7,4],"421":[3,7,5],"422":[3,7,7],"423":[3,5,31],"424":[2,5,46],"425":[3,1,20],"426":[3,1,23],"427":[3,1,14],"428":[1,1,45],"429":[3,1,42],"430":[1,1,142],"431":[2,1,34],"432":[2,2,81],"433":[4,4,88],"434":[4,4,37],"435":[2,4,115],"436":[3,1,71],"437":[3,3,51],"438":[3,3,20],"439":[3,3,19],"440":[4,3,33],"441":[4,3,58],"442":[7,1,21],"443":[3,7,3],"444":[1,7,4],"445":[2,7,26],"446":[2,7,72],"447":[2,7,28],"448":[4,1,34],"449":[1,4,10],"450":[4,5,43],"451":[3,5,29],"452":[3,5,40],"453":[4,1,221],"454":[5,1,104],"455":[4,1,104],"456":[1,1,16],"457":[1,1,84],"458":[2,1,22],"459":[1,1,21],"460":[1,1,55],"461":[3,1,33],"462":[1,1,79],"463":[3,1,19],"464":[3,1,24],"465":[4,1,61],"466":[1,1,61],"467":[1,1,43],"468":[3,1,47],"469":[1,1,32],"470":[2,1,72],"471":[4,1,32],"472":[1,1,24],"473":[2,1,46],"474":[3,1,63],"475":[1,1,21],"476":[3,1,24],"477":[1,1,15],"478":[3,1,20],"479":[2,1,102],"480":[3,1,25],"481":[2,1,104],"482":[1,1,46],"483":[1,1,60],"484":[2,1,45],"485":[2,1,66],"486":[2,1,37],"487":[2,2,42],"488":[1,2,22],"489":[3,3,28],"490":[3,3,3],"491":[3,3,13],"492":[2,3,14],"493":[3,3,4],"494":[2,2,1],"495":[1,4,32],"496":[2,1,108],"497":[2,2,25],"498":[1,2,35],"499":[1,2,41],"500":[1,2,34],"501":[4,1,37],"502":[2,4,283],"503":[5,4,39],"504":[5,4,70],"505":[5,4,249],"506":[3,4,126],"507":[3,4,14],"508":[3,4,37],"509":[2,7,90],"510":[3,9,97],"511":[2,7,209],"512":[4,1,33],"513":[2,4,89],"514":[3,4,30],"515":[2,4,209],"516":[3,4,103],"517":[3,1,27],"518":[1,1,1],"519":[2,1,60],"520":[2,2,44],"521":[2,2,55],"522":[2,2,72],"523":[3,4,27],"524":[3,4,16],"525":[3,4,20],"526":[2,2,31],"527":[2,2,44],"528":[6,1,14],"529":[2,6,127],"530":[1,6,205],"531":[1,6,1],"532":[7,7,45],"533":[8,7,56],"534":[5,7,88],"535":[2,6,27],"536":[4,1,13],"537":[5,4,87],"538":[6,4,44],"539":[5,4,29],"540":[5,4,80],"541":[8,4,65],"542":[6,4,18],"543":[5,4,6],"544":[2,1,1],"545":[6,2,36],"546":[11,2,33],"547":[6,2,7],"548":[4,2,19],"549":[3,2,16],"550":[3,1,62],"551":[14,3,83],"552":[2,1,48],"553":[7,1,13],"554":[7,1,166],"555":[2,1,31],"556":[2,1,171],"557":[1,2,106],"558":[3,3,33],"559":[1,2,109],"560":[3,2,215],"561":[1,2,43],"562":[10,1,47],"563":[2,1,44],"564":[1,2,39],"565":[2,2,55],"566":[2,2,86],"567":[7,1,66],"568":[7,7,56],"569":[2,1,27],"570":[4,2,65],"571":[6,2,71],"572":[5,8,70],"573":[4,8,54],"574":[3,1,87],"575":[4,3,48],"576":[6,5,31],"577":[5,5,10],"578":[3,3,41],"579":[4,4,9],"580":[6,4,89],"581":[4,3,29],"582":[6,5,46],"583":[5,5,10],"584":[3,1,57],"585":[4,3,40],"586":[4,3,68],"587":[2,1,82],"588":[6,2,139],"589":[4,1,51],"590":[9,4,19],"591":[5,4,13],"592":[4,1,111],"593":[4,4,36],"594":[4,4,38],"595":[5,4,11],"596":[2,1,33],"597":[3,2,126],"598":[3,2,104],"599":[4,2,39],"600":[4,2,39],"601":[3,2,44],"602":[2,1,43],"603":[3,2,4],"604":[4,2,4],"605":[3,1,24],"606":[1,3,147],"607":[1,3,72],"608":[6,3,16],"609":[5,9,95],"610":[3,9,72],"611":[2,12,49],"612":[2,12,52],"613":[5,9,83],"614":[5,9,74],"615":[3,1,32],"616":[2,1,72],"617":[1,1,35],"618":[3,1,14],"619":[1,3,8],"620":[2,3,9],"621":[2,1,88],"622":[2,1,17],"623":[4,2,91],"624":[4,2,129],"625":[5,1,81],"626":[1,5,175],"627":[6,5,114],"628":[1,5,127],"629":[4,5,161],"630":[2,1,82],"631":[1,2,27],"632":[1,2,1],"633":[1,3,81],"634":[1,3,1],"635":[1,4,203],"636":[1,4,55],"637":[1,2,1],"638":[1,3,57],"639":[1,3,74],"640":[1,2,1],"641":[1,2,130],"642":[2,1,23],"643":[1,2,53],"644":[2,2,36],"645":[1,2,1],"646":[4,3,11],"647":[12,3,22],"648":[1,15,17],"649":[11,3,7],"650":[1,14,10],"651":[4,3,8],"652":[7,3,5],"653":[1,10,11],"654":[2,1,27],"655":[1,2,47],"656":[2,2,50],"657":[3,4,29],"658":[3,2,18],"659":[2,2,67],"660":[1,2,1],"661":[4,3,11],"662":[1,7,26],"663":[7,3,11],"664":[1,10,15],"665":[12,3,23],"666":[1,15,20],"667":[11,3,7],"668":[1,14,10],"669":[11,3,8],"670":[1,14,15],"671":[3,1,101],"672":[3,3,1],"673":[4,4,61],"674":[3,3,179],"675":[3,3,128],"676":[3,3,37],"677":[4,3,37],"678":[3,1,100],"679":[6,3,175],"680":[6,3,119],"681":[5,3,83],"682":[7,3,72],"683":[2,1,61],"684":[1,2,53],"685":[1,2,104],"686":[2,3,90],"687":[2,3,56],"688":[2,3,148],"689":[4,5,124],"690":[2,3,142],"691":[2,3,58],"692":[2,3,59],"693":[3,1,36],"694":[4,3,93],"695":[2,1,22],"696":[1,2,57],"697":[2,2,44],"698":[2,2,69],"699":[3,1,19],"700":[1,3,51],"701":[2,3,94],"702":[2,3,64],"703":[3,3,131],"704":[1,6,27],"705":[1,6,28],"706":[1,3,1],"707":[4,4,70],"708":[11,4,9],"709":[1,15,35],"710":[2,15,16],"711":[11,4,9],"712":[1,15,36],"713":[2,15,16],"714":[13,4,14],"715":[1,17,38],"716":[2,17,16],"717":[13,4,15],"718":[1,17,38],"719":[2,17,16],"720":[13,4,14],"721":[1,17,35],"722":[2,17,16],"723":[13,4,15],"724":[1,17,35],"725":[2,17,16],"726":[9,4,62],"727":[1,13,32],"728":[2,13,16],"729":[2,1,18],"730":[1,2,54],"731":[2,2,37],"732":[2,4,14],"733":[3,2,18],"734":[2,2,71],"735":[1,2,1],"736":[4,3,11],"737":[1,7,25],"738":[4,3,11],"739":[9,3,7],"740":[1,12,11],"741":[12,3,26],"742":[1,15,20],"743":[11,3,10],"744":[1,14,10],"745":[9,3,26],"746":[1,12,18],"747":[8,3,11],"748":[1,11,8],"749":[14,3,26],"750":[1,17,21],"751":[12,3,26],"752":[1,15,18],"753":[6,3,8],"754":[7,3,9],"755":[2,1,25],"756":[1,2,54],"757":[2,2,44],"758":[2,4,48],"759":[3,2,18],"760":[2,2,74],"761":[1,2,1],"762":[4,3,11],"763":[1,7,31],"764":[7,3,11],"765":[1,10,6],"766":[10,3,7],"767":[1,13,13],"768":[12,3,26],"769":[1,15,20],"770":[11,3,10],"771":[1,14,10],"772":[9,3,26],"773":[1,12,18],"774":[8,3,11],"775":[1,11,8],"776":[14,3,26],"777":[1,17,21],"778":[12,3,26],"779":[1,15,18],"780":[9,3,8],"781":[1,12,6],"782":[10,3,9],"783":[1,13,6],"784":[2,1,28],"785":[1,2,54],"786":[2,2,69],"787":[2,4,48],"788":[2,4,42],"789":[2,4,68],"790":[3,4,36],"791":[3,2,18],"792":[2,2,88],"793":[1,2,1],"794":[4,3,11],"795":[1,7,31],"796":[7,3,11],"797":[1,10,6],"798":[10,3,7],"799":[1,13,13],"800":[12,3,26],"801":[1,15,20],"802":[11,3,10],"803":[1,14,10],"804":[9,3,26],"805":[1,12,18],"806":[8,3,11],"807":[1,11,8],"808":[12,3,25],"809":[1,15,20],"810":[10,3,25],"811":[1,13,16],"812":[9,3,8],"813":[1,12,6],"814":[9,3,9],"815":[1,12,6],"816":[2,1,28],"817":[1,2,54],"818":[2,2,49],"819":[2,4,48],"820":[2,4,30],"821":[3,2,18],"822":[2,2,92],"823":[1,2,1],"824":[4,3,11],"825":[1,7,31],"826":[7,3,11],"827":[1,10,6],"828":[10,3,7],"829":[1,13,13],"830":[8,3,9],"831":[1,11,10],"832":[12,3,26],"833":[1,15,20],"834":[11,3,10],"835":[1,14,10],"836":[9,3,26],"837":[1,12,18],"838":[8,3,11],"839":[1,11,8],"840":[14,3,26],"841":[1,17,21],"842":[12,3,26],"843":[1,15,18],"844":[9,3,8],"845":[1,12,6],"846":[10,3,9],"847":[1,13,6],"848":[2,1,27],"849":[1,2,54],"850":[2,2,76],"851":[2,4,62],"852":[3,4,46],"853":[2,4,42],"854":[2,4,70],"855":[3,4,36],"856":[3,2,18],"857":[2,2,88],"858":[1,2,1],"859":[4,3,11],"860":[1,7,31],"861":[7,3,11],"862":[1,10,6],"863":[10,3,7],"864":[1,13,13],"865":[8,3,9],"866":[1,11,10],"867":[12,3,26],"868":[1,15,20],"869":[11,3,10],"870":[1,14,10],"871":[9,3,26],"872":[1,12,18],"873":[8,3,11],"874":[1,11,8],"875":[14,3,26],"876":[1,17,21],"877":[12,3,26],"878":[1,15,18],"879":[9,3,8],"880":[1,12,6],"881":[10,3,9],"882":[1,13,6],"883":[2,1,27],"884":[1,2,54],"885":[2,2,71],"886":[2,4,62],"887":[2,4,42],"888":[2,4,70],"889":[3,4,36],"890":[3,2,18],"891":[2,2,88],"892":[1,2,1],"893":[4,3,11],"894":[1,7,31],"895":[7,3,11],"896":[1,10,6],"897":[10,3,7],"898":[1,13,13],"899":[8,3,9],"900":[1,11,10],"901":[12,3,26],"902":[1,15,20],"903":[11,3,10],"904":[1,14,10],"905":[9,3,26],"906":[1,12,18],"907":[8,3,11],"908":[1,11,8],"909":[14,3,26],"910":[1,17,21],"911":[12,3,26],"912":[1,15,18],"913":[9,3,8],"914":[1,12,6],"915":[10,3,9],"916":[1,13,6],"917":[2,1,27],"918":[1,2,54],"919":[2,2,71],"920":[2,4,48],"921":[2,4,42],"922":[2,4,70],"923":[3,4,36],"924":[3,2,18],"925":[2,2,88],"926":[1,2,1],"927":[4,3,11],"928":[1,7,31],"929":[7,3,11],"930":[1,10,6],"931":[10,3,7],"932":[1,13,13],"933":[8,3,9],"934":[1,11,10],"935":[12,3,26],"936":[1,15,20],"937":[11,3,10],"938":[1,14,10],"939":[9,3,26],"940":[1,12,18],"941":[8,3,11],"942":[1,11,8],"943":[14,3,26],"944":[1,17,21],"945":[12,3,26],"946":[1,15,18],"947":[9,3,8],"948":[1,12,6],"949":[10,3,9],"950":[1,13,6],"951":[2,1,27],"952":[1,2,54],"953":[2,2,75],"954":[2,4,48],"955":[2,4,40],"956":[2,4,70],"957":[3,4,36],"958":[3,2,18],"959":[2,2,88],"960":[1,2,1],"961":[4,3,11],"962":[1,7,31],"963":[7,3,11],"964":[1,10,6],"965":[10,3,7],"966":[1,13,13],"967":[8,3,9],"968":[1,11,10],"969":[12,3,26],"970":[1,15,20],"971":[11,3,10],"972":[1,14,10],"973":[9,3,26],"974":[1,12,18],"975":[8,3,11],"976":[1,11,8],"977":[14,3,26],"978":[1,17,21],"979":[12,3,26],"980":[1,15,18],"981":[9,3,8],"982":[1,12,6],"983":[10,3,9],"984":[1,13,6],"985":[2,1,27],"986":[1,2,54],"987":[2,2,74],"988":[2,4,48],"989":[2,4,37],"990":[2,4,70],"991":[3,4,36],"992":[3,2,18],"993":[2,2,88],"994":[1,2,1],"995":[4,3,11],"996":[1,7,31],"997":[7,3,11],"998":[1,10,6],"999":[10,3,7],"1000":[1,13,13],"1001":[8,3,9],"1002":[1,11,10],"1003":[12,3,26],"1004":[1,15,20],"1005":[11,3,10],"1006":[1,14,10],"1007":[9,3,26],"1008":[1,12,18],"1009":[8,3,11],"1010":[1,11,8],"1011":[12,3,25],"1012":[1,15,20],"1013":[10,3,26],"1014":[1,13,16],"1015":[9,3,8],"1016":[1,12,6],"1017":[9,3,9],"1018":[1,12,6],"1019":[2,1,27],"1020":[1,2,54],"1021":[2,2,73],"1022":[2,4,62],"1023":[3,4,46],"1024":[2,4,72],"1025":[3,4,36],"1026":[3,2,18],"1027":[2,2,88],"1028":[1,2,1],"1029":[4,3,11],"1030":[1,7,31],"1031":[7,3,11],"1032":[1,10,6],"1033":[10,3,7],"1034":[1,13,13],"1035":[8,3,9],"1036":[1,11,10],"1037":[12,3,26],"1038":[1,15,20],"1039":[11,3,10],"1040":[1,14,10],"1041":[9,3,26],"1042":[1,12,18],"1043":[8,3,11],"1044":[1,11,8],"1045":[12,3,25],"1046":[1,15,20],"1047":[10,3,26],"1048":[1,13,16],"1049":[9,3,8],"1050":[1,12,6],"1051":[9,3,9],"1052":[1,12,6],"1053":[2,1,27],"1054":[1,2,54],"1055":[2,2,73],"1056":[2,4,62],"1057":[3,4,46],"1058":[2,4,72],"1059":[3,4,36],"1060":[3,2,18],"1061":[2,2,88],"1062":[1,2,1],"1063":[4,3,11],"1064":[1,7,31],"1065":[7,3,11],"1066":[1,10,6],"1067":[10,3,7],"1068":[1,13,13],"1069":[8,3,9],"1070":[1,11,10],"1071":[12,3,26],"1072":[1,15,20],"1073":[11,3,10],"1074":[1,14,10],"1075":[9,3,26],"1076":[1,12,18],"1077":[8,3,11],"1078":[1,11,8],"1079":[12,3,25],"1080":[1,15,20],"1081":[10,3,26],"1082":[1,13,16],"1083":[9,3,8],"1084":[1,12,6],"1085":[9,3,9],"1086":[1,12,6],"1087":[2,1,27],"1088":[1,2,54],"1089":[2,2,75],"1090":[2,4,62],"1091":[2,4,44],"1092":[2,4,72],"1093":[3,4,36],"1094":[3,2,18],"1095":[2,2,88],"1096":[1,2,1],"1097":[4,3,11],"1098":[1,7,31],"1099":[7,3,11],"1100":[1,10,12],"1101":[10,3,7],"1102":[1,13,13],"1103":[8,3,9],"1104":[1,11,10],"1105":[12,3,26],"1106":[1,15,20],"1107":[11,3,10],"1108":[1,14,10],"1109":[9,3,26],"1110":[1,12,18],"1111":[8,3,11],"1112":[1,11,8],"1113":[12,3,25],"1114":[1,15,20],"1115":[10,3,26],"1116":[1,13,16],"1117":[9,3,8],"1118":[1,12,6],"1119":[9,3,9],"1120":[1,12,6],"1121":[3,1,79],"1122":[1,3,56],"1123":[2,4,44],"1124":[1,4,58],"1125":[3,3,59],"1126":[2,6,90],"1127":[1,6,111],"1128":[3,3,62],"1129":[2,6,121],"1130":[1,6,124],"1131":[4,3,1],"1132":[3,7,95],"1133":[3,7,107],"1134":[3,7,95],"1135":[2,3,17],"1136":[1,5,70],"1137":[1,5,47],"1138":[1,3,48],"1139":[6,3,6],"1140":[3,9,35],"1141":[1,9,34],"1142":[6,9,82],"1143":[2,1,27],"1144":[1,1,48],"1145":[2,1,44],"1146":[2,2,48],"1147":[3,1,18],"1148":[2,1,80],"1149":[1,1,1],"1150":[4,1,11],"1151":[1,5,31],"1152":[7,1,11],"1153":[1,8,6],"1154":[10,1,7],"1155":[1,11,13],"1156":[8,1,9],"1157":[1,9,10],"1158":[12,1,26],"1159":[1,13,20],"1160":[11,1,10],"1161":[1,12,10],"1162":[14,1,26],"1163":[1,15,21],"1164":[9,1,8],"1165":[1,10,6],"1166":[10,1,9],"1167":[1,11,6],"1168":[2,1,18],"1169":[2,2,71],"1170":[1,2,53],"1171":[2,2,110],"1172":[2,2,38],"1173":[3,2,9],"1174":[2,5,49],"1175":[1,2,1],"1176":[12,3,11],"1177":[1,15,13],"1178":[11,3,10],"1179":[1,14,10],"1180":[2,1,39],"1181":[1,2,53],"1182":[2,2,44],"1183":[2,4,48],"1184":[3,2,18],"1185":[2,2,86],"1186":[1,2,1],"1187":[4,3,11],"1188":[1,7,31],"1189":[7,3,11],"1190":[1,10,6],"1191":[10,3,7],"1192":[1,13,13],"1193":[8,3,9],"1194":[1,11,10],"1195":[12,3,26],"1196":[1,15,20],"1197":[11,3,10],"1198":[1,14,10],"1199":[9,3,26],"1200":[1,12,18],"1201":[8,3,11],"1202":[1,11,8],"1203":[14,3,26],"1204":[1,17,21],"1205":[12,3,26],"1206":[1,15,18],"1207":[9,3,8],"1208":[1,12,6],"1209":[10,3,9],"1210":[1,13,6],"1211":[3,1,19],"1212":[1,3,51],"1213":[2,3,69],"1214":[3,3,131],"1215":[1,3,1],"1216":[4,4,18],"1217":[12,4,5],"1218":[1,16,83],"1219":[2,16,16],"1220":[7,4,9],"1221":[1,11,8],"1222":[2,11,11],"1223":[6,4,9],"1224":[2,10,14],"1225":[10,4,9],"1226":[1,14,21],"1227":[2,14,16],"1228":[9,4,9],"1229":[1,13,21],"1230":[2,13,16],"1231":[4,4,21],"1232":[2,1,40],"1233":[1,2,46],"1234":[2,2,41],"1235":[3,2,89],"1236":[1,2,1],"1237":[7,3,18],"1238":[1,10,31],"1239":[7,3,5],"1240":[1,10,8],"1241":[6,3,5],"1242":[2,9,19],"1243":[10,3,4],"1244":[1,13,21],"1245":[9,3,4],"1246":[1,12,21],"1247":[5,3,19],"1248":[2,8,10],"1249":[2,1,68],"1250":[1,2,53],"1251":[2,2,72],"1252":[2,4,63],"1253":[2,4,78],"1254":[2,4,80],"1255":[2,2,34],"1256":[2,3,49],"1257":[2,3,43],"1258":[2,3,56],"1259":[2,3,22],"1260":[2,3,49],"1261":[3,2,34],"1262":[5,5,82],"1263":[2,5,77],"1264":[3,6,57],"1265":[2,6,27],"1266":[2,5,23],"1267":[2,5,108],"1268":[1,2,1],"1269":[12,3,9],"1270":[1,15,17],"1271":[8,1,74],"1272":[1,8,48],"1273":[2,1,89],"1274":[4,1,25],"1275":[5,4,77],"1276":[3,9,78],"1277":[10,9,35],"1278":[5,4,70],"1279":[4,4,88],"1280":[25,8,78],"1281":[2,1,13],"1282":[1,2,60],"1283":[2,2,9],"1284":[4,3,16],"1285":[4,3,21],"1286":[4,3,26],"1287":[5,2,52],"1288":[2,2,18],"1289":[7,4,96],"1290":[11,4,46],"1291":[6,2,100],"1292":[6,2,50],"1293":[3,1,1],"1294":[4,3,25],"1295":[8,3,41],"1296":[8,3,25],"1297":[12,3,40],"1298":[7,3,22],"1299":[7,3,30],"1300":[10,3,16],"1301":[10,13,47],"1302":[9,3,132],"1303":[2,1,19],"1304":[6,2,24],"1305":[6,2,36],"1306":[10,2,40],"1307":[9,2,99],"1308":[9,2,58],"1309":[6,2,46],"1310":[5,2,67],"1311":[3,2,29],"1312":[3,2,57],"1313":[4,2,58],"1314":[10,2,5],"1315":[4,2,78],"1316":[6,2,46],"1317":[5,2,41],"1318":[8,2,43],"1319":[7,2,6],"1320":[4,2,52],"1321":[8,2,58],"1322":[2,1,1],"1323":[7,2,36],"1324":[2,2,173],"1325":[4,2,46],"1326":[9,2,33],"1327":[8,2,70],"1328":[11,2,19],"1329":[6,2,31],"1330":[3,2,47],"1331":[2,2,58],"1332":[3,2,17],"1333":[2,2,1],"1334":[6,4,10],"1335":[11,2,58],"1336":[2,1,86],"1337":[3,1,226],"1338":[1,3,20],"1339":[5,4,98],"1340":[5,4,176],"1341":[2,1,43],"1342":[1,2,2],"1343":[2,2,3],"1344":[3,2,4],"1345":[4,2,5],"1346":[2,2,3],"1347":[1,1,27],"1348":[2,1,31],"1349":[1,1,91],"1350":[2,2,36],"1351":[2,2,57],"1352":[2,1,95],"1353":[2,3,86],"1354":[2,3,56],"1355":[10,3,8],"1356":[1,3,72],"1357":[2,3,58],"1358":[8,3,27],"1359":[2,1,52],"1360":[3,3,15],"1361":[3,3,17],"1362":[4,1,148],"1363":[4,4,199],"1364":[3,4,9],"1365":[2,7,30],"1366":[2,7,136],"1367":[5,7,61],"1368":[4,1,113],"1369":[2,4,273],"1370":[4,4,35],"1371":[1,1,49],"1372":[4,1,204],"1373":[1,4,150],"1374":[3,1,38],"1375":[1,3,109],"1376":[2,3,48],"1377":[2,3,130],"1378":[1,1,144],"1379":[3,1,20],"1380":[5,4,43],"1381":[6,4,130],"1382":[5,4,21],"1383":[7,1,105],"1384":[3,7,54],"1385":[3,7,20],"1386":[2,8,37],"1387":[6,7,1],"1388":[1,12,64],"1389":[1,12,47],"1390":[1,1,73],"1391":[5,1,58],"1392":[5,5,119],"1393":[2,5,24],"1394":[2,7,79],"1395":[5,1,1],"1396":[6,5,194],"1397":[2,11,91],"1398":[4,11,129],"1399":[2,11,32],"1400":[3,11,58],"1401":[3,5,73],"1402":[4,8,30],"1403":[6,8,26],"1404":[6,8,29],"1405":[6,8,77],"1406":[7,8,21],"1407":[10,8,38],"1408":[3,8,10],"1409":[3,8,8],"1410":[5,8,11],"1411":[3,5,1],"1412":[2,8,98],"1413":[5,1,98],"1414":[2,5,115],"1415":[3,7,77],"1416":[5,5,60],"1417":[4,5,114],"1418":[8,5,36],"1419":[1,5,12],"1420":[2,6,130],"1421":[2,6,124],"1422":[2,6,252],"1423":[1,1,50],"1424":[3,1,59],"1425":[1,4,25],"1426":[3,1,11],"1427":[3,4,76],"1428":[2,7,49],"1429":[4,8,33],"1430":[3,4,98],"1431":[3,4,59],"1432":[1,7,38],"1433":[3,4,75],"1434":[2,1,88],"1435":[1,1,180],"1436":[2,1,129],"1437":[1,1,58],"1438":[3,1,67],"1439":[1,1,51],"1440":[2,1,165],"1441":[2,3,86],"1442":[2,3,166],"1443":[2,1,175],"1444":[2,1,3],"1445":[2,1,52],"1446":[9,1,20],"1447":[4,9,41],"1448":[5,9,101],"1449":[7,9,92],"1450":[7,9,35],"1451":[1,9,54],"1452":[3,9,48],"1453":[7,9,173],"1454":[7,9,17],"1455":[7,9,15],"1456":[7,9,14],"1457":[7,9,10],"1458":[7,9,12],"1459":[6,9,6],"1460":[4,9,79],"1461":[6,9,3],"1462":[7,9,10],"1463":[7,9,9],"1464":[7,9,25],"1465":[7,9,16],"1466":[7,9,14],"1467":[3,9,139],"1468":[2,9,139],"1469":[6,9,47],"1470":[4,9,18],"1471":[1,10,48],"1472":[1,10,94],"1473":[3,11,75],"1474":[1,1,32],"1475":[5,1,92],"1476":[5,1,60],"1477":[3,1,160],"1478":[3,4,121],"1479":[2,1,74],"1480":[1,2,20],"1481":[3,1,1],"1482":[2,4,112],"1483":[3,5,159],"1484":[2,4,73],"1485":[3,5,111],"1486":[2,4,24],"1487":[5,1,50],"1488":[1,6,213],"1489":[1,6,84],"1490":[1,1,22],"1491":[1,1,76],"1492":[1,1,32],"1493":[1,1,34],"1494":[2,1,100],"1495":[4,3,62],"1496":[3,3,91],"1497":[2,1,24],"1498":[2,3,19],"1499":[2,3,31],"1500":[2,3,37],"1501":[2,3,69],"1502":[2,1,1],"1503":[2,3,51],"1504":[2,3,51],"1505":[3,1,1],"1506":[2,4,96],"1507":[2,4,49],"1508":[2,1,84],"1509":[1,1,1],"1510":[4,2,7],"1511":[4,2,5],"1512":[4,2,5],"1513":[4,2,5],"1514":[4,2,5],"1515":[4,2,5],"1516":[6,2,5],"1517":[1,8,11],"1518":[7,2,6],"1519":[2,9,10],"1520":[6,2,6],"1521":[2,8,7],"1522":[5,2,7],"1523":[5,2,5],"1524":[5,2,5],"1525":[6,2,7],"1526":[2,8,7],"1527":[1,1,1],"1528":[4,1,94],"1529":[4,4,89],"1530":[4,1,34],"1531":[2,1,38],"1532":[1,1,110],"1533":[2,1,119],"1534":[2,1,81],"1535":[1,1,48],"1536":[2,1,174],"1537":[6,2,137],"1538":[2,6,80],"1539":[3,2,1],"1540":[3,3,85],"1541":[2,3,51],"1542":[1,3,20],"1543":[8,3,78],"1544":[4,3,45],"1545":[1,1,104],"1546":[3,1,56],"1547":[2,1,47],"1548":[1,1,148],"1549":[1,1,49],"1550":[2,1,12],"1551":[2,3,42],"1552":[4,3,108],"1553":[2,3,48],"1554":[4,3,24],"1555":[9,3,191],"1556":[8,3,69],"1557":[2,3,38],"1558":[5,5,47],"1559":[5,5,34],"1560":[3,3,92],"1561":[3,3,98],"1562":[3,3,61],"1563":[6,6,85],"1564":[2,1,40],"1565":[2,1,157],"1566":[1,1,60],"1567":[1,1,37],"1568":[1,1,149],"1569":[1,1,42],"1570":[1,1,12],"1571":[1,1,53],"1572":[1,1,63],"1573":[1,1,1],"1574":[3,2,6],"1575":[1,5,36],"1576":[4,2,13],"1577":[6,2,10],"1578":[6,2,10],"1579":[6,2,8],"1580":[6,2,8],"1581":[6,2,8],"1582":[6,2,8],"1583":[8,2,13],"1584":[1,10,16],"1585":[2,1,63],"1586":[3,2,66],"1587":[1,2,76],"1588":[1,2,1],"1589":[11,3,28],"1590":[13,3,15],"1591":[7,1,156],"1592":[1,7,114],"1593":[4,8,67],"1594":[2,8,69],"1595":[1,1,104],"1596":[2,1,84],"1597":[2,1,128],"1598":[1,1,112],"1599":[1,1,19],"1600":[2,1,96],"1601":[2,1,35],"1602":[1,2,34],"1603":[4,2,36],"1604":[1,2,17],"1605":[1,3,38],"1606":[1,2,48],"1607":[2,1,1],"1608":[5,2,77],"1609":[3,2,17],"1610":[2,2,72],"1611":[1,3,197],"1612":[1,3,23],"1613":[3,4,22],"1614":[1,6,71],"1615":[1,6,107],"1616":[3,4,205],"1617":[3,3,44],"1618":[4,3,15],"1619":[3,2,34],"1620":[3,4,73],"1621":[3,4,21],"1622":[3,4,38],"1623":[3,4,23],"1624":[3,4,32],"1625":[3,4,25],"1626":[3,1,1],"1627":[2,3,52],"1628":[1,3,12],"1629":[2,3,58],"1630":[1,3,1],"1631":[2,4,25],"1632":[3,4,90],"1633":[1,3,1],"1634":[7,4,17],"1635":[1,11,10],"1636":[4,4,10],"1637":[4,4,13],"1638":[7,4,15],"1639":[1,11,10],"1640":[4,4,5],"1641":[9,4,9],"1642":[1,13,20],"1643":[6,4,31],"1644":[1,10,7],"1645":[7,4,9],"1646":[1,11,8],"1647":[8,4,22],"1648":[1,12,13],"1649":[9,4,5],"1650":[1,13,34],"1651":[11,4,20],"1652":[1,15,36],"1653":[5,4,12],"1654":[2,9,7],"1655":[9,4,7],"1656":[1,13,18],"1657":[7,4,7],"1658":[1,11,13],"1659":[2,11,20],"1660":[6,4,24],"1661":[1,10,7],"1662":[6,4,18],"1663":[1,10,9],"1664":[8,4,13],"1665":[1,12,11],"1666":[8,4,17],"1667":[1,12,11],"1668":[1,1,60],"1669":[1,1,48],"1670":[1,1,73],"1671":[1,2,103],"1672":[2,3,62],"1673":[1,1,41],"1674":[1,1,1],"1675":[3,2,6],"1676":[1,5,44],"1677":[4,2,5],"1678":[1,6,24],"1679":[4,2,14],"1680":[7,2,10],"1681":[1,9,13],"1682":[7,2,10],"1683":[1,9,13],"1684":[7,2,10],"1685":[1,9,7],"1686":[2,9,14],"1687":[9,2,7],"1688":[1,11,11],"1689":[2,1,58],"1690":[1,2,27],"1691":[1,2,14],"1692":[1,2,66],"1693":[2,1,99],"1694":[13,2,30],"1695":[1,2,46],"1696":[3,2,34],"1697":[7,3,40],"1698":[8,3,14],"1699":[12,3,20],"1700":[13,3,37],"1701":[2,2,42],"1702":[3,2,1],"1703":[5,5,109],"1704":[5,5,80],"1705":[2,2,1],"1706":[4,4,107],"1707":[1,2,18],"1708":[5,2,192],"1709":[5,2,76],"1710":[5,2,36],"1711":[1,11,92],"1712":[1,11,87],"1713":[3,11,135],"1714":[3,2,95],"1715":[7,2,165],"1716":[8,1,33],"1717":[1,8,18],"1718":[1,8,72],"1719":[2,8,1],"1720":[1,10,39],"1721":[3,10,94],"1722":[3,10,101],"1723":[3,10,62],"1724":[1,8,82],"1725":[1,8,11],"1726":[1,8,1],"1727":[5,9,9],"1728":[5,9,9],"1729":[4,9,9],"1730":[4,9,5],"1731":[6,9,7],"1732":[8,9,18],"1733":[1,17,7],"1734":[2,17,11],"1735":[7,9,22],"1736":[6,9,6],"1737":[9,9,8],"1738":[1,18,8],"1739":[2,18,7],"1740":[10,9,8],"1741":[1,19,11],"1742":[2,19,7],"1743":[11,9,8],"1744":[1,20,13],"1745":[2,20,7],"1746":[12,9,8],"1747":[1,21,15],"1748":[2,21,7],"1749":[13,9,8],"1750":[1,22,17],"1751":[2,22,7],"1752":[2,1,80],"1753":[2,2,63],"1754":[3,2,63],"1755":[6,4,67],"1756":[6,4,54],"1757":[4,2,37],"1758":[4,2,32],"1759":[4,2,14],"1760":[2,5,53],"1761":[3,1,35],"1762":[2,3,66],"1763":[2,3,173],"1764":[1,3,44],"1765":[1,3,42],"1766":[3,3,132],"1767":[4,3,157],"1768":[4,3,109],"1769":[2,3,25],"1770":[1,3,1],"1771":[1,4,85],"1772":[1,3,1],"1773":[5,4,7],"1774":[6,4,14],"1775":[5,4,5],"1776":[6,4,12],"1777":[5,4,5],"1778":[6,4,12],"1779":[7,4,9],"1780":[2,11,7],"1781":[10,4,32],"1782":[1,14,16],"1783":[10,4,31],"1784":[1,14,9],"1785":[7,4,6],"1786":[1,11,8],"1787":[8,4,13],"1788":[1,12,8],"1789":[5,4,7],"1790":[6,4,13],"1791":[6,4,7],"1792":[7,4,13],"1793":[8,4,6],"1794":[2,12,8],"1795":[5,4,6],"1796":[7,4,13],"1797":[6,4,6],"1798":[7,4,13],"1799":[8,4,7],"1800":[2,12,9],"1801":[6,4,5],"1802":[7,4,12],"1803":[6,4,5],"1804":[7,4,12],"1805":[8,4,5],"1806":[1,12,11],"1807":[9,4,12],"1808":[1,13,11],"1809":[8,4,6],"1810":[2,12,9],"1811":[7,4,11],"1812":[8,4,9],"1813":[2,12,11],"1814":[7,4,18],"1815":[2,11,3],"1816":[7,4,18],"1817":[2,11,9],"1818":[11,4,18],"1819":[1,4,16],"1820":[2,5,3],"1821":[11,4,18],"1822":[1,4,16],"1823":[2,5,9],"1824":[1,1,1],"1825":[1,1,58],"1826":[1,2,17],"1827":[2,2,15],"1828":[2,2,15],"1829":[5,3,80],"1830":[13,3,66],"1831":[1,2,282],"1832":[1,2,50],"1833":[1,2,1],"1834":[2,3,7],"1835":[3,3,10],"1836":[2,1,31],"1837":[6,2,18],"1838":[3,7,19],"1839":[3,7,65],"1840":[3,2,97],"1841":[2,4,139],"1842":[2,4,154],"1843":[2,4,131],"1844":[2,4,78],"1845":[2,4,173],"1846":[4,4,66],"1847":[8,2,22],"1848":[2,1,1],"1849":[2,2,45],"1850":[1,2,27],"1851":[2,2,97],"1852":[2,2,135],"1853":[3,2,127],"1854":[2,2,112],"1855":[2,2,158],"1856":[2,4,14],"1857":[2,4,40],"1858":[6,2,151],"1859":[6,7,203],"1860":[2,2,280],"1861":[5,2,29],"1862":[2,1,54],"1863":[1,2,80],"1864":[1,2,56],"1865":[3,2,52],"1866":[4,2,38],"1867":[2,2,31],"1868":[1,2,107],"1869":[1,2,8],"1870":[2,1,81],"1871":[1,2,13],"1872":[1,2,42],"1873":[1,2,1],"1874":[5,3,6],"1875":[8,3,7],"1876":[1,11,13],"1877":[8,3,7],"1878":[1,11,13],"1879":[8,3,10],"1880":[1,11,13],"1881":[8,3,10],"1882":[1,11,13],"1883":[9,3,7],"1884":[1,12,13],"1885":[2,12,7],"1886":[5,3,8],"1887":[8,3,6],"1888":[2,11,7],"1889":[8,3,6],"1890":[1,11,10],"1891":[4,1,67],"1892":[6,4,26],"1893":[2,4,46],"1894":[5,6,61],"1895":[5,6,53],"1896":[2,6,104],"1897":[3,6,82],"1898":[2,4,1],"1899":[4,6,88],"1900":[2,6,38],"1901":[2,6,104],"1902":[3,6,20],"1903":[5,6,23],"1904":[3,6,47],"1905":[2,6,20],"1906":[2,6,37],"1907":[2,1,73],"1908":[6,2,33],"1909":[1,2,18],"1910":[2,2,176],"1911":[3,2,108],"1912":[2,5,86],"1913":[2,5,87],"1914":[5,2,56],"1915":[3,7,62],"1916":[3,7,74],"1917":[2,7,70],"1918":[6,2,102],"1919":[7,2,90],"1920":[1,2,34],"1921":[4,2,116],"1922":[2,1,67],"1923":[1,2,12],"1924":[2,2,39],"1925":[5,2,186],"1926":[5,2,48],"1927":[2,2,134],"1928":[1,2,1],"1929":[9,3,14],"1930":[1,12,17],"1931":[9,3,5],"1932":[1,12,19],"1933":[2,1,72],"1934":[2,2,38],"1935":[3,4,60],"1936":[3,4,80],"1937":[2,4,210],"1938":[3,4,36],"1939":[2,7,82],"1940":[2,7,88],"1941":[2,7,18],"1942":[2,4,45],"1943":[2,6,194],"1944":[3,6,36],"1945":[3,6,68],"1946":[3,6,73],"1947":[3,4,62],"1948":[2,4,79],"1949":[2,4,68],"1950":[5,4,210],"1951":[2,4,75],"1952":[2,2,166],"1953":[3,2,93],"1954":[3,2,85],"1955":[5,2,84],"1956":[3,1,133],"1957":[1,3,1],"1958":[3,4,73],"1959":[4,4,71],"1960":[3,4,147],"1961":[2,3,22],"1962":[3,5,64],"1963":[3,5,55],"1964":[1,1,51],"1965":[3,1,131],"1966":[9,3,70],"1967":[4,3,70],"1968":[4,3,24],"1969":[4,7,73],"1970":[3,7,26],"1971":[11,9,20],"1972":[10,18,52],"1973":[2,3,19],"1974":[10,5,118],"1975":[7,5,69],"1976":[3,5,1],"1977":[7,6,93],"1978":[10,6,69],"1979":[8,5,89],"1980":[4,3,104],"1981":[7,3,64],"1982":[3,1,36],"1983":[2,3,74],"1984":[2,3,174],"1985":[1,3,47],"1986":[1,3,172],"1987":[3,3,237],"1988":[5,4,119],"1989":[5,4,50],"1990":[4,3,160],"1991":[1,3,48],"1992":[4,3,152],"1993":[2,3,25],"1994":[1,3,1],"1995":[1,4,97],"1996":[2,4,100],"1997":[1,6,128],"1998":[5,6,49],"1999":[1,3,1],"2000":[5,4,7],"2001":[6,4,14],"2002":[5,4,5],"2003":[6,4,12],"2004":[5,4,5],"2005":[6,4,12],"2006":[7,4,9],"2007":[2,11,7],"2008":[12,4,32],"2009":[1,16,21],"2010":[12,4,31],"2011":[1,16,13],"2012":[7,4,6],"2013":[1,11,8],"2014":[8,4,13],"2015":[1,12,8],"2016":[5,4,7],"2017":[6,4,13],"2018":[6,4,7],"2019":[7,4,13],"2020":[8,4,6],"2021":[2,12,8],"2022":[6,4,6],"2023":[7,4,13],"2024":[6,4,6],"2025":[7,4,13],"2026":[8,4,7],"2027":[2,12,9],"2028":[6,4,6],"2029":[7,4,13],"2030":[6,4,6],"2031":[7,4,13],"2032":[8,4,7],"2033":[2,12,9],"2034":[6,4,7],"2035":[7,4,14],"2036":[6,4,7],"2037":[7,4,14],"2038":[8,4,8],"2039":[2,12,9],"2040":[6,4,5],"2041":[7,4,12],"2042":[6,4,5],"2043":[7,4,12],"2044":[8,4,5],"2045":[1,12,11],"2046":[9,4,12],"2047":[1,13,11],"2048":[8,4,6],"2049":[2,12,9],"2050":[10,4,10],"2051":[1,4,16],"2052":[11,4,17],"2053":[1,15,16],"2054":[7,4,11],"2055":[2,11,8],"2056":[7,4,11],"2057":[8,4,9],"2058":[2,12,11],"2059":[7,4,18],"2060":[2,11,3],"2061":[7,4,18],"2062":[2,11,9],"2063":[12,4,18],"2064":[1,4,16],"2065":[2,5,3],"2066":[12,4,18],"2067":[1,4,16],"2068":[2,5,9],"2069":[2,1,104],"2070":[1,2,109],"2071":[2,3,37],"2072":[1,2,165],"2073":[1,2,93],"2074":[3,2,99],"2075":[4,5,73],"2076":[4,5,106],"2077":[6,5,31],"2078":[2,5,91],"2079":[2,2,72],"2080":[3,3,167],"2081":[5,3,42],"2082":[3,3,162],"2083":[6,3,37],"2084":[2,3,34],"2085":[1,2,36],"2086":[3,3,19],"2087":[4,3,1],"2088":[3,6,12],"2089":[2,6,75],"2090":[3,6,35],"2091":[4,6,25],"2092":[4,6,43],"2093":[2,6,24],"2094":[2,6,23],"2095":[1,6,17],"2096":[1,2,56],"2097":[5,2,50],"2098":[2,2,65],"2099":[2,2,52],"2100":[1,2,27],"2101":[1,3,90],"2102":[1,3,37],"2103":[1,1,34],"2104":[2,1,34],"2105":[2,1,32],"2106":[1,1,12],"2107":[1,1,34],"2108":[1,1,35],"2109":[1,1,37],"2110":[2,1,52],"2111":[1,2,32],"2112":[2,2,42],"2113":[1,2,89],"2114":[2,3,31],"2115":[1,2,1],"2116":[2,3,42],"2117":[2,3,34],"2118":[1,2,1],"2119":[6,3,16],"2120":[1,9,8],"2121":[11,3,13],"2122":[1,14,22],"2123":[7,3,23],"2124":[1,10,8],"2125":[12,3,26],"2126":[1,15,22],"2127":[6,3,6],"2128":[1,9,8],"2129":[7,3,22],"2130":[1,10,14],"2131":[7,3,22],"2132":[1,10,12],"2133":[7,3,21],"2134":[1,10,11],"2135":[7,3,16],"2136":[1,10,11],"2137":[5,3,15],"2138":[4,3,18],"2139":[6,3,18],"2140":[1,1,45],"2141":[4,1,33],"2142":[1,1,25],"2143":[1,1,47],"2144":[1,1,54],"2145":[1,1,58],"2146":[6,1,43],"2147":[1,6,32],"2148":[1,6,33],"2149":[1,6,43],"2150":[1,6,125],"2151":[2,6,104],"2152":[2,1,115],"2153":[2,2,21],"2154":[2,2,19],"2155":[2,4,49],"2156":[1,5,107],"2157":[2,4,42],"2158":[2,4,70],"2159":[2,2,31],"2160":[2,4,54],"2161":[2,4,29],"2162":[3,6,58],"2163":[4,6,128],"2164":[3,6,169],"2165":[3,6,46],"2166":[2,4,179],"2167":[3,4,145],"2168":[5,4,193],"2169":[3,4,208],"2170":[4,2,54],"2171":[2,6,87],"2172":[2,2,51],"2173":[3,1,1],"2174":[2,3,35],"2175":[1,3,89],"2176":[2,3,100],"2177":[3,3,125],"2178":[2,3,77],"2179":[2,3,101],"2180":[3,3,60],"2181":[1,3,191],"2182":[3,1,79],"2183":[4,3,105],"2184":[4,3,108],"2185":[2,7,123],"2186":[1,7,131],"2187":[5,7,118],"2188":[4,3,169],"2189":[2,3,12],"2190":[4,3,196],"2191":[2,3,153],"2192":[3,1,60],"2193":[1,3,70],"2194":[2,3,63],"2195":[2,3,72],"2196":[1,5,22],"2197":[13,1,1],"2198":[1,13,67],"2199":[5,13,240],"2200":[2,13,198],"2201":[1,13,1],"2202":[10,14,62],"2203":[2,14,33],"2204":[9,15,27],"2205":[12,15,75],"2206":[6,15,105],"2207":[7,15,335],"2208":[11,15,167],"2209":[12,15,233],"2210":[2,1,89],"2211":[1,2,25],"2212":[1,2,47],"2213":[1,2,38],"2214":[1,1,17],"2215":[1,1,55],"2216":[1,1,47],"2217":[2,1,67],"2218":[2,3,45],"2219":[2,1,148],"2220":[5,5,197],"2221":[2,1,246],"2222":[1,1,64],"2223":[1,1,1],"2224":[8,2,7],"2225":[2,10,7],"2226":[8,2,6],"2227":[1,10,8],"2228":[6,2,8],"2229":[7,2,8],"2230":[9,2,11],"2231":[1,11,7],"2232":[9,2,11],"2233":[1,11,7],"2234":[5,2,48],"2235":[5,2,40],"2236":[5,2,40],"2237":[8,2,18],"2238":[1,10,11],"2239":[8,2,7],"2240":[1,10,8],"2241":[7,2,16],"2242":[1,9,12],"2243":[2,9,8],"2244":[9,2,12],"2245":[1,11,10],"2246":[2,11,6],"2247":[7,2,12],"2248":[1,9,10],"2249":[4,2,5],"2250":[5,2,6],"2251":[2,7,6],"2252":[6,2,10],"2253":[2,8,7],"2254":[7,2,9],"2255":[1,9,17],"2256":[2,9,7],"2257":[6,2,9],"2258":[2,8,8],"2259":[4,2,11],"2260":[4,2,5],"2261":[4,2,10],"2262":[1,6,10],"2263":[5,1,49],"2264":[1,5,137],"2265":[2,5,20],"2266":[1,5,115],"2267":[5,1,89],"2268":[2,5,129],"2269":[2,7,108],"2270":[2,7,37],"2271":[1,5,120],"2272":[2,6,57],"2273":[1,5,132],"2274":[1,5,101],"2275":[1,5,110],"2276":[2,6,183],"2277":[2,6,18],"2278":[3,5,135],"2279":[2,8,55],"2280":[1,5,115],"2281":[2,5,101],"2282":[2,5,98],"2283":[1,5,107],"2284":[2,6,21],"2285":[1,5,104],"2286":[2,6,21],"2287":[4,5,116],"2288":[2,5,150],"2289":[3,1,52],"2290":[1,3,14],"2291":[1,3,129],"2292":[1,3,1],"2293":[8,4,47],"2294":[1,1,34],"2295":[3,1,32],"2296":[2,4,28],"2297":[3,4,95],"2298":[2,4,54],"2299":[4,1,70],"2300":[4,1,263],"2301":[3,4,338],"2302":[8,4,45],"2303":[6,1,232],"2304":[3,1,1],"2305":[2,3,64],"2306":[3,3,72],"2307":[3,3,129],"2308":[3,6,69],"2309":[3,3,142],"2310":[5,5,36],"2311":[1,5,183],"2312":[3,6,184],"2313":[3,6,150],"2314":[4,3,75],"2315":[7,6,127],"2316":[6,3,132],"2317":[3,3,46],"2318":[3,3,180],"2319":[2,3,98],"2320":[4,3,37],"2321":[2,1,40],"2322":[12,2,6],"2323":[3,1,51],"2324":[2,1,1],"2325":[4,2,41],"2326":[3,2,15],"2327":[1,2,18],"2328":[1,2,35],"2329":[1,2,30],"2330":[5,2,24],"2331":[3,1,43],"2332":[3,3,47],"2333":[4,3,55],"2334":[2,3,85],"2335":[3,3,35],"2336":[2,5,39],"2337":[2,5,32],"2338":[2,5,139],"2339":[2,5,129],"2340":[6,5,59],"2341":[6,5,107],"2342":[3,3,80],"2343":[2,3,40],"2344":[4,4,125],"2345":[3,3,64],"2346":[4,3,45],"2347":[3,3,34],"2348":[2,3,82],"2349":[1,3,37],"2350":[5,1,267],"2351":[8,1,30],"2352":[2,8,41],"2353":[5,8,47],"2354":[5,8,57],"2355":[7,8,35],"2356":[6,8,48],"2357":[4,8,44],"2358":[6,8,77],"2359":[6,8,54],"2360":[4,1,1],"2361":[5,4,45],"2362":[2,4,22],"2363":[3,4,27],"2364":[3,4,15],"2365":[2,4,54],"2366":[3,1,92],"2367":[1,3,76],"2368":[4,4,33],"2369":[1,7,34],"2370":[5,4,37],"2371":[1,8,40],"2372":[5,4,32],"2373":[1,8,29],"2374":[3,4,62],"2375":[1,7,10],"2376":[1,4,10],"2377":[1,5,10],"2378":[2,4,34],"2379":[1,6,13],"2380":[1,3,49],"2381":[2,3,48],"2382":[2,5,53],"2383":[1,5,111],"2384":[3,5,32],"2385":[1,5,80],"2386":[3,3,195],"2387":[3,5,142],"2388":[5,3,79],"2389":[3,3,63],"2390":[1,5,73],"2391":[1,5,32],"2392":[1,5,212],"2393":[2,1,37],"2394":[2,2,507],"2395":[2,2,56],"2396":[2,2,54],"2397":[2,2,39],"2398":[1,2,22],"2399":[1,2,37],"2400":[1,2,20],"2401":[2,2,15],"2402":[2,2,35],"2403":[2,2,20],"2404":[1,2,44],"2405":[2,2,17],"2406":[2,2,82],"2407":[2,2,12],"2408":[2,2,44],"2409":[2,2,97],"2410":[1,2,284],"2411":[2,2,55],"2412":[1,2,54],"2413":[3,2,66],"2414":[3,2,31],"2415":[2,2,97],"2416":[3,2,54],"2417":[4,2,63],"2418":[3,2,33],"2419":[3,2,45],"2420":[2,2,21],"2421":[2,2,37],"2422":[2,2,43],"2423":[2,2,67],"2424":[2,1,31],"2425":[3,2,70],"2426":[2,2,28],"2427":[1,2,58],"2428":[2,2,26],"2429":[1,2,37],"2430":[1,2,50],"2431":[1,2,118],"2432":[2,2,146],"2433":[2,2,62],"2434":[2,2,34],"2435":[2,1,120],"2436":[4,1,41],"2437":[1,4,68],"2438":[1,4,57],"2439":[2,1,35],"2440":[3,2,99],"2441":[3,4,104],"2442":[4,4,79],"2443":[5,2,53],"2444":[1,7,121],"2445":[3,7,100],"2446":[2,10,154],"2447":[3,10,101],"2448":[3,1,44],"2449":[2,1,134],"2450":[1,2,162],"2451":[3,2,1],"2452":[3,4,77],"2453":[3,4,75],"2454":[5,4,49],"2455":[2,2,14],"2456":[3,1,113],"2457":[1,3,81],"2458":[2,3,26],"2459":[4,1,44],"2460":[7,4,83],"2461":[4,4,72],"2462":[8,4,92],"2463":[6,4,85],"2464":[3,4,91],"2465":[3,4,13],"2466":[2,1,95],"2467":[5,1,72],"2468":[1,5,61],"2469":[2,5,29],"2470":[3,7,89],"2471":[3,7,29],"2472":[4,7,29],"2473":[3,5,1],"2474":[3,8,59],"2475":[4,8,64],"2476":[5,8,111],"2477":[4,8,77],"2478":[3,8,64],"2479":[3,5,84],"2480":[3,1,126],"2481":[4,3,56],"2482":[8,3,59],"2483":[7,3,39],"2484":[3,3,99],"2485":[8,3,69],"2486":[5,3,39],"2487":[3,3,59],"2488":[3,1,16],"2489":[7,3,173],"2490":[6,3,47],"2491":[6,6,86],"2492":[3,6,69],"2493":[7,3,124],"2494":[4,3,80],"2495":[5,1,31],"2496":[2,5,79],"2497":[5,5,48],"2498":[1,8,35],"2499":[1,8,58],"2500":[1,8,34],"2501":[1,8,44],"2502":[1,8,52],"2503":[1,8,60],"2504":[1,8,13],"2505":[2,8,63],"2506":[1,8,33],"2507":[4,5,132],"2508":[5,5,92],"2509":[3,1,19],"2510":[7,1,1],"2511":[12,7,79],"2512":[3,1,66],"2513":[3,3,227],"2514":[7,1,70],"2515":[11,7,42],"2516":[3,7,128],"2517":[2,1,20],"2518":[2,2,25],"2519":[3,2,14],"2520":[3,2,22],"2521":[2,2,13],"2522":[3,1,1],"2523":[1,3,3],"2524":[1,3,3],"2525":[8,1,67],"2526":[4,8,124],"2527":[2,8,153],"2528":[3,8,25],"2529":[3,1,195],"2530":[1,3,139],"2531":[6,1,90],"2532":[1,1,1],"2533":[2,1,24],"2534":[1,1,34],"2535":[5,1,37],"2536":[5,5,82],"2537":[2,5,77],"2538":[4,5,19],"2539":[4,1,1],"2540":[3,4,80],"2541":[3,4,82],"2542":[8,1,79],"2543":[4,1,33],"2544":[1,4,1],"2545":[1,5,104],"2546":[3,5,28],"2547":[2,6,141],"2548":[4,4,37],"2549":[1,4,86],"2550":[5,1,18],"2551":[3,5,80],"2552":[7,1,293],"2553":[4,1,56],"2554":[3,4,39],"2555":[2,6,47],"2556":[4,6,56],"2557":[2,6,65],"2558":[2,6,66],"2559":[2,4,1],"2560":[2,5,40],"2561":[3,5,37],"2562":[4,1,96],"2563":[5,4,162],"2564":[5,4,93],"2565":[3,4,67],"2566":[2,1,16],"2567":[1,2,43],"2568":[1,2,65],"2569":[2,2,165],"2570":[3,1,33],"2571":[1,3,12],"2572":[2,4,73],"2573":[2,4,57],"2574":[5,3,39],"2575":[2,8,23],"2576":[2,8,23],"2577":[2,8,15],"2578":[6,3,89],"2579":[4,3,25],"2580":[4,6,110],"2581":[3,6,54],"2582":[3,3,78],"2583":[5,3,79],"2584":[3,3,57],"2585":[4,1,115],"2586":[5,4,1],"2587":[2,7,121],"2588":[3,7,66],"2589":[11,4,84],"2590":[7,4,34],"2591":[7,4,53],"2592":[5,1,148],"2593":[2,5,38],"2594":[2,5,43],"2595":[2,7,98],"2596":[2,7,65],"2597":[3,9,67],"2598":[2,7,63],"2599":[2,5,40],"2600":[2,7,16],"2601":[2,7,17],"2602":[2,1,44],"2603":[4,2,253],"2604":[2,2,101],"2605":[2,2,597],"2606":[2,2,194],"2607":[1,2,108],"2608":[2,2,102],"2609":[3,2,93],"2610":[2,1,91],"2611":[2,2,65],"2612":[2,1,157],"2613":[3,2,166],"2614":[4,2,240],"2615":[4,2,336],"2616":[4,2,517],"2617":[4,1,76],"2618":[2,4,31],"2619":[4,4,1],"2620":[4,5,71],"2621":[4,5,19],"2622":[4,4,13],"2623":[5,4,90],"2624":[3,1,98],"2625":[2,3,18],"2626":[3,3,130],"2627":[3,3,67],"2628":[3,3,58],"2629":[3,3,37],"2630":[3,3,27],"2631":[3,1,108],"2632":[2,3,68],"2633":[3,3,86],"2634":[3,3,70],"2635":[3,3,146],"2636":[3,3,72],"2637":[3,3,51],"2638":[3,3,42],"2639":[6,1,57],"2640":[10,1,39],"2641":[4,10,16],"2642":[7,13,51],"2643":[1,20,26],"2644":[8,13,76],"2645":[1,21,36],"2646":[5,10,78],"2647":[3,10,38],"2648":[3,10,14],"2649":[6,10,53],"2650":[3,10,60],"2651":[2,10,37],"2652":[6,1,13],"2653":[5,6,188],"2654":[4,6,190],"2655":[5,6,82],"2656":[3,6,50],"2657":[1,9,1],"2658":[3,10,40],"2659":[3,10,43],"2660":[4,1,1],"2661":[1,4,21],"2662":[1,4,18],"2663":[1,4,14],"2664":[1,4,27],"2665":[1,4,13],"2666":[1,4,23],"2667":[1,4,22],"2668":[1,4,16],"2669":[1,4,10],"2670":[1,4,14],"2671":[1,4,20],"2672":[2,4,23],"2673":[1,4,13],"2674":[1,4,7],"2675":[1,4,8],"2676":[1,4,23],"2677":[1,4,17],"2678":[2,4,22],"2679":[1,4,21],"2680":[2,4,15],"2681":[2,4,10],"2682":[1,4,19],"2683":[1,4,17],"2684":[2,4,29],"2685":[1,4,14],"2686":[1,4,21],"2687":[1,4,28],"2688":[1,4,21],"2689":[1,4,9],"2690":[1,4,21],"2691":[1,4,16],"2692":[5,4,17],"2693":[2,4,34],"2694":[1,4,28],"2695":[2,4,18],"2696":[1,4,21],"2697":[1,4,14],"2698":[1,4,18],"2699":[1,4,30],"2700":[3,4,28],"2701":[1,4,24],"2702":[2,4,23],"2703":[1,4,34],"2704":[1,4,25],"2705":[1,4,34],"2706":[2,4,24],"2707":[1,4,12],"2708":[5,4,13],"2709":[10,1,23],"2710":[3,1,102],"2711":[2,3,80],"2712":[2,3,42],"2713":[2,3,91],"2714":[1,3,33],"2715":[1,3,60],"2716":[1,3,77],"2717":[1,3,18],"2718":[1,3,28],"2719":[2,3,48],"2720":[1,3,19],"2721":[2,3,30],"2722":[1,3,49],"2723":[1,3,34],"2724":[1,3,34],"2725":[1,3,161],"2726":[2,3,41],"2727":[2,3,150],"2728":[1,3,90],"2729":[2,3,19],"2730":[2,3,26],"2731":[2,3,35],"2732":[3,3,36],"2733":[1,3,106],"2734":[2,3,163],"2735":[1,3,46],"2736":[2,3,127],"2737":[1,3,23],"2738":[1,3,98],"2739":[1,3,47],"2740":[3,1,111],"2741":[2,3,122],"2742":[2,3,158],"2743":[6,1,52],"2744":[3,6,174],"2745":[3,6,75],"2746":[2,6,51],"2747":[1,6,54],"2748":[2,6,62],"2749":[2,6,62],"2750":[2,6,131],"2751":[2,1,71],"2752":[2,1,23],"2753":[2,2,34],"2754":[2,2,11],"2755":[2,2,21],"2756":[3,1,1],"2757":[2,3,77],"2758":[4,3,129],"2759":[8,7,80],"2760":[6,7,39],"2761":[2,1,26],"2762":[2,1,70],"2763":[2,1,67],"2764":[2,1,71],"2765":[4,1,37],"2766":[2,4,105],"2767":[3,6,284],"2768":[5,4,101],"2769":[1,7,57],"2770":[4,8,31],"2771":[4,8,30],"2772":[4,8,28],"2773":[2,7,66],"2774":[2,7,184],"2775":[5,7,136],"2776":[3,4,142],"2777":[2,4,216],"2778":[2,6,42],"2779":[11,4,81],"2780":[9,4,32],"2781":[4,1,45],"2782":[1,4,108],"2783":[3,4,76],"2784":[2,7,98],"2785":[5,9,134],"2786":[2,9,74],"2787":[3,9,85],"2788":[2,9,146],"2789":[2,1,95],"2790":[4,2,39],"2791":[3,2,78],"2792":[7,2,145],"2793":[3,2,58],"2794":[3,2,45],"2795":[3,2,53],"2796":[2,1,181]},"averageFieldLength":[3.631748301751877,4.95638183768323,52.659635323560934],"storedFields":{"0":{"title":"QMK Breaking Change - 2019 Aug 30","titles":[]},"1":{"title":"Core code formatting with clang-format","titles":["QMK Breaking Change - 2019 Aug 30"]},"2":{"title":"LUFA USB descriptor cleanup","titles":["QMK Breaking Change - 2019 Aug 30"]},"3":{"title":"Migrating ACTION_LAYER_MOMENTARY() entries in fn_actions to MO() keycodes","titles":["QMK Breaking Change - 2019 Aug 30"]},"4":{"title":"Update Atreus to current code conventions","titles":["QMK Breaking Change - 2019 Aug 30"]},"5":{"title":"Backport changes to keymap language files from ZSA fork","titles":["QMK Breaking Change - 2019 Aug 30"]},"6":{"title":"Update repo to use LUFA as a git submodule","titles":["QMK Breaking Change - 2019 Aug 30"]},"7":{"title":"Migrating ACTION_BACKLIGHT_*() entries in fn_actions to BL_ keycodes","titles":["QMK Breaking Change - 2019 Aug 30"]},"8":{"title":"Remove KC_DELT alias in favor of KC_DEL","titles":["QMK Breaking Change - 2019 Aug 30"]},"9":{"title":"QMK Breaking Change - 2020 Feb 29 Changelog","titles":[]},"10":{"title":"Update ChibiOS/ChibiOS-Contrib/uGFX submodules","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"11":{"title":"Fix ChibiOS timer overflow for 16-bit SysTick devices","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"12":{"title":"Update LUFA submodule","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"13":{"title":"Encoder flip","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"14":{"title":"Adding support for BACKLIGHT_ON_STATE for hardware PWM backlight","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"15":{"title":"Migrating ACTION_LAYER_TAP_KEY() entries in fn_actions to LT() keycodes","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"16":{"title":"Moving backlight keycode handling to process_keycode/","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"17":{"title":"Refactor Planck keymaps to use Layout Macros","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"18":{"title":"GON NerD codebase refactor","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"19":{"title":"QMK Breaking Change - 2020 May 30 Changelog","titles":[]},"20":{"title":"Core Changes","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"21":{"title":"Converting V-USB usbdrv to a submodule","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"22":{"title":"Unify Tap Hold functions and documentation","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"23":{"title":"Python Required In The Build Process","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"24":{"title":"Upgrade from tinyprintf to mpaland/printf","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"25":{"title":"Fixed RGB_DISABLE_AFTER_TIMEOUT to be seconds based & small internals cleanup","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"26":{"title":"Switch to qmk forks for everything","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"27":{"title":"code cleanup regarding deprecated macro PLAY_NOTE_ARRAY by replacing it with PLAY_SONG","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"28":{"title":"fixing wrong configuration of AUDIO feature","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"29":{"title":"Keyboard Refactors","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"30":{"title":"Migrating Lily58 to use split_common","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"31":{"title":"To migrate existing Lily58 firmware:","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors","Migrating Lily58 to use split_common"]},"32":{"title":"Refactor zinc to use split_common","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"33":{"title":"Refactor of TKC1800 to use common OLED code","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"34":{"title":"To migrate existing TKC1800 firmware:","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors","Refactor of TKC1800 to use common OLED code"]},"35":{"title":"Split HHKB to ANSI and JP layouts and Add VIA support for each","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"36":{"title":"Migrating existing HHKB keymaps","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors","Split HHKB to ANSI and JP layouts and Add VIA support for each"]},"37":{"title":"Keyboard Moves","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"38":{"title":"Keycode Migration PRs","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"39":{"title":"QMK Breaking Change - 2020 Aug 29 Changelog","titles":[]},"40":{"title":"Changes Requiring User Action","titles":["QMK Breaking Change - 2020 Aug 29 Changelog"]},"41":{"title":"Relocated Keyboards","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action"]},"42":{"title":"The Key Company project consolidation (","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"43":{"title":"relocating boards by flehrad to flehrad/ folder (","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"44":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action"]},"45":{"title":"Keebio RGB wiring update (","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action","Updated Keyboard Codebases"]},"46":{"title":"Changes to Core Functionality","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action"]},"47":{"title":"Core Changes","titles":["QMK Breaking Change - 2020 Aug 29 Changelog"]},"48":{"title":"Fixes","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Core Changes"]},"49":{"title":"Additions and Enhancements","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Core Changes"]},"50":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Core Changes"]},"51":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Change - 2020 Aug 29 Changelog"]},"52":{"title":"QMK Breaking Change - 2020 Nov 28 Changelog","titles":[]},"53":{"title":"Changes Requiring User Action","titles":["QMK Breaking Change - 2020 Nov 28 Changelog"]},"54":{"title":"Relocated Keyboards","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action"]},"55":{"title":"Reduce Helix keyboard build variation (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"56":{"title":"Update the Speedo firmware for v3.0 (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"57":{"title":"Maartenwut/Maarten name change to evyd13/Evy (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"58":{"title":"Xelus Valor and Dawn60 Refactors (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"59":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action"]},"60":{"title":"AEboards EXT65 Refactor (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Updated Keyboard Codebases"]},"61":{"title":"Core Changes","titles":["QMK Breaking Change - 2020 Nov 28 Changelog"]},"62":{"title":"Fixes","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Core Changes"]},"63":{"title":"Additions and Enhancements","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Core Changes"]},"64":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Core Changes"]},"65":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Change - 2020 Nov 28 Changelog"]},"66":{"title":"QMK Breaking Changes - 2021 February 27 Changelog","titles":[]},"67":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 February 27 Changelog"]},"68":{"title":"Core Changes","titles":["QMK Breaking Changes - 2021 February 27 Changelog"]},"69":{"title":"ChibiOS Update and Config Migration","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Core Changes"]},"70":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Core Changes"]},"71":{"title":"Detailed Change List","titles":["QMK Breaking Changes - 2021 February 27 Changelog"]},"72":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"73":{"title":"Fixes","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"74":{"title":"Additions and Enhancements","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"75":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"76":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"77":{"title":"ChibiOS Update and Config Migration","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"78":{"title":"QMK Breaking Changes - 2021 May 29 Changelog","titles":[]},"79":{"title":"Notable Changes","titles":["QMK Breaking Changes - 2021 May 29 Changelog"]},"80":{"title":"RGB Matrix support for split common (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"81":{"title":"Teensy 3.6 support (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"82":{"title":"New command: qmk console (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"83":{"title":"Improved command: qmk config","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"84":{"title":"LED Matrix Improvements (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"85":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 May 29 Changelog"]},"86":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"87":{"title":"Bootmagic Deprecation and Refactor (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"88":{"title":"Tentative Deprecation Schedule","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action","Bootmagic Deprecation and Refactor ("]},"89":{"title":"Removal of LAYOUT_kc (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"90":{"title":"Encoder callbacks are now boolean (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"91":{"title":"Core Changes","titles":["QMK Breaking Changes - 2021 May 29 Changelog"]},"92":{"title":"Fixes","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"93":{"title":"Additions and Enhancements","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"94":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"95":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"96":{"title":"QMK Breaking Changes - 2021 August 28 Changelog","titles":[]},"97":{"title":"Notable Features","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"98":{"title":"Combo processing improvements (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable Features"]},"99":{"title":"Key Overrides (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable Features"]},"100":{"title":"Digitizer support (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable Features"]},"101":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"102":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action"]},"103":{"title":"Bootmagic Full Removal (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action"]},"104":{"title":"Bootmagic Full Deprecation Schedule","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action","Bootmagic Full Removal ("]},"105":{"title":"DIP switch callbacks are now boolean (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action"]},"106":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"107":{"title":"Split transport improvements","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"108":{"title":"Teensy 4.x support (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"109":{"title":"Data Driven Improvements (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"110":{"title":"Tags","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes","Data Driven Improvements ("]},"111":{"title":"Dot Notation","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes","Data Driven Improvements ("]},"112":{"title":"New configuration keys","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes","Data Driven Improvements ("]},"113":{"title":"Codebase restructure and cleanup","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"114":{"title":"Full changelist","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"115":{"title":"QMK Breaking Changes - 2021 November 27 Changelog","titles":[]},"116":{"title":"2000 keyboards!","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"117":{"title":"Notable Features","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"118":{"title":"Expanded Pointing Device support (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable Features"]},"119":{"title":"Dynamic Tapping Term (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable Features"]},"120":{"title":"Macros in JSON keymaps (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable Features"]},"121":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"122":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"123":{"title":"Squeezing space out of AVR (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"124":{"title":"Require explicit enabling of RGB Matrix modes (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"125":{"title":"OLED task refactoring (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"126":{"title":"Bootmagic Full Removal (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"127":{"title":"Bootmagic Full Deprecation Schedule: Complete!","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action","Bootmagic Full Removal ("]},"128":{"title":"Remove QWIIC_DRIVERS (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"129":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"130":{"title":"New MCU Support","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"131":{"title":"EEPROM Changes","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"132":{"title":"Compilation Database","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"133":{"title":"Codebase restructure and cleanup","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"134":{"title":"Full changelist","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"135":{"title":"QMK Breaking Changes - 2022 May 28 Changelog","titles":[]},"136":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 May 28 Changelog"]},"137":{"title":"Caps Word (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Notable Features"]},"138":{"title":"Quantum Painter (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Notable Features"]},"139":{"title":"Encoder Mapping (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Notable Features"]},"140":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 May 28 Changelog"]},"141":{"title":"RESET => QK_BOOT (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"142":{"title":"Sendstring keycode overhaul (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"143":{"title":"Pillow Installation (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"144":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"145":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 May 28 Changelog"]},"146":{"title":"QMK Breaking Changes - 2022 February 26 Changelog","titles":[]},"147":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"148":{"title":"Default USB Polling rate now 1kHz (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable Features"]},"149":{"title":"Split support for pointing devices (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable Features"]},"150":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"151":{"title":"Legacy macro and action_function system removed (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"152":{"title":"Create a build error if no bootloader is specified (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"153":{"title":"Rename AdafruitBLE to BluefruitLE (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"154":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"155":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"156":{"title":"New MCU Support","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes"]},"157":{"title":"New Drivers","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes"]},"158":{"title":"LED","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes","New Drivers"]},"159":{"title":"GPIO","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes","New Drivers"]},"160":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"161":{"title":"QMK Breaking Changes - 2022 August 27 Changelog","titles":[]},"162":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"163":{"title":"Add Raspberry Pi RP2040 support (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable Features"]},"164":{"title":"Allow qmk flash to use prebuilt firmware binaries (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable Features"]},"165":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"166":{"title":"Default layers dropped from 32 to 16 (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"167":{"title":"RESET => QK_BOOT (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"168":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"169":{"title":"Data-driven USB IDs Refactoring (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"170":{"title":"Deprecation Schedule","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action","Data-driven USB IDs Refactoring ("]},"171":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"172":{"title":"Board converters (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"173":{"title":"Add cli command to import keyboard|keymap|kbfirmware (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"174":{"title":"Generic wear-leveling for EEPROM emulation (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"175":{"title":"Pointing Device Improvements (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"176":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"177":{"title":"QMK Breaking Changes - 2022 November 26 Changelog","titles":[]},"178":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"179":{"title":"Autocorrect (","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable Features"]},"180":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"181":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"182":{"title":"Keycodes refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"183":{"title":"Configuration Item Refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"184":{"title":"Data-driven USB IDs Refactoring (","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"185":{"title":"LED Indicator callback refactoring (","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"186":{"title":"Unicode mode refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"187":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"188":{"title":"Keycodes refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable core changes"]},"189":{"title":"Board Converters","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable core changes"]},"190":{"title":"Pointing and Digitizer device updates","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable core changes"]},"191":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"192":{"title":"QMK Breaking Changes - 2023 February 26 Changelog","titles":[]},"193":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 February 26 Changelog"]},"194":{"title":"IGNORE_MOD_TAP_INTERRUPT behaviour changes (","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"195":{"title":"TAPPING_FORCE_HOLD => QUICK_TAP_TERM (","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"196":{"title":"Leader Key Rework {#leader-key-rework (","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"197":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"198":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2023 February 26 Changelog"]},"199":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 February 26 Changelog"]},"200":{"title":"QMK Breaking Changes - 2023 May 28 Changelog","titles":[]},"201":{"title":"Notable Changes","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"202":{"title":"Repeat last key (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable Changes"]},"203":{"title":"User callback for pre process record (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable Changes"]},"204":{"title":"Consolidate modelm (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable Changes"]},"205":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"206":{"title":"IGNORE_MOD_TAP_INTERRUPT behaviour changes (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Changes Requiring User Action"]},"207":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Changes Requiring User Action"]},"208":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"209":{"title":"Encoder functionality fallback (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable core changes"]},"210":{"title":"OLED Driver Improvements (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable core changes"]},"211":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"212":{"title":"QMK Breaking Changes - 2023 Aug 27 Changelog","titles":[]},"213":{"title":"Notable Changes","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog"]},"214":{"title":"RGB Matrix optimizations (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Notable Changes"]},"215":{"title":"Audio optimizations (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Notable Changes"]},"216":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog"]},"217":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"218":{"title":"Remove encoder in-matrix workaround code (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"219":{"title":"Unicodemap keycodes rename (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"220":{"title":"Remove old OLED API code (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"221":{"title":"Driver naming consolidation (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"222":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog"]},"223":{"title":"QMK Breaking Changes - 2023 November 26 Changelog","titles":[]},"224":{"title":"Notable Features","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"225":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"226":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Changes Requiring User Action"]},"227":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"228":{"title":"External Userspace (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"229":{"title":"Improve and Cleanup Shutdown callbacks (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"230":{"title":"OLED Force Flush (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"231":{"title":"Switch statement helpers for keycode ranges (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"232":{"title":"Quantum Painter OLED support (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"233":{"title":"RGB/LED lighting driver naming and cleanup (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"234":{"title":"Peripheral subsystem enabling (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"235":{"title":"NKRO on V-USB boards (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"236":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"237":{"title":"QMK Breaking Changes - 2024 February 25 Changelog","titles":[]},"238":{"title":"Notable Features","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"239":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"240":{"title":"Windows Driver Changes (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Changes Requiring User Action"]},"241":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Changes Requiring User Action"]},"242":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"243":{"title":"Renaming Arduino-style GPIO pin functions (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"244":{"title":"I2C driver API Changes (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"245":{"title":"Renaming Bootmagic Lite => Bootmagic (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"246":{"title":"Threshold for automatic mouse layer activation (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"247":{"title":"DIP Switch Mapping (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"248":{"title":"Quantum Painter updates (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"249":{"title":"Full changelist","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"250":{"title":"QMK Breaking Changes - 2024 May 26 Changelog","titles":[]},"251":{"title":"Notable Features","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"252":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"253":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"254":{"title":"Remove deprecated quantum keycodes (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"255":{"title":"P3D Spacey Layout Updates (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"256":{"title":"MechKeys ACR60 Layout Updates (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"257":{"title":"LAYOUT_hhkb","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"258":{"title":"LAYOUT_true_hhkb","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"259":{"title":"LAYOUT_directional","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"260":{"title":"LAYOUT_mitchsplit","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"261":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"262":{"title":"Introduction of keyboard.json (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Notable core changes"]},"263":{"title":"Refactor ChibiOS USB endpoints to be fully async (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Notable core changes"]},"264":{"title":"Deprecation Notices","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"265":{"title":"Migration of VIA keymaps to VIA team control","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Deprecation Notices"]},"266":{"title":"Full changelist","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"267":{"title":"QMK Breaking Changes - 2024 August 25 Changelog","titles":[]},"268":{"title":"Notable Features","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"269":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"270":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"271":{"title":"SparkFun Pro Micro RP2040 converter renamed (","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"272":{"title":"Key Override keymap.c signature change (","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"273":{"title":"ADNS9800 and PMW33xx firmware upload now opt-in (","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"274":{"title":"Deprecation Notices","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"275":{"title":"Migration of VIA keymaps to VIA team control","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Deprecation Notices"]},"276":{"title":"ADNS9800 and PMW33xx sensor firmware ROM removal","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Deprecation Notices"]},"277":{"title":"Full changelist","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"278":{"title":"Documentation Capabilities","titles":[]},"279":{"title":"Overall capabilities","titles":["Documentation Capabilities"]},"280":{"title":"Dividing lines","titles":["Documentation Capabilities","Overall capabilities"]},"281":{"title":"Images","titles":["Documentation Capabilities","Overall capabilities"]},"282":{"title":"Lists","titles":["Documentation Capabilities","Overall capabilities"]},"283":{"title":"Emoji","titles":["Documentation Capabilities","Overall capabilities"]},"284":{"title":"Direct:","titles":["Documentation Capabilities","Overall capabilities","Emoji"]},"285":{"title":"As colon-name-colon:","titles":["Documentation Capabilities","Overall capabilities","Emoji"]},"286":{"title":"XML Entities","titles":["Documentation Capabilities","Overall capabilities"]},"287":{"title":"Styling","titles":["Documentation Capabilities"]},"288":{"title":"CSS-ish","titles":["Documentation Capabilities","Styling"]},"289":{"title":"Tables","titles":["Documentation Capabilities","Styling"]},"290":{"title":"Indented sections","titles":["Documentation Capabilities","Styling"]},"291":{"title":"Keyboard keys","titles":["Documentation Capabilities","Styling"]},"292":{"title":"Code Blocks","titles":["Documentation Capabilities","Styling"]},"293":{"title":"Sub/Superscript","titles":["Documentation Capabilities","Styling"]},"294":{"title":"Tabs","titles":["Documentation Capabilities","Styling"]},"295":{"title":"** Tab one **","titles":["Documentation Capabilities","Styling","Tabs"]},"296":{"title":"** Nested one **","titles":["Documentation Capabilities","Styling","Tabs","** Tab one **"]},"297":{"title":"** Nested two **","titles":["Documentation Capabilities","Styling","Tabs","** Tab one **"]},"298":{"title":"** Tab two **","titles":["Documentation Capabilities","Styling","Tabs"]},"299":{"title":"** Tab three **","titles":["Documentation Capabilities","Styling","Tabs"]},"300":{"title":"Details sections","titles":["Documentation Capabilities"]},"301":{"title":"Embed","titles":["Documentation Capabilities"]},"302":{"title":"QMK Compiler Development Guide","titles":[]},"303":{"title":"Overview","titles":[]},"304":{"title":"Workers","titles":[]},"305":{"title":"API Service","titles":[]},"306":{"title":"@app.route('/v1/compile', methods=['POST'])","titles":["API Service"]},"307":{"title":"@app.route('/v1/compile/<string:job_id>', methods=['GET'])","titles":["API Service"]},"308":{"title":"@app.route('/v1/compile/<string:job_id>/download', methods=['GET'])","titles":["API Service"]},"309":{"title":"@app.route('/v1/compile/<string:job_id>/source', methods=['GET'])","titles":["API Service"]},"310":{"title":"Development Environment Setup","titles":[]},"311":{"title":"QMK API","titles":[]},"312":{"title":"Overview","titles":["QMK API"]},"313":{"title":"Example JSON Payload:","titles":["QMK API","Overview"]},"314":{"title":"Submitting a Compile Job","titles":["QMK API"]},"315":{"title":"Checking The Status","titles":["QMK API"]},"316":{"title":"Examining Finished Results","titles":["QMK API"]},"317":{"title":"Constants","titles":["QMK API"]},"318":{"title":"QMK API","titles":[]},"319":{"title":"App Developers","titles":["QMK API"]},"320":{"title":"Keyboard Maintainers","titles":["QMK API"]},"321":{"title":"Backend Developers","titles":["QMK API"]},"322":{"title":"ARM Debugging using Eclipse","titles":[]},"323":{"title":"Installing the software","titles":["ARM Debugging using Eclipse"]},"324":{"title":"The xPack Manager","titles":["ARM Debugging using Eclipse","Installing the software"]},"325":{"title":"The ARM Toolchain","titles":["ARM Debugging using Eclipse","Installing the software"]},"326":{"title":"Windows build tools","titles":["ARM Debugging using Eclipse","Installing the software"]},"327":{"title":"Programmer/Debugger Drivers","titles":["ARM Debugging using Eclipse","Installing the software"]},"328":{"title":"OpenOCD","titles":["ARM Debugging using Eclipse","Installing the software"]},"329":{"title":"Java","titles":["ARM Debugging using Eclipse","Installing the software"]},"330":{"title":"GNU MCU Eclipse IDE","titles":["ARM Debugging using Eclipse","Installing the software"]},"331":{"title":"Configuring Eclipse","titles":["ARM Debugging using Eclipse"]},"332":{"title":"Building","titles":["ARM Debugging using Eclipse"]},"333":{"title":"Debugging","titles":["ARM Debugging using Eclipse"]},"334":{"title":"Connecting the Debugger","titles":["ARM Debugging using Eclipse","Debugging"]},"335":{"title":"Configuring the Debugger","titles":["ARM Debugging using Eclipse","Debugging"]},"336":{"title":"Running the Debugger.","titles":["ARM Debugging using Eclipse","Debugging"]},"337":{"title":"Breaking Changes","titles":[]},"338":{"title":"What has been included in past Breaking Changes?","titles":["Breaking Changes"]},"339":{"title":"When is the next Breaking Change?","titles":["Breaking Changes"]},"340":{"title":"Important Dates","titles":["Breaking Changes","When is the next Breaking Change?"]},"341":{"title":"What changes will be included?","titles":["Breaking Changes"]},"342":{"title":"Checklists","titles":["Breaking Changes"]},"343":{"title":"4 Weeks Before Merge","titles":["Breaking Changes","Checklists"]},"344":{"title":"2 Weeks Before Merge","titles":["Breaking Changes","Checklists"]},"345":{"title":"1 Week Before Merge","titles":["Breaking Changes","Checklists"]},"346":{"title":"2 Days Before Merge","titles":["Breaking Changes","Checklists"]},"347":{"title":"Day Of Merge","titles":["Breaking Changes","Checklists"]},"348":{"title":"Post-merge operations","titles":["Breaking Changes"]},"349":{"title":"Updating the develop branch","titles":["Breaking Changes","Post-merge operations"]},"350":{"title":"Set up Discord events for the next cycle","titles":["Breaking Changes","Post-merge operations"]},"351":{"title":"Past Breaking Changes","titles":[]},"352":{"title":"Breaking Changes: My Pull Request Was Flagged","titles":[]},"353":{"title":"What Do I Do?","titles":["Breaking Changes: My Pull Request Was Flagged"]},"354":{"title":"Consider Splitting Up Your PR","titles":["Breaking Changes: My Pull Request Was Flagged","What Do I Do?"]},"355":{"title":"Document Your Changes","titles":["Breaking Changes: My Pull Request Was Flagged","What Do I Do?"]},"356":{"title":"Ask for Help","titles":["Breaking Changes: My Pull Request Was Flagged","What Do I Do?"]},"357":{"title":"ChibiOS Upgrade Procedure","titles":[]},"358":{"title":"Getting ChibiOS","titles":["ChibiOS Upgrade Procedure"]},"359":{"title":"Getting ChibiOS-Contrib","titles":["ChibiOS Upgrade Procedure"]},"360":{"title":"Updating submodules","titles":["ChibiOS Upgrade Procedure"]},"361":{"title":"When merging a PR containing an upgrade of ChibiOS/ChibiOS-Contrib:","titles":["ChibiOS Upgrade Procedure"]},"362":{"title":"QMK CLI","titles":[]},"363":{"title":"Overview","titles":["QMK CLI"]},"364":{"title":"Requirements","titles":["QMK CLI","Overview"]},"365":{"title":"Install Using Homebrew (macOS, some Linux)","titles":["QMK CLI","Overview"]},"366":{"title":"Install Using pip","titles":["QMK CLI","Overview"]},"367":{"title":"Packaging For Other Operating Systems","titles":["QMK CLI","Overview"]},"368":{"title":"QMK CLI Commands","titles":[]},"369":{"title":"User Commands","titles":[]},"370":{"title":"qmk compile","titles":["User Commands"]},"371":{"title":"qmk flash","titles":["User Commands"]},"372":{"title":"qmk config","titles":["User Commands"]},"373":{"title":"qmk cd","titles":["User Commands"]},"374":{"title":"qmk find","titles":["User Commands"]},"375":{"title":"qmk console","titles":["User Commands"]},"376":{"title":"qmk doctor","titles":["User Commands"]},"377":{"title":"qmk format-json","titles":["User Commands"]},"378":{"title":"qmk info","titles":["User Commands"]},"379":{"title":"qmk json2c","titles":["User Commands"]},"380":{"title":"qmk c2json","titles":["User Commands"]},"381":{"title":"qmk lint","titles":["User Commands"]},"382":{"title":"qmk list-keyboards","titles":["User Commands"]},"383":{"title":"qmk list-keymaps","titles":["User Commands"]},"384":{"title":"qmk migrate","titles":["User Commands"]},"385":{"title":"qmk new-keyboard","titles":["User Commands"]},"386":{"title":"qmk new-keymap","titles":["User Commands"]},"387":{"title":"qmk clean","titles":["User Commands"]},"388":{"title":"qmk via2json","titles":["User Commands"]},"389":{"title":"qmk import-keyboard","titles":["User Commands"]},"390":{"title":"qmk import-keymap","titles":["User Commands"]},"391":{"title":"qmk import-kbfirmware","titles":["User Commands"]},"392":{"title":"External Userspace Commands","titles":[]},"393":{"title":"qmk userspace-add","titles":["External Userspace Commands"]},"394":{"title":"qmk userspace-remove","titles":["External Userspace Commands"]},"395":{"title":"qmk userspace-list","titles":["External Userspace Commands"]},"396":{"title":"qmk userspace-compile","titles":["External Userspace Commands"]},"397":{"title":"qmk userspace-doctor","titles":["External Userspace Commands"]},"398":{"title":"Developer Commands","titles":[]},"399":{"title":"qmk format-text","titles":["Developer Commands"]},"400":{"title":"qmk format-c","titles":["Developer Commands"]},"401":{"title":"qmk generate-compilation-database","titles":["Developer Commands"]},"402":{"title":"qmk docs","titles":["Developer Commands"]},"403":{"title":"qmk generate-docs","titles":["Developer Commands"]},"404":{"title":"qmk generate-rgb-breathe-table","titles":["Developer Commands"]},"405":{"title":"qmk kle2json","titles":["Developer Commands"]},"406":{"title":"qmk format-python","titles":["Developer Commands"]},"407":{"title":"qmk pytest","titles":["Developer Commands"]},"408":{"title":"qmk painter-convert-graphics","titles":["Developer Commands"]},"409":{"title":"qmk painter-make-font-image","titles":["Developer Commands"]},"410":{"title":"qmk painter-convert-font-image","titles":["Developer Commands"]},"411":{"title":"qmk test-c","titles":["Developer Commands"]},"412":{"title":"QMK CLI Configuration","titles":[]},"413":{"title":"Introduction","titles":[]},"414":{"title":"Simple Example","titles":["Introduction"]},"415":{"title":"Setting User Defaults","titles":["Introduction"]},"416":{"title":"CLI Documentation (qmk config)","titles":[]},"417":{"title":"Setting Configuration Values","titles":["CLI Documentation (qmk config)"]},"418":{"title":"Reading Configuration Values","titles":["CLI Documentation (qmk config)"]},"419":{"title":"Entire Configuration Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"420":{"title":"Whole Section Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"421":{"title":"Single Key Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"422":{"title":"Multiple Keys Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"423":{"title":"Deleting Configuration Values","titles":["CLI Documentation (qmk config)"]},"424":{"title":"Multiple Operations","titles":["CLI Documentation (qmk config)"]},"425":{"title":"User Configuration Options","titles":[]},"426":{"title":"All Configuration Options","titles":[]},"427":{"title":"QMK CLI Development","titles":[]},"428":{"title":"Overview","titles":[]},"429":{"title":"Developer mode:","titles":["Overview"]},"430":{"title":"Subcommands","titles":[]},"431":{"title":"User Interaction","titles":[]},"432":{"title":"Printing Text","titles":["User Interaction"]},"433":{"title":"Logging (cli.log)","titles":["User Interaction","Printing Text"]},"434":{"title":"Printing (cli.echo)","titles":["User Interaction","Printing Text"]},"435":{"title":"Colorizing Text","titles":["User Interaction","Printing Text"]},"436":{"title":"Arguments and Configuration","titles":[]},"437":{"title":"Reading Configuration Values","titles":["Arguments and Configuration"]},"438":{"title":"Setting Configuration Values","titles":["Arguments and Configuration"]},"439":{"title":"Deleting Configuration Values","titles":["Arguments and Configuration"]},"440":{"title":"Writing The Configuration File","titles":["Arguments and Configuration"]},"441":{"title":"Excluding Arguments From Configuration","titles":["Arguments and Configuration"]},"442":{"title":"Testing, and Linting, and Formatting (oh my!)","titles":[]},"443":{"title":"Testing and Linting","titles":["Testing, and Linting, and Formatting (oh my!)"]},"444":{"title":"Formatting","titles":["Testing, and Linting, and Formatting (oh my!)"]},"445":{"title":"Formatting Details","titles":["Testing, and Linting, and Formatting (oh my!)"]},"446":{"title":"Testing Details","titles":["Testing, and Linting, and Formatting (oh my!)"]},"447":{"title":"Linting Details","titles":["Testing, and Linting, and Formatting (oh my!)"]},"448":{"title":"Tab Completion for QMK","titles":[]},"449":{"title":"Setup","titles":["Tab Completion for QMK"]},"450":{"title":"For Your User Only","titles":["Tab Completion for QMK","Setup"]},"451":{"title":"System Wide Symlink","titles":["Tab Completion for QMK","Setup"]},"452":{"title":"System Wide Copy","titles":["Tab Completion for QMK","Setup"]},"453":{"title":"Coding Conventions (C)","titles":[]},"454":{"title":"Auto-formatting with clang-format","titles":[]},"455":{"title":"Coding Conventions (Python)","titles":[]},"456":{"title":"YAPF","titles":[]},"457":{"title":"Imports","titles":[]},"458":{"title":"Import Examples","titles":["Imports"]},"459":{"title":"Statements","titles":[]},"460":{"title":"Naming","titles":[]},"461":{"title":"Names to Avoid","titles":["Naming"]},"462":{"title":"Docstrings","titles":[]},"463":{"title":"Simple docstring example","titles":["Docstrings"]},"464":{"title":"Complex docstring example","titles":["Docstrings"]},"465":{"title":"Function arguments docstring example","titles":["Docstrings"]},"466":{"title":"Exceptions","titles":[]},"467":{"title":"Tuples","titles":[]},"468":{"title":"Lists and Dictionaries","titles":[]},"469":{"title":"Parentheses","titles":[]},"470":{"title":"Format Strings","titles":[]},"471":{"title":"Comprehensions & Generator Expressions","titles":[]},"472":{"title":"Lambdas","titles":[]},"473":{"title":"Conditional Expressions","titles":[]},"474":{"title":"Default Argument Values","titles":[]},"475":{"title":"Properties","titles":[]},"476":{"title":"True/False Evaluations","titles":[]},"477":{"title":"Decorators","titles":[]},"478":{"title":"Threading and Multiprocessing","titles":[]},"479":{"title":"Power Features","titles":[]},"480":{"title":"Type Annotated Code","titles":[]},"481":{"title":"Function length","titles":[]},"482":{"title":"FIXMEs","titles":[]},"483":{"title":"Testing","titles":[]},"484":{"title":"Integration Tests","titles":["Testing"]},"485":{"title":"Unit Tests","titles":["Testing"]},"486":{"title":"Compatible Microcontrollers","titles":[]},"487":{"title":"Atmel AVR","titles":["Compatible Microcontrollers"]},"488":{"title":"ARM","titles":["Compatible Microcontrollers"]},"489":{"title":"STMicroelectronics (STM32)","titles":["Compatible Microcontrollers","ARM"]},"490":{"title":"WestBerryTech (WB32)","titles":["Compatible Microcontrollers","ARM"]},"491":{"title":"NXP (Kinetis)","titles":["Compatible Microcontrollers","ARM"]},"492":{"title":"Raspberry Pi","titles":["Compatible Microcontrollers","ARM"]},"493":{"title":"Sonix (SN32)","titles":["Compatible Microcontrollers","ARM"]},"494":{"title":"RISC-V","titles":["Compatible Microcontrollers"]},"495":{"title":"GigaDevice","titles":["Compatible Microcontrollers","RISC-V"]},"496":{"title":"Configuring QMK","titles":[]},"497":{"title":"QMK Default","titles":["Configuring QMK"]},"498":{"title":"Keyboard","titles":["Configuring QMK"]},"499":{"title":"Folders","titles":["Configuring QMK"]},"500":{"title":"Keymap","titles":["Configuring QMK"]},"501":{"title":"The config.h File","titles":[]},"502":{"title":"Hardware Options","titles":["The config.h File"]},"503":{"title":"Features That Can Be Disabled","titles":["The config.h File"]},"504":{"title":"Features That Can Be Enabled","titles":["The config.h File"]},"505":{"title":"Behaviors That Can Be Configured","titles":["The config.h File"]},"506":{"title":"RGB Light Configuration","titles":["The config.h File"]},"507":{"title":"Mouse Key Options","titles":["The config.h File"]},"508":{"title":"Split Keyboard Options","titles":["The config.h File"]},"509":{"title":"Setting Handedness","titles":["The config.h File","Split Keyboard Options"]},"510":{"title":"Defines for handedness","titles":["The config.h File","Split Keyboard Options","Setting Handedness"]},"511":{"title":"Other Options","titles":["The config.h File","Split Keyboard Options"]},"512":{"title":"The rules.mk File","titles":[]},"513":{"title":"Build Options","titles":["The rules.mk File"]},"514":{"title":"AVR MCU Options","titles":["The rules.mk File"]},"515":{"title":"Feature Options","titles":["The rules.mk File"]},"516":{"title":"USB Endpoint Limitations","titles":["The rules.mk File"]},"517":{"title":"QMK Configurator Architecture","titles":[]},"518":{"title":"Overview","titles":[]},"519":{"title":"Detailed Description","titles":[]},"520":{"title":"Configurator Frontend","titles":["Detailed Description"]},"521":{"title":"Keyboard Metadata","titles":["Detailed Description"]},"522":{"title":"QMK API","titles":["Detailed Description"]},"523":{"title":"Compile Job Queued","titles":["Detailed Description","QMK API"]},"524":{"title":"Compile Job Running","titles":["Detailed Description","QMK API"]},"525":{"title":"Compile Job Finished","titles":["Detailed Description","QMK API"]},"526":{"title":"Redis/RQ","titles":["Detailed Description"]},"527":{"title":"QMK Compiler","titles":["Detailed Description"]},"528":{"title":"Adding Default Keymaps to QMK Configurator","titles":[]},"529":{"title":"Technical Information","titles":["Adding Default Keymaps to QMK Configurator"]},"530":{"title":"Example","titles":["Adding Default Keymaps to QMK Configurator"]},"531":{"title":"Caveats","titles":["Adding Default Keymaps to QMK Configurator"]},"532":{"title":"Layers can only be referenced by number","titles":["Adding Default Keymaps to QMK Configurator","Caveats"]},"533":{"title":"No support for custom code of any kind","titles":["Adding Default Keymaps to QMK Configurator","Caveats"]},"534":{"title":"Limited Support for Custom keycodes","titles":["Adding Default Keymaps to QMK Configurator","Caveats"]},"535":{"title":"Additional Reading","titles":["Adding Default Keymaps to QMK Configurator"]},"536":{"title":"QMK Configurator: Step by Step","titles":[]},"537":{"title":"Step 1: Select Your Keyboard","titles":["QMK Configurator: Step by Step"]},"538":{"title":"Step 2: Select Your Keyboard Layout","titles":["QMK Configurator: Step by Step"]},"539":{"title":"Step 3: Name Your Keymap","titles":["QMK Configurator: Step by Step"]},"540":{"title":"Step 4: Define Your Keymap","titles":["QMK Configurator: Step by Step"]},"541":{"title":"Step 5: Save Your Keymap for Future Changes","titles":["QMK Configurator: Step by Step"]},"542":{"title":"Step 6: Compile Your Firmware File","titles":["QMK Configurator: Step by Step"]},"543":{"title":"Next steps: Flashing Your Keyboard","titles":["QMK Configurator: Step by Step"]},"544":{"title":"Configurator Troubleshooting","titles":[]},"545":{"title":"My .json file is not working","titles":["Configurator Troubleshooting"]},"546":{"title":"There are extra spaces in my layout? What do I do?","titles":["Configurator Troubleshooting"]},"547":{"title":"What is the keycode for...","titles":["Configurator Troubleshooting"]},"548":{"title":"It won't compile","titles":["Configurator Troubleshooting"]},"549":{"title":"Problems and Bugs","titles":["Configurator Troubleshooting"]},"550":{"title":"How to Contribute","titles":[]},"551":{"title":"I Don't Want to Read This Whole Thing! I Just Have a Question!","titles":["How to Contribute"]},"552":{"title":"Project Overview","titles":[]},"553":{"title":"Where Can I Go for Help?","titles":[]},"554":{"title":"How Do I Make a Contribution?","titles":[]},"555":{"title":"Coding Conventions","titles":[]},"556":{"title":"General Guidelines","titles":[]},"557":{"title":"Documentation","titles":["General Guidelines"]},"558":{"title":"Previewing the Documentation","titles":["General Guidelines","Documentation"]},"559":{"title":"Keyboards","titles":["General Guidelines"]},"560":{"title":"Quantum/TMK Core","titles":["General Guidelines"]},"561":{"title":"Refactoring","titles":["General Guidelines"]},"562":{"title":"What Does the Code of Conduct Mean for Me?","titles":[]},"563":{"title":"Custom Matrix","titles":[]},"564":{"title":"Prerequisites","titles":["Custom Matrix"]},"565":{"title":"'lite'","titles":["Custom Matrix"]},"566":{"title":"Full Replacement","titles":["Custom Matrix"]},"567":{"title":"How to Customize Your Keyboard's Behavior","titles":[]},"568":{"title":"A Word on Core vs Keyboards vs Keymap","titles":["How to Customize Your Keyboard's Behavior"]},"569":{"title":"Custom Keycodes","titles":[]},"570":{"title":"Defining a New Keycode","titles":["Custom Keycodes"]},"571":{"title":"Programming the Behavior of Any Keycode","titles":["Custom Keycodes"]},"572":{"title":"Example process_record_user() Implementation","titles":["Custom Keycodes","Programming the Behavior of Any Keycode"]},"573":{"title":"process_record_* Function Documentation","titles":["Custom Keycodes","Programming the Behavior of Any Keycode"]},"574":{"title":"Keyboard Initialization Code","titles":[]},"575":{"title":"Keyboard Pre Initialization code","titles":["Keyboard Initialization Code"]},"576":{"title":"Example keyboard_pre_init_user() Implementation","titles":["Keyboard Initialization Code","Keyboard Pre Initialization code"]},"577":{"title":"keyboard_pre_init_* Function Documentation","titles":["Keyboard Initialization Code","Keyboard Pre Initialization code"]},"578":{"title":"Matrix Initialization Code","titles":["Keyboard Initialization Code"]},"579":{"title":"matrix_init_* Function Documentation","titles":["Keyboard Initialization Code","Matrix Initialization Code"]},"580":{"title":"Low-level Matrix Overrides Function Documentation","titles":["Keyboard Initialization Code","Matrix Initialization Code"]},"581":{"title":"Keyboard Post Initialization code","titles":["Keyboard Initialization Code"]},"582":{"title":"Example keyboard_post_init_user() Implementation","titles":["Keyboard Initialization Code","Keyboard Post Initialization code"]},"583":{"title":"keyboard_post_init_* Function Documentation","titles":["Keyboard Initialization Code","Keyboard Post Initialization code"]},"584":{"title":"Matrix Scanning Code","titles":[]},"585":{"title":"Example matrix_scan_* Implementation","titles":["Matrix Scanning Code"]},"586":{"title":"matrix_scan_* Function Documentation","titles":["Matrix Scanning Code"]},"587":{"title":"Keyboard housekeeping","titles":[]},"588":{"title":"Example void housekeeping_task_user(void) implementation","titles":["Keyboard housekeeping"]},"589":{"title":"Keyboard Idling/Wake Code","titles":[]},"590":{"title":"Example suspend_power_down_user() and suspend_wakeup_init_user() Implementation","titles":["Keyboard Idling/Wake Code"]},"591":{"title":"Keyboard suspend/wake Function Documentation","titles":["Keyboard Idling/Wake Code"]},"592":{"title":"Keyboard Shutdown/Reboot Code","titles":[]},"593":{"title":"Example shutdown_kb() Implementation","titles":["Keyboard Shutdown/Reboot Code"]},"594":{"title":"Example shutdown_user() Implementation","titles":["Keyboard Shutdown/Reboot Code"]},"595":{"title":"Keyboard shutdown/reboot Function Documentation","titles":["Keyboard Shutdown/Reboot Code"]},"596":{"title":"Deferred Execution","titles":[]},"597":{"title":"Deferred executor callbacks","titles":["Deferred Execution"]},"598":{"title":"Deferred executor registration","titles":["Deferred Execution"]},"599":{"title":"Extending a deferred execution","titles":["Deferred Execution"]},"600":{"title":"Cancelling a deferred execution","titles":["Deferred Execution"]},"601":{"title":"Deferred callback limits","titles":["Deferred Execution"]},"602":{"title":"Advanced topics","titles":[]},"603":{"title":"Layer Change Code","titles":["Advanced topics"]},"604":{"title":"Persistent Configuration (EEPROM)","titles":["Advanced topics"]},"605":{"title":"Data Driven Configuration","titles":[]},"606":{"title":"History","titles":["Data Driven Configuration"]},"607":{"title":"Overview","titles":["Data Driven Configuration"]},"608":{"title":"Adding an option to info.json","titles":["Data Driven Configuration"]},"609":{"title":"Add it to the schema","titles":["Data Driven Configuration","Adding an option to info.json"]},"610":{"title":"Add a mapping","titles":["Data Driven Configuration","Adding an option to info.json"]},"611":{"title":"Info Key","titles":["Data Driven Configuration","Adding an option to info.json","Add a mapping"]},"612":{"title":"Value Types","titles":["Data Driven Configuration","Adding an option to info.json","Add a mapping"]},"613":{"title":"Add code to extract it","titles":["Data Driven Configuration","Adding an option to info.json"]},"614":{"title":"Add code to generate it","titles":["Data Driven Configuration","Adding an option to info.json"]},"615":{"title":"Documentation Best Practices","titles":[]},"616":{"title":"Page Opening","titles":[]},"617":{"title":"Headings","titles":[]},"618":{"title":"Styled Hint Blocks","titles":[]},"619":{"title":"Important","titles":["Styled Hint Blocks"]},"620":{"title":"General Tips","titles":["Styled Hint Blocks"]},"621":{"title":"Documenting Features","titles":[]},"622":{"title":"Documentation Templates","titles":[]},"623":{"title":"Keymap readme.md Template","titles":["Documentation Templates"]},"624":{"title":"Keyboard readme.md Template","titles":["Documentation Templates"]},"625":{"title":"Bootloader Driver Installation with Zadig","titles":[]},"626":{"title":"Installation","titles":["Bootloader Driver Installation with Zadig"]},"627":{"title":"Recovering from Installation to Wrong Device","titles":["Bootloader Driver Installation with Zadig"]},"628":{"title":"Uninstallation","titles":["Bootloader Driver Installation with Zadig"]},"629":{"title":"List of Known Bootloaders","titles":["Bootloader Driver Installation with Zadig"]},"630":{"title":"ADC Driver","titles":[]},"631":{"title":"Usage","titles":["ADC Driver"]},"632":{"title":"Channels","titles":["ADC Driver"]},"633":{"title":"AVR","titles":["ADC Driver","Channels"]},"634":{"title":"ARM","titles":["ADC Driver","Channels"]},"635":{"title":"STM32","titles":["ADC Driver","Channels","ARM"]},"636":{"title":"RP2040","titles":["ADC Driver","Channels","ARM"]},"637":{"title":"Functions","titles":["ADC Driver"]},"638":{"title":"AVR","titles":["ADC Driver","Functions"]},"639":{"title":"ARM","titles":["ADC Driver","Functions"]},"640":{"title":"Configuration","titles":["ADC Driver"]},"641":{"title":"ARM","titles":["ADC Driver"]},"642":{"title":"APA102 Driver","titles":[]},"643":{"title":"Usage","titles":["APA102 Driver"]},"644":{"title":"Basic Configuration","titles":["APA102 Driver"]},"645":{"title":"API","titles":["APA102 Driver"]},"646":{"title":"void apa102_init(void)","titles":["APA102 Driver","API"]},"647":{"title":"void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["APA102 Driver","API"]},"648":{"title":"Arguments","titles":["APA102 Driver","API","void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"649":{"title":"void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["APA102 Driver","API"]},"650":{"title":"Arguments","titles":["APA102 Driver","API","void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"651":{"title":"void apa102_flush(void)","titles":["APA102 Driver","API"]},"652":{"title":"void apa102_set_brightness(uint8_t brightness)","titles":["APA102 Driver","API"]},"653":{"title":"Arguments","titles":["APA102 Driver","API","void apa102_set_brightness(uint8_t brightness)"]},"654":{"title":"AW20216S Driver","titles":[]},"655":{"title":"Usage","titles":["AW20216S Driver"]},"656":{"title":"Basic Configuration","titles":["AW20216S Driver"]},"657":{"title":"Global Current Control","titles":["AW20216S Driver","Basic Configuration"]},"658":{"title":"ARM/ChibiOS Configuration","titles":["AW20216S Driver"]},"659":{"title":"LED Mapping","titles":["AW20216S Driver"]},"660":{"title":"API","titles":["AW20216S Driver"]},"661":{"title":"struct aw20216s_led_t","titles":["AW20216S Driver","API"]},"662":{"title":"Members","titles":["AW20216S Driver","API","struct aw20216s_led_t"]},"663":{"title":"void aw20216s_init(pin_t cs_pin)","titles":["AW20216S Driver","API"]},"664":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_init(pin_t cs_pin)"]},"665":{"title":"void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["AW20216S Driver","API"]},"666":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"667":{"title":"void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["AW20216S Driver","API"]},"668":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"669":{"title":"void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index)","titles":["AW20216S Driver","API"]},"670":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index)"]},"671":{"title":"EEPROM Driver Configuration","titles":[]},"672":{"title":"Vendor Driver Configuration","titles":["EEPROM Driver Configuration"]},"673":{"title":"STM32 L0/L1 Configuration","titles":["EEPROM Driver Configuration","Vendor Driver Configuration"]},"674":{"title":"I2C Driver Configuration","titles":["EEPROM Driver Configuration"]},"675":{"title":"SPI Driver Configuration","titles":["EEPROM Driver Configuration"]},"676":{"title":"Transient Driver configuration","titles":["EEPROM Driver Configuration"]},"677":{"title":"Wear-leveling Driver Configuration","titles":["EEPROM Driver Configuration"]},"678":{"title":"Wear-leveling Configuration","titles":[]},"679":{"title":"Wear-leveling Embedded Flash Driver Configuration","titles":["Wear-leveling Configuration"]},"680":{"title":"Wear-leveling SPI Flash Driver Configuration","titles":["Wear-leveling Configuration"]},"681":{"title":"Wear-leveling RP2040 Driver Configuration","titles":["Wear-leveling Configuration"]},"682":{"title":"Wear-leveling Legacy EEPROM Emulation Driver Configuration","titles":["Wear-leveling Configuration"]},"683":{"title":"Audio Driver","titles":[]},"684":{"title":"AVR","titles":["Audio Driver"]},"685":{"title":"ARM","titles":["Audio Driver"]},"686":{"title":"DAC basic","titles":["Audio Driver","ARM"]},"687":{"title":"DAC additive","titles":["Audio Driver","ARM"]},"688":{"title":"DAC Config","titles":["Audio Driver","ARM"]},"689":{"title":"Notes on buffer size","titles":["Audio Driver","ARM","DAC Config"]},"690":{"title":"PWM hardware","titles":["Audio Driver","ARM"]},"691":{"title":"PWM software","titles":["Audio Driver","ARM"]},"692":{"title":"Testing Notes","titles":["Audio Driver","ARM"]},"693":{"title":"FLASH Driver Configuration","titles":[]},"694":{"title":"SPI FLASH Driver Configuration","titles":["FLASH Driver Configuration"]},"695":{"title":"GPIO Control","titles":[]},"696":{"title":"Macros","titles":["GPIO Control"]},"697":{"title":"Advanced Settings","titles":["GPIO Control"]},"698":{"title":"Atomic Operation","titles":["GPIO Control"]},"699":{"title":"I2C Master Driver","titles":[]},"700":{"title":"Usage","titles":["I2C Master Driver"]},"701":{"title":"I2C Addressing","titles":["I2C Master Driver"]},"702":{"title":"AVR Configuration","titles":["I2C Master Driver"]},"703":{"title":"ChibiOS/ARM Configuration","titles":["I2C Master Driver"]},"704":{"title":"I2Cv1","titles":["I2C Master Driver","ChibiOS/ARM Configuration"]},"705":{"title":"I2Cv2","titles":["I2C Master Driver","ChibiOS/ARM Configuration"]},"706":{"title":"API","titles":["I2C Master Driver"]},"707":{"title":"void i2c_init(void)","titles":["I2C Master Driver","API"]},"708":{"title":"i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"709":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)"]},"710":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)"]},"711":{"title":"i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"712":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)"]},"713":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)"]},"714":{"title":"i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"715":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"716":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"717":{"title":"i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"718":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"719":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"720":{"title":"i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"721":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"722":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"723":{"title":"i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"724":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"725":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"726":{"title":"i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)","titles":["I2C Master Driver","API"]},"727":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)"]},"728":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)"]},"729":{"title":"IS31FL3218 Driver","titles":[]},"730":{"title":"Usage","titles":["IS31FL3218 Driver"]},"731":{"title":"Basic Configuration","titles":["IS31FL3218 Driver"]},"732":{"title":"I²C Addressing","titles":["IS31FL3218 Driver","Basic Configuration"]},"733":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3218 Driver"]},"734":{"title":"LED Mapping","titles":["IS31FL3218 Driver"]},"735":{"title":"API","titles":["IS31FL3218 Driver"]},"736":{"title":"struct is31fl3218_led_t","titles":["IS31FL3218 Driver","API"]},"737":{"title":"Members","titles":["IS31FL3218 Driver","API","struct is31fl3218_led_t"]},"738":{"title":"void is31fl3218_init(void)","titles":["IS31FL3218 Driver","API"]},"739":{"title":"void is31fl3218_write_register(uint8_t reg, uint8_t data)","titles":["IS31FL3218 Driver","API"]},"740":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_write_register(uint8_t reg, uint8_t data)"]},"741":{"title":"void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3218 Driver","API"]},"742":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"743":{"title":"void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3218 Driver","API"]},"744":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"745":{"title":"void is31fl3218_set_value(int index, uint8_t value)","titles":["IS31FL3218 Driver","API"]},"746":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_value(int index, uint8_t value)"]},"747":{"title":"void is31fl3218_set_value_all(uint8_t value)","titles":["IS31FL3218 Driver","API"]},"748":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_value_all(uint8_t value)"]},"749":{"title":"void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3218 Driver","API"]},"750":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"751":{"title":"void is31fl3218_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3218 Driver","API"]},"752":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_led_control_register(uint8_t index, bool value)"]},"753":{"title":"void is31fl3218_update_pwm_buffers(void)","titles":["IS31FL3218 Driver","API"]},"754":{"title":"void is31fl3218_update_led_control_registers(void)","titles":["IS31FL3218 Driver","API"]},"755":{"title":"IS31FL3236 Driver","titles":[]},"756":{"title":"Usage","titles":["IS31FL3236 Driver"]},"757":{"title":"Basic Configuration","titles":["IS31FL3236 Driver"]},"758":{"title":"I²C Addressing","titles":["IS31FL3236 Driver","Basic Configuration"]},"759":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3236 Driver"]},"760":{"title":"LED Mapping","titles":["IS31FL3236 Driver"]},"761":{"title":"API","titles":["IS31FL3236 Driver"]},"762":{"title":"struct is31fl3236_led_t","titles":["IS31FL3236 Driver","API"]},"763":{"title":"Members","titles":["IS31FL3236 Driver","API","struct is31fl3236_led_t"]},"764":{"title":"void is31fl3236_init(uint8_t index)","titles":["IS31FL3236 Driver","API"]},"765":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_init(uint8_t index)"]},"766":{"title":"void is31fl3236_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3236 Driver","API"]},"767":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"768":{"title":"void is31fl3236_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3236 Driver","API"]},"769":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"770":{"title":"void is31fl3236_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3236 Driver","API"]},"771":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"772":{"title":"void is31fl3236_set_value(int index, uint8_t value)","titles":["IS31FL3236 Driver","API"]},"773":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_value(int index, uint8_t value)"]},"774":{"title":"void is31fl3236_set_value_all(uint8_t value)","titles":["IS31FL3236 Driver","API"]},"775":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_value_all(uint8_t value)"]},"776":{"title":"void is31fl3236_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3236 Driver","API"]},"777":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"778":{"title":"void is31fl3236_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3236 Driver","API"]},"779":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_led_control_register(uint8_t index, bool value)"]},"780":{"title":"void is31fl3236_update_pwm_buffers(uint8_t index)","titles":["IS31FL3236 Driver","API"]},"781":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_update_pwm_buffers(uint8_t index)"]},"782":{"title":"void is31fl3236_update_led_control_registers(uint8_t index)","titles":["IS31FL3236 Driver","API"]},"783":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_update_led_control_registers(uint8_t index)"]},"784":{"title":"IS31FL3729 Driver","titles":[]},"785":{"title":"Usage","titles":["IS31FL3729 Driver"]},"786":{"title":"Basic Configuration","titles":["IS31FL3729 Driver"]},"787":{"title":"I²C Addressing","titles":["IS31FL3729 Driver","Basic Configuration"]},"788":{"title":"PWM Frequency","titles":["IS31FL3729 Driver","Basic Configuration"]},"789":{"title":"De-Ghosting","titles":["IS31FL3729 Driver","Basic Configuration"]},"790":{"title":"Global Current Control","titles":["IS31FL3729 Driver","Basic Configuration"]},"791":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3729 Driver"]},"792":{"title":"LED Mapping","titles":["IS31FL3729 Driver"]},"793":{"title":"API","titles":["IS31FL3729 Driver"]},"794":{"title":"struct is31fl3729_led_t","titles":["IS31FL3729 Driver","API"]},"795":{"title":"Members","titles":["IS31FL3729 Driver","API","struct is31fl3729_led_t"]},"796":{"title":"void is31fl3729_init(uint8_t index)","titles":["IS31FL3729 Driver","API"]},"797":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_init(uint8_t index)"]},"798":{"title":"void is31fl3729_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3729 Driver","API"]},"799":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"800":{"title":"void is31fl3729_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3729 Driver","API"]},"801":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"802":{"title":"void is31fl3729_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3729 Driver","API"]},"803":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"804":{"title":"void is31fl3729_set_value(int index, uint8_t value)","titles":["IS31FL3729 Driver","API"]},"805":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_value(int index, uint8_t value)"]},"806":{"title":"void is31fl3729_set_value_all(uint8_t value)","titles":["IS31FL3729 Driver","API"]},"807":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_value_all(uint8_t value)"]},"808":{"title":"void is31fl3729_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3729 Driver","API"]},"809":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"810":{"title":"void is31fl3729_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3729 Driver","API"]},"811":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_scaling_register(uint8_t index, uint8_t value)"]},"812":{"title":"void is31fl3729_update_pwm_buffers(uint8_t index)","titles":["IS31FL3729 Driver","API"]},"813":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_update_pwm_buffers(uint8_t index)"]},"814":{"title":"void is31fl3729_update_scaling_registers(uint8_t index)","titles":["IS31FL3729 Driver","API"]},"815":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_update_scaling_registers(uint8_t index)"]},"816":{"title":"IS31FL3731 Driver","titles":[]},"817":{"title":"Usage","titles":["IS31FL3731 Driver"]},"818":{"title":"Basic Configuration","titles":["IS31FL3731 Driver"]},"819":{"title":"I²C Addressing","titles":["IS31FL3731 Driver","Basic Configuration"]},"820":{"title":"De-Ghosting","titles":["IS31FL3731 Driver","Basic Configuration"]},"821":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3731 Driver"]},"822":{"title":"LED Mapping","titles":["IS31FL3731 Driver"]},"823":{"title":"API","titles":["IS31FL3731 Driver"]},"824":{"title":"struct is31fl3731_led_t","titles":["IS31FL3731 Driver","API"]},"825":{"title":"Members","titles":["IS31FL3731 Driver","API","struct is31fl3731_led_t"]},"826":{"title":"void is31fl3731_init(uint8_t index)","titles":["IS31FL3731 Driver","API"]},"827":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_init(uint8_t index)"]},"828":{"title":"void is31fl3731_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3731 Driver","API"]},"829":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"830":{"title":"void is31fl3731_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3731 Driver","API"]},"831":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_select_page(uint8_t index, uint8_t page)"]},"832":{"title":"void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3731 Driver","API"]},"833":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"834":{"title":"void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3731 Driver","API"]},"835":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"836":{"title":"void is31fl3731_set_value(int index, uint8_t value)","titles":["IS31FL3731 Driver","API"]},"837":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_value(int index, uint8_t value)"]},"838":{"title":"void is31fl3731_set_value_all(uint8_t value)","titles":["IS31FL3731 Driver","API"]},"839":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_value_all(uint8_t value)"]},"840":{"title":"void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3731 Driver","API"]},"841":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"842":{"title":"void is31fl3731_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3731 Driver","API"]},"843":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_led_control_register(uint8_t index, bool value)"]},"844":{"title":"void is31fl3731_update_pwm_buffers(uint8_t index)","titles":["IS31FL3731 Driver","API"]},"845":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_update_pwm_buffers(uint8_t index)"]},"846":{"title":"void is31fl3731_update_led_control_registers(uint8_t index)","titles":["IS31FL3731 Driver","API"]},"847":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_update_led_control_registers(uint8_t index)"]},"848":{"title":"IS31FL3733 Driver","titles":[]},"849":{"title":"Usage","titles":["IS31FL3733 Driver"]},"850":{"title":"Basic Configuration","titles":["IS31FL3733 Driver"]},"851":{"title":"I²C Addressing","titles":["IS31FL3733 Driver","Basic Configuration"]},"852":{"title":"Multi-Driver Synchronization","titles":["IS31FL3733 Driver","Basic Configuration"]},"853":{"title":"PWM Frequency","titles":["IS31FL3733 Driver","Basic Configuration"]},"854":{"title":"De-Ghosting","titles":["IS31FL3733 Driver","Basic Configuration"]},"855":{"title":"Global Current Control","titles":["IS31FL3733 Driver","Basic Configuration"]},"856":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3733 Driver"]},"857":{"title":"LED Mapping","titles":["IS31FL3733 Driver"]},"858":{"title":"API","titles":["IS31FL3733 Driver"]},"859":{"title":"struct is31fl3733_led_t","titles":["IS31FL3733 Driver","API"]},"860":{"title":"Members","titles":["IS31FL3733 Driver","API","struct is31fl3733_led_t"]},"861":{"title":"void is31fl3733_init(uint8_t index)","titles":["IS31FL3733 Driver","API"]},"862":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_init(uint8_t index)"]},"863":{"title":"void is31fl3733_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3733 Driver","API"]},"864":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"865":{"title":"void is31fl3733_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3733 Driver","API"]},"866":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_select_page(uint8_t index, uint8_t page)"]},"867":{"title":"void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3733 Driver","API"]},"868":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"869":{"title":"void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3733 Driver","API"]},"870":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"871":{"title":"void is31fl3733_set_value(int index, uint8_t value)","titles":["IS31FL3733 Driver","API"]},"872":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_value(int index, uint8_t value)"]},"873":{"title":"void is31fl3733_set_value_all(uint8_t value)","titles":["IS31FL3733 Driver","API"]},"874":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_value_all(uint8_t value)"]},"875":{"title":"void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3733 Driver","API"]},"876":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"877":{"title":"void is31fl3733_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3733 Driver","API"]},"878":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_led_control_register(uint8_t index, bool value)"]},"879":{"title":"void is31fl3733_update_pwm_buffers(uint8_t index)","titles":["IS31FL3733 Driver","API"]},"880":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_update_pwm_buffers(uint8_t index)"]},"881":{"title":"void is31fl3733_update_led_control_registers(uint8_t index)","titles":["IS31FL3733 Driver","API"]},"882":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_update_led_control_registers(uint8_t index)"]},"883":{"title":"IS31FL3736 Driver","titles":[]},"884":{"title":"Usage","titles":["IS31FL3736 Driver"]},"885":{"title":"Basic Configuration","titles":["IS31FL3736 Driver"]},"886":{"title":"I²C Addressing","titles":["IS31FL3736 Driver","Basic Configuration"]},"887":{"title":"PWM Frequency","titles":["IS31FL3736 Driver","Basic Configuration"]},"888":{"title":"De-Ghosting","titles":["IS31FL3736 Driver","Basic Configuration"]},"889":{"title":"Global Current Control","titles":["IS31FL3736 Driver","Basic Configuration"]},"890":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3736 Driver"]},"891":{"title":"LED Mapping","titles":["IS31FL3736 Driver"]},"892":{"title":"API","titles":["IS31FL3736 Driver"]},"893":{"title":"struct is31fl3736_led_t","titles":["IS31FL3736 Driver","API"]},"894":{"title":"Members","titles":["IS31FL3736 Driver","API","struct is31fl3736_led_t"]},"895":{"title":"void is31fl3736_init(uint8_t index)","titles":["IS31FL3736 Driver","API"]},"896":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_init(uint8_t index)"]},"897":{"title":"void is31fl3736_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3736 Driver","API"]},"898":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"899":{"title":"void is31fl3736_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3736 Driver","API"]},"900":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_select_page(uint8_t index, uint8_t page)"]},"901":{"title":"void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3736 Driver","API"]},"902":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"903":{"title":"void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3736 Driver","API"]},"904":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"905":{"title":"void is31fl3736_set_value(int index, uint8_t value)","titles":["IS31FL3736 Driver","API"]},"906":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_value(int index, uint8_t value)"]},"907":{"title":"void is31fl3736_set_value_all(uint8_t value)","titles":["IS31FL3736 Driver","API"]},"908":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_value_all(uint8_t value)"]},"909":{"title":"void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3736 Driver","API"]},"910":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"911":{"title":"void is31fl3736_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3736 Driver","API"]},"912":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_led_control_register(uint8_t index, bool value)"]},"913":{"title":"void is31fl3736_update_pwm_buffers(uint8_t index)","titles":["IS31FL3736 Driver","API"]},"914":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_update_pwm_buffers(uint8_t index)"]},"915":{"title":"void is31fl3736_update_led_control_registers(uint8_t index)","titles":["IS31FL3736 Driver","API"]},"916":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_update_led_control_registers(uint8_t index)"]},"917":{"title":"IS31FL3737 Driver","titles":[]},"918":{"title":"Usage","titles":["IS31FL3737 Driver"]},"919":{"title":"Basic Configuration","titles":["IS31FL3737 Driver"]},"920":{"title":"I²C Addressing","titles":["IS31FL3737 Driver","Basic Configuration"]},"921":{"title":"PWM Frequency","titles":["IS31FL3737 Driver","Basic Configuration"]},"922":{"title":"De-Ghosting","titles":["IS31FL3737 Driver","Basic Configuration"]},"923":{"title":"Global Current Control","titles":["IS31FL3737 Driver","Basic Configuration"]},"924":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3737 Driver"]},"925":{"title":"LED Mapping","titles":["IS31FL3737 Driver"]},"926":{"title":"API","titles":["IS31FL3737 Driver"]},"927":{"title":"struct is31fl3737_led_t","titles":["IS31FL3737 Driver","API"]},"928":{"title":"Members","titles":["IS31FL3737 Driver","API","struct is31fl3737_led_t"]},"929":{"title":"void is31fl3737_init(uint8_t index)","titles":["IS31FL3737 Driver","API"]},"930":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_init(uint8_t index)"]},"931":{"title":"void is31fl3737_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3737 Driver","API"]},"932":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"933":{"title":"void is31fl3737_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3737 Driver","API"]},"934":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_select_page(uint8_t index, uint8_t page)"]},"935":{"title":"void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3737 Driver","API"]},"936":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"937":{"title":"void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3737 Driver","API"]},"938":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"939":{"title":"void is31fl3737_set_value(int index, uint8_t value)","titles":["IS31FL3737 Driver","API"]},"940":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_value(int index, uint8_t value)"]},"941":{"title":"void is31fl3737_set_value_all(uint8_t value)","titles":["IS31FL3737 Driver","API"]},"942":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_value_all(uint8_t value)"]},"943":{"title":"void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3737 Driver","API"]},"944":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"945":{"title":"void is31fl3737_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3737 Driver","API"]},"946":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_led_control_register(uint8_t index, bool value)"]},"947":{"title":"void is31fl3737_update_pwm_buffers(uint8_t index)","titles":["IS31FL3737 Driver","API"]},"948":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_update_pwm_buffers(uint8_t index)"]},"949":{"title":"void is31fl3737_update_led_control_registers(uint8_t index)","titles":["IS31FL3737 Driver","API"]},"950":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_update_led_control_registers(uint8_t index)"]},"951":{"title":"IS31FL3741 Driver","titles":[]},"952":{"title":"Usage","titles":["IS31FL3741 Driver"]},"953":{"title":"Basic Configuration","titles":["IS31FL3741 Driver"]},"954":{"title":"I²C Addressing","titles":["IS31FL3741 Driver","Basic Configuration"]},"955":{"title":"PWM Frequency","titles":["IS31FL3741 Driver","Basic Configuration"]},"956":{"title":"De-Ghosting","titles":["IS31FL3741 Driver","Basic Configuration"]},"957":{"title":"Global Current Control","titles":["IS31FL3741 Driver","Basic Configuration"]},"958":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3741 Driver"]},"959":{"title":"LED Mapping","titles":["IS31FL3741 Driver"]},"960":{"title":"API","titles":["IS31FL3741 Driver"]},"961":{"title":"struct is31fl3741_led_t","titles":["IS31FL3741 Driver","API"]},"962":{"title":"Members","titles":["IS31FL3741 Driver","API","struct is31fl3741_led_t"]},"963":{"title":"void is31fl3741_init(uint8_t index)","titles":["IS31FL3741 Driver","API"]},"964":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_init(uint8_t index)"]},"965":{"title":"void is31fl3741_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3741 Driver","API"]},"966":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"967":{"title":"void is31fl3741_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3741 Driver","API"]},"968":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_select_page(uint8_t index, uint8_t page)"]},"969":{"title":"void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3741 Driver","API"]},"970":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"971":{"title":"void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3741 Driver","API"]},"972":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"973":{"title":"void is31fl3741_set_value(int index, uint8_t value)","titles":["IS31FL3741 Driver","API"]},"974":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_value(int index, uint8_t value)"]},"975":{"title":"void is31fl3741_set_value_all(uint8_t value)","titles":["IS31FL3741 Driver","API"]},"976":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_value_all(uint8_t value)"]},"977":{"title":"void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3741 Driver","API"]},"978":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"979":{"title":"void is31fl3741_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3741 Driver","API"]},"980":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_led_control_register(uint8_t index, bool value)"]},"981":{"title":"void is31fl3741_update_pwm_buffers(uint8_t index)","titles":["IS31FL3741 Driver","API"]},"982":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_update_pwm_buffers(uint8_t index)"]},"983":{"title":"void is31fl3741_update_led_control_registers(uint8_t index)","titles":["IS31FL3741 Driver","API"]},"984":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_update_led_control_registers(uint8_t index)"]},"985":{"title":"IS31FL3742A Driver","titles":[]},"986":{"title":"Usage","titles":["IS31FL3742A Driver"]},"987":{"title":"Basic Configuration","titles":["IS31FL3742A Driver"]},"988":{"title":"I²C Addressing","titles":["IS31FL3742A Driver","Basic Configuration"]},"989":{"title":"PWM Frequency","titles":["IS31FL3742A Driver","Basic Configuration"]},"990":{"title":"De-Ghosting","titles":["IS31FL3742A Driver","Basic Configuration"]},"991":{"title":"Global Current Control","titles":["IS31FL3742A Driver","Basic Configuration"]},"992":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3742A Driver"]},"993":{"title":"LED Mapping","titles":["IS31FL3742A Driver"]},"994":{"title":"API","titles":["IS31FL3742A Driver"]},"995":{"title":"struct is31fl3742a_led_t","titles":["IS31FL3742A Driver","API"]},"996":{"title":"Members","titles":["IS31FL3742A Driver","API","struct is31fl3742a_led_t"]},"997":{"title":"void is31fl3742a_init(uint8_t index)","titles":["IS31FL3742A Driver","API"]},"998":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_init(uint8_t index)"]},"999":{"title":"void is31fl3742a_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3742A Driver","API"]},"1000":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1001":{"title":"void is31fl3742a_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3742A Driver","API"]},"1002":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_select_page(uint8_t index, uint8_t page)"]},"1003":{"title":"void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3742A Driver","API"]},"1004":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1005":{"title":"void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3742A Driver","API"]},"1006":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1007":{"title":"void is31fl3742a_set_value(int index, uint8_t value)","titles":["IS31FL3742A Driver","API"]},"1008":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_value(int index, uint8_t value)"]},"1009":{"title":"void is31fl3742a_set_value_all(uint8_t value)","titles":["IS31FL3742A Driver","API"]},"1010":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_value_all(uint8_t value)"]},"1011":{"title":"void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3742A Driver","API"]},"1012":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1013":{"title":"void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3742A Driver","API"]},"1014":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value)"]},"1015":{"title":"void is31fl3742a_update_pwm_buffers(uint8_t index)","titles":["IS31FL3742A Driver","API"]},"1016":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_update_pwm_buffers(uint8_t index)"]},"1017":{"title":"void is31fl3742a_update_scaling_registers(uint8_t index)","titles":["IS31FL3742A Driver","API"]},"1018":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_update_scaling_registers(uint8_t index)"]},"1019":{"title":"IS31FL3743A Driver","titles":[]},"1020":{"title":"Usage","titles":["IS31FL3743A Driver"]},"1021":{"title":"Basic Configuration","titles":["IS31FL3743A Driver"]},"1022":{"title":"I²C Addressing","titles":["IS31FL3743A Driver","Basic Configuration"]},"1023":{"title":"Multi-Driver Synchronization","titles":["IS31FL3743A Driver","Basic Configuration"]},"1024":{"title":"De-Ghosting","titles":["IS31FL3743A Driver","Basic Configuration"]},"1025":{"title":"Global Current Control","titles":["IS31FL3743A Driver","Basic Configuration"]},"1026":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3743A Driver"]},"1027":{"title":"LED Mapping","titles":["IS31FL3743A Driver"]},"1028":{"title":"API","titles":["IS31FL3743A Driver"]},"1029":{"title":"struct is31fl3743a_led_t","titles":["IS31FL3743A Driver","API"]},"1030":{"title":"Members","titles":["IS31FL3743A Driver","API","struct is31fl3743a_led_t"]},"1031":{"title":"void is31fl3743a_init(uint8_t index)","titles":["IS31FL3743A Driver","API"]},"1032":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_init(uint8_t index)"]},"1033":{"title":"void is31fl3743a_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3743A Driver","API"]},"1034":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1035":{"title":"void is31fl3743a_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3743A Driver","API"]},"1036":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_select_page(uint8_t index, uint8_t page)"]},"1037":{"title":"void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3743A Driver","API"]},"1038":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1039":{"title":"void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3743A Driver","API"]},"1040":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1041":{"title":"void is31fl3743a_set_value(int index, uint8_t value)","titles":["IS31FL3743A Driver","API"]},"1042":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_value(int index, uint8_t value)"]},"1043":{"title":"void is31fl3743a_set_value_all(uint8_t value)","titles":["IS31FL3743A Driver","API"]},"1044":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_value_all(uint8_t value)"]},"1045":{"title":"void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3743A Driver","API"]},"1046":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1047":{"title":"void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3743A Driver","API"]},"1048":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value)"]},"1049":{"title":"void is31fl3743a_update_pwm_buffers(uint8_t index)","titles":["IS31FL3743A Driver","API"]},"1050":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_update_pwm_buffers(uint8_t index)"]},"1051":{"title":"void is31fl3743a_update_scaling_registers(uint8_t index)","titles":["IS31FL3743A Driver","API"]},"1052":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_update_scaling_registers(uint8_t index)"]},"1053":{"title":"IS31FL3745 Driver","titles":[]},"1054":{"title":"Usage","titles":["IS31FL3745 Driver"]},"1055":{"title":"Basic Configuration","titles":["IS31FL3745 Driver"]},"1056":{"title":"I²C Addressing","titles":["IS31FL3745 Driver","Basic Configuration"]},"1057":{"title":"Multi-Driver Synchronization","titles":["IS31FL3745 Driver","Basic Configuration"]},"1058":{"title":"De-Ghosting","titles":["IS31FL3745 Driver","Basic Configuration"]},"1059":{"title":"Global Current Control","titles":["IS31FL3745 Driver","Basic Configuration"]},"1060":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3745 Driver"]},"1061":{"title":"LED Mapping","titles":["IS31FL3745 Driver"]},"1062":{"title":"API","titles":["IS31FL3745 Driver"]},"1063":{"title":"struct is31fl3745_led_t","titles":["IS31FL3745 Driver","API"]},"1064":{"title":"Members","titles":["IS31FL3745 Driver","API","struct is31fl3745_led_t"]},"1065":{"title":"void is31fl3745_init(uint8_t index)","titles":["IS31FL3745 Driver","API"]},"1066":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_init(uint8_t index)"]},"1067":{"title":"void is31fl3745_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3745 Driver","API"]},"1068":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1069":{"title":"void is31fl3745_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3745 Driver","API"]},"1070":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_select_page(uint8_t index, uint8_t page)"]},"1071":{"title":"void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3745 Driver","API"]},"1072":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1073":{"title":"void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3745 Driver","API"]},"1074":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1075":{"title":"void is31fl3745_set_value(int index, uint8_t value)","titles":["IS31FL3745 Driver","API"]},"1076":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_value(int index, uint8_t value)"]},"1077":{"title":"void is31fl3745_set_value_all(uint8_t value)","titles":["IS31FL3745 Driver","API"]},"1078":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_value_all(uint8_t value)"]},"1079":{"title":"void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3745 Driver","API"]},"1080":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1081":{"title":"void is31fl3745_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3745 Driver","API"]},"1082":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_scaling_register(uint8_t index, uint8_t value)"]},"1083":{"title":"void is31fl3745_update_pwm_buffers(uint8_t index)","titles":["IS31FL3745 Driver","API"]},"1084":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_update_pwm_buffers(uint8_t index)"]},"1085":{"title":"void is31fl3745_update_scaling_registers(uint8_t index)","titles":["IS31FL3745 Driver","API"]},"1086":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_update_scaling_registers(uint8_t index)"]},"1087":{"title":"IS31FL3746A Driver","titles":[]},"1088":{"title":"Usage","titles":["IS31FL3746A Driver"]},"1089":{"title":"Basic Configuration","titles":["IS31FL3746A Driver"]},"1090":{"title":"I²C Addressing","titles":["IS31FL3746A Driver","Basic Configuration"]},"1091":{"title":"PWM Frequency","titles":["IS31FL3746A Driver","Basic Configuration"]},"1092":{"title":"De-Ghosting","titles":["IS31FL3746A Driver","Basic Configuration"]},"1093":{"title":"Global Current Control","titles":["IS31FL3746A Driver","Basic Configuration"]},"1094":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3746A Driver"]},"1095":{"title":"LED Mapping","titles":["IS31FL3746A Driver"]},"1096":{"title":"API","titles":["IS31FL3746A Driver"]},"1097":{"title":"struct is31fl3746a_led_t","titles":["IS31FL3746A Driver","API"]},"1098":{"title":"Members","titles":["IS31FL3746A Driver","API","struct is31fl3746a_led_t"]},"1099":{"title":"void is31fl3746a_init(uint8_t index)","titles":["IS31FL3746A Driver","API"]},"1100":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_init(uint8_t index)"]},"1101":{"title":"void is31fl3746a_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3746A Driver","API"]},"1102":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1103":{"title":"void is31fl3746a_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3746A Driver","API"]},"1104":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_select_page(uint8_t index, uint8_t page)"]},"1105":{"title":"void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3746A Driver","API"]},"1106":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1107":{"title":"void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3746A Driver","API"]},"1108":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1109":{"title":"void is31fl3746a_set_value(int index, uint8_t value)","titles":["IS31FL3746A Driver","API"]},"1110":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_value(int index, uint8_t value)"]},"1111":{"title":"void is31fl3746a_set_value_all(uint8_t value)","titles":["IS31FL3746A Driver","API"]},"1112":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_value_all(uint8_t value)"]},"1113":{"title":"void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3746A Driver","API"]},"1114":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1115":{"title":"void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3746A Driver","API"]},"1116":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value)"]},"1117":{"title":"void is31fl3746a_update_pwm_buffers(uint8_t index)","titles":["IS31FL3746A Driver","API"]},"1118":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_update_pwm_buffers(uint8_t index)"]},"1119":{"title":"void is31fl3746a_update_scaling_registers(uint8_t index)","titles":["IS31FL3746A Driver","API"]},"1120":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_update_scaling_registers(uint8_t index)"]},"1121":{"title":"'serial' Driver","titles":[]},"1122":{"title":"Bitbang","titles":["'serial' Driver"]},"1123":{"title":"Pin configuration","titles":["'serial' Driver","Bitbang"]},"1124":{"title":"Setup","titles":["'serial' Driver","Bitbang"]},"1125":{"title":"USART Half-duplex","titles":["'serial' Driver"]},"1126":{"title":"Pin configuration","titles":["'serial' Driver","USART Half-duplex"]},"1127":{"title":"Setup","titles":["'serial' Driver","USART Half-duplex"]},"1128":{"title":"USART Full-duplex","titles":["'serial' Driver"]},"1129":{"title":"Pin configuration","titles":["'serial' Driver","USART Full-duplex"]},"1130":{"title":"Setup","titles":["'serial' Driver","USART Full-duplex"]},"1131":{"title":"Choosing a driver subsystem","titles":["'serial' Driver"]},"1132":{"title":"The SERIAL driver","titles":["'serial' Driver","Choosing a driver subsystem"]},"1133":{"title":"The SIO driver","titles":["'serial' Driver","Choosing a driver subsystem"]},"1134":{"title":"The PIO driver","titles":["'serial' Driver","Choosing a driver subsystem"]},"1135":{"title":"Advanced Configuration","titles":["'serial' Driver"]},"1136":{"title":"Baudrate","titles":["'serial' Driver","Advanced Configuration"]},"1137":{"title":"Timeout","titles":["'serial' Driver","Advanced Configuration"]},"1138":{"title":"Troubleshooting","titles":["'serial' Driver"]},"1139":{"title":"Alternate Functions for selected STM32 MCUs","titles":["'serial' Driver"]},"1140":{"title":"STM32F303 / Proton-C","titles":["'serial' Driver","Alternate Functions for selected STM32 MCUs"]},"1141":{"title":"STM32F072","titles":["'serial' Driver","Alternate Functions for selected STM32 MCUs"]},"1142":{"title":"STM32F103 Medium Density (C8-CB)","titles":["'serial' Driver","Alternate Functions for selected STM32 MCUs"]},"1143":{"title":"SLED1734X Driver","titles":[]},"1144":{"title":"Usage","titles":[]},"1145":{"title":"Basic Configuration","titles":[]},"1146":{"title":"I²C Addressing","titles":["Basic Configuration"]},"1147":{"title":"ARM/ChibiOS Configuration","titles":[]},"1148":{"title":"LED Mapping","titles":[]},"1149":{"title":"API","titles":[]},"1150":{"title":"struct sled1734x_led_t","titles":["API"]},"1151":{"title":"Members","titles":["API","struct sled1734x_led_t"]},"1152":{"title":"void sled1734x_init(uint8_t index)","titles":["API"]},"1153":{"title":"Arguments","titles":["API","void sled1734x_init(uint8_t index)"]},"1154":{"title":"void sled1734x_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["API"]},"1155":{"title":"Arguments","titles":["API","void sled1734x_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1156":{"title":"void sled1734x_select_page(uint8_t index, uint8_t page)","titles":["API"]},"1157":{"title":"Arguments","titles":["API","void sled1734x_select_page(uint8_t index, uint8_t page)"]},"1158":{"title":"void sled1734x_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["API"]},"1159":{"title":"Arguments","titles":["API","void sled1734x_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1160":{"title":"void sled1734x_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["API"]},"1161":{"title":"Arguments","titles":["API","void sled1734x_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1162":{"title":"void sled1734x_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["API"]},"1163":{"title":"Arguments","titles":["API","void sled1734x_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"1164":{"title":"void sled1734x_update_pwm_buffers(uint8_t index)","titles":["API"]},"1165":{"title":"Arguments","titles":["API","void sled1734x_update_pwm_buffers(uint8_t index)"]},"1166":{"title":"void sled1734x_update_led_control_registers(uint8_t index)","titles":["API"]},"1167":{"title":"Arguments","titles":["API","void sled1734x_update_led_control_registers(uint8_t index)"]},"1168":{"title":"SN32F2XX Driver","titles":[]},"1169":{"title":"Hardware Configuration","titles":["SN32F2XX Driver"]},"1170":{"title":"Usage","titles":["SN32F2XX Driver"]},"1171":{"title":"Basic Configuration","titles":["SN32F2XX Driver"]},"1172":{"title":"Shared Matrix","titles":["SN32F2XX Driver"]},"1173":{"title":"ChibiOS/ARM Configuration","titles":["SN32F2XX Driver"]},"1174":{"title":"PWM Driver","titles":["SN32F2XX Driver","ChibiOS/ARM Configuration"]},"1175":{"title":"API","titles":["SN32F2XX Driver"]},"1176":{"title":"void sn32f2xx_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["SN32F2XX Driver","API"]},"1177":{"title":"Arguments","titles":["SN32F2XX Driver","API","void sn32f2xx_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1178":{"title":"void sn32f2xx_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["SN32F2XX Driver","API"]},"1179":{"title":"Arguments","titles":["SN32F2XX Driver","API","void sn32f2xx_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1180":{"title":"SNLED27351 Driver","titles":[]},"1181":{"title":"Usage","titles":["SNLED27351 Driver"]},"1182":{"title":"Basic Configuration","titles":["SNLED27351 Driver"]},"1183":{"title":"I²C Addressing","titles":["SNLED27351 Driver","Basic Configuration"]},"1184":{"title":"ARM/ChibiOS Configuration","titles":["SNLED27351 Driver"]},"1185":{"title":"LED Mapping","titles":["SNLED27351 Driver"]},"1186":{"title":"API","titles":["SNLED27351 Driver"]},"1187":{"title":"struct snled27351_led_t","titles":["SNLED27351 Driver","API"]},"1188":{"title":"Members","titles":["SNLED27351 Driver","API","struct snled27351_led_t"]},"1189":{"title":"void snled27351_init(uint8_t index)","titles":["SNLED27351 Driver","API"]},"1190":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_init(uint8_t index)"]},"1191":{"title":"void snled27351_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["SNLED27351 Driver","API"]},"1192":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1193":{"title":"void snled27351_select_page(uint8_t index, uint8_t page)","titles":["SNLED27351 Driver","API"]},"1194":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_select_page(uint8_t index, uint8_t page)"]},"1195":{"title":"void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["SNLED27351 Driver","API"]},"1196":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1197":{"title":"void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["SNLED27351 Driver","API"]},"1198":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1199":{"title":"void snled27351_set_value(int index, uint8_t value)","titles":["SNLED27351 Driver","API"]},"1200":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_value(int index, uint8_t value)"]},"1201":{"title":"void snled27351_set_value_all(uint8_t value)","titles":["SNLED27351 Driver","API"]},"1202":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_value_all(uint8_t value)"]},"1203":{"title":"void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["SNLED27351 Driver","API"]},"1204":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"1205":{"title":"void snled27351_set_led_control_register(uint8_t index, bool value)","titles":["SNLED27351 Driver","API"]},"1206":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_led_control_register(uint8_t index, bool value)"]},"1207":{"title":"void snled27351_update_pwm_buffers(uint8_t index)","titles":["SNLED27351 Driver","API"]},"1208":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_update_pwm_buffers(uint8_t index)"]},"1209":{"title":"void snled27351_update_led_control_registers(uint8_t index)","titles":["SNLED27351 Driver","API"]},"1210":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_update_led_control_registers(uint8_t index)"]},"1211":{"title":"SPI Master Driver","titles":[]},"1212":{"title":"Usage","titles":["SPI Master Driver"]},"1213":{"title":"AVR Configuration","titles":["SPI Master Driver"]},"1214":{"title":"ChibiOS/ARM Configuration","titles":["SPI Master Driver"]},"1215":{"title":"API","titles":["SPI Master Driver"]},"1216":{"title":"void spi_init(void)","titles":["SPI Master Driver","API"]},"1217":{"title":"bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)","titles":["SPI Master Driver","API"]},"1218":{"title":"Arguments","titles":["SPI Master Driver","API","bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)"]},"1219":{"title":"Return Value","titles":["SPI Master Driver","API","bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)"]},"1220":{"title":"spi_status_t spi_write(uint8_t data)","titles":["SPI Master Driver","API"]},"1221":{"title":"Arguments","titles":["SPI Master Driver","API","spi_status_t spi_write(uint8_t data)"]},"1222":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_write(uint8_t data)"]},"1223":{"title":"spi_status_t spi_read(void)","titles":["SPI Master Driver","API"]},"1224":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_read(void)"]},"1225":{"title":"spi_status_t spi_transmit(const uint8_t *data, uint16_t length)","titles":["SPI Master Driver","API"]},"1226":{"title":"Arguments","titles":["SPI Master Driver","API","spi_status_t spi_transmit(const uint8_t *data, uint16_t length)"]},"1227":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_transmit(const uint8_t *data, uint16_t length)"]},"1228":{"title":"spi_status_t spi_receive(uint8_t *data, uint16_t length)","titles":["SPI Master Driver","API"]},"1229":{"title":"Arguments","titles":["SPI Master Driver","API","spi_status_t spi_receive(uint8_t *data, uint16_t length)"]},"1230":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_receive(uint8_t *data, uint16_t length)"]},"1231":{"title":"void spi_stop(void)","titles":["SPI Master Driver","API"]},"1232":{"title":"UART Driver","titles":[]},"1233":{"title":"Usage","titles":["UART Driver"]},"1234":{"title":"AVR Configuration","titles":["UART Driver"]},"1235":{"title":"ChibiOS/ARM Configuration","titles":["UART Driver"]},"1236":{"title":"API","titles":["UART Driver"]},"1237":{"title":"void uart_init(uint32_t baud)","titles":["UART Driver","API"]},"1238":{"title":"Arguments","titles":["UART Driver","API","void uart_init(uint32_t baud)"]},"1239":{"title":"void uart_write(uint8_t data)","titles":["UART Driver","API"]},"1240":{"title":"Arguments","titles":["UART Driver","API","void uart_write(uint8_t data)"]},"1241":{"title":"uint8_t uart_read(void)","titles":["UART Driver","API"]},"1242":{"title":"Return Value","titles":["UART Driver","API","uint8_t uart_read(void)"]},"1243":{"title":"void uart_transmit(const uint8_t *data, uint16_t length)","titles":["UART Driver","API"]},"1244":{"title":"Arguments","titles":["UART Driver","API","void uart_transmit(const uint8_t *data, uint16_t length)"]},"1245":{"title":"void uart_receive(char *data, uint16_t length)","titles":["UART Driver","API"]},"1246":{"title":"Arguments","titles":["UART Driver","API","void uart_receive(char *data, uint16_t length)"]},"1247":{"title":"bool uart_available(void)","titles":["UART Driver","API"]},"1248":{"title":"Return Value","titles":["UART Driver","API","bool uart_available(void)"]},"1249":{"title":"WS2812 Driver","titles":[]},"1250":{"title":"Usage","titles":["WS2812 Driver"]},"1251":{"title":"Basic Configuration","titles":["WS2812 Driver"]},"1252":{"title":"Timing Adjustment","titles":["WS2812 Driver","Basic Configuration"]},"1253":{"title":"Byte Order","titles":["WS2812 Driver","Basic Configuration"]},"1254":{"title":"RGBW Support","titles":["WS2812 Driver","Basic Configuration"]},"1255":{"title":"Driver Configuration","titles":["WS2812 Driver"]},"1256":{"title":"Bitbang Driver","titles":["WS2812 Driver","Driver Configuration"]},"1257":{"title":"I2C Driver","titles":["WS2812 Driver","Driver Configuration"]},"1258":{"title":"PIO Driver","titles":["WS2812 Driver","Driver Configuration"]},"1259":{"title":"PWM Driver","titles":["WS2812 Driver","Driver Configuration"]},"1260":{"title":"SPI Driver","titles":["WS2812 Driver","Driver Configuration"]},"1261":{"title":"ChibiOS/ARM Configuration","titles":["WS2812 Driver"]},"1262":{"title":"Push-Pull and Open Drain","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1263":{"title":"SPI Driver","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1264":{"title":"Setting the Baudrate","titles":["WS2812 Driver","ChibiOS/ARM Configuration","SPI Driver"]},"1265":{"title":"Circular Buffer","titles":["WS2812 Driver","ChibiOS/ARM Configuration","SPI Driver"]},"1266":{"title":"PIO Driver","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1267":{"title":"PWM Driver","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1268":{"title":"API","titles":["WS2812 Driver"]},"1269":{"title":"void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds)","titles":["WS2812 Driver","API"]},"1270":{"title":"Arguments","titles":["WS2812 Driver","API","void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds)"]},"1271":{"title":"Easy Maker - Build One-Off Projects In Configurator","titles":[]},"1272":{"title":"Quickstart","titles":["Easy Maker - Build One-Off Projects In Configurator"]},"1273":{"title":"Direct Pin","titles":[]},"1274":{"title":"Frequently Asked Build Questions","titles":[]},"1275":{"title":"Can't Program on Linux","titles":["Frequently Asked Build Questions"]},"1276":{"title":"Linux udev Rules","titles":["Frequently Asked Build Questions","Can't Program on Linux"]},"1277":{"title":"Serial device is not detected in bootloader mode on Linux","titles":["Frequently Asked Build Questions","Can't Program on Linux"]},"1278":{"title":"Unknown Device for DFU Bootloader","titles":["Frequently Asked Build Questions"]},"1279":{"title":"USB VID and PID","titles":["Frequently Asked Build Questions"]},"1280":{"title":"I just flashed my keyboard and it does nothing/keypresses don't register - it's also ARM (rev6 planck, clueboard 60, hs60v2, etc...) (Feb 2019)","titles":["Frequently Asked Build Questions","USB VID and PID"]},"1281":{"title":"Debugging FAQ","titles":[]},"1282":{"title":"Debugging","titles":["Debugging FAQ"]},"1283":{"title":"Debugging Tools","titles":["Debugging FAQ"]},"1284":{"title":"Debugging With QMK Toolbox","titles":["Debugging FAQ","Debugging Tools"]},"1285":{"title":"Debugging with QMK CLI","titles":["Debugging FAQ","Debugging Tools"]},"1286":{"title":"Debugging With hid_listen","titles":["Debugging FAQ","Debugging Tools"]},"1287":{"title":"Sending Your Own Debug Messages","titles":["Debugging FAQ"]},"1288":{"title":"Debug Examples","titles":["Debugging FAQ"]},"1289":{"title":"Which matrix position is this keypress?","titles":["Debugging FAQ","Debug Examples"]},"1290":{"title":"How long did it take to scan for a keypress?","titles":["Debugging FAQ","Debug Examples"]},"1291":{"title":"hid_listen Can't Recognize Device","titles":["Debugging FAQ"]},"1292":{"title":"Can't Get Message on Console","titles":["Debugging FAQ"]},"1293":{"title":"Frequently Asked Questions","titles":[]},"1294":{"title":"What is QMK?","titles":["Frequently Asked Questions"]},"1295":{"title":"I don't know where to start!","titles":["Frequently Asked Questions"]},"1296":{"title":"How can I flash the firmware I built?","titles":["Frequently Asked Questions"]},"1297":{"title":"What if I have an issue that isn't covered here?","titles":["Frequently Asked Questions"]},"1298":{"title":"What if I found a bug?","titles":["Frequently Asked Questions"]},"1299":{"title":"But git and GitHub are intimidating!","titles":["Frequently Asked Questions"]},"1300":{"title":"I have a Keyboard that I want to add support for","titles":["Frequently Asked Questions"]},"1301":{"title":"What if I want to brand it with QMK?","titles":["Frequently Asked Questions","I have a Keyboard that I want to add support for"]},"1302":{"title":"What Differences Are There Between QMK and TMK?","titles":["Frequently Asked Questions"]},"1303":{"title":"Keymap FAQ","titles":[]},"1304":{"title":"What Keycodes Can I Use?","titles":["Keymap FAQ"]},"1305":{"title":"What Are the Default Keycodes?","titles":["Keymap FAQ"]},"1306":{"title":"How Can I Make Custom Names For Complex Keycodes?","titles":["Keymap FAQ"]},"1307":{"title":"My Keymap Doesn't Update When I Flash It","titles":["Keymap FAQ"]},"1308":{"title":"Some Of My Keys Are Swapped Or Not Working","titles":["Keymap FAQ"]},"1309":{"title":"The Menu Key Isn't Working","titles":["Keymap FAQ"]},"1310":{"title":"Power Keys Aren't Working","titles":["Keymap FAQ"]},"1311":{"title":"One Shot Modifier","titles":["Keymap FAQ"]},"1312":{"title":"Modifier/Layer Stuck","titles":["Keymap FAQ"]},"1313":{"title":"Mechanical Lock Switch Support","titles":["Keymap FAQ"]},"1314":{"title":"Input Special Characters Other Than ASCII like Cédille 'Ç'","titles":["Keymap FAQ"]},"1315":{"title":"Fn Key on macOS","titles":["Keymap FAQ"]},"1316":{"title":"Keys Supported in Mac OSX?","titles":["Keymap FAQ"]},"1317":{"title":"JIS Keys in Mac OSX","titles":["Keymap FAQ"]},"1318":{"title":"RN-42 Bluetooth Doesn't Work with Karabiner","titles":["Keymap FAQ"]},"1319":{"title":"Esc and ` on a Single Key","titles":["Keymap FAQ"]},"1320":{"title":"Eject on Mac OSX","titles":["Keymap FAQ"]},"1321":{"title":"What are "Real" and "Weak" modifiers?","titles":["Keymap FAQ"]},"1322":{"title":"Miscellaneous FAQ","titles":[]},"1323":{"title":"How do I test my keyboard?","titles":["Miscellaneous FAQ"]},"1324":{"title":"Safety Considerations","titles":["Miscellaneous FAQ"]},"1325":{"title":"NKRO Doesn't work","titles":["Miscellaneous FAQ"]},"1326":{"title":"TrackPoint Needs Reset Circuit (PS/2 Mouse Support)","titles":["Miscellaneous FAQ"]},"1327":{"title":"Can't Read Column of Matrix Beyond 16","titles":["Miscellaneous FAQ"]},"1328":{"title":"Special Extra Key Doesn't Work (System, Audio Control Keys)","titles":["Miscellaneous FAQ"]},"1329":{"title":"Wake from Sleep Doesn't Work","titles":["Miscellaneous FAQ"]},"1330":{"title":"Using Arduino?","titles":["Miscellaneous FAQ"]},"1331":{"title":"Enabling JTAG","titles":["Miscellaneous FAQ"]},"1332":{"title":"USB 3 Compatibility","titles":["Miscellaneous FAQ"]},"1333":{"title":"Mac Compatibility","titles":["Miscellaneous FAQ"]},"1334":{"title":"OS X 10.11 and Hub","titles":["Miscellaneous FAQ","Mac Compatibility"]},"1335":{"title":"Problem in BIOS (UEFI) Setup/Resume (Sleep & Wake)/Power Cycles","titles":["Miscellaneous FAQ"]},"1336":{"title":"Modifier Keys","titles":[]},"1337":{"title":"Checking Modifier State","titles":[]},"1338":{"title":"Examples","titles":["Checking Modifier State"]},"1339":{"title":"Alt + Escape for Alt + Tab","titles":["Checking Modifier State","Examples"]},"1340":{"title":"Shift + Backspace for Delete","titles":["Checking Modifier State","Examples"]},"1341":{"title":"Advanced topics","titles":[]},"1342":{"title":"Layers","titles":["Advanced topics"]},"1343":{"title":"Mod-Tap","titles":["Advanced topics"]},"1344":{"title":"One Shot Keys","titles":["Advanced topics"]},"1345":{"title":"Tap-Hold Configuration Options","titles":["Advanced topics"]},"1346":{"title":"Key Overrides","titles":["Advanced topics"]},"1347":{"title":"Converters","titles":[]},"1348":{"title":"Supported Converters","titles":["Converters"]},"1349":{"title":"Overview","titles":["Converters"]},"1350":{"title":"Conditional Configuration","titles":["Converters","Overview"]},"1351":{"title":"Pin Compatibility","titles":["Converters","Overview"]},"1352":{"title":"Pro Micro","titles":["Converters"]},"1353":{"title":"Proton C","titles":["Converters","Pro Micro"]},"1354":{"title":"Adafruit KB2040","titles":["Converters","Pro Micro"]},"1355":{"title":"SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi","titles":["Converters","Pro Micro"]},"1356":{"title":"STeMCell","titles":["Converters","Pro Micro"]},"1357":{"title":"Bonsai C4","titles":["Converters","Pro Micro"]},"1358":{"title":"RP2040 Community Edition - Elite-Pi, Helios, and Liatris","titles":["Converters","Pro Micro"]},"1359":{"title":"Elite-C","titles":["Converters"]},"1360":{"title":"STeMCell {#stemcell}_elite","titles":["Converters","Elite-C"]},"1361":{"title":"RP2040 Community Edition","titles":["Converters","Elite-C"]},"1362":{"title":"Contact bounce / contact chatter","titles":[]},"1363":{"title":"Types of debounce algorithms","titles":["Contact bounce / contact chatter"]},"1364":{"title":"Supported Debounce Algorithms","titles":["Contact bounce / contact chatter"]},"1365":{"title":"Debounce Time","titles":["Contact bounce / contact chatter","Supported Debounce Algorithms"]},"1366":{"title":"Debounce Method","titles":["Contact bounce / contact chatter","Supported Debounce Algorithms"]},"1367":{"title":"Implementing your own debouncing code","titles":["Contact bounce / contact chatter","Supported Debounce Algorithms"]},"1368":{"title":"Persistent Configuration (EEPROM)","titles":[]},"1369":{"title":"Example Implementation","titles":["Persistent Configuration (EEPROM)"]},"1370":{"title":"'EECONFIG' Function Documentation","titles":["Persistent Configuration (EEPROM)"]},"1371":{"title":"Layers","titles":[]},"1372":{"title":"Switching and Toggling Layers","titles":["Layers"]},"1373":{"title":"Caveats","titles":["Layers","Switching and Toggling Layers"]},"1374":{"title":"Working with Layers","titles":["Layers"]},"1375":{"title":"Beginners","titles":["Layers","Working with Layers"]},"1376":{"title":"Intermediate Users","titles":["Layers","Working with Layers"]},"1377":{"title":"Advanced Users","titles":["Layers","Working with Layers"]},"1378":{"title":"Functions","titles":["Layers"]},"1379":{"title":"Layer Change Code","titles":["Layers"]},"1380":{"title":"Example layer_state_set_* Implementation","titles":["Layers","Layer Change Code"]},"1381":{"title":"Example: Keycode to cycle through layers","titles":["Layers","Layer Change Code"]},"1382":{"title":"layer_state_set_* Function Documentation","titles":["Layers","Layer Change Code"]},"1383":{"title":"Layouts: Using a Keymap with Multiple Keyboards","titles":[]},"1384":{"title":"Supporting a Layout","titles":["Layouts: Using a Keymap with Multiple Keyboards"]},"1385":{"title":"Building a Keymap","titles":["Layouts: Using a Keymap with Multiple Keyboards"]},"1386":{"title":"Conflicting layouts","titles":["Layouts: Using a Keymap with Multiple Keyboards","Building a Keymap"]},"1387":{"title":"Tips for Making Layouts Keyboard-Agnostic","titles":["Layouts: Using a Keymap with Multiple Keyboards"]},"1388":{"title":"Includes","titles":["Layouts: Using a Keymap with Multiple Keyboards","Tips for Making Layouts Keyboard-Agnostic"]},"1389":{"title":"Keymaps","titles":["Layouts: Using a Keymap with Multiple Keyboards","Tips for Making Layouts Keyboard-Agnostic"]},"1390":{"title":"Macros","titles":[]},"1391":{"title":"Using Macros In JSON Keymaps","titles":["Macros"]},"1392":{"title":"Selecting Your Host Keyboard Layout","titles":["Macros","Using Macros In JSON Keymaps"]},"1393":{"title":"Macro Basics","titles":["Macros","Using Macros In JSON Keymaps"]},"1394":{"title":"Object Format","titles":["Macros","Using Macros In JSON Keymaps","Macro Basics"]},"1395":{"title":"Using Macros in C Keymaps","titles":["Macros"]},"1396":{"title":"SEND_STRING() & process_record_user","titles":["Macros","Using Macros in C Keymaps"]},"1397":{"title":"Advanced Macros","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1398":{"title":"TAP, DOWN and UP","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1399":{"title":"Alternative Keymaps","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1400":{"title":"Strings in Memory","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1401":{"title":"Advanced Macro Functions","titles":["Macros","Using Macros in C Keymaps"]},"1402":{"title":"record->event.pressed","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1403":{"title":"register_code(<kc>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1404":{"title":"unregister_code(<kc>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1405":{"title":"tap_code(<kc>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1406":{"title":"tap_code_delay(<kc>, <delay>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1407":{"title":"register_code16(<kc>);, unregister_code16(<kc>);, tap_code16(<kc>); and tap_code16_delay(<kc>, <delay>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1408":{"title":"clear_keyboard();","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1409":{"title":"clear_mods();","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1410":{"title":"clear_keyboard_but_mods();","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1411":{"title":"Advanced Example:","titles":["Macros","Using Macros in C Keymaps"]},"1412":{"title":"Super ALT↯TAB","titles":["Macros","Using Macros in C Keymaps","Advanced Example:"]},"1413":{"title":"Userspace: Sharing Code Between Keymaps","titles":[]},"1414":{"title":"Rules.mk","titles":["Userspace: Sharing Code Between Keymaps"]},"1415":{"title":"Override default userspace","titles":["Userspace: Sharing Code Between Keymaps","Rules.mk"]},"1416":{"title":"Configuration Options (config.h)","titles":["Userspace: Sharing Code Between Keymaps"]},"1417":{"title":"Readme (readme.md)","titles":["Userspace: Sharing Code Between Keymaps"]},"1418":{"title":"Build All Keyboards That Support a Specific Keymap","titles":["Userspace: Sharing Code Between Keymaps"]},"1419":{"title":"Examples","titles":["Userspace: Sharing Code Between Keymaps"]},"1420":{"title":"Customized Functions","titles":["Userspace: Sharing Code Between Keymaps","Examples"]},"1421":{"title":"Custom Features","titles":["Userspace: Sharing Code Between Keymaps","Examples"]},"1422":{"title":"Consolidated Macros","titles":["Userspace: Sharing Code Between Keymaps","Examples"]},"1423":{"title":"Audio","titles":[]},"1424":{"title":"AVR based boards","titles":["Audio"]},"1425":{"title":"Wiring","titles":["Audio","AVR based boards"]},"1426":{"title":"ARM based boards","titles":["Audio"]},"1427":{"title":"DAC (basic)","titles":["Audio","ARM based boards"]},"1428":{"title":"Wiring:","titles":["Audio","ARM based boards","DAC (basic)"]},"1429":{"title":"Proton-C Example:","titles":["Audio","ARM based boards","DAC (basic)","Wiring:"]},"1430":{"title":"DAC (additive)","titles":["Audio","ARM based boards"]},"1431":{"title":"PWM (software)","titles":["Audio","ARM based boards"]},"1432":{"title":"Wiring","titles":["Audio","ARM based boards","PWM (software)"]},"1433":{"title":"PWM (hardware)","titles":["Audio","ARM based boards"]},"1434":{"title":"Tone Multiplexing","titles":["Audio"]},"1435":{"title":"Songs","titles":["Audio"]},"1436":{"title":"Audio Config","titles":["Audio"]},"1437":{"title":"Tempo","titles":["Audio"]},"1438":{"title":"ARM Audio Volume","titles":["Audio"]},"1439":{"title":"Voices","titles":["Audio"]},"1440":{"title":"Music Mode","titles":["Audio"]},"1441":{"title":"Music Mask","titles":["Audio","Music Mode"]},"1442":{"title":"Music Map","titles":["Audio","Music Mode"]},"1443":{"title":"Audio Click","titles":["Audio"]},"1444":{"title":"MIDI Functionality","titles":["Audio"]},"1445":{"title":"Audio Keycodes","titles":["Audio"]},"1446":{"title":"Auto Shift: Why Do We Need a Shift Key?","titles":[]},"1447":{"title":"Why Auto Shift?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1448":{"title":"How Does It Work?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1449":{"title":"Are There Limitations to Auto Shift?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1450":{"title":"How Do I Enable Auto Shift?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1451":{"title":"Modifiers","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1452":{"title":"Configuring Auto Shift","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1453":{"title":"AUTO_SHIFT_TIMEOUT (Value in ms)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1454":{"title":"NO_AUTO_SHIFT_SPECIAL (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1455":{"title":"NO_AUTO_SHIFT_TAB (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1456":{"title":"NO_AUTO_SHIFT_SYMBOLS (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1457":{"title":"NO_AUTO_SHIFT_NUMERIC (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1458":{"title":"NO_AUTO_SHIFT_ALPHA (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1459":{"title":"AUTO_SHIFT_ENTER (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1460":{"title":"Auto Shift Per Key","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1461":{"title":"AUTO_SHIFT_REPEAT (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1462":{"title":"AUTO_SHIFT_NO_AUTO_REPEAT (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1463":{"title":"AUTO_SHIFT_ALPHA (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1464":{"title":"AUTO_SHIFT_NUMERIC (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1465":{"title":"AUTO_SHIFT_SYMBOLS (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1466":{"title":"AUTO_SHIFT_SPECIAL (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1467":{"title":"Custom Shifted Values","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1468":{"title":"Retro Shift","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1469":{"title":"Retro Shift and Tap Hold Configurations","titles":["Auto Shift: Why Do We Need a Shift Key?","Retro Shift"]},"1470":{"title":"Using Auto Shift Setup","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1471":{"title":"Setup","titles":["Auto Shift: Why Do We Need a Shift Key?","Using Auto Shift Setup"]},"1472":{"title":"Use","titles":["Auto Shift: Why Do We Need a Shift Key?","Using Auto Shift Setup"]},"1473":{"title":"An Example Run","titles":["Auto Shift: Why Do We Need a Shift Key?","Using Auto Shift Setup","Use"]},"1474":{"title":"Autocorrect","titles":[]},"1475":{"title":"How does it work?","titles":["Autocorrect"]},"1476":{"title":"How do I enable Autocorrection","titles":["Autocorrect"]},"1477":{"title":"Customizing autocorrect library","titles":["Autocorrect"]},"1478":{"title":"Avoiding false triggers","titles":["Autocorrect","Customizing autocorrect library"]},"1479":{"title":"Overriding Autocorrect","titles":["Autocorrect"]},"1480":{"title":"Keycodes","titles":["Autocorrect","Overriding Autocorrect"]},"1481":{"title":"User Callback Functions","titles":["Autocorrect"]},"1482":{"title":"Process Autocorrect","titles":["Autocorrect","User Callback Functions"]},"1483":{"title":"Process Autocorrect Example","titles":["Autocorrect","User Callback Functions","Process Autocorrect"]},"1484":{"title":"Apply Autocorrect","titles":["Autocorrect","User Callback Functions"]},"1485":{"title":"Apply Autocorrect Example","titles":["Autocorrect","User Callback Functions","Apply Autocorrect"]},"1486":{"title":"Autocorrect Status","titles":["Autocorrect","User Callback Functions"]},"1487":{"title":"Appendix: Trie binary data format","titles":["Autocorrect"]},"1488":{"title":"Encoding","titles":["Autocorrect","Appendix: Trie binary data format"]},"1489":{"title":"Decoding","titles":["Autocorrect","Appendix: Trie binary data format"]},"1490":{"title":"Credits","titles":["Autocorrect"]},"1491":{"title":"Backlighting","titles":[]},"1492":{"title":"Usage","titles":["Backlighting"]},"1493":{"title":"Keycodes","titles":["Backlighting"]},"1494":{"title":"Basic Configuration","titles":["Backlighting"]},"1495":{"title":""On" State","titles":["Backlighting","Basic Configuration"]},"1496":{"title":"Multiple Backlight Pins","titles":["Backlighting","Basic Configuration"]},"1497":{"title":"Driver Configuration","titles":["Backlighting"]},"1498":{"title":"PWM Driver","titles":["Backlighting","Driver Configuration"]},"1499":{"title":"Timer Driver","titles":["Backlighting","Driver Configuration"]},"1500":{"title":"Software Driver","titles":["Backlighting","Driver Configuration"]},"1501":{"title":"Custom Driver","titles":["Backlighting","Driver Configuration"]},"1502":{"title":"AVR Configuration","titles":["Backlighting"]},"1503":{"title":"PWM Driver","titles":["Backlighting","AVR Configuration"]},"1504":{"title":"Timer Driver","titles":["Backlighting","AVR Configuration"]},"1505":{"title":"ChibiOS/ARM Configuration","titles":["Backlighting"]},"1506":{"title":"PWM Driver","titles":["Backlighting","ChibiOS/ARM Configuration"]},"1507":{"title":"Timer Driver","titles":["Backlighting","ChibiOS/ARM Configuration"]},"1508":{"title":"Example Schematic","titles":["Backlighting"]},"1509":{"title":"API","titles":["Backlighting"]},"1510":{"title":"void backlight_toggle(void)","titles":["Backlighting","API"]},"1511":{"title":"void backlight_enable(void)","titles":["Backlighting","API"]},"1512":{"title":"void backlight_disable(void)","titles":["Backlighting","API"]},"1513":{"title":"void backlight_step(void)","titles":["Backlighting","API"]},"1514":{"title":"void backlight_increase(void)","titles":["Backlighting","API"]},"1515":{"title":"void backlight_decrease(void)","titles":["Backlighting","API"]},"1516":{"title":"void backlight_level(uint8_t level)","titles":["Backlighting","API"]},"1517":{"title":"Arguments","titles":["Backlighting","API","void backlight_level(uint8_t level)"]},"1518":{"title":"uint8_t get_backlight_level(void)","titles":["Backlighting","API"]},"1519":{"title":"Return Value","titles":["Backlighting","API","uint8_t get_backlight_level(void)"]},"1520":{"title":"bool is_backlight_enabled(void)","titles":["Backlighting","API"]},"1521":{"title":"Return Value","titles":["Backlighting","API","bool is_backlight_enabled(void)"]},"1522":{"title":"void backlight_toggle_breathing(void)","titles":["Backlighting","API"]},"1523":{"title":"void backlight_enable_breathing(void)","titles":["Backlighting","API"]},"1524":{"title":"void backlight_disable_breathing(void)","titles":["Backlighting","API"]},"1525":{"title":"bool is_backlight_breathing(void)","titles":["Backlighting","API"]},"1526":{"title":"Return Value","titles":["Backlighting","API","bool is_backlight_breathing(void)"]},"1527":{"title":"Bluetooth","titles":[]},"1528":{"title":"Bluetooth Known Supported Hardware","titles":["Bluetooth"]},"1529":{"title":"Adafruit BLE SPI Friend","titles":["Bluetooth","Bluetooth Known Supported Hardware"]},"1530":{"title":"Bluetooth Rules.mk Options","titles":["Bluetooth"]},"1531":{"title":"Bluetooth Keycodes","titles":["Bluetooth"]},"1532":{"title":"Bootmagic","titles":[]},"1533":{"title":"Split Keyboards","titles":["Bootmagic"]},"1534":{"title":"Advanced Bootmagic","titles":["Bootmagic"]},"1535":{"title":"Addenda","titles":["Bootmagic"]},"1536":{"title":"Caps Word","titles":[]},"1537":{"title":"How do I enable Caps Word","titles":["Caps Word"]},"1538":{"title":"Troubleshooting: Command","titles":["Caps Word","How do I enable Caps Word"]},"1539":{"title":"Customizing Caps Word","titles":["Caps Word"]},"1540":{"title":"Invert on shift","titles":["Caps Word","Customizing Caps Word"]},"1541":{"title":"Idle timeout","titles":["Caps Word","Customizing Caps Word"]},"1542":{"title":"Functions","titles":["Caps Word","Customizing Caps Word"]},"1543":{"title":"Configure which keys are "word breaking"","titles":["Caps Word","Customizing Caps Word"]},"1544":{"title":"Representing Caps Word state","titles":["Caps Word","Customizing Caps Word"]},"1545":{"title":"Combos","titles":[]},"1546":{"title":"Advanced Keycodes Support","titles":["Combos"]},"1547":{"title":"Overlapping Combos","titles":["Combos"]},"1548":{"title":"Examples","titles":["Combos"]},"1549":{"title":"Keycodes","titles":["Combos"]},"1550":{"title":"Advanced Configuration","titles":["Combos"]},"1551":{"title":"Combo Term","titles":["Combos","Advanced Configuration"]},"1552":{"title":"Buffer and state sizes","titles":["Combos","Advanced Configuration"]},"1553":{"title":"Modifier Combos","titles":["Combos","Advanced Configuration"]},"1554":{"title":"Strict key press order","titles":["Combos","Advanced Configuration"]},"1555":{"title":"Per Combo Timing, Holding, Tapping and Key Press Order","titles":["Combos","Advanced Configuration"]},"1556":{"title":"Generic hook to (dis)allow a combo activation","titles":["Combos","Advanced Configuration"]},"1557":{"title":"Combo timer","titles":["Combos","Advanced Configuration"]},"1558":{"title":"#define COMBO_STRICT_TIMER","titles":["Combos","Advanced Configuration","Combo timer"]},"1559":{"title":"#define COMBO_NO_TIMER","titles":["Combos","Advanced Configuration","Combo timer"]},"1560":{"title":"Customizable key releases","titles":["Combos","Advanced Configuration"]},"1561":{"title":"Customizable key repress","titles":["Combos","Advanced Configuration"]},"1562":{"title":"Layer independent combos","titles":["Combos","Advanced Configuration"]},"1563":{"title":"Combo reference layers by layer.","titles":["Combos","Advanced Configuration","Layer independent combos"]},"1564":{"title":"User callbacks","titles":["Combos"]},"1565":{"title":"Dictionary Management","titles":["Combos"]},"1566":{"title":"Command","titles":[]},"1567":{"title":"Usage","titles":["Command"]},"1568":{"title":"Configuration","titles":["Command"]},"1569":{"title":"Digitizer","titles":[]},"1570":{"title":"Usage","titles":["Digitizer"]},"1571":{"title":"Positioning","titles":["Digitizer"]},"1572":{"title":"Examples","titles":["Digitizer"]},"1573":{"title":"API","titles":["Digitizer"]},"1574":{"title":"struct digitizer_t","titles":["Digitizer","API"]},"1575":{"title":"Members","titles":["Digitizer","API","struct digitizer_t"]},"1576":{"title":"void digitizer_flush(void)","titles":["Digitizer","API"]},"1577":{"title":"void digitizer_in_range_on(void)","titles":["Digitizer","API"]},"1578":{"title":"void digitizer_in_range_off(void)","titles":["Digitizer","API"]},"1579":{"title":"void digitizer_tip_switch_on(void)","titles":["Digitizer","API"]},"1580":{"title":"void digitizer_tip_switch_off(void)","titles":["Digitizer","API"]},"1581":{"title":"void digitizer_barrel_switch_on(void)","titles":["Digitizer","API"]},"1582":{"title":"void digitizer_barrel_switch_off(void)","titles":["Digitizer","API"]},"1583":{"title":"void digitizer_set_position(float x, float y)","titles":["Digitizer","API"]},"1584":{"title":"Arguments","titles":["Digitizer","API","void digitizer_set_position(float x, float y)"]},"1585":{"title":"DIP Switches","titles":[]},"1586":{"title":"DIP Switch map","titles":["DIP Switches"]},"1587":{"title":"Callbacks","titles":["DIP Switches"]},"1588":{"title":"Hardware","titles":["DIP Switches"]},"1589":{"title":"Connects each switch in the dip switch to the GPIO pin of the MCU","titles":["DIP Switches","Hardware"]},"1590":{"title":"Connect each switch in the DIP switch to an unused intersections in the key matrix.","titles":["DIP Switches","Hardware"]},"1591":{"title":"Dynamic Macros: Record and Replay Macros in Runtime","titles":[]},"1592":{"title":"Customization","titles":["Dynamic Macros: Record and Replay Macros in Runtime"]},"1593":{"title":"DYNAMIC_MACRO_USER_CALL","titles":["Dynamic Macros: Record and Replay Macros in Runtime","Customization"]},"1594":{"title":"User Hooks","titles":["Dynamic Macros: Record and Replay Macros in Runtime","Customization"]},"1595":{"title":"Encoders","titles":[]},"1596":{"title":"Split Keyboards","titles":["Encoders"]},"1597":{"title":"Encoder map","titles":["Encoders"]},"1598":{"title":"Callbacks","titles":["Encoders"]},"1599":{"title":"Hardware","titles":["Encoders"]},"1600":{"title":"Multiple Encoders","titles":["Encoders"]},"1601":{"title":"Grave Escape","titles":[]},"1602":{"title":"Usage","titles":["Grave Escape"]},"1603":{"title":"What Your OS Sees","titles":["Grave Escape"]},"1604":{"title":"Keycodes","titles":["Grave Escape"]},"1605":{"title":"Caveats","titles":["Grave Escape","Keycodes"]},"1606":{"title":"Configuration","titles":["Grave Escape"]},"1607":{"title":"Haptic Feedback","titles":[]},"1608":{"title":"Haptic feedback rules.mk options","titles":["Haptic Feedback"]},"1609":{"title":"Known Supported Hardware","titles":["Haptic Feedback"]},"1610":{"title":"Haptic Keycodes","titles":["Haptic Feedback"]},"1611":{"title":"Solenoids","titles":["Haptic Feedback","Haptic Keycodes"]},"1612":{"title":"DRV2605L","titles":["Haptic Feedback","Haptic Keycodes"]},"1613":{"title":"Feedback motor setup","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L"]},"1614":{"title":"ERM","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L","Feedback motor setup"]},"1615":{"title":"LRA","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L","Feedback motor setup"]},"1616":{"title":"DRV2605L waveform library","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L"]},"1617":{"title":"Optional DRV2605L defines","titles":["Haptic Feedback","Haptic Keycodes"]},"1618":{"title":"DRV2605L Continuous Haptic Mode","titles":["Haptic Feedback","Haptic Keycodes"]},"1619":{"title":"Haptic Key Exclusion","titles":["Haptic Feedback"]},"1620":{"title":"NO_HAPTIC_MOD","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1621":{"title":"NO_HAPTIC_ALPHA","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1622":{"title":"NO_HAPTIC_PUNCTUATION","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1623":{"title":"NO_HAPTIC_LOCKKEYS","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1624":{"title":"NO_HAPTIC_NAV","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1625":{"title":"NO_HAPTIC_NUMERIC","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1626":{"title":"HD44780 LCD Driver","titles":[]},"1627":{"title":"Supported Hardware","titles":["HD44780 LCD Driver"]},"1628":{"title":"Usage","titles":["HD44780 LCD Driver"]},"1629":{"title":"Basic Configuration","titles":["HD44780 LCD Driver"]},"1630":{"title":"Examples","titles":["HD44780 LCD Driver"]},"1631":{"title":"Hello World","titles":["HD44780 LCD Driver","Examples"]},"1632":{"title":"Custom Character Definition","titles":["HD44780 LCD Driver","Examples"]},"1633":{"title":"API","titles":["HD44780 LCD Driver"]},"1634":{"title":"void hd44780_init(bool cursor, bool blink)","titles":["HD44780 LCD Driver","API"]},"1635":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_init(bool cursor, bool blink)"]},"1636":{"title":"void hd44780_clear(void)","titles":["HD44780 LCD Driver","API"]},"1637":{"title":"void hd44780_home(void)","titles":["HD44780 LCD Driver","API"]},"1638":{"title":"void hd44780_on(bool cursor, bool blink)","titles":["HD44780 LCD Driver","API"]},"1639":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_on(bool cursor, bool blink)"]},"1640":{"title":"void hd44780_off(void)","titles":["HD44780 LCD Driver","API"]},"1641":{"title":"void hd44780_set_cursor(uint8_t col, uint8_t line)","titles":["HD44780 LCD Driver","API"]},"1642":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_set_cursor(uint8_t col, uint8_t line)"]},"1643":{"title":"void hd44780_putc(char c)","titles":["HD44780 LCD Driver","API"]},"1644":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_putc(char c)"]},"1645":{"title":"void hd44780_puts(const char *s)","titles":["HD44780 LCD Driver","API"]},"1646":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_puts(const char *s)"]},"1647":{"title":"void hd44780_puts_P(const char *s)","titles":["HD44780 LCD Driver","API"]},"1648":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_puts_P(const char *s)"]},"1649":{"title":"void hd44780_define_char(uint8_t index, uint8_t *data)","titles":["HD44780 LCD Driver","API"]},"1650":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_define_char(uint8_t index, uint8_t *data)"]},"1651":{"title":"void hd44780_define_char_P(uint8_t index, const uint8_t *data)","titles":["HD44780 LCD Driver","API"]},"1652":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_define_char_P(uint8_t index, const uint8_t *data)"]},"1653":{"title":"bool hd44780_busy(void)","titles":["HD44780 LCD Driver","API"]},"1654":{"title":"Return Value","titles":["HD44780 LCD Driver","API","bool hd44780_busy(void)"]},"1655":{"title":"void hd44780_write(uint8_t data, bool isData)","titles":["HD44780 LCD Driver","API"]},"1656":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_write(uint8_t data, bool isData)"]},"1657":{"title":"uint8_t hd44780_read(bool isData)","titles":["HD44780 LCD Driver","API"]},"1658":{"title":"Arguments","titles":["HD44780 LCD Driver","API","uint8_t hd44780_read(bool isData)"]},"1659":{"title":"Return Value","titles":["HD44780 LCD Driver","API","uint8_t hd44780_read(bool isData)"]},"1660":{"title":"void hd44780_command(uint8_t command)","titles":["HD44780 LCD Driver","API"]},"1661":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_command(uint8_t command)"]},"1662":{"title":"void hd44780_data(uint8_t data)","titles":["HD44780 LCD Driver","API"]},"1663":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_data(uint8_t data)"]},"1664":{"title":"void hd44780_set_cgram_address(uint8_t address)","titles":["HD44780 LCD Driver","API"]},"1665":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_set_cgram_address(uint8_t address)"]},"1666":{"title":"void hd44780_set_ddram_address(uint8_t address)","titles":["HD44780 LCD Driver","API"]},"1667":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_set_ddram_address(uint8_t address)"]},"1668":{"title":"Joystick","titles":[]},"1669":{"title":"Usage","titles":["Joystick"]},"1670":{"title":"Configuration","titles":["Joystick"]},"1671":{"title":"Axes","titles":["Joystick","Configuration"]},"1672":{"title":"Virtual Axes","titles":["Joystick","Configuration","Axes"]},"1673":{"title":"Keycodes","titles":["Joystick"]},"1674":{"title":"API","titles":["Joystick"]},"1675":{"title":"struct joystick_t","titles":["Joystick","API"]},"1676":{"title":"Members","titles":["Joystick","API","struct joystick_t"]},"1677":{"title":"struct joystick_config_t","titles":["Joystick","API"]},"1678":{"title":"Members","titles":["Joystick","API","struct joystick_config_t"]},"1679":{"title":"void joystick_flush(void)","titles":["Joystick","API"]},"1680":{"title":"void register_joystick_button(uint8_t button)","titles":["Joystick","API"]},"1681":{"title":"Arguments","titles":["Joystick","API","void register_joystick_button(uint8_t button)"]},"1682":{"title":"void unregister_joystick_button(uint8_t button)","titles":["Joystick","API"]},"1683":{"title":"Arguments","titles":["Joystick","API","void unregister_joystick_button(uint8_t button)"]},"1684":{"title":"int16_t joystick_read_axis(uint8_t axis)","titles":["Joystick","API"]},"1685":{"title":"Arguments","titles":["Joystick","API","int16_t joystick_read_axis(uint8_t axis)"]},"1686":{"title":"Return Value","titles":["Joystick","API","int16_t joystick_read_axis(uint8_t axis)"]},"1687":{"title":"void joystick_set_axis(uint8_t axis, int16_t value)","titles":["Joystick","API"]},"1688":{"title":"Arguments","titles":["Joystick","API","void joystick_set_axis(uint8_t axis, int16_t value)"]},"1689":{"title":"Key Lock","titles":[]},"1690":{"title":"Usage","titles":["Key Lock"]},"1691":{"title":"Keycodes","titles":["Key Lock"]},"1692":{"title":"Caveats","titles":["Key Lock"]},"1693":{"title":"Key Overrides","titles":[]},"1694":{"title":"A few more examples to get started: You could use key overrides to...","titles":["Key Overrides"]},"1695":{"title":"Setup","titles":["Key Overrides"]},"1696":{"title":"Creating Key Overrides","titles":["Key Overrides"]},"1697":{"title":"ko_make_basic(modifiers, key, replacement)","titles":["Key Overrides","Creating Key Overrides"]},"1698":{"title":"ko_make_with_layers(modifiers, key, replacement, layers)","titles":["Key Overrides","Creating Key Overrides"]},"1699":{"title":"ko_make_with_layers_and_negmods(modifiers, key, replacement, layers, negative_mods)","titles":["Key Overrides","Creating Key Overrides"]},"1700":{"title":"ko_make_with_layers_negmods_and_options(modifiers, key, replacement, layers, negative_mods, options)","titles":["Key Overrides","Creating Key Overrides"]},"1701":{"title":"Simple Example","titles":["Key Overrides"]},"1702":{"title":"Intermediate Difficulty Examples","titles":["Key Overrides"]},"1703":{"title":"Media Controls & Screen Brightness","titles":["Key Overrides","Intermediate Difficulty Examples"]},"1704":{"title":"Flexible macOS-friendly Grave Escape","titles":["Key Overrides","Intermediate Difficulty Examples"]},"1705":{"title":"Advanced Examples","titles":["Key Overrides"]},"1706":{"title":"Modifiers as Layer Keys","titles":["Key Overrides","Advanced Examples"]},"1707":{"title":"Keycodes","titles":["Key Overrides"]},"1708":{"title":"Reference for key_override_t","titles":["Key Overrides"]},"1709":{"title":"Reference for ko_option_t","titles":["Key Overrides"]},"1710":{"title":"For Advanced Users: Inner Workings","titles":["Key Overrides"]},"1711":{"title":"Activation","titles":["Key Overrides","For Advanced Users: Inner Workings","Modifiers as Layer Keys"]},"1712":{"title":"Deactivation","titles":["Key Overrides","For Advanced Users: Inner Workings","Modifiers as Layer Keys"]},"1713":{"title":"Key Repeat Delay","titles":["Key Overrides","For Advanced Users: Inner Workings","Modifiers as Layer Keys"]},"1714":{"title":"Difference to Combos","titles":["Key Overrides"]},"1715":{"title":"Solution to the problem of flashing modifiers","titles":["Key Overrides"]},"1716":{"title":"The Leader Key: A New Kind of Modifier","titles":[]},"1717":{"title":"Usage","titles":["The Leader Key: A New Kind of Modifier"]},"1718":{"title":"Callbacks","titles":["The Leader Key: A New Kind of Modifier"]},"1719":{"title":"Basic Configuration","titles":["The Leader Key: A New Kind of Modifier"]},"1720":{"title":"Timeout","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1721":{"title":"Per-Key Timeout","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1722":{"title":"Disabling Initial Timeout","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1723":{"title":"Strict Key Processing","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1724":{"title":"Example","titles":["The Leader Key: A New Kind of Modifier"]},"1725":{"title":"Keycodes","titles":["The Leader Key: A New Kind of Modifier"]},"1726":{"title":"API","titles":["The Leader Key: A New Kind of Modifier"]},"1727":{"title":"void leader_start_user(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1728":{"title":"void leader_end_user(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1729":{"title":"void leader_start(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1730":{"title":"void leader_end(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1731":{"title":"bool leader_sequence_active(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1732":{"title":"bool leader_sequence_add(uint16_t keycode)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1733":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_add(uint16_t keycode)"]},"1734":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_add(uint16_t keycode)"]},"1735":{"title":"bool leader_sequence_timed_out(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1736":{"title":"bool leader_reset_timer(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1737":{"title":"bool leader_sequence_one_key(uint16_t kc)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1738":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_one_key(uint16_t kc)"]},"1739":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_one_key(uint16_t kc)"]},"1740":{"title":"bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1741":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)"]},"1742":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)"]},"1743":{"title":"bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1744":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)"]},"1745":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)"]},"1746":{"title":"bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1747":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)"]},"1748":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)"]},"1749":{"title":"bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1750":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)"]},"1751":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)"]},"1752":{"title":"LED Indicators","titles":[]},"1753":{"title":"Configuration Options","titles":["LED Indicators"]},"1754":{"title":"LED update function","titles":["LED Indicators"]},"1755":{"title":"Example of keyboard LED update implementation","titles":["LED Indicators","LED update function"]},"1756":{"title":"Example of user LED update implementation","titles":["LED Indicators","LED update function"]},"1757":{"title":"Host keyboard LED state","titles":["LED Indicators"]},"1758":{"title":"led_update_ports()","titles":["LED Indicators"]},"1759":{"title":"Setting Physical LED State","titles":["LED Indicators"]},"1760":{"title":"Ergodox Boards","titles":["LED Indicators","Setting Physical LED State"]},"1761":{"title":"LED Matrix Lighting","titles":[]},"1762":{"title":"Driver Configuration","titles":["LED Matrix Lighting"]},"1763":{"title":"Common Configuration","titles":["LED Matrix Lighting"]},"1764":{"title":"Flags","titles":["LED Matrix Lighting"]},"1765":{"title":"Keycodes","titles":["LED Matrix Lighting"]},"1766":{"title":"LED Matrix Effects","titles":["LED Matrix Lighting"]},"1767":{"title":"Custom LED Matrix Effects","titles":["LED Matrix Lighting"]},"1768":{"title":"Additional config.h Options","titles":["LED Matrix Lighting"]},"1769":{"title":"EEPROM storage","titles":["LED Matrix Lighting"]},"1770":{"title":"Callbacks","titles":["LED Matrix Lighting"]},"1771":{"title":"Indicators","titles":["LED Matrix Lighting","Callbacks"]},"1772":{"title":"API","titles":["LED Matrix Lighting"]},"1773":{"title":"void led_matrix_toggle(void)","titles":["LED Matrix Lighting","API"]},"1774":{"title":"void led_matrix_toggle_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1775":{"title":"void led_matrix_enable(void)","titles":["LED Matrix Lighting","API"]},"1776":{"title":"void led_matrix_enable_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1777":{"title":"void led_matrix_disable(void)","titles":["LED Matrix Lighting","API"]},"1778":{"title":"void led_matrix_disable_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1779":{"title":"bool led_matrix_is_enabled(void)","titles":["LED Matrix Lighting","API"]},"1780":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_is_enabled(void)"]},"1781":{"title":"void led_matrix_set_value(uint8_t index, uint8_t v)","titles":["LED Matrix Lighting","API"]},"1782":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_value(uint8_t index, uint8_t v)"]},"1783":{"title":"void led_matrix_set_value_all(uint8_t v)","titles":["LED Matrix Lighting","API"]},"1784":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_value_all(uint8_t v)"]},"1785":{"title":"void led_matrix_mode(uint8_t mode)","titles":["LED Matrix Lighting","API"]},"1786":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_mode(uint8_t mode)"]},"1787":{"title":"void led_matrix_mode_noeeprom(uint8_t mode)","titles":["LED Matrix Lighting","API"]},"1788":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_mode_noeeprom(uint8_t mode)"]},"1789":{"title":"void led_matrix_step(void)","titles":["LED Matrix Lighting","API"]},"1790":{"title":"void led_matrix_step_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1791":{"title":"void led_matrix_step_reverse(void)","titles":["LED Matrix Lighting","API"]},"1792":{"title":"void led_matrix_step_reverse_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1793":{"title":"uint8_t led_matrix_get_mode(void)","titles":["LED Matrix Lighting","API"]},"1794":{"title":"Return Value","titles":["LED Matrix Lighting","API","uint8_t led_matrix_get_mode(void)"]},"1795":{"title":"void val_matrix_increase_val(void)","titles":["LED Matrix Lighting","API"]},"1796":{"title":"void led_matrix_increase_val_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1797":{"title":"void led_matrix_decrease_val(void)","titles":["LED Matrix Lighting","API"]},"1798":{"title":"void led_matrix_decrease_val_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1799":{"title":"uint8_t led_matrix_get_val(void)","titles":["LED Matrix Lighting","API"]},"1800":{"title":"Return Value","titles":["LED Matrix Lighting","API","uint8_t led_matrix_get_val(void)"]},"1801":{"title":"void led_matrix_increase_speed(void)","titles":["LED Matrix Lighting","API"]},"1802":{"title":"void led_matrix_increase_speed_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1803":{"title":"void led_matrix_decrease_speed(void)","titles":["LED Matrix Lighting","API"]},"1804":{"title":"void led_matrix_decrease_speed_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1805":{"title":"void led_matrix_set_speed(uint8_t speed)","titles":["LED Matrix Lighting","API"]},"1806":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_speed(uint8_t speed)"]},"1807":{"title":"void led_matrix_set_speed_noeeprom(uint8_t speed)","titles":["LED Matrix Lighting","API"]},"1808":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_speed_noeeprom(uint8_t speed)"]},"1809":{"title":"uint8_t led_matrix_get_speed(void)","titles":["LED Matrix Lighting","API"]},"1810":{"title":"Return Value","titles":["LED Matrix Lighting","API","uint8_t led_matrix_get_speed(void)"]},"1811":{"title":"void led_matrix_reload_from_eeprom(void)","titles":["LED Matrix Lighting","API"]},"1812":{"title":"bool led_matrix_get_suspend_state(void)","titles":["LED Matrix Lighting","API"]},"1813":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_get_suspend_state(void)"]},"1814":{"title":"bool led_matrix_indicators_kb(void)","titles":["LED Matrix Lighting","API"]},"1815":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_indicators_kb(void)"]},"1816":{"title":"bool led_matrix_indicators_user(void)","titles":["LED Matrix Lighting","API"]},"1817":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_indicators_user(void)"]},"1818":{"title":"bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)","titles":["LED Matrix Lighting","API"]},"1819":{"title":"Arguments","titles":["LED Matrix Lighting","API"]},"1820":{"title":"Return Value","titles":["LED Matrix Lighting","API","Arguments"]},"1821":{"title":"bool led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)","titles":["LED Matrix Lighting","API"]},"1822":{"title":"Arguments","titles":["LED Matrix Lighting","API"]},"1823":{"title":"Return Value","titles":["LED Matrix Lighting","API","Arguments"]},"1824":{"title":"MIDI","titles":[]},"1825":{"title":"Usage","titles":["MIDI"]},"1826":{"title":"Caveats","titles":["MIDI","Usage"]},"1827":{"title":"Basic MIDI","titles":["MIDI","Usage"]},"1828":{"title":"Advanced MIDI","titles":["MIDI","Usage"]},"1829":{"title":"Sending Control Change (CC) Messages","titles":["MIDI","Usage","Advanced MIDI"]},"1830":{"title":"Example code for using Generic On Off Switches as per MIDI Specification.","titles":["MIDI","Usage","Advanced MIDI"]},"1831":{"title":"Keycodes","titles":["MIDI","Usage"]},"1832":{"title":"Configuration","titles":["MIDI","Usage"]},"1833":{"title":"References","titles":["MIDI","Usage"]},"1834":{"title":"MIDI Specification","titles":["MIDI","Usage","References"]},"1835":{"title":"QMK C Files","titles":["MIDI","Usage","References"]},"1836":{"title":"Mouse keys","titles":[]},"1837":{"title":"Adding mouse keys to your keyboard","titles":["Mouse keys"]},"1838":{"title":"Enabling mouse keys","titles":["Mouse keys","Adding mouse keys to your keyboard"]},"1839":{"title":"Mapping mouse actions","titles":["Mouse keys","Adding mouse keys to your keyboard"]},"1840":{"title":"Configuring mouse keys","titles":["Mouse keys"]},"1841":{"title":"Accelerated mode","titles":["Mouse keys","Configuring mouse keys"]},"1842":{"title":"Kinetic Mode","titles":["Mouse keys","Configuring mouse keys"]},"1843":{"title":"Constant mode","titles":["Mouse keys","Configuring mouse keys"]},"1844":{"title":"Combined mode","titles":["Mouse keys","Configuring mouse keys"]},"1845":{"title":"Inertia mode","titles":["Mouse keys","Configuring mouse keys"]},"1846":{"title":"Overlapping mouse key control","titles":["Mouse keys","Configuring mouse keys"]},"1847":{"title":"Use with PS/2 Mouse and Pointing Device","titles":["Mouse keys"]},"1848":{"title":"OLED Driver","titles":[]},"1849":{"title":"Supported Hardware","titles":["OLED Driver"]},"1850":{"title":"Usage","titles":["OLED Driver"]},"1851":{"title":"OLED type","titles":["OLED Driver"]},"1852":{"title":"Logo Example","titles":["OLED Driver"]},"1853":{"title":"Buffer Read Example","titles":["OLED Driver"]},"1854":{"title":"Other Examples","titles":["OLED Driver"]},"1855":{"title":"Basic Configuration","titles":["OLED Driver"]},"1856":{"title":"I2C Configuration","titles":["OLED Driver","Basic Configuration"]},"1857":{"title":"SPI Configuration","titles":["OLED Driver","Basic Configuration"]},"1858":{"title":"128x64 & Custom sized OLED Displays","titles":["OLED Driver"]},"1859":{"title":"90 Degree Rotation - Technical Mumbo Jumbo","titles":["OLED Driver","128x64 & Custom sized OLED Displays"]},"1860":{"title":"OLED API","titles":["OLED Driver"]},"1861":{"title":"SSD1306.h Driver Conversion Guide","titles":["OLED Driver"]},"1862":{"title":"OS Detection","titles":[]},"1863":{"title":"Usage","titles":["OS Detection"]},"1864":{"title":"Callbacks","titles":["OS Detection"]},"1865":{"title":"OS detection stability","titles":["OS Detection"]},"1866":{"title":"KVM and USB switches","titles":["OS Detection"]},"1867":{"title":"Configuration Options","titles":["OS Detection"]},"1868":{"title":"Debug","titles":["OS Detection"]},"1869":{"title":"Credits","titles":["OS Detection"]},"1870":{"title":"Programmable Button","titles":[]},"1871":{"title":"Usage","titles":["Programmable Button"]},"1872":{"title":"Keycodes","titles":["Programmable Button"]},"1873":{"title":"API","titles":["Programmable Button"]},"1874":{"title":"void programmable_button_clear(void)","titles":["Programmable Button","API"]},"1875":{"title":"void programmable_button_add(uint8_t index)","titles":["Programmable Button","API"]},"1876":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_add(uint8_t index)"]},"1877":{"title":"void programmable_button_remove(uint8_t index)","titles":["Programmable Button","API"]},"1878":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_remove(uint8_t index)"]},"1879":{"title":"void programmable_button_register(uint8_t index)","titles":["Programmable Button","API"]},"1880":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_register(uint8_t index)"]},"1881":{"title":"void programmable_button_unregister(uint8_t index)","titles":["Programmable Button","API"]},"1882":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_unregister(uint8_t index)"]},"1883":{"title":"bool programmable_button_is_on(uint8_t index)","titles":["Programmable Button","API"]},"1884":{"title":"Arguments","titles":["Programmable Button","API","bool programmable_button_is_on(uint8_t index)"]},"1885":{"title":"Return Value","titles":["Programmable Button","API","bool programmable_button_is_on(uint8_t index)"]},"1886":{"title":"void programmable_button_flush(void)","titles":["Programmable Button","API"]},"1887":{"title":"uint32_t programmable_button_get_report(void)","titles":["Programmable Button","API"]},"1888":{"title":"Return Value","titles":["Programmable Button","API","uint32_t programmable_button_get_report(void)"]},"1889":{"title":"void programmable_button_set_report(uint32_t report)","titles":["Programmable Button","API"]},"1890":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_set_report(uint32_t report)"]},"1891":{"title":"PS/2 Mouse Support","titles":[]},"1892":{"title":"The Circuitry between Trackpoint and Controller","titles":["PS/2 Mouse Support"]},"1893":{"title":"Busywait Version","titles":["PS/2 Mouse Support"]},"1894":{"title":"Interrupt Version (AVR/ATMega32u4)","titles":["PS/2 Mouse Support","Busywait Version"]},"1895":{"title":"Interrupt Version (ARM chibios)","titles":["PS/2 Mouse Support","Busywait Version"]},"1896":{"title":"USART Version","titles":["PS/2 Mouse Support","Busywait Version"]},"1897":{"title":"RP2040 PIO Version","titles":["PS/2 Mouse Support","Busywait Version"]},"1898":{"title":"Additional Settings","titles":["PS/2 Mouse Support"]},"1899":{"title":"PS/2 Mouse Features","titles":["PS/2 Mouse Support","Additional Settings"]},"1900":{"title":"Fine Control","titles":["PS/2 Mouse Support","Additional Settings"]},"1901":{"title":"Scroll Button","titles":["PS/2 Mouse Support","Additional Settings"]},"1902":{"title":"Invert Mouse buttons","titles":["PS/2 Mouse Support","Additional Settings"]},"1903":{"title":"Invert Mouse and Scroll Axes","titles":["PS/2 Mouse Support","Additional Settings"]},"1904":{"title":"Rotate Mouse Axes","titles":["PS/2 Mouse Support","Additional Settings"]},"1905":{"title":"Debug Settings","titles":["PS/2 Mouse Support","Additional Settings"]},"1906":{"title":"Movement Hook","titles":["PS/2 Mouse Support","Additional Settings"]},"1907":{"title":"Repeat Key","titles":[]},"1908":{"title":"How do I enable Repeat Key","titles":["Repeat Key"]},"1909":{"title":"Keycodes","titles":["Repeat Key"]},"1910":{"title":"Alternate Repeating","titles":["Repeat Key"]},"1911":{"title":"Defining alternate keys","titles":["Repeat Key"]},"1912":{"title":"Eliminating SFBs","titles":["Repeat Key","Defining alternate keys"]},"1913":{"title":"Typing shortcuts","titles":["Repeat Key","Defining alternate keys"]},"1914":{"title":"Ignoring certain keys and mods","titles":["Repeat Key"]},"1915":{"title":"Ignoring a key","titles":["Repeat Key","Ignoring certain keys and mods"]},"1916":{"title":"Filtering remembered mods","titles":["Repeat Key","Ignoring certain keys and mods"]},"1917":{"title":"Further conditions","titles":["Repeat Key","Ignoring certain keys and mods"]},"1918":{"title":"Handle how a key is repeated","titles":["Repeat Key"]},"1919":{"title":"Handle how a key is alternate repeated","titles":["Repeat Key"]},"1920":{"title":"Functions","titles":["Repeat Key"]},"1921":{"title":"Additional "Alternate" keys","titles":["Repeat Key"]},"1922":{"title":"Raw HID","titles":[]},"1923":{"title":"Usage","titles":["Raw HID"]},"1924":{"title":"Basic Configuration","titles":["Raw HID"]},"1925":{"title":"Sending Data to the Keyboard","titles":["Raw HID"]},"1926":{"title":"Receiving Data from the Keyboard","titles":["Raw HID"]},"1927":{"title":"Simple Example","titles":["Raw HID"]},"1928":{"title":"API","titles":["Raw HID"]},"1929":{"title":"void raw_hid_receive(uint8_t *data, uint8_t length)","titles":["Raw HID","API"]},"1930":{"title":"Arguments","titles":["Raw HID","API","void raw_hid_receive(uint8_t *data, uint8_t length)"]},"1931":{"title":"void raw_hid_send(uint8_t *data, uint8_t length)","titles":["Raw HID","API"]},"1932":{"title":"Arguments","titles":["Raw HID","API","void raw_hid_send(uint8_t *data, uint8_t length)"]},"1933":{"title":"Pointing Device","titles":[]},"1934":{"title":"Sensor Drivers","titles":["Pointing Device"]},"1935":{"title":"ADNS 5050 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1936":{"title":"ADNS 9800 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1937":{"title":"Analog Joystick","titles":["Pointing Device","Sensor Drivers"]},"1938":{"title":"Azoteq IQS5XX Trackpad","titles":["Pointing Device","Sensor Drivers"]},"1939":{"title":"Device settings","titles":["Pointing Device","Sensor Drivers","Azoteq IQS5XX Trackpad"]},"1940":{"title":"Gesture settings","titles":["Pointing Device","Sensor Drivers","Azoteq IQS5XX Trackpad"]},"1941":{"title":"Rotation settings","titles":["Pointing Device","Sensor Drivers","Azoteq IQS5XX Trackpad"]},"1942":{"title":"Cirque Trackpad","titles":["Pointing Device","Sensor Drivers"]},"1943":{"title":"Common settings","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1944":{"title":"Absolute mode settings","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1945":{"title":"Absolute mode gestures","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1946":{"title":"Relative mode gestures","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1947":{"title":"PAW 3204 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1948":{"title":"Pimoroni Trackball","titles":["Pointing Device","Sensor Drivers"]},"1949":{"title":"PMW3320 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1950":{"title":"PMW 3360 and PMW 3389 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1951":{"title":"Custom Driver","titles":["Pointing Device","Sensor Drivers"]},"1952":{"title":"Common Configuration","titles":["Pointing Device"]},"1953":{"title":"Split Keyboard Configuration","titles":["Pointing Device"]},"1954":{"title":"Callbacks and Functions","titles":["Pointing Device"]},"1955":{"title":"Split Keyboard Callbacks and Functions","titles":["Pointing Device"]},"1956":{"title":"Manipulating Mouse Reports","titles":[]},"1957":{"title":"Examples","titles":["Manipulating Mouse Reports"]},"1958":{"title":"Custom Mouse Keycode","titles":["Manipulating Mouse Reports","Examples"]},"1959":{"title":"Drag Scroll or Mouse Scroll","titles":["Manipulating Mouse Reports","Examples"]},"1960":{"title":"Advanced Drag Scroll","titles":["Manipulating Mouse Reports","Examples"]},"1961":{"title":"Split Examples","titles":["Manipulating Mouse Reports"]},"1962":{"title":"Single Pointing Device","titles":["Manipulating Mouse Reports","Split Examples"]},"1963":{"title":"Combined Pointing Devices","titles":["Manipulating Mouse Reports","Split Examples"]},"1964":{"title":"Troubleshooting","titles":[]},"1965":{"title":"Automatic Mouse Layer","titles":[]},"1966":{"title":"Behaviour of Layer keys that activate the target layer","titles":["Automatic Mouse Layer"]},"1967":{"title":"How to enable:","titles":["Automatic Mouse Layer"]},"1968":{"title":"How to Customize:","titles":["Automatic Mouse Layer"]},"1969":{"title":"config.h Options:","titles":["Automatic Mouse Layer","How to Customize:"]},"1970":{"title":"Adding mouse keys","titles":["Automatic Mouse Layer","How to Customize:"]},"1971":{"title":"Callbacks for setting up additional key codes as mouse keys:","titles":["Automatic Mouse Layer","How to Customize:","Adding mouse keys"]},"1972":{"title":"To use the callback function to add mouse keys:","titles":["Automatic Mouse Layer","How to Customize:","Adding mouse keys","Callbacks for setting up additional key codes as mouse keys:"]},"1973":{"title":"Advanced control","titles":["Automatic Mouse Layer"]},"1974":{"title":"Functions to control auto mouse enable and target layer:","titles":["Automatic Mouse Layer","Advanced control"]},"1975":{"title":"Functions for handling custom key events:","titles":["Automatic Mouse Layer","Advanced control"]},"1976":{"title":"Advanced control examples","titles":["Automatic Mouse Layer","Advanced control"]},"1977":{"title":"Disable auto mouse on certain layers:","titles":["Automatic Mouse Layer","Advanced control","Advanced control examples"]},"1978":{"title":"Set different target layer when a particular layer is active:","titles":["Automatic Mouse Layer","Advanced control","Advanced control examples"]},"1979":{"title":"Use custom keys to control auto mouse:","titles":["Automatic Mouse Layer","Advanced control"]},"1980":{"title":"Customize Target Layer Activation","titles":["Automatic Mouse Layer"]},"1981":{"title":"Auto Mouse for Custom Pointing Device Task","titles":["Automatic Mouse Layer"]},"1982":{"title":"RGB Matrix Lighting","titles":[]},"1983":{"title":"Driver Configuration","titles":["RGB Matrix Lighting"]},"1984":{"title":"Common Configuration","titles":["RGB Matrix Lighting"]},"1985":{"title":"Flags","titles":["RGB Matrix Lighting"]},"1986":{"title":"Keycodes","titles":["RGB Matrix Lighting"]},"1987":{"title":"RGB Matrix Effects","titles":["RGB Matrix Lighting"]},"1988":{"title":"RGB Matrix Effect Typing Heatmap","titles":["RGB Matrix Lighting","RGB Matrix Effects"]},"1989":{"title":"RGB Matrix Effect Solid Reactive","titles":["RGB Matrix Lighting","RGB Matrix Effects"]},"1990":{"title":"Custom RGB Matrix Effects","titles":["RGB Matrix Lighting"]},"1991":{"title":"Colors","titles":["RGB Matrix Lighting"]},"1992":{"title":"Additional config.h Options","titles":["RGB Matrix Lighting"]},"1993":{"title":"EEPROM storage","titles":["RGB Matrix Lighting"]},"1994":{"title":"Callbacks","titles":["RGB Matrix Lighting"]},"1995":{"title":"Indicators","titles":["RGB Matrix Lighting","Callbacks"]},"1996":{"title":"Indicator Examples","titles":["RGB Matrix Lighting","Callbacks"]},"1997":{"title":"Examples","titles":["RGB Matrix Lighting","Callbacks","Indicator Examples"]},"1998":{"title":"Indicators without RGB Matrix Effect","titles":["RGB Matrix Lighting","Callbacks","Indicator Examples"]},"1999":{"title":"API","titles":["RGB Matrix Lighting"]},"2000":{"title":"void rgb_matrix_toggle(void)","titles":["RGB Matrix Lighting","API"]},"2001":{"title":"void rgb_matrix_toggle_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2002":{"title":"void rgb_matrix_enable(void)","titles":["RGB Matrix Lighting","API"]},"2003":{"title":"void rgb_matrix_enable_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2004":{"title":"void rgb_matrix_disable(void)","titles":["RGB Matrix Lighting","API"]},"2005":{"title":"void rgb_matrix_disable_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2006":{"title":"bool rgb_matrix_is_enabled(void)","titles":["RGB Matrix Lighting","API"]},"2007":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_is_enabled(void)"]},"2008":{"title":"void rgb_matrix_set_color(uint8_t index, uint8_t r, uint8_t g, uint8_t b)","titles":["RGB Matrix Lighting","API"]},"2009":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_color(uint8_t index, uint8_t r, uint8_t g, uint8_t b)"]},"2010":{"title":"void rgb_matrix_set_color_all(uint8_t r, uint8_t g, uint8_t b)","titles":["RGB Matrix Lighting","API"]},"2011":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_color_all(uint8_t r, uint8_t g, uint8_t b)"]},"2012":{"title":"void rgb_matrix_mode(uint8_t mode)","titles":["RGB Matrix Lighting","API"]},"2013":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_mode(uint8_t mode)"]},"2014":{"title":"void rgb_matrix_mode_noeeprom(uint8_t mode)","titles":["RGB Matrix Lighting","API"]},"2015":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_mode_noeeprom(uint8_t mode)"]},"2016":{"title":"void rgb_matrix_step(void)","titles":["RGB Matrix Lighting","API"]},"2017":{"title":"void rgb_matrix_step_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2018":{"title":"void rgb_matrix_step_reverse(void)","titles":["RGB Matrix Lighting","API"]},"2019":{"title":"void rgb_matrix_step_reverse_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2020":{"title":"uint8_t rgb_matrix_get_mode(void)","titles":["RGB Matrix Lighting","API"]},"2021":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_mode(void)"]},"2022":{"title":"void rgb_matrix_increase_hue(void)","titles":["RGB Matrix Lighting","API"]},"2023":{"title":"void rgb_matrix_increase_hue_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2024":{"title":"void rgb_matrix_decrease_hue(void)","titles":["RGB Matrix Lighting","API"]},"2025":{"title":"void rgb_matrix_decrease_hue_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2026":{"title":"uint8_t rgb_matrix_get_hue(void)","titles":["RGB Matrix Lighting","API"]},"2027":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_hue(void)"]},"2028":{"title":"void rgb_matrix_increase_sat(void)","titles":["RGB Matrix Lighting","API"]},"2029":{"title":"void rgb_matrix_increase_sat_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2030":{"title":"void rgb_matrix_decrease_sat(void)","titles":["RGB Matrix Lighting","API"]},"2031":{"title":"void rgb_matrix_decrease_sat_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2032":{"title":"uint8_t rgb_matrix_get_sat(void)","titles":["RGB Matrix Lighting","API"]},"2033":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_sat(void)"]},"2034":{"title":"void rgb_matrix_increase_val(void)","titles":["RGB Matrix Lighting","API"]},"2035":{"title":"void rgb_matrix_increase_val_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2036":{"title":"void rgb_matrix_decrease_val(void)","titles":["RGB Matrix Lighting","API"]},"2037":{"title":"void rgb_matrix_decrease_val_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2038":{"title":"uint8_t rgb_matrix_get_val(void)","titles":["RGB Matrix Lighting","API"]},"2039":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_val(void)"]},"2040":{"title":"void rgb_matrix_increase_speed(void)","titles":["RGB Matrix Lighting","API"]},"2041":{"title":"void rgb_matrix_increase_speed_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2042":{"title":"void rgb_matrix_decrease_speed(void)","titles":["RGB Matrix Lighting","API"]},"2043":{"title":"void rgb_matrix_decrease_speed_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2044":{"title":"void rgb_matrix_set_speed(uint8_t speed)","titles":["RGB Matrix Lighting","API"]},"2045":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_speed(uint8_t speed)"]},"2046":{"title":"void rgb_matrix_set_speed_noeeprom(uint8_t speed)","titles":["RGB Matrix Lighting","API"]},"2047":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_speed_noeeprom(uint8_t speed)"]},"2048":{"title":"uint8_t rgb_matrix_get_speed(void)","titles":["RGB Matrix Lighting","API"]},"2049":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_speed(void)"]},"2050":{"title":"void rgb_matrix_sethsv(uint8_t h, uint8_t s, uint8_t v)","titles":["RGB Matrix Lighting","API"]},"2051":{"title":"Arguments","titles":["RGB Matrix Lighting","API"]},"2052":{"title":"void rgb_matrix_sethsv_noeeprom(uint8_t h, uint8_t s, uint8_t v)","titles":["RGB Matrix Lighting","API"]},"2053":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_sethsv_noeeprom(uint8_t h, uint8_t s, uint8_t v)"]},"2054":{"title":"HSV rgb_matrix_get_hsv(void)","titles":["RGB Matrix Lighting","API"]},"2055":{"title":"Return Value","titles":["RGB Matrix Lighting","API","HSV rgb_matrix_get_hsv(void)"]},"2056":{"title":"void rgb_matrix_reload_from_eeprom(void)","titles":["RGB Matrix Lighting","API"]},"2057":{"title":"bool rgb_matrix_get_suspend_state(void)","titles":["RGB Matrix Lighting","API"]},"2058":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_get_suspend_state(void)"]},"2059":{"title":"bool rgb_matrix_indicators_kb(void)","titles":["RGB Matrix Lighting","API"]},"2060":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_indicators_kb(void)"]},"2061":{"title":"bool rgb_matrix_indicators_user(void)","titles":["RGB Matrix Lighting","API"]},"2062":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_indicators_user(void)"]},"2063":{"title":"bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)","titles":["RGB Matrix Lighting","API"]},"2064":{"title":"Arguments","titles":["RGB Matrix Lighting","API"]},"2065":{"title":"Return Value","titles":["RGB Matrix Lighting","API","Arguments"]},"2066":{"title":"bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)","titles":["RGB Matrix Lighting","API"]},"2067":{"title":"Arguments","titles":["RGB Matrix Lighting","API"]},"2068":{"title":"Return Value","titles":["RGB Matrix Lighting","API","Arguments"]},"2069":{"title":"RGB Lighting","titles":[]},"2070":{"title":"Usage","titles":["RGB Lighting"]},"2071":{"title":"Color Selection","titles":["RGB Lighting","Usage"]},"2072":{"title":"Keycodes","titles":["RGB Lighting"]},"2073":{"title":"Configuration","titles":["RGB Lighting"]},"2074":{"title":"Effects and Animations","titles":["RGB Lighting"]},"2075":{"title":"Effect and Animation Toggles","titles":["RGB Lighting","Effects and Animations"]},"2076":{"title":"Effect and Animation Settings","titles":["RGB Lighting","Effects and Animations"]},"2077":{"title":"Example Usage to Reduce Memory Footprint","titles":["RGB Lighting","Effects and Animations"]},"2078":{"title":"Animation Speed","titles":["RGB Lighting","Effects and Animations"]},"2079":{"title":"Lighting Layers","titles":["RGB Lighting"]},"2080":{"title":"Defining Lighting Layers","titles":["RGB Lighting","Lighting Layers"]},"2081":{"title":"Enabling and disabling lighting layers","titles":["RGB Lighting","Lighting Layers"]},"2082":{"title":"Lighting layer blink","titles":["RGB Lighting","Lighting Layers"]},"2083":{"title":"Overriding RGB Lighting on/off status","titles":["RGB Lighting","Lighting Layers"]},"2084":{"title":"Retain brightness","titles":["RGB Lighting","Lighting Layers"]},"2085":{"title":"Functions","titles":["RGB Lighting"]},"2086":{"title":"Low level Functions","titles":["RGB Lighting","Functions"]},"2087":{"title":"Effects and Animations Functions","titles":["RGB Lighting","Functions"]},"2088":{"title":"effect range setting","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2089":{"title":"direct operation","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2090":{"title":"effect mode change","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2091":{"title":"effects mode disable/enable","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2092":{"title":"hue, sat, val change","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2093":{"title":"Speed functions","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2094":{"title":"layer functions","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2095":{"title":"query","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2096":{"title":"Colors","titles":["RGB Lighting"]},"2097":{"title":"Changing the order of the LEDs","titles":["RGB Lighting"]},"2098":{"title":"Clipping Range","titles":["RGB Lighting"]},"2099":{"title":"Hardware Modification","titles":["RGB Lighting"]},"2100":{"title":"Velocikey","titles":["RGB Lighting"]},"2101":{"title":"Usage","titles":["RGB Lighting","Velocikey"]},"2102":{"title":"Configuration","titles":["RGB Lighting","Velocikey"]},"2103":{"title":"Secure","titles":[]},"2104":{"title":"Unlock sequence","titles":["Secure"]},"2105":{"title":"Automatic Locking","titles":["Secure"]},"2106":{"title":"Usage","titles":["Secure"]},"2107":{"title":"Keycodes","titles":["Secure"]},"2108":{"title":"Configuration","titles":["Secure"]},"2109":{"title":"Functions","titles":["Secure"]},"2110":{"title":"Send String","titles":[]},"2111":{"title":"Usage","titles":["Send String"]},"2112":{"title":"Basic Configuration","titles":["Send String"]},"2113":{"title":"Keycodes","titles":["Send String"]},"2114":{"title":"Language Support","titles":["Send String","Keycodes"]},"2115":{"title":"Examples","titles":["Send String"]},"2116":{"title":"Hello World","titles":["Send String","Examples"]},"2117":{"title":"Keycode Injection","titles":["Send String","Examples"]},"2118":{"title":"API","titles":["Send String"]},"2119":{"title":"void send_string(const char *string)","titles":["Send String","API"]},"2120":{"title":"Arguments","titles":["Send String","API","void send_string(const char *string)"]},"2121":{"title":"void send_string_with_delay(const char *string, uint8_t interval)","titles":["Send String","API"]},"2122":{"title":"Arguments","titles":["Send String","API","void send_string_with_delay(const char *string, uint8_t interval)"]},"2123":{"title":"void send_string_P(const char *string)","titles":["Send String","API"]},"2124":{"title":"Arguments","titles":["Send String","API","void send_string_P(const char *string)"]},"2125":{"title":"void send_string_with_delay_P(const char *string, uint8_t interval)","titles":["Send String","API"]},"2126":{"title":"Arguments","titles":["Send String","API","void send_string_with_delay_P(const char *string, uint8_t interval)"]},"2127":{"title":"void send_char(char ascii_code)","titles":["Send String","API"]},"2128":{"title":"Arguments","titles":["Send String","API","void send_char(char ascii_code)"]},"2129":{"title":"void send_dword(uint32_t number)","titles":["Send String","API"]},"2130":{"title":"Arguments","titles":["Send String","API","void send_dword(uint32_t number)"]},"2131":{"title":"void send_word(uint16_t number)","titles":["Send String","API"]},"2132":{"title":"Arguments","titles":["Send String","API","void send_word(uint16_t number)"]},"2133":{"title":"void send_byte(uint8_t number)","titles":["Send String","API"]},"2134":{"title":"Arguments","titles":["Send String","API","void send_byte(uint8_t number)"]},"2135":{"title":"void send_nibble(uint8_t number)","titles":["Send String","API"]},"2136":{"title":"Arguments","titles":["Send String","API","void send_nibble(uint8_t number)"]},"2137":{"title":"void tap_random_base64(void)","titles":["Send String","API"]},"2138":{"title":"SEND_STRING(string)","titles":["Send String","API"]},"2139":{"title":"SEND_STRING_DELAY(string, interval)","titles":["Send String","API"]},"2140":{"title":"Sequencer","titles":[]},"2141":{"title":"Enable the step sequencer","titles":["Sequencer"]},"2142":{"title":"Tracks","titles":["Sequencer"]},"2143":{"title":"Resolutions","titles":["Sequencer"]},"2144":{"title":"Keycodes","titles":["Sequencer"]},"2145":{"title":"Functions","titles":["Sequencer"]},"2146":{"title":"Space Cadet: The Future, Built In","titles":[]},"2147":{"title":"Usage","titles":["Space Cadet: The Future, Built In"]},"2148":{"title":"Keycodes","titles":["Space Cadet: The Future, Built In"]},"2149":{"title":"Caveats","titles":["Space Cadet: The Future, Built In"]},"2150":{"title":"Configuration","titles":["Space Cadet: The Future, Built In"]},"2151":{"title":"Obsolete Configuration","titles":["Space Cadet: The Future, Built In"]},"2152":{"title":"Split Keyboard","titles":[]},"2153":{"title":"Compatibility Overview","titles":["Split Keyboard"]},"2154":{"title":"Hardware Configuration","titles":["Split Keyboard"]},"2155":{"title":"Required Hardware","titles":["Split Keyboard","Hardware Configuration"]},"2156":{"title":"Considerations","titles":["Split Keyboard","Hardware Configuration","Required Hardware"]},"2157":{"title":"Serial Wiring","titles":["Split Keyboard","Hardware Configuration"]},"2158":{"title":"I2C Wiring","titles":["Split Keyboard","Hardware Configuration"]},"2159":{"title":"Firmware Configuration","titles":["Split Keyboard"]},"2160":{"title":"Layout Macro","titles":["Split Keyboard","Firmware Configuration"]},"2161":{"title":"Setting Handedness","titles":["Split Keyboard","Firmware Configuration"]},"2162":{"title":"Handedness by Pin","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2163":{"title":"Handedness by Matrix Pin","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2164":{"title":"Handedness by EEPROM","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2165":{"title":"Handedness by #define","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2166":{"title":"Communication Options","titles":["Split Keyboard","Firmware Configuration"]},"2167":{"title":"Data Sync Options","titles":["Split Keyboard","Firmware Configuration"]},"2168":{"title":"Custom data sync between sides","titles":["Split Keyboard","Firmware Configuration"]},"2169":{"title":"Hardware Configuration Options","titles":["Split Keyboard","Firmware Configuration"]},"2170":{"title":"Hardware Considerations and Mods","titles":["Split Keyboard"]},"2171":{"title":"Teensy boards","titles":["Split Keyboard","Hardware Considerations and Mods"]},"2172":{"title":"Additional Resources","titles":["Split Keyboard"]},"2173":{"title":"ST7565 LCD Driver","titles":[]},"2174":{"title":"Supported Hardware","titles":["ST7565 LCD Driver"]},"2175":{"title":"Usage","titles":["ST7565 LCD Driver"]},"2176":{"title":"Logo Example","titles":["ST7565 LCD Driver"]},"2177":{"title":"Buffer Read Example","titles":["ST7565 LCD Driver"]},"2178":{"title":"Other Examples","titles":["ST7565 LCD Driver"]},"2179":{"title":"Basic Configuration","titles":["ST7565 LCD Driver"]},"2180":{"title":"Custom sized displays","titles":["ST7565 LCD Driver"]},"2181":{"title":"API","titles":["ST7565 LCD Driver"]},"2182":{"title":"Stenography in QMK","titles":[]},"2183":{"title":"Plover with QWERTY Keyboard","titles":["Stenography in QMK"]},"2184":{"title":"Plover with Steno Protocol","titles":["Stenography in QMK"]},"2185":{"title":"TX Bolt","titles":["Stenography in QMK","Plover with Steno Protocol"]},"2186":{"title":"GeminiPR","titles":["Stenography in QMK","Plover with Steno Protocol"]},"2187":{"title":"Switching protocols on the fly","titles":["Stenography in QMK","Plover with Steno Protocol"]},"2188":{"title":"Configuring QMK for Steno","titles":["Stenography in QMK"]},"2189":{"title":"Learning Stenography","titles":["Stenography in QMK"]},"2190":{"title":"Interfacing with the code","titles":["Stenography in QMK"]},"2191":{"title":"Keycode Reference","titles":["Stenography in QMK"]},"2192":{"title":"Swap-Hands Action","titles":[]},"2193":{"title":"Configuration","titles":["Swap-Hands Action"]},"2194":{"title":"Swap Keycodes","titles":["Swap-Hands Action"]},"2195":{"title":"Encoder Mapping","titles":["Swap-Hands Action"]},"2196":{"title":"Functions","titles":["Swap-Hands Action","Encoder Mapping"]},"2197":{"title":"Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","titles":[]},"2198":{"title":"Introduction","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2199":{"title":"How to Use Tap Dance","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2200":{"title":"Implementation Details","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2201":{"title":"Examples","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2202":{"title":"Simple Example: Send ESC on Single Tap, CAPS_LOCK on Double Tap","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples"]},"2203":{"title":"Complex Examples","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples"]},"2204":{"title":"Example 1: Send "Safety Dance!" After 100 Taps","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2205":{"title":"Example 2: Turn LED Lights On Then Off, One at a Time","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2206":{"title":"Example 3: Send : on Tap, ; on Hold","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2207":{"title":"Example 4: 'Quad Function Tap-Dance'","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2208":{"title":"Example 5: Using tap dance for advanced mod-tap and layer-tap keys","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2209":{"title":"Example 6: Using tap dance for momentary-layer-switch and layer-toggle keys","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2210":{"title":"Tri Layers","titles":[]},"2211":{"title":"Keycodes","titles":["Tri Layers"]},"2212":{"title":"Configuration","titles":["Tri Layers"]},"2213":{"title":"Functions","titles":["Tri Layers"]},"2214":{"title":"Unicode","titles":[]},"2215":{"title":"Caveats","titles":["Unicode"]},"2216":{"title":"Usage","titles":["Unicode"]},"2217":{"title":"Basic Configuration","titles":["Unicode"]},"2218":{"title":"Audio Feedback","titles":["Unicode","Basic Configuration"]},"2219":{"title":"Input Subsystems","titles":["Unicode"]},"2220":{"title":"Lower and Upper Case Pairs","titles":["Unicode","Input Subsystems","Audio Feedback"]},"2221":{"title":"Input Modes","titles":["Unicode"]},"2222":{"title":"Keycodes","titles":["Unicode"]},"2223":{"title":"API","titles":["Unicode"]},"2224":{"title":"uint8_t get_unicode_input_mode(void)","titles":["Unicode","API"]},"2225":{"title":"Return Value","titles":["Unicode","API","uint8_t get_unicode_input_mode(void)"]},"2226":{"title":"void set_unicode_input_mode(uint8_t mode)","titles":["Unicode","API"]},"2227":{"title":"Arguments","titles":["Unicode","API","void set_unicode_input_mode(uint8_t mode)"]},"2228":{"title":"void unicode_input_mode_step(void)","titles":["Unicode","API"]},"2229":{"title":"void unicode_input_mode_step_reverse(void)","titles":["Unicode","API"]},"2230":{"title":"void unicode_input_mode_set_user(uint8_t input_mode)","titles":["Unicode","API"]},"2231":{"title":"Arguments","titles":["Unicode","API","void unicode_input_mode_set_user(uint8_t input_mode)"]},"2232":{"title":"void unicode_input_mode_set_kb(uint8_t input_mode)","titles":["Unicode","API"]},"2233":{"title":"Arguments","titles":["Unicode","API","void unicode_input_mode_set_kb(uint8_t input_mode)"]},"2234":{"title":"void unicode_input_start(void)","titles":["Unicode","API"]},"2235":{"title":"void unicode_input_finish(void)","titles":["Unicode","API"]},"2236":{"title":"void unicode_input_cancel(void)","titles":["Unicode","API"]},"2237":{"title":"void register_unicode(uint32_t code_point)","titles":["Unicode","API"]},"2238":{"title":"Arguments","titles":["Unicode","API","void register_unicode(uint32_t code_point)"]},"2239":{"title":"void send_unicode_string(const char *str)","titles":["Unicode","API"]},"2240":{"title":"Arguments","titles":["Unicode","API","void send_unicode_string(const char *str)"]},"2241":{"title":"uint8_t unicodemap_index(uint16_t keycode)","titles":["Unicode","API"]},"2242":{"title":"Arguments","titles":["Unicode","API","uint8_t unicodemap_index(uint16_t keycode)"]},"2243":{"title":"Return Value","titles":["Unicode","API","uint8_t unicodemap_index(uint16_t keycode)"]},"2244":{"title":"uint32_t unicodemap_get_code_point(uint8_t index)","titles":["Unicode","API"]},"2245":{"title":"Arguments","titles":["Unicode","API","uint32_t unicodemap_get_code_point(uint8_t index)"]},"2246":{"title":"Return Value","titles":["Unicode","API","uint32_t unicodemap_get_code_point(uint8_t index)"]},"2247":{"title":"void register_unicodemap(uint8_t index)","titles":["Unicode","API"]},"2248":{"title":"Arguments","titles":["Unicode","API","void register_unicodemap(uint8_t index)"]},"2249":{"title":"void ucis_start(void)","titles":["Unicode","API"]},"2250":{"title":"bool ucis_active(void)","titles":["Unicode","API"]},"2251":{"title":"Return Value","titles":["Unicode","API","bool ucis_active(void)"]},"2252":{"title":"uint8_t ucis_count(void)","titles":["Unicode","API"]},"2253":{"title":"Return Value","titles":["Unicode","API","uint8_t ucis_count(void)"]},"2254":{"title":"bool ucis_add(uint16_t keycode)","titles":["Unicode","API"]},"2255":{"title":"Arguments","titles":["Unicode","API","bool ucis_add(uint16_t keycode)"]},"2256":{"title":"Return Value","titles":["Unicode","API","bool ucis_add(uint16_t keycode)"]},"2257":{"title":"bool ucis_remove_last(void)","titles":["Unicode","API"]},"2258":{"title":"Return Value","titles":["Unicode","API","bool ucis_remove_last(void)"]},"2259":{"title":"void ucis_finish(void)","titles":["Unicode","API"]},"2260":{"title":"void ucis_cancel(void)","titles":["Unicode","API"]},"2261":{"title":"void register_ucis(void)","titles":["Unicode","API"]},"2262":{"title":"Arguments","titles":["Unicode","API","void register_ucis(void)"]},"2263":{"title":"Word Per Minute (WPM) Calculation","titles":[]},"2264":{"title":"Configuration","titles":["Word Per Minute (WPM) Calculation"]},"2265":{"title":"Public Functions","titles":["Word Per Minute (WPM) Calculation"]},"2266":{"title":"Callbacks","titles":["Word Per Minute (WPM) Calculation"]},"2267":{"title":"Flashing Instructions and Bootloader Information","titles":[]},"2268":{"title":"Atmel DFU","titles":["Flashing Instructions and Bootloader Information"]},"2269":{"title":"QMK DFU","titles":["Flashing Instructions and Bootloader Information","Atmel DFU"]},"2270":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","Atmel DFU"]},"2271":{"title":"Caterina","titles":["Flashing Instructions and Bootloader Information"]},"2272":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","Caterina"]},"2273":{"title":"HalfKay","titles":["Flashing Instructions and Bootloader Information"]},"2274":{"title":"USBasploader","titles":["Flashing Instructions and Bootloader Information"]},"2275":{"title":"BootloadHID","titles":["Flashing Instructions and Bootloader Information"]},"2276":{"title":"QMK HID","titles":["Flashing Instructions and Bootloader Information","BootloadHID"]},"2277":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","BootloadHID"]},"2278":{"title":"STM32/APM32 DFU","titles":["Flashing Instructions and Bootloader Information"]},"2279":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","STM32/APM32 DFU"]},"2280":{"title":"STM32duino","titles":["Flashing Instructions and Bootloader Information"]},"2281":{"title":"Kiibohd DFU","titles":["Flashing Instructions and Bootloader Information"]},"2282":{"title":"WB32 DFU","titles":["Flashing Instructions and Bootloader Information"]},"2283":{"title":"tinyuf2","titles":["Flashing Instructions and Bootloader Information"]},"2284":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","tinyuf2"]},"2285":{"title":"uf2boot","titles":["Flashing Instructions and Bootloader Information"]},"2286":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","uf2boot"]},"2287":{"title":"Raspberry Pi RP2040 UF2","titles":["Flashing Instructions and Bootloader Information"]},"2288":{"title":"SN32 DFU","titles":["Flashing Instructions and Bootloader Information"]},"2289":{"title":"Docker Quick Start","titles":[]},"2290":{"title":"Requirements","titles":["Docker Quick Start"]},"2291":{"title":"Usage","titles":["Docker Quick Start"]},"2292":{"title":"FAQ","titles":["Docker Quick Start"]},"2293":{"title":"Why can't I flash on Windows/macOS","titles":["Docker Quick Start","FAQ"]},"2294":{"title":"Introduction","titles":[]},"2295":{"title":"Basic QMK Structure","titles":["Introduction"]},"2296":{"title":"Userspace Structure","titles":["Introduction","Basic QMK Structure"]},"2297":{"title":"Keyboard Project Structure","titles":["Introduction","Basic QMK Structure"]},"2298":{"title":"Keymap Structure","titles":["Introduction","Basic QMK Structure"]},"2299":{"title":"The config.h File","titles":[]},"2300":{"title":"More Detailed make Instructions","titles":[]},"2301":{"title":"rules.mk Options","titles":["More Detailed make Instructions"]},"2302":{"title":"Customizing Makefile Options on a Per-Keymap Basis","titles":["More Detailed make Instructions"]},"2303":{"title":"How to Use GitHub with QMK","titles":[]},"2304":{"title":"Hand-Wiring Guide","titles":[]},"2305":{"title":"Parts list","titles":["Hand-Wiring Guide"]},"2306":{"title":"Starting the build","titles":["Hand-Wiring Guide"]},"2307":{"title":"Planning the matrix","titles":["Hand-Wiring Guide"]},"2308":{"title":"Common Microcontroller Boards","titles":["Hand-Wiring Guide","Planning the matrix"]},"2309":{"title":"Wiring the matrix","titles":["Hand-Wiring Guide"]},"2310":{"title":"A note on split keyboards","titles":["Hand-Wiring Guide","Wiring the matrix"]},"2311":{"title":"Soldering","titles":["Hand-Wiring Guide","Wiring the matrix"]},"2312":{"title":"Soldering the Diodes","titles":["Hand-Wiring Guide","Wiring the matrix","Soldering"]},"2313":{"title":"Soldering the Columns","titles":["Hand-Wiring Guide","Wiring the matrix","Soldering"]},"2314":{"title":"Wiring up the controller","titles":["Hand-Wiring Guide"]},"2315":{"title":"Specific instructions for the Teensy 2.0","titles":["Hand-Wiring Guide","Wiring up the controller"]},"2316":{"title":"Getting Some Basic Firmware Set Up","titles":["Hand-Wiring Guide"]},"2317":{"title":"Flashing the Firmware","titles":["Hand-Wiring Guide"]},"2318":{"title":"Testing Your Firmware","titles":["Hand-Wiring Guide"]},"2319":{"title":"Finishing up","titles":["Hand-Wiring Guide"]},"2320":{"title":"Links to Other Guides","titles":["Hand-Wiring Guide"]},"2321":{"title":"Legacy Content","titles":[]},"2322":{"title":"Preamble: How a Keyboard Matrix Works (and why we need diodes)","titles":["Legacy Content"]},"2323":{"title":"QMK Hardware Drivers","titles":[]},"2324":{"title":"Available Drivers","titles":[]},"2325":{"title":"ProMicro (AVR Only)","titles":["Available Drivers"]},"2326":{"title":"SSD1306 OLED Driver","titles":["Available Drivers"]},"2327":{"title":"WS2812","titles":["Available Drivers"]},"2328":{"title":"IS31FL3731","titles":["Available Drivers"]},"2329":{"title":"IS31FL3733","titles":["Available Drivers"]},"2330":{"title":"24xx series external I2C EEPROM","titles":["Available Drivers"]},"2331":{"title":"QMK Keyboard Guidelines","titles":[]},"2332":{"title":"Use QMK Lint","titles":["QMK Keyboard Guidelines"]},"2333":{"title":"Naming Your Keyboard/Project","titles":["QMK Keyboard Guidelines"]},"2334":{"title":"Sub-folders","titles":["QMK Keyboard Guidelines"]},"2335":{"title":"Keyboard Folder Structure","titles":["QMK Keyboard Guidelines"]},"2336":{"title":"readme.md","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2337":{"title":"info.json","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2338":{"title":"config.h","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2339":{"title":"rules.mk","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2340":{"title":"<keyboard_name.c>","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2341":{"title":"<keyboard_name.h>","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2342":{"title":"Image/Hardware Files","titles":["QMK Keyboard Guidelines"]},"2343":{"title":"Keyboard Defaults","titles":["QMK Keyboard Guidelines"]},"2344":{"title":"Magic Keycodes and Command","titles":["QMK Keyboard Guidelines","Keyboard Defaults"]},"2345":{"title":"Custom Keyboard Programming","titles":["QMK Keyboard Guidelines"]},"2346":{"title":"Non-Production/Handwired Projects","titles":["QMK Keyboard Guidelines"]},"2347":{"title":"Warnings as Errors","titles":["QMK Keyboard Guidelines"]},"2348":{"title":"Copyright Blurb","titles":["QMK Keyboard Guidelines"]},"2349":{"title":"License","titles":["QMK Keyboard Guidelines"]},"2350":{"title":"How a Keyboard Matrix Works","titles":[]},"2351":{"title":"How Keys Are Registered, and Interpreted by Computers","titles":[]},"2352":{"title":"Schematic View","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2353":{"title":"1. You Press a Key","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2354":{"title":"2. What the Firmware Sends","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2355":{"title":"3. What the Event Input/Kernel Does","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2356":{"title":"4. What the Operating System Does","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2357":{"title":"Back to the Firmware","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2358":{"title":"List of Characters You Can Send","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2359":{"title":"How to (Maybe) Enter Unicode Characters","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2360":{"title":"Quantum Mechanical Keyboard Firmware","titles":[]},"2361":{"title":"What is QMK Firmware?","titles":["Quantum Mechanical Keyboard Firmware"]},"2362":{"title":"Get Started","titles":["Quantum Mechanical Keyboard Firmware"]},"2363":{"title":"Make It Yours","titles":["Quantum Mechanical Keyboard Firmware"]},"2364":{"title":"Need help?","titles":["Quantum Mechanical Keyboard Firmware"]},"2365":{"title":"Give Back","titles":["Quantum Mechanical Keyboard Firmware"]},"2366":{"title":"ISP Flashing Guide","titles":[]},"2367":{"title":"Hardware","titles":["ISP Flashing Guide"]},"2368":{"title":"Pro Micro as ISP","titles":["ISP Flashing Guide","Hardware"]},"2369":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Pro Micro as ISP"]},"2370":{"title":"Arduino Uno / Micro as ISP","titles":["ISP Flashing Guide","Hardware"]},"2371":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Arduino Uno / Micro as ISP"]},"2372":{"title":"Teensy 2.0 as ISP","titles":["ISP Flashing Guide","Hardware"]},"2373":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Teensy 2.0 as ISP"]},"2374":{"title":"SparkFun PocketAVR / USBtinyISP","titles":["ISP Flashing Guide","Hardware"]},"2375":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","SparkFun PocketAVR / USBtinyISP"]},"2376":{"title":"USBasp","titles":["ISP Flashing Guide","Hardware"]},"2377":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","USBasp"]},"2378":{"title":"Bus Pirate","titles":["ISP Flashing Guide","Hardware"]},"2379":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Bus Pirate"]},"2380":{"title":"Software","titles":["ISP Flashing Guide"]},"2381":{"title":"Bootloader Firmware","titles":["ISP Flashing Guide"]},"2382":{"title":"Atmel DFU","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2383":{"title":"Caterina","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2384":{"title":"BootloadHID (PS2AVRGB)","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2385":{"title":"USBaspLoader","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2386":{"title":"Flashing the Bootloader","titles":["ISP Flashing Guide"]},"2387":{"title":"Setting the Fuses","titles":["ISP Flashing Guide","Flashing the Bootloader"]},"2388":{"title":"Creating a "Production" Firmware","titles":["ISP Flashing Guide"]},"2389":{"title":"Flashing STM32Duino Bootloader","titles":["ISP Flashing Guide"]},"2390":{"title":"Software","titles":["ISP Flashing Guide","Flashing STM32Duino Bootloader"]},"2391":{"title":"Wiring","titles":["ISP Flashing Guide","Flashing STM32Duino Bootloader"]},"2392":{"title":"Flashing","titles":["ISP Flashing Guide","Flashing STM32Duino Bootloader"]},"2393":{"title":"Keycodes Overview","titles":[]},"2394":{"title":"Basic Keycodes","titles":["Keycodes Overview"]},"2395":{"title":"Quantum Keycodes","titles":["Keycodes Overview"]},"2396":{"title":"Audio Keys","titles":["Keycodes Overview"]},"2397":{"title":"Auto Shift","titles":["Keycodes Overview"]},"2398":{"title":"Autocorrect","titles":["Keycodes Overview"]},"2399":{"title":"Backlighting","titles":["Keycodes Overview"]},"2400":{"title":"Bluetooth","titles":["Keycodes Overview"]},"2401":{"title":"Caps Word","titles":["Keycodes Overview"]},"2402":{"title":"Dynamic Macros","titles":["Keycodes Overview"]},"2403":{"title":"Grave Escape","titles":["Keycodes Overview"]},"2404":{"title":"Joystick","titles":["Keycodes Overview"]},"2405":{"title":"Key Lock","titles":["Keycodes Overview"]},"2406":{"title":"Layer Switching","titles":["Keycodes Overview"]},"2407":{"title":"Leader Key","titles":["Keycodes Overview"]},"2408":{"title":"LED Matrix","titles":["Keycodes Overview"]},"2409":{"title":"Magic Keycodes","titles":["Keycodes Overview"]},"2410":{"title":"MIDI","titles":["Keycodes Overview"]},"2411":{"title":"Mouse Keys","titles":["Keycodes Overview"]},"2412":{"title":"Modifiers","titles":["Keycodes Overview"]},"2413":{"title":"Mod-Tap Keys","titles":["Keycodes Overview"]},"2414":{"title":"Tapping Term Keys","titles":["Keycodes Overview"]},"2415":{"title":"RGB Lighting","titles":["Keycodes Overview"]},"2416":{"title":"RGB Matrix Lighting","titles":["Keycodes Overview"]},"2417":{"title":"US ANSI Shifted Symbols","titles":["Keycodes Overview"]},"2418":{"title":"One Shot Keys","titles":["Keycodes Overview"]},"2419":{"title":"Programmable Button Support","titles":["Keycodes Overview"]},"2420":{"title":"Repeat Key","titles":["Keycodes Overview"]},"2421":{"title":"Space Cadet","titles":["Keycodes Overview"]},"2422":{"title":"Swap Hands","titles":["Keycodes Overview"]},"2423":{"title":"Unicode Support","titles":["Keycodes Overview"]},"2424":{"title":"Basic Keycodes","titles":[]},"2425":{"title":"Letters and Numbers","titles":["Basic Keycodes"]},"2426":{"title":"F Keys","titles":["Basic Keycodes"]},"2427":{"title":"Punctuation","titles":["Basic Keycodes"]},"2428":{"title":"Lock Keys","titles":["Basic Keycodes"]},"2429":{"title":"Modifiers","titles":["Basic Keycodes"]},"2430":{"title":"International","titles":["Basic Keycodes"]},"2431":{"title":"Commands","titles":["Basic Keycodes"]},"2432":{"title":"Media Keys","titles":["Basic Keycodes"]},"2433":{"title":"Number Pad","titles":["Basic Keycodes"]},"2434":{"title":"Special Keys","titles":["Basic Keycodes"]},"2435":{"title":"Magic Keycodes","titles":[]},"2436":{"title":"US ANSI Shifted Symbols","titles":[]},"2437":{"title":"Caveats","titles":["US ANSI Shifted Symbols"]},"2438":{"title":"Keycodes","titles":["US ANSI Shifted Symbols"]},"2439":{"title":"Keymap Overview","titles":[]},"2440":{"title":"Keymap and Layers","titles":["Keymap Overview"]},"2441":{"title":"Keymap Layer Status","titles":["Keymap Overview","Keymap and Layers"]},"2442":{"title":"Layer Precedence and Transparency","titles":["Keymap Overview","Keymap and Layers"]},"2443":{"title":"Anatomy of a keymap.c","titles":["Keymap Overview"]},"2444":{"title":"Definitions","titles":["Keymap Overview","Anatomy of a keymap.c"]},"2445":{"title":"Layers and Keymaps","titles":["Keymap Overview","Anatomy of a keymap.c"]},"2446":{"title":"Base Layer","titles":["Keymap Overview","Anatomy of a keymap.c","Layers and Keymaps"]},"2447":{"title":"Function Overlay Layer","titles":["Keymap Overview","Anatomy of a keymap.c","Layers and Keymaps"]},"2448":{"title":"Nitty Gritty Details","titles":[]},"2449":{"title":"Mod-Tap","titles":[]},"2450":{"title":"Caveats","titles":["Mod-Tap"]},"2451":{"title":"Intercepting Mod-Taps","titles":["Mod-Tap"]},"2452":{"title":"Changing tap function","titles":["Mod-Tap","Intercepting Mod-Taps"]},"2453":{"title":"Changing hold function","titles":["Mod-Tap","Intercepting Mod-Taps"]},"2454":{"title":"Changing both tap and hold","titles":["Mod-Tap","Intercepting Mod-Taps"]},"2455":{"title":"Other Resources","titles":["Mod-Tap"]},"2456":{"title":"The QMK Tutorial","titles":[]},"2457":{"title":"Overview","titles":["The QMK Tutorial"]},"2458":{"title":"Additional Resources","titles":["The QMK Tutorial"]},"2459":{"title":"Building Your First Firmware","titles":[]},"2460":{"title":"Configure Your Build Environment Defaults (Optional)","titles":["Building Your First Firmware"]},"2461":{"title":"Create a New Keymap","titles":["Building Your First Firmware"]},"2462":{"title":"Open keymap.c In Your Favorite Text Editor","titles":["Building Your First Firmware"]},"2463":{"title":"Customize The Layout To Your Liking","titles":["Building Your First Firmware"]},"2464":{"title":"Build Your Firmware","titles":["Building Your First Firmware"]},"2465":{"title":"Flash Your Firmware","titles":["Building Your First Firmware"]},"2466":{"title":"QMK Configurator","titles":[]},"2467":{"title":"Building QMK with GitHub Userspace","titles":[]},"2468":{"title":"Prerequisites","titles":["Building QMK with GitHub Userspace"]},"2469":{"title":"Environment Setup","titles":["Building QMK with GitHub Userspace"]},"2470":{"title":"1. Install Git","titles":["Building QMK with GitHub Userspace","Environment Setup"]},"2471":{"title":"2. GitHub authentication","titles":["Building QMK with GitHub Userspace","Environment Setup"]},"2472":{"title":"3. Create a repository","titles":["Building QMK with GitHub Userspace","Environment Setup"]},"2473":{"title":"Initial Code Commit","titles":["Building QMK with GitHub Userspace"]},"2474":{"title":"Create template files","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2475":{"title":"Add a JSON keymap","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2476":{"title":"Add a GitHub Action workflow","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2477":{"title":"Commit files to GitHub","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2478":{"title":"Review workflow output","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2479":{"title":"Customising your keymap","titles":["Building QMK with GitHub Userspace"]},"2480":{"title":"External QMK Userspace","titles":[]},"2481":{"title":"Setting up QMK Locally","titles":["External QMK Userspace"]},"2482":{"title":"External Userspace Repository Setup (forked on GitHub)","titles":["External QMK Userspace"]},"2483":{"title":"External Userspace Setup (locally stored only)","titles":["External QMK Userspace"]},"2484":{"title":"Adding a Keymap","titles":["External QMK Userspace"]},"2485":{"title":"Adding the keymap to External Userspace build targets","titles":["External QMK Userspace"]},"2486":{"title":"Compiling External Userspace build targets","titles":["External QMK Userspace"]},"2487":{"title":"Using GitHub Actions","titles":["External QMK Userspace"]},"2488":{"title":"Flashing Your Keyboard","titles":[]},"2489":{"title":"Put Your Keyboard into DFU (Bootloader) Mode","titles":["Flashing Your Keyboard"]},"2490":{"title":"Flashing Your Keyboard with QMK Toolbox","titles":["Flashing Your Keyboard"]},"2491":{"title":"Load the File into QMK Toolbox","titles":["Flashing Your Keyboard","Flashing Your Keyboard with QMK Toolbox"]},"2492":{"title":"Flash Your Keyboard","titles":["Flashing Your Keyboard","Flashing Your Keyboard with QMK Toolbox"]},"2493":{"title":"Flash your Keyboard from the Command Line","titles":["Flashing Your Keyboard"]},"2494":{"title":"Test It Out!","titles":["Flashing Your Keyboard"]},"2495":{"title":"Setting Up Your QMK Environment","titles":[]},"2496":{"title":"1. Prerequisites","titles":["Setting Up Your QMK Environment"]},"2497":{"title":"2. Prepare Your Build Environment","titles":["Setting Up Your QMK Environment"]},"2498":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2499":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2500":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2501":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2502":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2503":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2504":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2505":{"title":"Community Packages","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2506":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2507":{"title":"3. Run QMK Setup","titles":["Setting Up Your QMK Environment"]},"2508":{"title":"4. Test Your Build Environment","titles":["Setting Up Your QMK Environment"]},"2509":{"title":"Creating Your Keymap","titles":[]},"2510":{"title":"Best Git Practices for Working with QMK","titles":[]},"2511":{"title":"Or, "How I Learned to Stop Worrying and Love Git."","titles":["Best Git Practices for Working with QMK"]},"2512":{"title":"Resolving Merge Conflicts","titles":[]},"2513":{"title":"Rebasing Your Changes","titles":["Resolving Merge Conflicts"]},"2514":{"title":"Resynchronizing an Out-of-Sync Git Branch","titles":[]},"2515":{"title":"Backing Up the Changes on Your Own Master Branch (Optional)","titles":["Resynchronizing an Out-of-Sync Git Branch"]},"2516":{"title":"Resynchronizing Your Branch","titles":["Resynchronizing an Out-of-Sync Git Branch"]},"2517":{"title":"Learning Resources","titles":[]},"2518":{"title":"QMK resources","titles":["Learning Resources"]},"2519":{"title":"Command Line resources","titles":["Learning Resources"]},"2520":{"title":"Text Editor resources","titles":["Learning Resources"]},"2521":{"title":"Git resources","titles":["Learning Resources"]},"2522":{"title":"Testing and Debugging","titles":[]},"2523":{"title":"Testing","titles":["Testing and Debugging"]},"2524":{"title":"Debugging","titles":["Testing and Debugging"]},"2525":{"title":"Your Fork's Master: Update Often, Commit Never","titles":[]},"2526":{"title":"Updating your master branch","titles":["Your Fork's Master: Update Often, Commit Never"]},"2527":{"title":"Making Changes","titles":["Your Fork's Master: Update Often, Commit Never"]},"2528":{"title":"Publishing Your Changes","titles":["Your Fork's Master: Update Often, Commit Never"]},"2529":{"title":"One Shot Keys","titles":[]},"2530":{"title":"Callbacks","titles":["One Shot Keys"]},"2531":{"title":"Setting up Eclipse for QMK Development","titles":[]},"2532":{"title":"Prerequisites","titles":[]},"2533":{"title":"Build Environment","titles":["Prerequisites"]},"2534":{"title":"Java","titles":["Prerequisites"]},"2535":{"title":"Install Eclipse and Its Plugins","titles":[]},"2536":{"title":"Download and Install Eclipse CDT","titles":["Install Eclipse and Its Plugins"]},"2537":{"title":"First Launch","titles":["Install Eclipse and Its Plugins"]},"2538":{"title":"Install the Necessary Plugins","titles":["Install Eclipse and Its Plugins"]},"2539":{"title":"Configure Eclipse for QMK","titles":[]},"2540":{"title":"Importing the Project","titles":["Configure Eclipse for QMK"]},"2541":{"title":"Build Your Keyboard","titles":["Configure Eclipse for QMK"]},"2542":{"title":"Setting up Visual Studio Code for QMK Development","titles":[]},"2543":{"title":"Set up VS Code","titles":[]},"2544":{"title":"Windows","titles":["Set up VS Code"]},"2545":{"title":"Prerequisites","titles":["Set up VS Code","Windows"]},"2546":{"title":"Installing VS Code","titles":["Set up VS Code","Windows"]},"2547":{"title":"MSYS2 Setup","titles":["Set up VS Code","Windows","Installing VS Code"]},"2548":{"title":"Every other Operating System","titles":["Set up VS Code"]},"2549":{"title":"Extensions","titles":["Set up VS Code"]},"2550":{"title":"Configure VS Code for QMK","titles":[]},"2551":{"title":"Configuring VS Code","titles":["Configure VS Code for QMK"]},"2552":{"title":"Debugging ARM MCUs with Visual Studio Code","titles":[]},"2553":{"title":"WeAct Blackpill (STM32F4x1)","titles":[]},"2554":{"title":"Pin Usage Limitations","titles":["WeAct Blackpill (STM32F4x1)"]},"2555":{"title":"Unusable pins","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2556":{"title":"Pins to be avoided","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2557":{"title":"Shared Usage","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2558":{"title":"Limited Usage","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2559":{"title":"Additional Information","titles":["WeAct Blackpill (STM32F4x1)"]},"2560":{"title":"Bootloader issues","titles":["WeAct Blackpill (STM32F4x1)","Additional Information"]},"2561":{"title":"Tiny UF2 Support","titles":["WeAct Blackpill (STM32F4x1)","Additional Information"]},"2562":{"title":"Arm/ChibiOS Early Initialization","titles":[]},"2563":{"title":"early_hardware_init_pre()","titles":["Arm/ChibiOS Early Initialization"]},"2564":{"title":"early_hardware_init_post()","titles":["Arm/ChibiOS Early Initialization"]},"2565":{"title":"board_init()","titles":["Arm/ChibiOS Early Initialization"]},"2566":{"title":"Proton C","titles":[]},"2567":{"title":"Features","titles":["Proton C"]},"2568":{"title":"Warnings","titles":["Proton C"]},"2569":{"title":"Manual Conversion","titles":["Proton C"]},"2570":{"title":"Raspberry Pi RP2040","titles":[]},"2571":{"title":"GPIO","titles":["Raspberry Pi RP2040"]},"2572":{"title":"Pin nomenclature","titles":["Raspberry Pi RP2040","GPIO"]},"2573":{"title":"Alternate functions","titles":["Raspberry Pi RP2040","GPIO"]},"2574":{"title":"Selecting hardware peripherals and drivers","titles":["Raspberry Pi RP2040"]},"2575":{"title":"I2C Driver","titles":["Raspberry Pi RP2040","Selecting hardware peripherals and drivers"]},"2576":{"title":"SPI Driver","titles":["Raspberry Pi RP2040","Selecting hardware peripherals and drivers"]},"2577":{"title":"UART Driver","titles":["Raspberry Pi RP2040","Selecting hardware peripherals and drivers"]},"2578":{"title":"Double-tap reset boot-loader entry","titles":["Raspberry Pi RP2040"]},"2579":{"title":"Pre-defined RP2040 boards","titles":["Raspberry Pi RP2040"]},"2580":{"title":"Generic Pro Micro RP2040","titles":["Raspberry Pi RP2040","Pre-defined RP2040 boards"]},"2581":{"title":"Generic RP2040 board","titles":["Raspberry Pi RP2040","Pre-defined RP2040 boards"]},"2582":{"title":"Split keyboard support","titles":["Raspberry Pi RP2040"]},"2583":{"title":"RP2040 second stage bootloader selection","titles":["Raspberry Pi RP2040"]},"2584":{"title":"RP2040 Community Edition","titles":["Raspberry Pi RP2040"]},"2585":{"title":"Choosing an Arm MCU","titles":[]},"2586":{"title":"Selecting an already-supported MCU","titles":["Choosing an Arm MCU"]},"2587":{"title":"STM32 families","titles":["Choosing an Arm MCU","Selecting an already-supported MCU"]},"2588":{"title":"Non-STM32 families","titles":["Choosing an Arm MCU","Selecting an already-supported MCU"]},"2589":{"title":"Adding support for a new STM32 MCU (for an existing family)","titles":["Choosing an Arm MCU"]},"2590":{"title":"Adding support for a new STM32 Family","titles":["Choosing an Arm MCU"]},"2591":{"title":"Adding support for a new MCU Family","titles":["Choosing an Arm MCU"]},"2592":{"title":"Adding Your Keyboard to QMK","titles":[]},"2593":{"title":"readme.md","titles":["Adding Your Keyboard to QMK"]},"2594":{"title":"info.json","titles":["Adding Your Keyboard to QMK"]},"2595":{"title":"Hardware Configuration","titles":["Adding Your Keyboard to QMK","info.json"]},"2596":{"title":"Matrix Configuration","titles":["Adding Your Keyboard to QMK","info.json"]},"2597":{"title":"Direct Pin Matrix","titles":["Adding Your Keyboard to QMK","info.json","Matrix Configuration"]},"2598":{"title":"Layout macros","titles":["Adding Your Keyboard to QMK","info.json"]},"2599":{"title":"Additional Configuration","titles":["Adding Your Keyboard to QMK"]},"2600":{"title":"Configuration Options","titles":["Adding Your Keyboard to QMK","Additional Configuration"]},"2601":{"title":"Build Options","titles":["Adding Your Keyboard to QMK","Additional Configuration"]},"2602":{"title":"PR checklists","titles":[]},"2603":{"title":"Requirements for all PRs","titles":["PR checklists"]},"2604":{"title":"Keymap PRs","titles":["PR checklists"]},"2605":{"title":"Keyboard PRs","titles":["PR checklists"]},"2606":{"title":"Core PRs","titles":["PR checklists"]},"2607":{"title":"Notes","titles":["PR checklists"]},"2608":{"title":"Review Process","titles":["PR checklists"]},"2609":{"title":"Example GPLv2 Header","titles":["PR checklists"]},"2610":{"title":"Quantum Keycodes","titles":[]},"2611":{"title":"QMK Keycodes","titles":["Quantum Keycodes"]},"2612":{"title":"Quantum Painter","titles":[]},"2613":{"title":"Quantum Painter Configuration","titles":["Quantum Painter"]},"2614":{"title":"Quantum Painter CLI Commands","titles":["Quantum Painter"]},"2615":{"title":"Quantum Painter Display Drivers","titles":["Quantum Painter"]},"2616":{"title":"Quantum Painter Drawing API","titles":["Quantum Painter"]},"2617":{"title":"Quantum Painter LVGL Integration","titles":[]},"2618":{"title":"Enabling LVGL","titles":["Quantum Painter LVGL Integration"]},"2619":{"title":"Quantum Painter LVGL API","titles":["Quantum Painter LVGL Integration"]},"2620":{"title":"Quantum Painter LVGL Attach","titles":["Quantum Painter LVGL Integration","Quantum Painter LVGL API"]},"2621":{"title":"Quantum Painter LVGL Detach","titles":["Quantum Painter LVGL Integration","Quantum Painter LVGL API"]},"2622":{"title":"Enabling/Disabling LVGL features","titles":["Quantum Painter LVGL Integration"]},"2623":{"title":"Changing the LVGL task frequency","titles":["Quantum Painter LVGL Integration"]},"2624":{"title":"QMK Font Format","titles":[]},"2625":{"title":"Block Header","titles":["QMK Font Format"]},"2626":{"title":"Font descriptor block","titles":["QMK Font Format"]},"2627":{"title":"ASCII glyph table","titles":["QMK Font Format"]},"2628":{"title":"Unicode glyph table","titles":["QMK Font Format"]},"2629":{"title":"Font palette block","titles":["QMK Font Format"]},"2630":{"title":"Font data block","titles":["QMK Font Format"]},"2631":{"title":"QMK Graphics Format","titles":[]},"2632":{"title":"Block Header","titles":["QMK Graphics Format"]},"2633":{"title":"Graphics descriptor block","titles":["QMK Graphics Format"]},"2634":{"title":"Frame offset block","titles":["QMK Graphics Format"]},"2635":{"title":"Frame descriptor block","titles":["QMK Graphics Format"]},"2636":{"title":"Frame palette block","titles":["QMK Graphics Format"]},"2637":{"title":"Frame delta block","titles":["QMK Graphics Format"]},"2638":{"title":"Frame data block","titles":["QMK Graphics Format"]},"2639":{"title":"QMK QGF/QFF RLE data schema","titles":[]},"2640":{"title":"List of Useful Core Functions To Make Your Keyboard Better","titles":[]},"2641":{"title":"(OLKB) Tri Layers","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2642":{"title":"update_tri_layer(x, y, z)","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers"]},"2643":{"title":"Example","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers","update_tri_layer(x, y, z)"]},"2644":{"title":"update_tri_layer_state(state, x, y, z)","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers"]},"2645":{"title":"Example","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers","update_tri_layer_state(state, x, y, z)"]},"2646":{"title":"Setting the Persistent Default Layer","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2647":{"title":"Resetting the keyboard","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2648":{"title":"Reset to bootloader","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2649":{"title":"Wiping the EEPROM (Persistent Storage)","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2650":{"title":"Tap random key","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2651":{"title":"Software Timers","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2652":{"title":"Supporting Your Keyboard in QMK Configurator","titles":[]},"2653":{"title":"How the Configurator Understands Keyboards","titles":["Supporting Your Keyboard in QMK Configurator"]},"2654":{"title":"Building the JSON file","titles":["Supporting Your Keyboard in QMK Configurator"]},"2655":{"title":"How the Configurator Programs Keys","titles":["Supporting Your Keyboard in QMK Configurator"]},"2656":{"title":"Issues and Hazards","titles":["Supporting Your Keyboard in QMK Configurator"]},"2657":{"title":"Workarounds","titles":["Supporting Your Keyboard in QMK Configurator","Issues and Hazards"]},"2658":{"title":"Non-rectangular keys","titles":["Supporting Your Keyboard in QMK Configurator","Issues and Hazards","Workarounds"]},"2659":{"title":"Vertically-offset keys","titles":["Supporting Your Keyboard in QMK Configurator","Issues and Hazards","Workarounds"]},"2660":{"title":"Glossary of QMK Terms","titles":[]},"2661":{"title":"ARM","titles":["Glossary of QMK Terms"]},"2662":{"title":"AVR","titles":["Glossary of QMK Terms"]},"2663":{"title":"AZERTY","titles":["Glossary of QMK Terms"]},"2664":{"title":"Backlight","titles":["Glossary of QMK Terms"]},"2665":{"title":"Bluetooth","titles":["Glossary of QMK Terms"]},"2666":{"title":"Bootloader","titles":["Glossary of QMK Terms"]},"2667":{"title":"Bootmagic","titles":["Glossary of QMK Terms"]},"2668":{"title":"C","titles":["Glossary of QMK Terms"]},"2669":{"title":"Colemak","titles":["Glossary of QMK Terms"]},"2670":{"title":"Compile","titles":["Glossary of QMK Terms"]},"2671":{"title":"Dvorak","titles":["Glossary of QMK Terms"]},"2672":{"title":"Dynamic Macro","titles":["Glossary of QMK Terms"]},"2673":{"title":"Eclipse","titles":["Glossary of QMK Terms"]},"2674":{"title":"Firmware","titles":["Glossary of QMK Terms"]},"2675":{"title":"git","titles":["Glossary of QMK Terms"]},"2676":{"title":"GitHub","titles":["Glossary of QMK Terms"]},"2677":{"title":"ISP","titles":["Glossary of QMK Terms"]},"2678":{"title":"hid_listen","titles":["Glossary of QMK Terms"]},"2679":{"title":"Keycode","titles":["Glossary of QMK Terms"]},"2680":{"title":"Key Down","titles":["Glossary of QMK Terms"]},"2681":{"title":"Key Up","titles":["Glossary of QMK Terms"]},"2682":{"title":"Keymap","titles":["Glossary of QMK Terms"]},"2683":{"title":"Layer","titles":["Glossary of QMK Terms"]},"2684":{"title":"Leader Key","titles":["Glossary of QMK Terms"]},"2685":{"title":"LED","titles":["Glossary of QMK Terms"]},"2686":{"title":"Make","titles":["Glossary of QMK Terms"]},"2687":{"title":"Matrix","titles":["Glossary of QMK Terms"]},"2688":{"title":"Macro","titles":["Glossary of QMK Terms"]},"2689":{"title":"MCU","titles":["Glossary of QMK Terms"]},"2690":{"title":"Modifier","titles":["Glossary of QMK Terms"]},"2691":{"title":"Mousekeys","titles":["Glossary of QMK Terms"]},"2692":{"title":"N-Key Rollover (NKRO)","titles":["Glossary of QMK Terms"]},"2693":{"title":"Oneshot Modifier","titles":["Glossary of QMK Terms"]},"2694":{"title":"ProMicro","titles":["Glossary of QMK Terms"]},"2695":{"title":"Pull Request","titles":["Glossary of QMK Terms"]},"2696":{"title":"QWERTY","titles":["Glossary of QMK Terms"]},"2697":{"title":"QWERTZ","titles":["Glossary of QMK Terms"]},"2698":{"title":"Rollover","titles":["Glossary of QMK Terms"]},"2699":{"title":"Scancode","titles":["Glossary of QMK Terms"]},"2700":{"title":"Space Cadet Shift","titles":["Glossary of QMK Terms"]},"2701":{"title":"Tap","titles":["Glossary of QMK Terms"]},"2702":{"title":"Tap Dance","titles":["Glossary of QMK Terms"]},"2703":{"title":"Teensy","titles":["Glossary of QMK Terms"]},"2704":{"title":"Underlight","titles":["Glossary of QMK Terms"]},"2705":{"title":"Unicode","titles":["Glossary of QMK Terms"]},"2706":{"title":"Unit Testing","titles":["Glossary of QMK Terms"]},"2707":{"title":"USB","titles":["Glossary of QMK Terms"]},"2708":{"title":"USB Host (or simply Host)","titles":["Glossary of QMK Terms"]},"2709":{"title":"Couldn't Find the Term You're Looking For?","titles":[]},"2710":{"title":"info.json Reference","titles":[]},"2711":{"title":"General Metadata","titles":["info.json Reference"]},"2712":{"title":"Hardware Configuration","titles":["info.json Reference"]},"2713":{"title":"Firmware Configuration","titles":["info.json Reference"]},"2714":{"title":"APA102","titles":["info.json Reference"]},"2715":{"title":"Audio","titles":["info.json Reference"]},"2716":{"title":"Backlight","titles":["info.json Reference"]},"2717":{"title":"Bluetooth","titles":["info.json Reference"]},"2718":{"title":"Bootmagic","titles":["info.json Reference"]},"2719":{"title":"Caps Word","titles":["info.json Reference"]},"2720":{"title":"Combo","titles":["info.json Reference"]},"2721":{"title":"DIP Switches","titles":["info.json Reference"]},"2722":{"title":"EEPROM","titles":["info.json Reference"]},"2723":{"title":"Encoder","titles":["info.json Reference"]},"2724":{"title":"Indicators","titles":["info.json Reference"]},"2725":{"title":"Layouts","titles":["info.json Reference"]},"2726":{"title":"Leader Key","titles":["info.json Reference"]},"2727":{"title":"LED Matrix","titles":["info.json Reference"]},"2728":{"title":"Matrix","titles":["info.json Reference"]},"2729":{"title":"Mouse Keys","titles":["info.json Reference"]},"2730":{"title":"One Shot","titles":["info.json Reference"]},"2731":{"title":"PS/2","titles":["info.json Reference"]},"2732":{"title":"QMK LUFA Bootloader","titles":["info.json Reference"]},"2733":{"title":"RGBLight","titles":["info.json Reference"]},"2734":{"title":"RGB Matrix","titles":["info.json Reference"]},"2735":{"title":"Secure","titles":["info.json Reference"]},"2736":{"title":"Split Keyboard","titles":["info.json Reference"]},"2737":{"title":"Stenography","titles":["info.json Reference"]},"2738":{"title":"USB","titles":["info.json Reference"]},"2739":{"title":"WS2812","titles":["info.json Reference"]},"2740":{"title":"Language-specific Keycodes","titles":[]},"2741":{"title":"Sendstring Support","titles":["Language-specific Keycodes"]},"2742":{"title":"Header Files","titles":["Language-specific Keycodes"]},"2743":{"title":"Squeezing the most out of AVR","titles":[]},"2744":{"title":"rules.mk Settings","titles":["Squeezing the most out of AVR"]},"2745":{"title":"config.h Settings","titles":["Squeezing the most out of AVR"]},"2746":{"title":"Audio Settings","titles":["Squeezing the most out of AVR"]},"2747":{"title":"Layers","titles":["Squeezing the most out of AVR"]},"2748":{"title":"Magic Functions","titles":["Squeezing the most out of AVR"]},"2749":{"title":"OLED tweaks","titles":["Squeezing the most out of AVR"]},"2750":{"title":"RGB Settings","titles":["Squeezing the most out of AVR"]},"2751":{"title":"Final Thoughts","titles":[]},"2752":{"title":"Getting Help","titles":[]},"2753":{"title":"Realtime Chat","titles":["Getting Help"]},"2754":{"title":"OLKB Subreddit","titles":["Getting Help"]},"2755":{"title":"GitHub Issues","titles":["Getting Help"]},"2756":{"title":"Feature support policies","titles":[]},"2757":{"title":"System Constraints","titles":["Feature support policies"]},"2758":{"title":"Deprecation & Removal Policy","titles":["Feature support policies"]},"2759":{"title":"How much advance notice will be given?","titles":["Feature support policies","Deprecation & Removal Policy"]},"2760":{"title":"How will deprecation be communicated?","titles":["Feature support policies","Deprecation & Removal Policy"]},"2761":{"title":"QMK Syllabus","titles":[]},"2762":{"title":"Beginning Topics","titles":[]},"2763":{"title":"Intermediate Topics","titles":[]},"2764":{"title":"Advanced Topics","titles":[]},"2765":{"title":"Tap-Hold Configuration Options","titles":[]},"2766":{"title":"Tapping Term","titles":["Tap-Hold Configuration Options"]},"2767":{"title":"Dynamic Tapping Term","titles":["Tap-Hold Configuration Options","Tapping Term"]},"2768":{"title":"Tap-Or-Hold Decision Modes","titles":["Tap-Hold Configuration Options"]},"2769":{"title":"Comparison","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2770":{"title":"Distinct taps (AABB)","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes","Comparison"]},"2771":{"title":"Nested tap (ABBA)","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes","Comparison"]},"2772":{"title":"Rolling keys (ABAB)","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes","Comparison"]},"2773":{"title":"Default Mode","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2774":{"title":"Permissive Hold","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2775":{"title":"Hold On Other Key Press","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2776":{"title":"Quick Tap Term","titles":["Tap-Hold Configuration Options"]},"2777":{"title":"Retro Tapping","titles":["Tap-Hold Configuration Options"]},"2778":{"title":"Retro Shift","titles":["Tap-Hold Configuration Options","Retro Tapping"]},"2779":{"title":"Why do we include the key record for the per key functions?","titles":["Tap-Hold Configuration Options"]},"2780":{"title":"Why are there no *_kb or *_user functions?!","titles":["Tap-Hold Configuration Options"]},"2781":{"title":"Understanding QMK's Code","titles":[]},"2782":{"title":"Startup","titles":["Understanding QMK's Code"]},"2783":{"title":"The Main Loop","titles":["Understanding QMK's Code"]},"2784":{"title":"Matrix Scanning","titles":["Understanding QMK's Code","The Main Loop"]},"2785":{"title":"Matrix to Physical Layout Map","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2786":{"title":"Keycode Assignment","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2787":{"title":"State Change Detection","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2788":{"title":"Process Record","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2789":{"title":"Unit Testing","titles":[]},"2790":{"title":"Google Test and Google Mock","titles":["Unit Testing"]},"2791":{"title":"Use of C++","titles":["Unit Testing"]},"2792":{"title":"Adding Tests for New or Existing Features","titles":["Unit Testing"]},"2793":{"title":"Running the Tests","titles":["Unit Testing"]},"2794":{"title":"Debugging the Tests","titles":["Unit Testing"]},"2795":{"title":"Full Integration Tests","titles":["Unit Testing"]},"2796":{"title":"Tracing Variables","titles":[]}},"dirtCount":0,"index":[["ąžerty",{"2":{"2742":1}}],["ąƚɂɻɣɉʣ",{"2":{"2614":2}}],["µs",{"2":{"2728":1}}],["↓",{"2":{"2654":3}}],["└──",{"2":{"2477":3}}],["└row1",{"2":{"2350":3}}],["├──",{"2":{"2477":4}}],["¥",{"2":{"2430":1}}],["✔6",{"2":{"2394":1}}],["✔5",{"2":{"2394":4}}],["✔4",{"2":{"2394":2}}],["✔3",{"2":{"2394":4}}],["✔2",{"2":{"2394":3}}],["✔",{"2":{"2394":447}}],["✔️",{"2":{"285":1,"692":12,"1121":4,"1140":1,"1141":1,"2153":2,"2570":10,"2582":6}}],["€",{"2":{"2358":1}}],["┌─┘3",{"2":{"2350":2}}],["┌─┤1",{"2":{"2350":2}}],["┌─┤0",{"2":{"2350":2}}],["─────┴────────┘",{"2":{"2350":8}}],["│",{"2":{"2350":25,"2477":2}}],["│└row0",{"2":{"2350":3}}],["ಠ",{"2":{"2220":2}}],["🇺🇦",{"2":{"2220":1}}],["🎉👍",{"2":{"284":1,"550":1}}],["🤣",{"2":{"2220":1}}],["≤",{"2":{"2220":4}}],["æ",{"2":{"2220":2}}],["å",{"2":{"2220":2,"2740":1}}],["ツ",{"2":{"2219":1}}],["ћ",{"2":{"2219":1}}],["□",{"2":{"1632":25}}],["■",{"2":{"1632":15}}],["ñ",{"2":{"1536":1}}],["⇒",{"2":{"1488":3,"1489":3}}],["\\t22",{"2":{"2592":1}}],["\\t24",{"2":{"1442":1}}],["\\t51",{"2":{"2592":1}}],["\\t50",{"2":{"2592":1}}],["\\t1",{"2":{"2592":2}}],["\\t12",{"2":{"1442":1}}],["\\tmod",{"2":{"1703":1}}],["\\t~0",{"2":{"1703":1}}],["\\tkc",{"2":{"1703":2}}],["\\tko",{"2":{"1703":2}}],["\\t\\t",{"2":{"1992":1}}],["\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tkc",{"2":{"1703":4}}],["\\t\\tmod",{"2":{"1703":1}}],["\\t\\treturn",{"2":{"1593":1}}],["\\tif",{"2":{"1593":1}}],["\\t",{"2":{"1442":1,"1593":1,"1701":1,"1703":6,"1704":2,"1992":1}}],["\\t36",{"2":{"1442":1}}],["✅",{"2":{"1373":1,"2153":1}}],["^ge^s^s^w^c",{"2":{"2192":1}}],["^3+0",{"2":{"1937":1}}],["^=",{"2":{"1369":1}}],["^",{"2":{"1362":1,"1979":1,"2350":1,"2394":1,"2417":1,"2425":1,"2438":1}}],["ひらがな",{"2":{"1317":1}}],["変換",{"2":{"1317":1}}],["無変換",{"2":{"1317":1}}],["ç",{"0":{"1314":1}}],["²",{"2":{"635":1}}],["¹",{"2":{"635":1,"2540":1}}],["être",{"2":{"559":1}}],["¯",{"2":{"433":2}}],["☐",{"2":{"433":1}}],["¬",{"2":{"433":2}}],["☒",{"2":{"405":1,"433":1,"2332":2}}],["ψ",{"2":{"370":4,"388":1,"389":5,"390":5,"391":5,"393":2,"394":2,"395":3,"396":1,"397":4,"401":4,"405":1,"414":1,"415":1,"417":1,"423":1,"424":1,"433":1,"2316":5,"2332":1,"2461":1,"2592":5,"2711":2}}],["\`action",{"2":{"2208":1}}],["\`all\`",{"2":{"395":1}}],["\`layer",{"2":{"2208":2}}],["\`lalt\`",{"2":{"2208":1}}],["\`length\`",{"2":{"1925":1}}],["\`led",{"2":{"1767":1}}],["\`tapping",{"2":{"2207":1}}],["\`esc\`",{"2":{"2207":1}}],["\`finished\`",{"2":{"2208":2}}],["\`ff\`",{"2":{"2207":2}}],["\`f\`",{"2":{"2207":1}}],["\`buffer\`",{"2":{"2207":1}}],["\`reset\`",{"2":{"2208":2}}],["\`rgb",{"2":{"1990":1}}],["\`raw",{"2":{"1925":1}}],["\`data\`",{"2":{"1925":1}}],["\`develop\`",{"2":{"317":1}}],["\`",{"2":{"1556":1,"1704":3,"2208":7,"2440":3,"2441":3,"2636":12}}],["\`some",{"2":{"1556":1}}],["\`start\`",{"2":{"465":1}}],["\`kc",{"2":{"1381":1}}],["\`qk",{"2":{"624":1,"1381":1}}],["\`qmk",{"2":{"365":2,"366":2,"397":1}}],["\`offset\`",{"2":{"465":1}}],["\`cd\`",{"2":{"389":1,"390":1,"391":1,"2316":1,"2592":1}}],["\`master\`",{"2":{"317":1,"2607":3}}],["❌",{"2":{"285":1,"692":6,"1373":3}}],["⭕",{"2":{"285":1,"692":4}}],["😃",{"2":{"2303":1,"2709":1}}],["💩",{"2":{"2220":1}}],["🐍",{"2":{"2219":1}}],["👍🎉",{"2":{"284":1,"550":1}}],["😉",{"2":{"123":1}}],["→",{"2":{"176":3,"626":1,"627":2,"628":1,"2221":2}}],["麦田",{"2":{"145":1}}],["|0",{"2":{"2653":1}}],["|ent|",{"2":{"2653":1}}],["|3",{"2":{"2653":1}}],["|2",{"2":{"2653":1}}],["|1",{"2":{"2653":1}}],["|6",{"2":{"2653":1}}],["|5",{"2":{"2653":1}}],["|4",{"2":{"2653":1}}],["|9",{"2":{"2653":1}}],["|8",{"2":{"2653":1}}],["|7",{"2":{"2653":1}}],["|nlk|",{"2":{"2653":1}}],["|ing",{"2":{"1901":1}}],["|mod",{"2":{"1715":1,"2444":5,"2777":1}}],["|=",{"2":{"1483":2,"1894":2,"1958":1}}],["||",{"2":{"1381":1,"1483":1,"1555":1,"1917":1,"2207":2,"2208":1,"2266":9,"2587":1}}],["|kc",{"2":{"621":3}}],["|long",{"2":{"621":1}}],["|",{"2":{"116":1,"621":4,"659":1,"707":4,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1123":20,"1126":32,"1129":32,"1148":1,"1169":12,"1185":2,"1276":1,"1337":2,"1362":18,"1372":1,"1383":26,"1386":13,"1422":2,"1488":19,"1632":9,"1706":3,"1859":1,"1860":1,"1892":4,"1894":1,"1896":8,"1916":1,"2266":1,"2303":2,"2350":28,"2352":6,"2386":6,"2394":2,"2417":1,"2427":2,"2430":1,"2438":1,"2440":8,"2441":14,"2449":1,"2476":1,"2653":24,"2654":11,"2773":72,"2774":48,"2775":24,"2777":22}}],["5+",{"2":{"1892":2}}],["5=64",{"2":{"1860":1}}],["59",{"2":{"1616":1}}],["58s",{"2":{"2386":1}}],["587968d6cbc2b0e1c7147540872f2a67e59ca18b",{"2":{"2303":1}}],["58",{"2":{"1616":1,"1937":1}}],["54",{"2":{"1616":1}}],["536",{"2":{"2614":1}}],["535",{"2":{"2132":1}}],["53",{"2":{"1616":1,"1937":1}}],["56",{"2":{"1477":1,"1616":1,"1937":1,"2492":1}}],["5625",{"2":{"529":1}}],["575",{"2":{"1671":3}}],["57",{"2":{"1616":1,"2303":1}}],["577ch",{"2":{"1324":1}}],["577c",{"2":{"1324":1}}],["57600",{"2":{"1136":1,"1238":1}}],["5kb",{"2":{"2749":1}}],["5kro",{"2":{"1315":1}}],["5kω",{"2":{"1126":1}}],["5u",{"2":{"1289":1}}],["55",{"2":{"788":1,"1616":1}}],["55k",{"2":{"788":1}}],["51",{"2":{"1616":1,"1831":1,"1937":1,"2410":1,"2592":1,"2650":1}}],["512",{"2":{"694":1,"1858":1,"2180":1}}],["5173",{"2":{"402":1,"558":1}}],["5v",{"2":{"629":2,"630":1,"1609":1,"1669":1,"2152":1,"2171":3,"2368":1,"2371":2,"2383":2,"2558":1,"2567":1,"2568":2,"2569":3,"2571":1}}],["52583",{"2":{"1326":1}}],["525",{"2":{"674":1}}],["52",{"2":{"181":2,"1616":1,"2650":1}}],["5291",{"2":{"114":1}}],["5",{"0":{"541":1,"2197":1,"2208":1},"1":{"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"176":1,"188":1,"191":1,"199":3,"211":2,"222":2,"249":1,"266":1,"313":1,"315":1,"350":2,"491":1,"496":1,"499":1,"502":3,"511":1,"530":2,"598":1,"633":1,"635":4,"674":1,"789":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1091":1,"1092":2,"1136":1,"1214":3,"1263":2,"1365":1,"1372":1,"1373":1,"1394":1,"1407":1,"1420":1,"1442":1,"1477":1,"1536":1,"1541":1,"1568":2,"1572":2,"1614":2,"1615":1,"1616":1,"1632":1,"1650":1,"1652":1,"1673":3,"1715":1,"1752":1,"1754":1,"1763":1,"1768":1,"1831":31,"1836":1,"1839":2,"1842":1,"1859":2,"1870":1,"1872":3,"1912":1,"1921":1,"1937":1,"1940":1,"1943":1,"1948":1,"1984":1,"1992":1,"1997":3,"2074":3,"2078":1,"2098":1,"2143":1,"2166":1,"2168":3,"2186":1,"2191":1,"2193":4,"2194":1,"2212":2,"2264":2,"2270":1,"2272":1,"2277":1,"2303":3,"2378":1,"2394":9,"2404":3,"2410":31,"2411":2,"2419":3,"2425":2,"2430":2,"2433":2,"2446":1,"2529":1,"2536":1,"2614":2,"2615":2,"2632":2,"2635":3,"2654":2,"2713":1,"2719":1,"2727":1,"2728":2,"2734":1,"2735":1,"2736":1,"2749":1,"2777":1,"2784":1}}],["5000",{"2":{"1541":1,"1842":1,"2108":1,"2529":1,"2719":1,"2735":1}}],["500",{"2":{"502":2,"505":1,"597":2,"788":2,"1394":1,"1468":1,"1935":1,"1947":1,"1949":1,"2082":4,"2166":1,"2168":1,"2738":2}}],["500ms",{"2":{"176":1,"1713":1,"2168":1}}],["50",{"2":{"401":1,"703":1,"1258":1,"1453":1,"1555":1,"1616":26,"1855":1,"1940":2,"1950":2,"1988":1,"2078":3,"2205":4,"2720":2,"2767":6}}],["50ms",{"2":{"160":1,"1551":1,"2767":1}}],["5050",{"0":{"1935":1},"2":{"118":1,"1935":2}}],["5x7",{"2":{"154":2,"253":2}}],["5x8",{"2":{"154":4,"1627":2}}],["5x6",{"2":{"154":4,"222":1}}],["5x13",{"2":{"114":1,"249":1}}],["5ms",{"2":{"119":2,"1859":1,"2414":2,"2767":3}}],["$5",{"2":{"2694":1}}],["$path",{"2":{"2507":1}}],["$home",{"2":{"2482":1,"2483":1,"2507":4}}],["$qmk",{"2":{"360":3}}],["$",{"2":{"111":1,"176":1,"292":1,"314":2,"315":1,"317":3,"370":9,"388":1,"389":1,"391":1,"393":1,"394":1,"395":1,"396":1,"401":2,"405":2,"414":1,"415":1,"417":1,"423":1,"424":1,"514":1,"530":1,"655":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1170":1,"1181":1,"1275":4,"1414":2,"1421":2,"1422":2,"2267":1,"2288":1,"2316":1,"2332":2,"2339":9,"2394":1,"2417":1,"2425":1,"2438":1,"2476":5,"2482":1,"2483":1,"2513":2,"2516":2,"2526":1,"2552":2,"2592":1,"2604":1,"2614":5}}],["+size",{"2":{"2605":1}}],["++col",{"2":{"1996":1}}],["++row",{"2":{"1996":1}}],["++i",{"2":{"1485":1,"2616":2}}],["+6",{"2":{"1831":1,"2410":1}}],["+4",{"2":{"1831":1,"2410":1}}],["+3",{"2":{"1831":1,"2410":1,"2557":1}}],["+2",{"2":{"1831":1,"2410":1}}],["+1",{"2":{"1831":1,"2410":1}}],["+127",{"2":{"1670":1}}],["+7",{"2":{"1440":1}}],["+5v",{"2":{"2379":1}}],["+5",{"2":{"1440":1,"1831":1,"2410":1}}],["+=",{"2":{"234":9,"513":4,"514":1,"564":1,"655":2,"730":3,"756":3,"785":3,"817":3,"849":3,"884":3,"918":3,"952":3,"986":3,"1020":3,"1054":3,"1088":3,"1144":2,"1170":2,"1181":3,"1291":2,"1367":1,"1414":3,"1421":1,"1422":1,"1555":1,"1565":1,"1960":2,"2339":2,"2474":1,"2612":16,"2615":13,"2616":2,"2767":1}}],["+cleanup",{"2":{"199":1}}],["+",{"0":{"1339":2,"1340":1},"2":{"99":2,"134":2,"160":1,"176":3,"199":2,"222":1,"236":1,"292":2,"349":1,"582":1,"685":9,"1123":8,"1126":8,"1127":1,"1129":8,"1130":1,"1271":4,"1362":18,"1381":1,"1383":15,"1384":1,"1386":8,"1453":1,"1482":1,"1483":3,"1488":42,"1537":1,"1538":4,"1676":1,"1693":4,"1694":4,"1701":1,"1703":11,"1704":4,"1706":2,"1711":1,"1713":1,"1714":1,"1722":1,"1768":1,"1892":4,"1907":6,"1910":16,"1911":9,"1927":2,"1950":3,"1956":4,"1987":2,"1992":1,"2077":2,"2137":1,"2168":1,"2208":1,"2234":1,"2303":2,"2350":8,"2352":20,"2394":2,"2417":1,"2427":1,"2433":1,"2438":1,"2441":2,"2551":8,"2612":22,"2626":1,"2627":1,"2633":1,"2635":1,"2650":1,"2653":10,"2654":2,"2766":1,"2767":1,"2773":36,"2774":24,"2775":12,"2777":8}}],["≈10ms",{"2":{"94":1}}],["⚠",{"2":{"70":23,"391":1,"433":1,"2316":1}}],[">line",{"2":{"2616":1}}],[">width",{"2":{"2616":2}}],[">>>>>>>",{"2":{"2513":1}}],[">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>",{"2":{"2492":2}}],[">>>",{"2":{"2492":3}}],[">0",{"2":{"2441":1}}],[">1",{"2":{"2441":2}}],[">|",{"2":{"2352":4}}],[">height",{"2":{"2616":2}}],[">held",{"2":{"2206":5}}],[">hold",{"2":{"2206":2}}],[">interrupted",{"2":{"2206":1,"2207":3,"2208":1}}],[">init",{"2":{"1767":1,"1990":1}}],[">pressed",{"2":{"2206":1,"2207":3,"2208":1,"2209":1}}],[">user",{"2":{"2206":1}}],[">state",{"2":{"2206":2}}],[">s2m",{"2":{"2168":1}}],[">count",{"2":{"2204":1,"2205":2,"2206":1,"2207":3,"2208":2,"2209":2}}],[">m2s",{"2":{"2168":1}}],[">keys",{"2":{"1555":2}}],[">keycode",{"2":{"1555":5}}],[">=",{"2":{"1483":2,"1555":1,"1996":1,"2204":1,"2205":1,"2266":10,"2639":1}}],[">tap",{"2":{"1289":2,"1483":2,"2206":3,"2452":1,"2453":3,"2454":1}}],[">event",{"2":{"534":6,"572":2,"588":1,"1289":4,"1339":1,"1340":1,"1369":4,"1381":1,"1396":4,"1397":2,"1402":1,"1412":1,"1421":2,"1422":1,"1672":5,"1830":1,"1868":2,"1918":2,"1919":3,"1921":2,"1958":1,"1959":1,"1960":1,"1979":1,"2116":1,"2206":1,"2452":1,"2453":3,"2454":2,"2643":2,"2767":4}}],[">",{"2":{"70":1,"371":1,"414":2,"415":2,"417":1,"423":1,"424":2,"588":1,"1290":6,"1362":1,"1381":2,"1412":1,"1417":1,"1477":10,"1918":1,"1919":1,"1950":1,"1996":2,"1997":1,"2168":1,"2266":2,"2303":1,"2441":3,"2474":2,"2609":1,"2616":6}}],["~1",{"2":{"2749":1}}],["~175ms",{"2":{"2209":1}}],["~400",{"2":{"2744":1}}],["~5",{"2":{"2556":1}}],["~$6",{"2":{"2553":1,"2751":1}}],["~$",{"2":{"2303":4}}],["~mouse",{"2":{"1958":1}}],["~mod",{"2":{"1483":1,"1916":1}}],["~0x05",{"2":{"2638":1}}],["~0x04",{"2":{"2637":1}}],["~0x03",{"2":{"2636":1}}],["~0x02",{"2":{"2628":1,"2635":1}}],["~0x01",{"2":{"2627":1,"2634":1}}],["~0x00",{"2":{"2626":1,"2633":1}}],["~0",{"2":{"1703":4}}],["~",{"2":{"70":3,"365":1,"366":1,"367":1,"370":4,"389":1,"390":1,"391":1,"401":1,"450":2,"451":1,"530":1,"1601":1,"1603":1,"1704":1,"1706":2,"1894":1,"1896":3,"1916":1,"2316":1,"2394":2,"2417":1,"2427":2,"2438":1,"2474":5,"2475":1,"2476":1,"2477":1,"2516":2}}],["~22k",{"2":{"2556":1}}],["~2",{"2":{"6":1,"10":1}}],["7da94ac5",{"2":{"2303":1}}],["7kohm",{"2":{"2158":1}}],["7kω",{"2":{"2155":1}}],["7k",{"2":{"1892":3}}],["7k25",{"2":{"1091":1}}],["7=256",{"2":{"1860":1}}],["79",{"2":{"1616":1,"1937":1}}],["7949",{"2":{"65":1}}],["78",{"2":{"1616":1}}],["777",{"2":{"2614":1}}],["77",{"2":{"1616":1}}],["73",{"2":{"1616":1,"1937":1}}],["73b4",{"2":{"315":1}}],["7172",{"2":{"2392":1}}],["71",{"2":{"1477":1,"1616":1}}],["7114",{"2":{"32":1}}],["74",{"2":{"1477":1,"1616":1}}],["72mhz",{"2":{"2567":1}}],["72",{"2":{"654":1,"1087":1,"1616":1,"1762":1,"1983":1}}],["7capi8w",{"2":{"623":1}}],["7u",{"2":{"266":1,"705":1}}],["7010",{"2":{"2288":2}}],["7040",{"2":{"2288":1}}],["7000h",{"2":{"1324":2}}],["70",{"2":{"462":1,"556":1,"1143":1,"1291":1,"1616":1,"1937":1,"1983":1,"2492":1}}],["70keys",{"2":{"241":2}}],["70ec",{"2":{"114":1,"160":1}}],["76",{"2":{"453":1,"455":1,"1477":1,"1616":1,"1831":1,"1937":1,"2410":1}}],["76k",{"2":{"211":1}}],["7648",{"2":{"49":1}}],["750",{"2":{"2271":1,"2383":1}}],["750ms",{"2":{"1616":1}}],["75000",{"2":{"1136":1}}],["75kbps",{"2":{"511":1,"2166":1}}],["75",{"2":{"211":2,"266":1,"385":1,"1477":1,"1616":1}}],["7521",{"2":{"134":1}}],["7splus",{"2":{"154":2}}],["7skb",{"2":{"154":2,"211":1}}],["7",{"2":{"70":1,"76":1,"160":1,"172":1,"173":1,"211":1,"236":1,"313":1,"351":1,"364":1,"366":1,"455":1,"507":1,"530":2,"556":1,"633":1,"635":4,"686":1,"701":3,"707":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"732":1,"758":1,"787":1,"819":1,"851":1,"853":1,"886":1,"887":1,"920":1,"921":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1091":1,"1127":2,"1130":2,"1146":1,"1183":1,"1235":4,"1316":2,"1442":1,"1477":1,"1568":2,"1614":1,"1615":1,"1616":1,"1632":1,"1650":1,"1652":1,"1673":3,"1831":5,"1839":2,"1859":2,"1860":3,"1872":3,"1937":1,"1940":1,"1956":1,"2076":1,"2098":1,"2186":1,"2191":1,"2193":5,"2271":1,"2273":1,"2293":1,"2392":1,"2394":8,"2404":3,"2410":5,"2411":2,"2419":3,"2425":2,"2430":4,"2433":2,"2446":1,"2513":1,"2616":3,"2635":1,"2654":2}}],["x1",{"2":{"2616":1}}],["x1b",{"2":{"2113":1}}],["x=0",{"2":{"2616":1}}],["xbps",{"2":{"2470":1,"2503":1}}],["xl",{"2":{"2392":1}}],["x7f",{"2":{"2113":1}}],["x0",{"2":{"2616":1}}],["x0a",{"2":{"2113":1}}],["x09",{"2":{"2113":1}}],["x08",{"2":{"1632":1,"2113":1}}],["xmas",{"2":{"2072":1,"2415":1}}],["xml",{"0":{"286":1}}],["x+",{"2":{"1940":1}}],["x^2",{"2":{"1937":1}}],["xor",{"2":{"1378":2}}],["xorg",{"2":{"1320":1}}],["xo87",{"2":{"211":1}}],["xfer",{"2":{"1317":1}}],["xzy",{"2":{"249":1}}],["xprintf",{"2":{"2301":3}}],["xpm",{"2":{"324":3,"325":2,"326":1,"328":1}}],["xpack",{"0":{"324":1},"2":{"325":1,"328":1,"331":1}}],["xp",{"2":{"219":1}}],["xtap",{"2":{"2207":5}}],["xtx",{"2":{"211":1}}],["xt",{"2":{"211":4}}],["xt8x",{"2":{"211":1}}],["xt60",{"2":{"211":2}}],["x2",{"2":{"211":1,"2767":4}}],["x26",{"2":{"105":8,"272":4,"450":2,"588":2,"1340":1,"1422":2,"1467":5,"1483":6,"1534":1,"1555":3,"1587":6,"1701":1,"1703":6,"1704":2,"1830":2,"1853":1,"1894":1,"1896":5,"1911":2,"1916":2,"1917":1,"1950":2,"1958":1,"1959":2,"1987":11,"1996":7,"2080":3,"2168":2,"2177":1,"2195":2,"2206":8,"2266":25,"2452":2,"2453":6,"2454":2,"2530":8,"2796":1}}],["xs60",{"2":{"197":2,"199":1}}],["xy",{"2":{"176":1}}],["xicolinguada",{"2":{"2309":1}}],["xip",{"2":{"174":1,"191":1}}],["xiudi",{"2":{"102":9,"114":1,"211":1,"253":2,"266":1}}],["xap",{"2":{"145":1,"199":1,"211":1}}],["x86",{"2":{"143":1,"2390":2,"2500":1}}],["xealousbrown",{"2":{"114":1}}],["xelus22",{"2":{"58":1}}],["xelus",{"0":{"58":1},"2":{"58":4,"197":2,"211":8,"277":1}}],["xd96",{"2":{"102":2}}],["xd87",{"2":{"102":2}}],["xd84pro",{"2":{"102":2}}],["xd84",{"2":{"102":2}}],["xd68",{"2":{"102":2}}],["xd60",{"2":{"93":1,"102":2}}],["xd004",{"2":{"102":2,"211":1,"253":2}}],["xd002",{"2":{"102":2,"114":1}}],["xd75",{"2":{"64":1,"102":2,"266":1}}],["x3c",{"2":{"55":2,"105":8,"292":2,"314":1,"317":1,"370":11,"371":13,"375":4,"377":1,"393":2,"394":2,"405":1,"416":3,"438":6,"439":4,"446":2,"465":2,"564":1,"686":2,"687":2,"690":2,"701":2,"1132":1,"1133":1,"1366":1,"1381":1,"1383":3,"1385":2,"1386":6,"1417":5,"1422":1,"1483":1,"1485":1,"1534":2,"1555":1,"1587":8,"1706":2,"1715":2,"1767":2,"1853":1,"1854":1,"1894":8,"1896":32,"1901":2,"1919":1,"1950":1,"1967":3,"1972":1,"1990":2,"1996":5,"1997":1,"2169":2,"2177":1,"2266":10,"2267":2,"2268":4,"2271":3,"2273":2,"2274":2,"2275":1,"2278":1,"2280":1,"2281":1,"2282":1,"2288":3,"2291":2,"2348":4,"2386":4,"2392":1,"2441":1,"2442":2,"2460":1,"2461":3,"2464":2,"2484":2,"2485":3,"2491":2,"2493":2,"2508":1,"2513":14,"2516":3,"2526":2,"2609":1,"2616":6,"2627":6,"2651":1,"2777":2}}],["x",{"0":{"108":1,"1334":1,"1583":1,"2642":1,"2644":1},"1":{"1584":1,"2643":1,"2645":1},"2":{"49":1,"70":1,"108":1,"113":2,"114":5,"211":3,"219":1,"222":1,"249":2,"266":2,"313":1,"314":1,"359":5,"473":1,"530":2,"1169":1,"1332":1,"1362":1,"1378":4,"1398":5,"1400":1,"1548":2,"1555":1,"1568":1,"1571":2,"1575":2,"1583":1,"1584":2,"1632":24,"1670":1,"1671":1,"1672":2,"1693":1,"1763":6,"1768":2,"1840":1,"1841":1,"1859":2,"1860":2,"1900":1,"1903":2,"1937":5,"1939":3,"1940":2,"1943":2,"1944":4,"1950":4,"1952":5,"1953":5,"1956":3,"1959":2,"1960":3,"1962":2,"1963":2,"1980":1,"1984":6,"1992":2,"2072":1,"2090":2,"2113":4,"2117":1,"2171":1,"2181":2,"2203":1,"2207":18,"2208":1,"2222":1,"2265":2,"2300":1,"2305":3,"2339":2,"2350":21,"2394":3,"2415":1,"2423":1,"2425":3,"2446":1,"2453":4,"2572":1,"2598":16,"2615":3,"2616":13,"2642":3,"2644":3,"2653":1,"2654":19,"2725":3,"2727":2,"2734":2,"2773":2,"2796":1}}],["xxxx",{"2":{"2074":1,"2605":4}}],["xxxxxxx",{"2":{"2394":1,"2434":1,"2444":2,"2653":1}}],["xxxxx",{"2":{"1597":1}}],["xxx",{"2":{"201":2,"703":4,"1373":1,"1708":1,"1709":1,"1715":2,"2653":5,"2777":2}}],["xx",{"2":{"28":1}}],["jdk",{"2":{"2534":1}}],["jre",{"2":{"2534":1}}],["jx",{"2":{"2300":1}}],["jekyll",{"2":{"2342":1}}],["jerky",{"2":{"1842":1,"1893":1}}],["jels60v2",{"2":{"222":1}}],["jellybean",{"2":{"114":1,"199":1,"222":1,"1987":3,"2750":1}}],["j8",{"2":{"1422":1}}],["jkl",{"2":{"1565":1}}],["jk",{"2":{"266":1,"1548":4,"1565":1}}],["jkeys",{"2":{"168":1,"211":2}}],["jm60",{"2":{"241":2}}],["jig",{"2":{"2189":1}}],["jian",{"2":{"236":1}}],["jis",{"0":{"1317":1},"2":{"222":1,"1305":2,"1317":1,"1392":1,"2430":9}}],["jisplit89",{"2":{"154":2}}],["jb",{"2":{"211":1}}],["jf",{"2":{"211":1,"249":1}}],["jsmith",{"2":{"2592":1}}],["jsjson",{"2":{"1937":1}}],["js",{"2":{"324":1,"1673":32,"1678":1,"1925":1,"1937":1,"2404":32}}],["jscotto",{"2":{"199":1,"217":5,"222":1}}],["json\`",{"2":{"397":1}}],["json>",{"2":{"370":1,"371":1,"2485":1}}],["json2c",{"0":{"379":1},"2":{"211":2,"379":1}}],["jsons",{"2":{"114":1}}],["jsonschema",{"2":{"76":1,"114":1,"145":1,"191":2,"222":1,"282":1,"607":1,"609":2,"2710":1}}],["json",{"0":{"120":1,"262":1,"313":1,"377":1,"545":1,"608":1,"1391":1,"2337":1,"2475":1,"2594":1,"2654":1,"2710":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"1392":1,"1393":1,"1394":1,"2595":1,"2596":1,"2597":1,"2598":1,"2711":1,"2712":1,"2713":1,"2714":1,"2715":1,"2716":1,"2717":1,"2718":1,"2719":1,"2720":1,"2721":1,"2722":1,"2723":1,"2724":1,"2725":1,"2726":1,"2727":1,"2728":1,"2729":1,"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1,"2737":1,"2738":1,"2739":1},"2":{"70":32,"73":1,"75":1,"76":6,"109":1,"110":1,"111":1,"112":1,"114":5,"120":3,"132":2,"134":3,"152":1,"160":1,"169":3,"176":2,"184":4,"189":1,"191":8,"198":1,"199":5,"201":5,"211":22,"213":2,"222":1,"224":2,"232":1,"236":10,"238":1,"249":27,"262":2,"266":30,"277":3,"292":1,"306":2,"312":1,"313":1,"314":5,"317":4,"370":1,"374":4,"377":6,"378":2,"380":1,"384":2,"388":4,"389":3,"390":3,"391":2,"393":2,"394":2,"401":2,"405":4,"441":2,"496":3,"519":1,"521":1,"522":3,"525":1,"526":1,"527":2,"529":3,"530":2,"533":1,"541":5,"545":2,"605":1,"606":3,"607":1,"608":1,"609":1,"610":4,"611":3,"613":1,"614":1,"621":1,"1255":1,"1383":1,"1391":2,"1392":2,"1897":3,"1925":1,"2282":1,"2297":1,"2316":3,"2335":1,"2475":2,"2476":5,"2477":1,"2478":1,"2479":4,"2480":1,"2485":2,"2547":2,"2551":2,"2552":2,"2594":1,"2595":2,"2596":2,"2597":1,"2598":1,"2599":1,"2605":9,"2653":1,"2654":10,"2655":3,"2656":2,"2659":2,"2710":4,"2713":1,"2725":2,"2727":1,"2728":1,"2733":1,"2734":1,"2764":1}}],["jnao",{"2":{"154":2}}],["jtagen",{"2":{"1331":1}}],["jtag",{"0":{"1331":1},"2":{"145":1,"1331":4,"2382":4,"2387":1,"2677":1}}],["jolly",{"2":{"2392":1}}],["jonasfasler",{"2":{"2309":1}}],["jones",{"2":{"222":1}}],["john",{"2":{"1473":3,"1548":2,"2592":1}}],["joint",{"2":{"2311":3,"2312":1}}],["joints",{"2":{"2309":2,"2312":1,"2318":3}}],["join",{"2":{"485":1,"609":1,"613":1,"2311":1,"2388":1}}],["job",{"0":{"307":1,"308":1,"309":1,"314":1,"523":1,"524":1,"525":1},"2":{"304":3,"306":1,"307":2,"314":1,"315":1,"316":2,"521":2,"522":5,"523":1,"524":1,"525":1,"529":1,"1487":1,"2478":1}}],["jobs>",{"2":{"370":2,"371":2}}],["jobs",{"2":{"303":4,"370":3,"396":1,"411":1,"520":1,"526":1,"2476":1}}],["joshajohnson",{"2":{"241":2}}],["jopr",{"2":{"191":1}}],["journey",{"2":{"133":1}}],["joysticks",{"2":{"49":1,"118":2,"277":1,"1937":1}}],["joystick",{"0":{"1668":1,"1675":1,"1677":1,"1679":1,"1680":1,"1682":1,"1684":1,"1687":1,"1937":1,"2404":1},"1":{"1669":1,"1670":1,"1671":1,"1672":1,"1673":1,"1674":1,"1675":1,"1676":2,"1677":1,"1678":2,"1679":1,"1680":1,"1681":2,"1682":1,"1683":2,"1684":1,"1685":2,"1686":2,"1687":1,"1688":2},"2":{"49":7,"63":1,"114":1,"118":1,"145":2,"160":1,"183":5,"188":1,"191":4,"199":1,"231":3,"236":1,"249":3,"1668":2,"1669":2,"1670":3,"1671":7,"1672":8,"1673":32,"1675":1,"1676":2,"1679":1,"1937":21,"2404":33,"2788":1}}],["james",{"2":{"2789":1}}],["japan",{"2":{"1305":1}}],["japanese",{"2":{"176":1,"1317":1,"2742":3}}],["jacks",{"2":{"2154":1,"2156":1}}],["jackhumbert",{"2":{"624":1,"1477":1}}],["jack",{"2":{"624":1,"1302":3,"1413":3,"1418":1}}],["jacky",{"2":{"67":3,"72":1,"207":4,"211":2}}],["jan",{"2":{"463":1,"464":1,"465":2}}],["jane",{"2":{"122":2,"134":1}}],["java",{"0":{"329":1,"2534":1},"2":{"329":1,"1925":1,"2531":1,"2534":3}}],["jay60",{"2":{"211":1}}],["jaykeeb",{"2":{"207":1,"217":1}}],["ja",{"2":{"199":1}}],["jj50",{"2":{"102":2,"253":2,"266":1}}],["jj4x4",{"2":{"102":2}}],["jj40",{"2":{"102":2,"253":2,"266":1}}],["j",{"2":{"65":1,"211":1,"219":2,"249":2,"266":2,"313":1,"360":1,"370":4,"371":2,"396":2,"411":2,"530":2,"1548":1,"1565":2,"1910":1,"2207":1,"2220":4,"2222":2,"2288":1,"2394":3,"2423":2,"2425":3,"2446":1}}],["judged",{"2":{"2163":2}}],["judgment",{"2":{"352":1}}],["jumbo",{"0":{"1859":1}}],["jumpers",{"2":{"2392":1}}],["jumper",{"2":{"2278":2,"2280":2,"2288":2,"2367":1}}],["jumping",{"2":{"592":1,"1532":1}}],["jump",{"2":{"65":1,"74":1,"160":2,"176":1,"191":1,"557":1,"592":1,"593":3,"594":2,"595":2,"1440":1,"1532":1,"1534":2,"1568":2,"1854":2,"1910":1,"2547":2,"2563":2}}],["jumps",{"2":{"49":1}}],["jun",{"2":{"1302":1,"2295":1}}],["junco",{"2":{"253":2}}],["junk",{"2":{"160":1,"211":1}}],["justifiable",{"2":{"2603":1}}],["justification",{"2":{"2603":3}}],["just60",{"2":{"154":2}}],["just",{"0":{"551":1,"1280":1},"2":{"5":1,"45":1,"116":1,"173":1,"188":2,"233":1,"245":1,"331":1,"396":1,"486":1,"541":1,"546":1,"702":1,"1132":1,"1133":1,"1213":2,"1234":1,"1275":1,"1297":1,"1313":1,"1331":1,"1369":1,"1372":2,"1375":1,"1377":1,"1389":1,"1390":1,"1396":2,"1400":1,"1420":1,"1422":1,"1423":1,"1427":1,"1435":1,"1442":1,"1467":1,"1474":1,"1478":1,"1484":1,"1487":1,"1529":1,"1532":1,"1548":1,"1552":1,"1555":1,"1559":1,"1561":1,"1562":1,"1593":1,"1611":1,"1706":1,"1713":2,"1714":1,"1722":2,"1829":1,"1859":1,"1951":1,"1952":1,"1998":1,"2081":1,"2151":1,"2156":2,"2165":1,"2198":1,"2199":2,"2207":1,"2210":1,"2215":1,"2300":1,"2307":1,"2313":2,"2318":1,"2388":1,"2444":1,"2472":1,"2480":1,"2490":1,"2493":1,"2545":1,"2547":1,"2592":1,"2607":1,"2615":1,"2644":1,"2654":1,"2767":1,"2768":1,"2791":1,"2792":1,"2796":1}}],["jpg",{"2":{"624":1,"2605":1}}],["jps",{"2":{"36":1}}],["jp",{"0":{"35":1},"1":{"36":1},"2":{"35":1,"36":4}}],["9a",{"2":{"2129":1,"2131":1,"2133":1,"2135":1}}],["95",{"2":{"1616":1,"2464":1,"2627":2}}],["9501",{"2":{"51":1}}],["9b5c",{"2":{"314":1,"315":1}}],["91",{"2":{"1616":1}}],["910",{"2":{"211":1}}],["9126",{"2":{"199":1}}],["9174",{"2":{"48":1}}],["9171",{"2":{"32":1}}],["9",{"2":{"114":1,"137":1,"211":1,"249":1,"266":3,"313":1,"351":1,"360":2,"530":2,"633":1,"635":4,"792":1,"857":1,"891":1,"925":1,"1061":1,"1357":1,"1383":1,"1384":1,"1442":1,"1464":1,"1477":1,"1536":1,"1568":3,"1616":1,"1625":1,"1673":3,"1831":3,"1872":3,"1937":1,"2074":1,"2080":3,"2082":2,"2137":1,"2150":4,"2151":3,"2182":1,"2186":1,"2191":1,"2193":4,"2303":4,"2394":8,"2404":3,"2410":3,"2419":3,"2425":2,"2430":4,"2433":2,"2446":1,"2650":1,"2654":2,"2738":2}}],["967",{"2":{"2130":1}}],["9600",{"2":{"1238":1,"2188":1}}],["9603",{"2":{"74":1}}],["96",{"0":{"1319":1},"2":{"211":1,"286":1,"291":1,"883":1,"1601":1,"1603":1,"1604":1,"1605":1,"1616":1,"1762":1,"1937":1,"2394":1,"2403":1,"2409":2,"2427":1,"2435":2,"2547":1}}],["9657",{"2":{"114":1}}],["92",{"2":{"1616":1,"1937":1}}],["9207",{"2":{"629":1,"2383":1}}],["9203",{"2":{"629":1,"2383":1}}],["9205",{"2":{"114":1,"629":1,"2383":1}}],["9284",{"2":{"50":1}}],["97",{"2":{"1292":1,"1616":1}}],["9700",{"2":{"64":1}}],["9703",{"2":{"63":1}}],["9738",{"2":{"49":1}}],["93",{"2":{"1616":1}}],["9335",{"2":{"92":1}}],["9308",{"2":{"51":1}}],["9356",{"2":{"50":1}}],["9355",{"2":{"50":1}}],["9310",{"2":{"50":1}}],["9315",{"2":{"50":1}}],["9318",{"2":{"46":1}}],["98",{"2":{"1616":1}}],["9800",{"0":{"1936":1},"2":{"118":1,"1936":2}}],["9824",{"2":{"114":1}}],["9826",{"2":{"63":1}}],["9842",{"2":{"93":1}}],["9832",{"2":{"50":1}}],["9864",{"2":{"49":1}}],["9856",{"2":{"49":1}}],["94",{"2":{"1616":1}}],["9404",{"2":{"114":1}}],["9485",{"2":{"73":1}}],["9487",{"2":{"49":1}}],["9471",{"2":{"49":1}}],["99",{"2":{"360":1,"1616":1,"2182":1,"2738":1,"2784":1}}],["9973",{"2":{"270":1,"277":1}}],["9952",{"2":{"65":1}}],["9940",{"2":{"63":1}}],["9949",{"2":{"49":1}}],["9905",{"2":{"51":1}}],["9964",{"2":{"49":1}}],["9987",{"2":{"48":1}}],["90°",{"2":{"1366":1}}],["906",{"2":{"1091":2}}],["9054",{"2":{"50":1}}],["9055",{"2":{"50":1}}],["9023",{"2":{"50":1}}],["9020",{"2":{"49":1}}],["9001",{"2":{"1555":1}}],["900",{"2":{"955":2,"989":2,"1251":1,"1671":2}}],["900k",{"2":{"588":1}}],["9005",{"2":{"50":1}}],["900000",{"2":{"588":1}}],["9000",{"2":{"23":1,"45":1}}],["9019",{"2":{"26":1}}],["90",{"0":{"1859":1},"2":{"8":1,"1443":1,"1616":1,"1858":2,"1859":3,"1860":2,"1904":2,"1941":2,"1952":2,"1953":2,"2303":1,"2616":1}}],["zr",{"2":{"2191":3}}],["zdst",{"2":{"2185":1}}],["zle12864b",{"2":{"2174":1}}],["zone",{"2":{"2527":1}}],["zolentech",{"2":{"2174":1}}],["zoom",{"2":{"1940":9}}],["zodiark",{"2":{"222":1}}],["zxcvm",{"2":{"1392":1,"2742":3}}],["z0",{"2":{"1383":1,"1384":1}}],["zshrc",{"2":{"450":1}}],["zsh",{"2":{"448":1,"450":1}}],["zsa",{"0":{"5":1},"2":{"74":1,"241":1,"249":1,"270":1,"277":3}}],["zk3mod",{"2":{"249":1}}],["z34",{"2":{"241":2}}],["z12",{"2":{"241":2}}],["z150",{"2":{"37":2,"144":2,"145":1}}],["zadig",{"0":{"625":1},"1":{"626":1,"627":1,"628":1,"629":1},"2":{"240":3,"625":1,"626":2,"627":3,"628":1,"629":2,"1278":2}}],["zwag75",{"2":{"211":1}}],["z70ultra",{"2":{"211":1,"253":2}}],["ztboards",{"2":{"211":2}}],["zip",{"2":{"304":2}}],["zigotica",{"2":{"241":2,"249":1}}],["zicodia",{"2":{"211":1}}],["zinc",{"0":{"32":1},"2":{"32":1,"154":6}}],["zenkaku",{"2":{"2430":1}}],["zeal60",{"2":{"1534":1}}],["zed65",{"2":{"222":1,"249":1}}],["zeus",{"2":{"211":1}}],["zeroes",{"2":{"211":1,"1956":1}}],["zero",{"2":{"195":1,"222":1,"236":1,"370":1,"675":1,"689":2,"1248":1,"1327":1,"1457":1,"1488":2,"1489":1,"1958":1,"1980":1,"2193":1,"2264":1,"2530":1,"2563":1,"2624":1,"2626":2,"2631":1,"2633":1,"2744":1}}],["zcar",{"2":{"176":1}}],["zvecr",{"2":{"173":1,"182":1,"266":1}}],["z",{"0":{"2642":1,"2644":1},"1":{"2643":1,"2645":1},"2":{"137":1,"191":1,"249":1,"257":1,"258":1,"259":2,"266":1,"277":1,"313":1,"530":2,"696":1,"1378":4,"1458":1,"1463":1,"1477":1,"1488":1,"1536":1,"1543":1,"1545":1,"1565":1,"1568":1,"1609":1,"1621":1,"1670":1,"1693":1,"1714":1,"1907":7,"1911":5,"1916":1,"1943":1,"2137":2,"2186":1,"2191":1,"2207":1,"2255":1,"2356":2,"2394":3,"2425":3,"2446":1,"2642":3,"2644":5,"2650":2}}],["zygomorph",{"2":{"93":1}}],["8bpp",{"2":{"2635":2}}],["8bit",{"2":{"166":1,"1423":1,"2747":1}}],["8px",{"2":{"2616":2}}],["8mhz",{"2":{"2383":2}}],["8t",{"2":{"2143":1}}],["86",{"2":{"1616":1}}],["8x",{"2":{"1614":1,"1615":1}}],["8xv1",{"2":{"211":1}}],["81",{"2":{"1091":1,"1616":1,"1830":1}}],["8192",{"2":{"674":1,"675":1,"681":1}}],["8k4",{"2":{"850":1,"853":2,"885":1,"887":2,"919":1,"921":2}}],["8k",{"2":{"789":2,"854":2,"888":2,"922":2,"956":2,"987":2,"990":4,"1024":2,"1058":2,"1092":2}}],["87",{"2":{"1616":1}}],["87h",{"2":{"266":1}}],["8777",{"2":{"49":1}}],["8778",{"2":{"49":1}}],["80x160",{"2":{"2612":1,"2615":1}}],["80k",{"2":{"788":1}}],["8000",{"2":{"1962":1,"1963":1}}],["800",{"2":{"599":1,"1936":1,"1947":1,"1950":2}}],["800ms",{"2":{"599":1}}],["80",{"2":{"222":1,"505":2,"788":1,"1405":1,"1616":16,"1830":3,"1841":1,"2615":3,"2616":2,"2713":2}}],["8l",{"2":{"211":1}}],["8|16|32",{"2":{"166":1}}],["88",{"2":{"1616":1}}],["88200u",{"2":{"688":1}}],["8893",{"2":{"65":1}}],["8830",{"2":{"37":1}}],["8200",{"2":{"1936":1}}],["82",{"2":{"1616":1,"1830":1,"1937":1}}],["8237",{"2":{"530":1}}],["8236",{"2":{"315":1}}],["8291",{"2":{"49":1}}],["8256",{"2":{"49":1}}],["8269",{"2":{"24":1}}],["8",{"2":{"49":1,"74":1,"111":1,"114":1,"166":1,"199":1,"211":2,"292":2,"313":1,"351":1,"506":1,"530":2,"601":1,"633":1,"635":4,"641":2,"680":1,"686":1,"688":2,"694":1,"714":1,"720":1,"789":2,"822":1,"853":1,"854":2,"887":1,"888":2,"921":1,"922":2,"955":1,"956":2,"959":1,"989":1,"990":2,"993":1,"1024":2,"1027":1,"1058":2,"1092":2,"1095":1,"1126":1,"1218":1,"1264":1,"1267":1,"1366":1,"1369":1,"1373":1,"1442":1,"1477":2,"1482":2,"1488":1,"1552":3,"1568":2,"1615":1,"1616":1,"1632":3,"1650":1,"1652":1,"1670":2,"1671":1,"1673":3,"1676":1,"1715":1,"1831":3,"1832":1,"1836":1,"1839":2,"1840":2,"1841":2,"1842":3,"1845":1,"1853":2,"1855":1,"1858":2,"1859":3,"1860":2,"1872":3,"1896":1,"1937":1,"1940":1,"1956":2,"1960":2,"2073":1,"2077":2,"2080":2,"2098":1,"2129":1,"2133":1,"2142":1,"2143":1,"2177":2,"2179":1,"2180":2,"2186":1,"2188":1,"2191":1,"2193":4,"2222":1,"2234":1,"2293":1,"2382":1,"2391":1,"2392":3,"2394":8,"2404":3,"2410":3,"2411":2,"2419":3,"2423":1,"2425":2,"2430":4,"2433":2,"2440":2,"2445":1,"2446":1,"2450":1,"2534":1,"2613":1,"2614":3,"2616":3,"2624":1,"2631":1,"2637":2,"2654":2,"2662":1,"2727":1,"2733":2,"2734":1,"2747":1,"2777":1}}],["85",{"2":{"1477":1,"1616":1,"1937":1,"2078":1}}],["8591",{"2":{"114":2,"1548":1}}],["8532",{"2":{"94":1}}],["8537",{"2":{"37":1}}],["8564",{"2":{"63":1}}],["8582",{"2":{"35":1}}],["84",{"2":{"1616":1}}],["8422",{"2":{"133":1,"134":1}}],["8403",{"2":{"93":1}}],["8441",{"2":{"49":1}}],["8499",{"2":{"37":1}}],["8412",{"2":{"37":1}}],["8472",{"2":{"33":1}}],["8484",{"2":{"27":1}}],["89",{"2":{"1616":1,"1831":1,"1937":1,"2410":1}}],["8979",{"2":{"38":1}}],["8977",{"2":{"38":1}}],["8974",{"2":{"28":1}}],["8968",{"2":{"38":1}}],["8959",{"2":{"38":1}}],["8958",{"2":{"38":1}}],["8957",{"2":{"38":1}}],["8954",{"2":{"38":1}}],["8903",{"2":{"28":1}}],["83",{"2":{"251":1,"1616":1,"1830":1}}],["8327",{"2":{"50":1}}],["8321",{"2":{"21":1}}],["8318",{"2":{"49":1}}],["8348",{"2":{"22":1}}],["vqge7ok",{"2":{"2605":2}}],["vbat",{"2":{"2555":1}}],["vbus",{"2":{"1357":2,"1358":1,"2169":1,"2170":4,"2171":2,"2556":1}}],["v60",{"2":{"2333":1}}],["v=vkrppahlisy",{"2":{"2078":1}}],["vlc",{"2":{"2394":1}}],["vl",{"2":{"2392":1}}],["vl9",{"2":{"1831":1,"2410":1}}],["vl8",{"2":{"1831":1,"2410":1}}],["vl7",{"2":{"1831":1,"2410":1}}],["vl6",{"2":{"1831":1,"2410":1}}],["vl5",{"2":{"1831":1,"2410":1}}],["vl4",{"2":{"1831":1,"2410":1}}],["vl3",{"2":{"1831":1,"2410":1}}],["vl2",{"2":{"1831":1,"2410":1}}],["vl10",{"2":{"1831":1,"2410":1}}],["vl1",{"2":{"1831":1,"2410":1}}],["vl0",{"2":{"1831":1,"2410":1}}],["vlk",{"2":{"188":1,"191":1}}],["vddio",{"2":{"1146":1,"1183":1}}],["vdd",{"2":{"1123":1,"1126":1,"1129":1,"1169":2}}],["vcs",{"2":{"2470":2,"2503":2}}],["vcc",{"2":{"630":1,"734":1,"758":1,"760":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1262":2,"1611":1,"1755":1,"2099":1,"2156":1,"2157":1,"2158":1,"2278":1,"2280":1,"2315":1,"2369":2,"2371":2,"2373":2,"2375":2,"2377":2,"2379":1,"2568":1,"2569":2}}],["vcl65",{"2":{"211":1}}],["vcl",{"2":{"211":1}}],["vk",{"2":{"188":1,"191":1,"2101":1}}],["vuhopkep",{"2":{"160":1}}],["vusb",{"2":{"50":1,"134":1,"160":1,"249":1,"266":1,"505":1,"1279":1,"2782":1}}],["vn66",{"2":{"154":2}}],["vpath",{"2":{"114":2,"191":1,"655":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1170":1,"1181":1,"1565":1}}],["vss",{"2":{"1273":1}}],["vscode",{"2":{"199":1,"454":1,"2469":1,"2547":1,"2552":3}}],["vs",{"0":{"568":2,"2543":1,"2546":1,"2550":1,"2551":1},"1":{"2544":1,"2545":1,"2546":1,"2547":2,"2548":1,"2549":1,"2551":1},"2":{"114":1,"199":1,"457":1,"1363":5,"2152":1,"2520":1,"2542":3,"2545":1,"2546":1,"2548":1,"2549":4,"2551":4,"2552":5,"2589":1,"2762":1}}],["vowel",{"2":{"2191":4}}],["vol",{"2":{"1703":4,"2394":2,"2432":2}}],["vold",{"2":{"209":1,"530":2,"1597":1,"1598":1,"1703":1,"1910":1,"2394":1,"2432":1}}],["volu",{"2":{"209":1,"530":2,"1597":1,"1598":1,"1703":1,"1910":1,"2394":1,"2432":1}}],["volume",{"0":{"1438":1},"2":{"191":1,"630":1,"688":1,"1438":2,"1598":2,"1694":1,"1703":3,"1910":1,"2394":7,"2431":4,"2432":2,"2744":1}}],["voltages",{"2":{"630":1}}],["voltage",{"2":{"199":1,"638":1,"674":1,"1262":2,"1362":1,"1614":1,"1615":1,"1627":1,"1668":2,"2169":1,"2170":1,"2387":1}}],["volatile",{"2":{"114":1,"2187":1}}],["volcano660",{"2":{"102":2,"114":1,"211":1}}],["voilà",{"2":{"1446":1}}],["voice",{"2":{"231":1,"1439":3,"1445":2,"1615":1,"2396":2}}],["voices",{"0":{"1439":1},"2":{"112":1,"502":2,"1439":4,"1445":2,"2396":2,"2715":2}}],["void",{"0":{"588":2,"646":2,"647":1,"649":1,"651":2,"652":1,"663":1,"665":1,"667":1,"669":1,"707":2,"738":2,"739":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"753":2,"754":2,"764":1,"766":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1,"796":1,"798":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"812":1,"814":1,"826":1,"828":1,"830":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"844":1,"846":1,"861":1,"863":1,"865":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"895":1,"897":1,"899":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"929":1,"931":1,"933":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1,"963":1,"965":1,"967":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1,"997":1,"999":1,"1001":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1015":1,"1017":1,"1031":1,"1033":1,"1035":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1049":1,"1051":1,"1065":1,"1067":1,"1069":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1083":1,"1085":1,"1099":1,"1101":1,"1103":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1117":1,"1119":1,"1152":1,"1154":1,"1156":1,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1176":1,"1178":1,"1189":1,"1191":1,"1193":1,"1195":1,"1197":1,"1199":1,"1201":1,"1203":1,"1205":1,"1207":1,"1209":1,"1216":2,"1223":1,"1231":2,"1237":1,"1239":1,"1241":1,"1243":1,"1245":1,"1247":1,"1269":1,"1510":2,"1511":2,"1512":2,"1513":2,"1514":2,"1515":2,"1516":1,"1518":1,"1520":1,"1522":2,"1523":2,"1524":2,"1525":1,"1576":2,"1577":2,"1578":2,"1579":2,"1580":2,"1581":2,"1582":2,"1583":1,"1634":1,"1636":2,"1637":2,"1638":1,"1640":2,"1641":1,"1643":1,"1645":1,"1647":1,"1649":1,"1651":1,"1653":1,"1655":1,"1660":1,"1662":1,"1664":1,"1666":1,"1679":2,"1680":1,"1682":1,"1687":1,"1727":2,"1728":2,"1729":2,"1730":2,"1731":1,"1735":1,"1736":1,"1773":2,"1774":2,"1775":2,"1776":2,"1777":2,"1778":2,"1779":1,"1781":1,"1783":1,"1785":1,"1787":1,"1789":2,"1790":2,"1791":2,"1792":2,"1793":1,"1795":2,"1796":2,"1797":2,"1798":2,"1799":1,"1801":2,"1802":2,"1803":2,"1804":2,"1805":1,"1807":1,"1809":1,"1811":2,"1812":1,"1814":1,"1816":1,"1874":2,"1875":1,"1877":1,"1879":1,"1881":1,"1886":2,"1887":1,"1889":1,"1929":1,"1931":1,"2000":2,"2001":2,"2002":2,"2003":2,"2004":2,"2005":2,"2006":1,"2008":1,"2010":1,"2012":1,"2014":1,"2016":2,"2017":2,"2018":2,"2019":2,"2020":1,"2022":2,"2023":2,"2024":2,"2025":2,"2026":1,"2028":2,"2029":2,"2030":2,"2031":2,"2032":1,"2034":2,"2035":2,"2036":2,"2037":2,"2038":1,"2040":2,"2041":2,"2042":2,"2043":2,"2044":1,"2046":1,"2048":1,"2050":1,"2052":1,"2054":1,"2056":2,"2057":1,"2059":1,"2061":1,"2119":1,"2121":1,"2123":1,"2125":1,"2127":1,"2129":1,"2131":1,"2133":1,"2135":1,"2137":2,"2224":1,"2226":1,"2228":2,"2229":2,"2230":1,"2232":1,"2234":2,"2235":2,"2236":2,"2237":1,"2239":1,"2247":1,"2249":2,"2250":1,"2252":1,"2257":1,"2259":2,"2260":2,"2261":2},"1":{"648":1,"650":1,"653":1,"664":1,"666":1,"668":1,"670":1,"740":1,"742":1,"744":1,"746":1,"748":1,"750":1,"752":1,"765":1,"767":1,"769":1,"771":1,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"797":1,"799":1,"801":1,"803":1,"805":1,"807":1,"809":1,"811":1,"813":1,"815":1,"827":1,"829":1,"831":1,"833":1,"835":1,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":1,"866":1,"868":1,"870":1,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":1,"900":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":1,"934":1,"936":1,"938":1,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":1,"968":1,"970":1,"972":1,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":1,"1002":1,"1004":1,"1006":1,"1008":1,"1010":1,"1012":1,"1014":1,"1016":1,"1018":1,"1032":1,"1034":1,"1036":1,"1038":1,"1040":1,"1042":1,"1044":1,"1046":1,"1048":1,"1050":1,"1052":1,"1066":1,"1068":1,"1070":1,"1072":1,"1074":1,"1076":1,"1078":1,"1080":1,"1082":1,"1084":1,"1086":1,"1100":1,"1102":1,"1104":1,"1106":1,"1108":1,"1110":1,"1112":1,"1114":1,"1116":1,"1118":1,"1120":1,"1153":1,"1155":1,"1157":1,"1159":1,"1161":1,"1163":1,"1165":1,"1167":1,"1177":1,"1179":1,"1190":1,"1192":1,"1194":1,"1196":1,"1198":1,"1200":1,"1202":1,"1204":1,"1206":1,"1208":1,"1210":1,"1224":1,"1238":1,"1240":1,"1242":1,"1244":1,"1246":1,"1248":1,"1270":1,"1517":1,"1519":1,"1521":1,"1526":1,"1584":1,"1635":1,"1639":1,"1642":1,"1644":1,"1646":1,"1648":1,"1650":1,"1652":1,"1654":1,"1656":1,"1661":1,"1663":1,"1665":1,"1667":1,"1681":1,"1683":1,"1688":1,"1780":1,"1782":1,"1784":1,"1786":1,"1788":1,"1794":1,"1800":1,"1806":1,"1808":1,"1810":1,"1813":1,"1815":1,"1817":1,"1876":1,"1878":1,"1880":1,"1882":1,"1888":1,"1890":1,"1930":1,"1932":1,"2007":1,"2009":1,"2011":1,"2013":1,"2015":1,"2021":1,"2027":1,"2033":1,"2039":1,"2045":1,"2047":1,"2049":1,"2053":1,"2055":1,"2058":1,"2060":1,"2062":1,"2120":1,"2122":1,"2124":1,"2126":1,"2128":1,"2130":1,"2132":1,"2134":1,"2136":1,"2225":1,"2227":1,"2231":1,"2233":1,"2238":1,"2240":1,"2248":1,"2251":1,"2253":1,"2258":1,"2262":2},"2":{"31":1,"34":1,"46":2,"90":2,"105":3,"125":3,"185":3,"196":1,"222":1,"249":3,"292":1,"453":1,"565":1,"566":13,"576":1,"577":4,"579":4,"580":5,"582":1,"583":4,"586":4,"587":4,"588":14,"590":3,"591":8,"597":1,"698":1,"707":1,"1282":1,"1369":2,"1370":8,"1397":1,"1412":2,"1430":1,"1437":2,"1467":2,"1501":4,"1534":1,"1548":1,"1561":1,"1631":1,"1632":2,"1706":2,"1708":2,"1718":3,"1724":4,"1767":1,"1771":1,"1851":1,"1852":3,"1853":2,"1854":1,"1860":35,"1863":1,"1899":13,"1921":2,"1950":2,"1951":3,"1954":5,"1963":1,"1967":2,"1974":16,"1975":5,"1981":1,"1990":1,"1995":1,"1998":1,"2080":2,"2082":3,"2145":31,"2168":10,"2175":2,"2176":2,"2177":2,"2178":2,"2181":33,"2204":1,"2205":6,"2206":5,"2207":8,"2208":8,"2209":8,"2265":1,"2340":4,"2470":1,"2503":1,"2530":2,"2563":1,"2564":1,"2565":1,"2615":4,"2616":22,"2620":2,"2621":1,"2788":12,"2796":1}}],["v1",{"0":{"306":1,"307":1,"308":1,"309":1},"2":{"86":1,"102":4,"114":1,"154":7,"160":2,"168":2,"197":10,"199":1,"207":1,"222":1,"226":1,"236":2,"253":2,"277":2,"314":2,"315":1,"317":4,"629":1,"1356":3,"2552":1,"2626":7,"2627":7,"2628":3,"2632":5,"2633":7,"2634":3,"2635":7,"2636":3,"2637":6,"2638":3}}],["v19",{"2":{"49":1}}],["v2j37s7",{"2":{"2392":1}}],["v2",{"2":{"56":2,"86":2,"114":1,"122":1,"154":2,"160":2,"168":2,"191":1,"197":4,"199":2,"207":2,"211":2,"217":4,"222":2,"236":2,"249":3,"277":1,"327":1,"1356":2,"2389":1}}],["v2017",{"2":{"181":2}}],["v20",{"2":{"49":1}}],["v32a",{"2":{"197":2}}],["v3x",{"2":{"191":1}}],["v3",{"0":{"56":1},"2":{"56":2,"114":1,"160":2,"191":1,"211":1,"277":1,"2476":3}}],["vtor",{"2":{"50":1}}],["vai",{"2":{"530":2,"1986":1,"2416":1}}],["vad",{"2":{"530":2,"1986":1,"2416":1}}],["vault35",{"2":{"249":1}}],["vast",{"2":{"166":1,"1693":1}}],["vagrant",{"2":{"113":1,"114":2,"211":1}}],["vaguettelite",{"2":{"86":2}}],["vanilla",{"2":{"2604":1}}],["vaneelaex",{"2":{"86":2}}],["vaneela",{"2":{"86":2}}],["vanana",{"2":{"86":4}}],["varying",{"2":{"1987":3}}],["vary",{"2":{"1362":1,"2390":1,"2766":1}}],["var",{"2":{"460":3,"1287":2}}],["var>=",{"2":{"370":1,"371":2}}],["varaible",{"2":{"176":1}}],["variety",{"2":{"1937":1,"2583":1}}],["varies",{"2":{"1612":1,"1936":1,"1943":1,"1950":2,"1952":1,"2784":1}}],["variants",{"2":{"156":1,"211":1,"1252":1,"1253":1,"1254":1,"2220":1,"2271":1,"2383":2,"2698":1}}],["variant",{"2":{"114":1,"142":1,"222":3,"331":1,"1863":2,"1864":1,"1895":1,"2271":1,"2530":1,"2615":1}}],["variations",{"2":{"236":1,"243":1,"1254":1}}],["variation",{"0":{"55":1},"2":{"176":1}}],["variable",{"2":{"50":1,"65":1,"133":1,"134":3,"236":1,"367":1,"396":1,"411":1,"430":1,"437":1,"460":1,"473":1,"500":1,"610":2,"1340":6,"1363":1,"1384":2,"1414":1,"1471":2,"1489":1,"1595":1,"1925":2,"1960":1,"1974":1,"1975":1,"2080":1,"2185":1,"2200":1,"2291":1,"2300":1,"2301":2,"2318":1,"2397":2,"2507":1,"2552":2,"2564":1,"2628":1,"2629":1,"2630":1,"2634":1,"2636":1,"2638":1,"2767":1,"2796":11}}],["variables",{"0":{"2796":1},"2":{"49":2,"211":2,"496":1,"501":1,"611":1,"1340":1,"1369":1,"1378":1,"1388":1,"1452":1,"1960":1,"2202":1,"2301":2,"2563":1,"2564":1,"2569":1,"2796":5}}],["various",{"2":{"50":2,"114":1,"145":1,"160":3,"191":2,"211":1,"277":2,"331":1,"342":1,"470":1,"496":2,"565":1,"1281":1,"1283":1,"1362":1,"1363":1,"1372":1,"1447":1,"1452":1,"1616":1,"1709":1,"2076":1,"2105":1,"2263":1,"2667":1,"2686":1,"2700":1,"2705":1,"2788":1}}],["vars",{"2":{"49":2,"2300":1}}],["valu",{"2":{"1597":1,"2072":1,"2415":1}}],["valued",{"2":{"1369":1}}],["valueerror",{"2":{"465":2}}],["value>",{"2":{"370":1,"371":2,"416":1,"438":2}}],["values",{"0":{"417":1,"418":1,"423":1,"437":1,"438":1,"439":1,"474":1,"1467":1},"1":{"419":1,"420":1,"421":1,"422":1},"2":{"65":1,"70":1,"83":1,"182":1,"186":2,"198":2,"199":1,"231":1,"236":1,"249":1,"374":1,"417":1,"418":1,"432":2,"438":1,"439":1,"474":2,"502":1,"606":1,"609":1,"612":1,"613":1,"614":1,"630":1,"651":1,"659":1,"669":1,"674":1,"675":1,"676":1,"688":1,"703":1,"753":1,"754":1,"780":1,"782":1,"788":1,"789":4,"792":1,"812":1,"814":1,"822":1,"844":1,"846":1,"853":1,"854":4,"857":1,"879":1,"881":1,"887":1,"888":4,"891":1,"913":1,"915":1,"921":1,"922":4,"925":1,"947":1,"949":1,"955":1,"956":4,"959":1,"981":1,"983":1,"989":1,"990":4,"993":1,"1015":1,"1017":1,"1024":4,"1027":1,"1049":1,"1051":1,"1058":4,"1061":1,"1083":1,"1085":1,"1091":1,"1092":4,"1095":1,"1117":1,"1119":1,"1126":1,"1127":1,"1130":1,"1148":1,"1164":1,"1166":1,"1185":1,"1207":1,"1209":1,"1238":1,"1255":1,"1282":1,"1363":1,"1368":1,"1369":4,"1438":1,"1443":2,"1467":2,"1506":1,"1508":1,"1533":1,"1671":4,"1676":1,"1695":1,"1715":2,"1763":2,"1829":2,"1832":2,"1845":2,"1855":1,"1858":2,"1859":1,"1860":1,"1863":1,"1939":1,"1943":2,"1944":1,"1947":1,"1950":2,"1956":1,"1960":7,"1984":2,"1987":1,"2076":2,"2102":1,"2166":1,"2181":1,"2190":1,"2193":2,"2210":1,"2212":1,"2264":3,"2301":1,"2350":1,"2381":1,"2387":1,"2563":1,"2574":1,"2575":1,"2576":1,"2577":1,"2580":1,"2592":1,"2595":2,"2605":3,"2613":1,"2616":1,"2624":1,"2626":1,"2627":1,"2631":1,"2635":2,"2651":1,"2659":1,"2777":2}}],["value",{"0":{"612":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"745":2,"747":2,"751":1,"772":2,"774":2,"778":1,"804":2,"806":2,"810":1,"836":2,"838":2,"842":1,"871":2,"873":2,"877":1,"905":2,"907":2,"911":1,"939":2,"941":2,"945":1,"973":2,"975":2,"979":1,"1007":2,"1009":2,"1013":1,"1041":2,"1043":2,"1047":1,"1075":2,"1077":2,"1081":1,"1109":2,"1111":2,"1115":1,"1199":2,"1201":2,"1205":1,"1219":1,"1222":1,"1224":1,"1227":1,"1230":1,"1242":1,"1248":1,"1453":1,"1519":1,"1521":1,"1526":1,"1654":1,"1659":1,"1686":1,"1687":1,"1734":1,"1739":1,"1742":1,"1745":1,"1748":1,"1751":1,"1780":1,"1781":1,"1783":1,"1794":1,"1800":1,"1810":1,"1813":1,"1815":1,"1817":1,"1820":1,"1823":1,"1885":1,"1888":1,"2007":1,"2021":1,"2027":1,"2033":1,"2039":1,"2049":1,"2055":1,"2058":1,"2060":1,"2062":1,"2065":1,"2068":1,"2225":1,"2243":1,"2246":1,"2251":1,"2253":1,"2256":1,"2258":1},"1":{"746":2,"748":2,"752":1,"773":2,"775":2,"779":1,"805":2,"807":2,"811":1,"837":2,"839":2,"843":1,"872":2,"874":2,"878":1,"906":2,"908":2,"912":1,"940":2,"942":2,"946":1,"974":2,"976":2,"980":1,"1008":2,"1010":2,"1014":1,"1042":2,"1044":2,"1048":1,"1076":2,"1078":2,"1082":1,"1110":2,"1112":2,"1116":1,"1200":2,"1202":2,"1206":1,"1688":1,"1782":1,"1784":1},"2":{"25":1,"45":2,"49":1,"63":1,"70":13,"90":1,"176":1,"191":1,"195":1,"222":1,"236":1,"316":1,"350":5,"374":7,"413":1,"415":2,"418":1,"423":1,"425":1,"426":1,"430":3,"437":1,"453":1,"502":1,"505":2,"506":3,"510":1,"529":3,"530":1,"588":1,"597":1,"598":4,"601":2,"608":1,"609":1,"610":5,"612":2,"613":1,"628":1,"638":4,"639":4,"641":1,"648":3,"650":3,"656":2,"666":3,"668":3,"673":2,"674":2,"675":1,"676":1,"679":1,"680":1,"688":7,"689":2,"694":1,"739":1,"740":1,"742":3,"744":3,"746":2,"748":2,"752":1,"758":1,"766":1,"767":1,"769":3,"771":3,"773":2,"775":2,"779":1,"786":3,"787":1,"790":1,"798":1,"799":1,"801":3,"803":3,"805":2,"807":2,"809":3,"811":2,"819":1,"828":1,"829":1,"833":3,"835":3,"837":2,"839":2,"843":1,"850":3,"851":1,"852":1,"855":1,"863":1,"864":1,"868":3,"870":3,"872":2,"874":2,"878":1,"885":3,"886":1,"889":1,"897":1,"898":1,"902":3,"904":3,"906":2,"908":2,"912":1,"919":3,"920":1,"923":1,"931":1,"932":1,"936":3,"938":3,"940":2,"942":2,"946":1,"953":4,"954":1,"957":1,"965":1,"966":1,"970":3,"972":3,"974":2,"976":2,"980":1,"987":4,"988":1,"991":1,"999":1,"1000":1,"1004":3,"1006":3,"1008":2,"1010":2,"1012":3,"1014":2,"1021":4,"1022":1,"1023":1,"1025":1,"1033":1,"1034":1,"1038":3,"1040":3,"1042":2,"1044":2,"1046":3,"1048":2,"1055":4,"1056":1,"1057":1,"1059":1,"1067":1,"1068":1,"1072":3,"1074":3,"1076":2,"1078":2,"1080":3,"1082":2,"1089":4,"1090":1,"1093":1,"1101":1,"1102":1,"1106":3,"1108":3,"1110":2,"1112":2,"1114":3,"1116":2,"1137":1,"1146":1,"1154":1,"1155":1,"1159":3,"1161":3,"1177":3,"1179":3,"1183":1,"1191":1,"1192":1,"1196":3,"1198":3,"1200":2,"1202":2,"1206":1,"1235":1,"1258":1,"1362":1,"1369":4,"1370":2,"1402":1,"1430":1,"1443":1,"1448":1,"1453":6,"1467":5,"1468":5,"1471":1,"1472":3,"1473":1,"1501":1,"1571":3,"1584":2,"1592":1,"1597":1,"1611":1,"1668":1,"1671":3,"1678":4,"1684":1,"1687":1,"1688":3,"1695":1,"1696":1,"1708":1,"1709":1,"1713":1,"1715":1,"1720":1,"1763":1,"1764":1,"1766":8,"1767":2,"1768":1,"1771":5,"1782":1,"1784":1,"1800":1,"1832":1,"1841":1,"1842":1,"1845":3,"1854":1,"1858":1,"1860":2,"1911":1,"1937":1,"1944":4,"1952":1,"1963":2,"1974":1,"1975":1,"1984":1,"1985":1,"1986":4,"1987":23,"1988":1,"1992":3,"2009":3,"2011":3,"2027":1,"2033":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2071":2,"2072":6,"2073":1,"2089":9,"2092":10,"2093":2,"2094":1,"2129":1,"2130":1,"2131":1,"2132":1,"2133":1,"2134":1,"2136":1,"2145":3,"2163":1,"2166":1,"2167":1,"2168":1,"2178":1,"2181":1,"2187":1,"2194":1,"2207":2,"2208":1,"2210":1,"2246":1,"2264":4,"2265":1,"2267":1,"2338":1,"2339":1,"2345":1,"2350":3,"2397":1,"2415":6,"2416":4,"2563":1,"2580":1,"2605":1,"2616":3,"2626":1,"2633":1,"2636":1,"2645":1,"2710":1,"2716":1,"2727":1,"2733":3,"2734":3,"2736":1,"2758":1,"2767":9,"2776":2,"2777":1,"2778":1}}],["vald",{"2":{"1597":1,"2072":1,"2415":1}}],["valhalla",{"2":{"211":1}}],["valor",{"0":{"58":1},"2":{"58":3,"114":1,"211":1}}],["val",{"0":{"1795":2,"1796":1,"1797":1,"1798":1,"1799":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2092":1},"1":{"1800":1,"2039":1},"2":{"49":1,"145":1,"183":4,"191":1,"222":2,"506":1,"1370":3,"1494":1,"1672":8,"1766":3,"1768":1,"1987":9,"1992":1,"1997":2,"2073":4,"2084":2,"2092":4,"2095":2,"2338":4,"2616":11,"2727":2,"2733":1,"2734":2,"2750":3}}],["validating",{"2":{"2492":1}}],["validation",{"2":{"114":1,"199":2,"222":2,"236":1,"266":1,"273":1,"306":1,"1351":1}}],["validated",{"2":{"692":1,"2440":1}}],["validate",{"2":{"76":1,"199":2,"211":1,"349":1}}],["valid",{"2":{"49":1,"160":1,"199":2,"241":1,"253":1,"266":1,"270":1,"374":1,"397":1,"598":1,"679":1,"788":1,"789":2,"853":1,"854":2,"887":1,"888":2,"921":1,"922":2,"955":1,"956":2,"989":1,"990":2,"1024":2,"1058":2,"1091":1,"1092":2,"1255":1,"1280":1,"1349":1,"1482":1,"1497":1,"1660":1,"1940":1,"2076":2,"2187":1,"2333":1,"2355":1,"2393":1,"2441":1,"2442":1,"2603":4,"2605":4,"2614":2,"2635":1}}],["virster",{"2":{"2188":1}}],["virtually",{"2":{"2589":1}}],["virtual",{"0":{"1672":1},"2":{"1321":1,"1571":1,"1668":1,"1671":3,"1672":3,"1678":1,"2184":2,"2188":1,"2271":1,"2612":1}}],["virtualenv",{"2":{"367":1}}],["virtser",{"2":{"516":1}}],["vibrate",{"2":{"1615":1,"1617":1}}],["vibrator",{"2":{"1615":1}}],["vibrations",{"2":{"1614":1}}],["vibration",{"2":{"1614":1}}],["vim",{"2":{"1536":1,"1716":1,"1910":2}}],["violin",{"2":{"1435":2,"1436":3,"1440":1}}],["victim",{"2":{"562":1}}],["vice",{"2":{"194":1,"1372":1,"1591":1,"1911":2}}],["viewport",{"2":{"2615":2,"2616":7}}],["viewpoint",{"2":{"2457":1}}],["viewing",{"2":{"2552":1}}],["viewed",{"2":{"2406":1}}],["views",{"2":{"305":1,"2160":1}}],["view",{"0":{"2352":1},"2":{"273":1,"291":1,"520":1,"521":1,"627":1,"628":1,"2352":1,"2447":1,"2460":1,"2508":1,"2537":1,"2547":1,"2552":2,"2678":1}}],["viendi",{"2":{"211":1}}],["viper",{"2":{"211":1}}],["viktus",{"2":{"134":1,"144":3,"145":1,"211":3}}],["visit",{"2":{"371":1,"2300":1,"2475":1,"2478":1,"2552":1}}],["visible",{"2":{"198":1,"317":1,"1256":1,"1629":2}}],["vision",{"2":{"114":1,"561":1}}],["visualize",{"2":{"2446":1}}],["visualizer",{"2":{"133":1,"134":1}}],["visual",{"0":{"2542":1,"2552":1},"2":{"132":1,"2542":1,"2545":1,"2552":1,"2655":2}}],["vitoni",{"2":{"160":1}}],["vitamins",{"2":{"114":1}}],["viterbi",{"2":{"45":1}}],["vintage",{"2":{"1313":1}}],["vinta",{"2":{"102":2,"217":2}}],["vidpid",{"2":{"2288":3}}],["videos",{"2":{"2789":2}}],["video",{"2":{"2074":1,"2079":1,"2320":1,"2466":1,"2789":1,"2792":1}}],["videogames",{"2":{"1376":1}}],["vid>",{"2":{"375":1}}],["vid",{"0":{"1279":1},"1":{"1280":1},"2":{"70":1,"111":1,"169":1,"184":1,"249":2,"266":1,"375":1,"502":1,"628":1,"629":1,"1279":1,"1315":1,"2338":1,"2595":3,"2605":1,"2738":1}}],["vial",{"2":{"2605":2}}],["via2json",{"0":{"388":1},"2":{"388":2}}],["via",{"0":{"35":1,"265":2,"275":2},"1":{"36":1},"2":{"35":1,"92":1,"114":7,"134":6,"139":1,"145":1,"160":2,"176":6,"191":2,"194":1,"199":5,"211":7,"218":1,"222":5,"234":1,"249":3,"265":8,"266":4,"268":4,"275":5,"277":8,"388":3,"606":1,"621":1,"673":1,"674":1,"675":1,"690":1,"694":1,"701":1,"1124":1,"1127":1,"1130":1,"1307":3,"1354":2,"1363":1,"1368":1,"1396":1,"1529":2,"1533":1,"1905":1,"2102":1,"2190":1,"2273":1,"2276":1,"2278":2,"2279":2,"2280":2,"2283":1,"2285":1,"2287":1,"2288":2,"2301":1,"2316":1,"2350":1,"2588":1,"2604":3,"2605":7,"2788":1}}],["vect",{"2":{"1894":2,"1896":2}}],["vector",{"2":{"191":1,"211":1}}],["velu",{"2":{"1831":1,"2410":1}}],["veld",{"2":{"1831":1,"2410":1}}],["velocikey",{"0":{"2100":1},"1":{"2101":1,"2102":1},"2":{"236":1,"2100":1,"2101":5,"2102":2,"2788":1}}],["velocity",{"2":{"63":1,"1825":1,"1831":26,"1832":1,"1840":1,"2410":26}}],["vega",{"2":{"211":1}}],["ventilation",{"2":{"2305":1}}],["venus",{"2":{"114":1}}],["venv",{"2":{"114":1}}],["vendors",{"2":{"2605":4}}],["vendor",{"0":{"672":1},"1":{"673":1},"2":{"37":1,"43":1,"70":1,"86":1,"145":2,"160":13,"169":1,"184":1,"191":1,"199":1,"211":1,"236":1,"266":1,"277":1,"502":1,"629":1,"671":1,"1127":2,"1130":2,"1255":1,"1258":1,"1279":1,"1291":1,"1354":2,"1897":1,"1925":2,"1927":2,"2297":1,"2383":1,"2604":3,"2605":4,"2722":2,"2731":1,"2736":1,"2738":1,"2739":2}}],["ve",{"2":{"83":1,"89":1,"105":2,"112":1,"143":1,"172":1,"243":1,"273":1,"314":1,"462":1,"550":1,"606":1,"674":1,"703":1,"1214":1,"1235":1,"1369":1,"1374":1,"1381":1,"1396":1,"1398":4,"1422":1,"1423":1,"1901":1,"2303":1,"2314":1,"2318":1,"2331":2,"2458":1,"2486":1,"2488":1,"2489":1,"2497":1,"2511":1,"2515":1,"2527":1,"2549":1,"2552":1,"2607":1,"2616":2,"2640":1,"2655":1,"2745":1,"2751":1}}],["vertically",{"0":{"2659":1},"2":{"1958":1,"2312":1,"2656":1,"2659":2}}],["vertical",{"2":{"1845":1,"1937":1,"1945":1,"1946":1,"1956":1,"2616":1,"2659":1,"2725":1,"2727":1,"2734":1}}],["vertex",{"2":{"211":1}}],["verbose=true",{"2":{"2300":1}}],["verbose",{"2":{"540":1,"2300":5,"2614":2}}],["verbosity",{"2":{"211":1}}],["verification",{"2":{"2374":1,"2392":1}}],["verified",{"2":{"484":1,"1849":2,"2386":1,"2392":1,"2606":1}}],["verifying",{"2":{"2386":2}}],["verify",{"2":{"199":1,"628":1,"2526":1,"2541":1,"2605":1,"2796":2}}],["ver20",{"2":{"358":5}}],["vero",{"2":{"211":1}}],["versed",{"2":{"552":1}}],["versatile",{"2":{"2617":1}}],["versa",{"2":{"194":1,"1372":1,"1591":1,"1911":2}}],["versioned",{"2":{"182":1}}],["versioning",{"2":{"182":1,"2675":1}}],["version=yes",{"2":{"65":1}}],["versions",{"2":{"22":1,"35":1,"49":2,"182":2,"189":1,"191":1,"317":3,"357":1,"537":1,"1276":1,"1337":1,"1356":1,"1369":1,"1420":1,"1593":1,"1596":1,"1692":1,"2074":1,"2220":1,"2221":1,"2293":1,"2300":1,"2367":1,"2381":1}}],["version",{"0":{"1893":1,"1894":1,"1895":1,"1896":1,"1897":1},"1":{"1894":1,"1895":1,"1896":1,"1897":1},"2":{"10":1,"36":2,"65":1,"69":1,"70":1,"114":2,"134":1,"145":1,"160":3,"169":1,"173":1,"176":1,"182":1,"184":1,"191":1,"199":2,"211":1,"236":1,"317":1,"324":3,"330":1,"335":1,"340":1,"347":3,"351":20,"357":1,"358":1,"360":2,"502":1,"529":1,"537":1,"1180":1,"1417":2,"1420":4,"1422":1,"1448":1,"1449":1,"1468":1,"1535":1,"1567":1,"1568":2,"1893":1,"1896":1,"2282":1,"2316":2,"2345":2,"2349":1,"2392":1,"2443":1,"2513":1,"2536":1,"2552":1,"2563":1,"2564":1,"2565":1,"2595":1,"2605":1,"2609":2,"2626":1,"2633":1,"2738":2,"2778":1}}],["very",{"2":{"182":1,"306":1,"325":1,"483":1,"557":1,"569":1,"574":1,"575":1,"581":1,"621":1,"688":2,"1260":1,"1279":1,"1282":1,"1368":1,"1412":1,"1442":1,"1453":1,"1614":1,"1615":1,"1714":1,"1722":2,"1844":1,"1854":1,"1863":1,"1951":1,"1959":1,"2156":1,"2172":1,"2178":1,"2289":1,"2309":2,"2312":2,"2343":1,"2352":1,"2437":1,"2457":1,"2470":1,"2489":1,"2503":1,"2536":1,"2562":1,"2694":1,"2703":1,"2753":1,"2781":1,"2792":1}}],["ver",{"2":{"70":2,"111":1,"169":1,"184":1,"191":1,"502":1}}],["ver19",{"2":{"10":1}}],["v",{"0":{"21":1,"235":1,"494":1,"1781":1,"1783":1,"2050":1,"2052":1},"1":{"495":1,"1782":1,"1784":1,"2053":1},"2":{"21":2,"49":2,"50":3,"130":2,"134":2,"138":1,"154":2,"176":1,"236":4,"249":1,"266":1,"292":1,"313":1,"324":1,"433":1,"487":1,"530":2,"734":1,"737":1,"760":1,"763":1,"792":1,"795":1,"822":1,"825":1,"857":1,"860":1,"891":1,"894":1,"925":1,"928":1,"959":1,"962":1,"993":1,"996":1,"1027":1,"1030":1,"1061":1,"1064":1,"1095":1,"1098":1,"1151":1,"1185":1,"1188":1,"1568":1,"1614":1,"1615":3,"1771":1,"1782":1,"1784":1,"1826":1,"1862":1,"1900":1,"1901":1,"1903":1,"1956":2,"1958":2,"1959":1,"1960":9,"1962":1,"1963":1,"1980":1,"1997":2,"2051":1,"2053":1,"2089":8,"2092":4,"2184":1,"2207":1,"2221":1,"2273":1,"2274":1,"2293":2,"2300":3,"2385":1,"2394":3,"2425":3,"2440":1,"2446":1,"2453":4,"2454":2,"2516":3,"2526":2,"2595":1,"2614":2,"2636":1,"2733":1,"2734":1}}],["6=128",{"2":{"1860":1}}],["69",{"2":{"1616":1}}],["61",{"2":{"1616":1,"2650":1}}],["67",{"2":{"1311":1,"1616":1}}],["6739",{"2":{"74":1}}],["63",{"2":{"1091":1,"1616":1,"1830":1,"1944":1,"2078":1,"2650":2}}],["6pad",{"2":{"266":1}}],["6kro",{"2":{"236":1,"515":1,"1315":1,"1325":2,"2698":1}}],["6x",{"2":{"1614":1,"1615":1}}],["6x13",{"2":{"249":1}}],["6x7",{"2":{"222":2}}],["6x6",{"2":{"217":1,"222":1}}],["68",{"2":{"211":1,"222":1,"1616":1,"1937":1}}],["6ball",{"2":{"154":2}}],["66",{"2":{"122":2,"160":1,"211":1,"313":1,"370":4,"375":2,"395":1,"396":1,"414":3,"415":2,"424":1,"425":1,"426":2,"1019":1,"1616":1,"1983":1,"2332":2,"2333":1,"2334":5,"2443":1,"2460":3,"2461":1,"2508":7,"2710":2,"2711":1}}],["64x48",{"2":{"1858":2}}],["64x32",{"2":{"1858":2}}],["64x128",{"2":{"1849":2,"1858":3}}],["64u",{"2":{"688":2}}],["64kb",{"2":{"680":2}}],["64kb+",{"2":{"486":1}}],["64",{"2":{"143":1,"675":1,"676":1,"694":1,"790":1,"848":1,"1148":1,"1180":1,"1264":1,"1477":1,"1488":1,"1616":1,"1672":1,"1763":5,"1830":1,"1831":1,"1859":1,"1983":2,"1984":5,"2078":1,"2303":1,"2329":1,"2333":1,"2374":1,"2390":2,"2392":1,"2410":1,"2499":2,"2500":1,"2727":1,"2734":1}}],["6490",{"2":{"114":1}}],["6480",{"2":{"25":1}}],["6",{"0":{"81":1,"542":1,"2209":1},"2":{"23":1,"81":1,"93":1,"114":1,"131":1,"134":1,"176":1,"188":1,"191":1,"211":1,"313":1,"491":1,"502":1,"506":2,"511":2,"515":2,"530":2,"633":1,"635":4,"639":2,"641":1,"686":1,"687":1,"707":1,"729":1,"955":1,"989":1,"1442":1,"1443":1,"1477":1,"1494":1,"1552":2,"1568":2,"1585":3,"1614":1,"1615":1,"1616":1,"1632":1,"1668":1,"1670":1,"1673":3,"1831":7,"1839":2,"1855":1,"1859":2,"1872":3,"1925":1,"1940":1,"1983":1,"2074":1,"2080":3,"2082":2,"2096":1,"2098":1,"2168":1,"2169":2,"2179":1,"2186":2,"2191":1,"2193":4,"2301":1,"2391":1,"2394":9,"2404":3,"2410":7,"2411":2,"2419":3,"2425":2,"2430":3,"2433":2,"2446":1,"2614":1,"2627":1,"2628":1,"2635":2,"2654":2,"2663":1,"2696":1,"2697":1,"2716":2,"2721":3}}],["62key",{"2":{"226":1}}],["6259",{"2":{"49":1}}],["6260",{"2":{"30":1}}],["62",{"2":{"21":1,"1616":1,"1937":1,"2650":1}}],["600ºf",{"2":{"2311":1}}],["600",{"2":{"1947":1}}],["60000ms",{"2":{"1855":1,"2179":1}}],["60000",{"2":{"1855":1,"2108":1,"2179":1,"2735":1}}],["6000",{"2":{"606":1}}],["60hz",{"2":{"1841":1}}],["60fps",{"2":{"1768":1,"1845":1,"1992":1}}],["60f",{"2":{"1443":1}}],["606",{"2":{"1316":2}}],["6068",{"2":{"131":1,"134":1}}],["60",{"0":{"1280":1},"2":{"18":2,"154":2,"211":6,"217":2,"222":1,"236":1,"257":1,"258":1,"259":2,"260":1,"266":1,"370":1,"385":1,"507":1,"985":1,"1327":1,"1383":3,"1384":3,"1601":1,"1616":17,"1841":1,"1845":3,"1937":1,"1983":1,"2078":1,"2334":1,"2341":1,"2355":1,"2592":1,"2658":1,"2725":6}}],["650",{"2":{"1969":1}}],["65536",{"2":{"680":1,"2392":1}}],["65keys",{"2":{"241":2}}],["6580",{"2":{"93":1}}],["65",{"2":{"11":1,"67":2,"176":1,"211":6,"236":1,"1443":1,"1616":1,"1937":1,"2132":1,"2309":1,"2614":1}}],["03d",{"2":{"2744":1,"2749":1}}],["03h",{"2":{"2583":2}}],["03",{"2":{"2392":17}}],["03eb",{"2":{"629":7,"2382":4,"2489":1,"2492":2}}],["0c45",{"2":{"2288":3}}],["064",{"2":{"1937":2}}],["0=2",{"2":{"1860":1}}],["0ms",{"2":{"1855":1}}],["0f",{"2":{"1440":2,"1443":5}}],["05f",{"2":{"1443":1}}],["05",{"2":{"853":1,"887":1,"921":1,"1528":1}}],["05dc",{"2":{"629":1,"2385":2}}],["05df",{"2":{"629":1,"2384":1}}],["0k5",{"2":{"789":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1092":2}}],["0u",{"2":{"705":2}}],["0b11",{"2":{"2350":3}}],["0b10100000",{"2":{"674":2}}],["0b00",{"2":{"2350":1}}],["0b01",{"2":{"2350":3}}],["0b01010000",{"2":{"674":1}}],["0b",{"2":{"2350":1}}],["0v",{"2":{"630":1,"638":1,"639":1}}],["04",{"2":{"2531":1,"2542":1}}],["04x",{"2":{"1289":1}}],["0483",{"2":{"629":1,"2278":1}}],["0478",{"2":{"629":1}}],["005",{"2":{"2749":1}}],["00s",{"2":{"2386":1}}],["00100000",{"2":{"2186":2}}],["00101000",{"2":{"2185":1,"2186":1}}],["00hwpkts",{"2":{"2185":1}}],["0001",{"2":{"2513":1}}],["00010000",{"2":{"2185":1}}],["00000101",{"2":{"2186":1}}],["00000001ff",{"2":{"2388":1}}],["00000001",{"2":{"2186":1}}],["00000000",{"2":{"2129":1,"2186":7}}],["00000010",{"2":{"2186":1}}],["00001100",{"2":{"2186":1}}],["0000",{"2":{"2131":1,"2489":1,"2492":2}}],["0003",{"2":{"629":1,"2280":1}}],["000e",{"2":{"629":1,"2383":1}}],["000d",{"2":{"629":1,"2383":1}}],["000c",{"2":{"629":1,"2383":1}}],["003",{"2":{"629":1}}],["0037",{"2":{"629":2,"2383":1}}],["0036",{"2":{"629":2,"2383":1}}],["00am",{"2":{"350":9}}],["00",{"2":{"317":5,"463":2,"464":2,"465":4,"1488":1,"1489":1,"2133":1}}],["0ab",{"2":{"266":1}}],["08t12",{"2":{"2392":17}}],["08752684f7f6",{"2":{"314":1,"315":1}}],["08",{"2":{"265":1}}],["02",{"2":{"249":1}}],["01101010",{"2":{"2186":1}}],["01110000",{"2":{"2185":1}}],["01ue",{"2":{"2185":1}}],["0189",{"2":{"629":1}}],["0106",{"2":{"629":1}}],["0101",{"2":{"629":1,"2383":1}}],["01000010",{"2":{"1337":1,"2185":2}}],["0100",{"2":{"253":1}}],["0131",{"2":{"226":1}}],["0130",{"2":{"226":1}}],["01",{"2":{"211":2,"1488":2,"1489":1}}],["0+atmel3",{"2":{"114":1}}],["07",{"2":{"114":2}}],["0xxx",{"2":{"2387":3}}],["0xe7",{"2":{"2354":1}}],["0xe8",{"2":{"1939":1}}],["0x464751",{"2":{"2633":1}}],["0x464651",{"2":{"2626":1}}],["0x4335",{"2":{"1927":1}}],["0x41",{"2":{"1927":2}}],["0x400",{"2":{"2392":1}}],["0x40b",{"2":{"2219":1}}],["0x40",{"2":{"786":1,"790":1}}],["0xd7",{"2":{"2385":1}}],["0xd8",{"2":{"2383":8}}],["0xdb",{"2":{"2382":1}}],["0xd9",{"2":{"2382":3}}],["0xd4",{"2":{"1852":1,"2176":1}}],["0xd3",{"2":{"1852":1,"2176":1}}],["0xd2",{"2":{"1852":1,"2176":1}}],["0xd1",{"2":{"1852":1,"2176":1}}],["0xd0",{"2":{"1852":1,"2176":1,"2383":1,"2384":1,"2385":1}}],["0xb4",{"2":{"1852":1,"2176":1}}],["0xb3",{"2":{"1852":1,"2176":1}}],["0xb2",{"2":{"1852":1,"2176":1,"2584":1}}],["0xb1",{"2":{"1852":1,"2176":1}}],["0xb0",{"2":{"1257":1,"1852":1,"2176":1,"2739":1}}],["0xaf",{"2":{"1852":1,"2176":1}}],["0xae",{"2":{"1852":1,"2176":1}}],["0xad",{"2":{"1852":1,"2176":1}}],["0xac",{"2":{"1852":1,"2176":1}}],["0xab",{"2":{"1852":1,"2176":1}}],["0xaa",{"2":{"1852":1,"2176":1}}],["0xa9",{"2":{"1852":1,"2176":1}}],["0xa8",{"2":{"1852":1,"2176":1}}],["0xa7",{"2":{"1852":1,"2176":1}}],["0xa6",{"2":{"1852":1,"2176":1}}],["0xa5",{"2":{"1852":1,"2176":1,"2424":1,"2434":1}}],["0xa4f9",{"2":{"1925":1}}],["0xa4",{"2":{"1852":1,"2176":1}}],["0xa3",{"2":{"1852":1,"2176":1}}],["0xa2",{"2":{"1852":1,"2176":1}}],["0xa1",{"2":{"1852":1,"2176":1}}],["0xa0",{"2":{"1852":1,"2176":1}}],["0x9b",{"2":{"2382":1}}],["0x99",{"2":{"2382":3}}],["0x94",{"2":{"1852":1,"2176":1}}],["0x93",{"2":{"1852":1,"2176":1}}],["0x92",{"2":{"1852":1,"2176":1}}],["0x91",{"2":{"1852":1,"2176":1}}],["0x90",{"2":{"1852":1,"2176":1}}],["0x8f",{"2":{"1852":1,"2176":1}}],["0x8e",{"2":{"1852":1,"2176":1}}],["0x8d",{"2":{"1852":1,"2176":1}}],["0x8c",{"2":{"1852":1,"2176":1}}],["0x8b",{"2":{"1852":1,"2176":1}}],["0x8a",{"2":{"1852":1,"2176":1}}],["0x89",{"2":{"1852":1,"2176":1}}],["0x88",{"2":{"1852":1,"2176":1}}],["0x87",{"2":{"1852":1,"2176":1}}],["0x86",{"2":{"1852":1,"2176":1}}],["0x85",{"2":{"1852":1,"2176":1}}],["0x84",{"2":{"1852":1,"2176":1}}],["0x83",{"2":{"1852":1,"2176":1}}],["0x82",{"2":{"1852":1,"2176":1}}],["0x81",{"2":{"1852":1,"2176":1}}],["0x8000000",{"2":{"2278":1,"2282":1,"2392":1}}],["0x80",{"2":{"1852":1,"1855":1,"2176":1}}],["0x",{"2":{"1289":1}}],["0xf8",{"2":{"2383":1}}],["0xfb",{"2":{"2383":6}}],["0xfe",{"2":{"2383":2}}],["0xfeed",{"2":{"1279":1,"2595":2}}],["0xf3",{"2":{"2382":4}}],["0xffff",{"2":{"2610":2,"2679":1}}],["0xff60",{"2":{"1924":2,"1927":1}}],["0xff",{"2":{"850":1,"855":1,"885":1,"889":1,"919":1,"923":1,"953":1,"957":1,"987":1,"991":1,"1021":1,"1025":1,"1055":1,"1059":1,"1089":1,"1093":1,"1373":1,"1380":6,"1440":1,"1441":2,"1467":5,"1483":3,"1764":1,"1767":1,"1899":1,"1985":1,"1990":4,"2266":4,"2383":9,"2450":1,"2679":1}}],["0x6fff",{"2":{"2492":1}}],["0x6f",{"2":{"1090":1}}],["0x6e",{"2":{"1090":1}}],["0x6d",{"2":{"1090":1}}],["0x6c",{"2":{"1090":1}}],["0x6b",{"2":{"1090":1}}],["0x6a",{"2":{"1090":1}}],["0x69",{"2":{"1090":1}}],["0x68",{"2":{"1090":1}}],["0x67",{"2":{"1090":1}}],["0x66",{"2":{"1090":1}}],["0x65",{"2":{"1090":1}}],["0x64",{"2":{"1090":1}}],["0x63",{"2":{"1090":1}}],["0x62",{"2":{"1090":1}}],["0x61",{"2":{"1090":1,"1924":2,"1927":1}}],["0x60000002",{"2":{"2441":1}}],["0x60",{"2":{"1090":1}}],["0x7e",{"2":{"2614":3,"2626":1,"2627":1}}],["0x7000",{"2":{"2492":2}}],["0x7fff",{"2":{"2222":1,"2301":1,"2423":1}}],["0x7f",{"2":{"1667":1}}],["0x7a",{"2":{"1380":1}}],["0x77",{"2":{"819":1,"1146":1,"1183":1}}],["0x76",{"2":{"819":1,"1146":1,"1183":1}}],["0x75",{"2":{"819":1,"1146":1,"1183":1}}],["0x74",{"2":{"819":1,"1146":1,"1183":1}}],["0x3",{"2":{"1595":1}}],["0x33",{"2":{"954":1,"988":1}}],["0x32",{"2":{"954":1,"988":1}}],["0x31",{"2":{"954":1,"987":1,"988":1,"1055":1}}],["0x30c4",{"2":{"2219":1}}],["0x30",{"2":{"954":1,"988":1}}],["0x37",{"2":{"787":1}}],["0x36",{"2":{"787":1}}],["0x35",{"2":{"787":1}}],["0x34",{"2":{"787":1}}],["0x3f80",{"2":{"2492":2}}],["0x3f7f",{"2":{"2492":1}}],["0x3f",{"2":{"758":1,"1665":1}}],["0x3e",{"2":{"758":1}}],["0x3d",{"2":{"758":1}}],["0x3c",{"2":{"758":1,"1856":1}}],["0x5f",{"2":{"851":1,"886":1,"920":1}}],["0x5e",{"2":{"851":1,"886":1,"2382":4}}],["0x5d",{"2":{"851":1,"886":1}}],["0x5c",{"2":{"851":1,"886":1}}],["0x5b",{"2":{"851":1,"886":1}}],["0x5a",{"2":{"851":1,"886":1,"920":1}}],["0x59",{"2":{"851":1,"886":1}}],["0x58",{"2":{"851":1,"886":1}}],["0x57",{"2":{"851":1,"886":1}}],["0x56f0",{"2":{"1483":1}}],["0x56",{"2":{"851":1,"886":1}}],["0x5678",{"2":{"169":2,"184":2,"502":1}}],["0x55",{"2":{"851":1,"886":1,"920":1}}],["0x53",{"2":{"851":1,"886":1}}],["0x52",{"2":{"851":1,"886":1}}],["0x51",{"2":{"851":1,"886":1}}],["0x50",{"2":{"851":1,"886":1,"920":1}}],["0x54",{"2":{"732":1,"851":1,"886":1}}],["0x2f",{"2":{"1022":1,"1056":1}}],["0x2e2e",{"2":{"2219":1}}],["0x2e",{"2":{"1022":1,"1056":1}}],["0x2d",{"2":{"1022":1,"1056":1}}],["0x2c",{"2":{"1022":1,"1056":1}}],["0x2b",{"2":{"1022":1,"1056":1}}],["0x2a",{"2":{"1022":1,"1056":1,"1943":1}}],["0x29",{"2":{"1022":1,"1056":1}}],["0x28",{"2":{"1022":1,"1056":1}}],["0x27",{"2":{"1022":1,"1056":1}}],["0x26",{"2":{"1022":1,"1056":1}}],["0x25",{"2":{"1022":1,"1056":1}}],["0x24",{"2":{"1022":1,"1056":1}}],["0x23b0",{"2":{"2738":1}}],["0x23",{"2":{"1022":1,"1056":1}}],["0x2330",{"2":{"111":1}}],["0x22",{"2":{"1022":1,"1056":1}}],["0x21",{"2":{"1022":1,"1056":1}}],["0x200",{"2":{"2288":2}}],["0x2000",{"2":{"317":1}}],["0x203d",{"2":{"2219":1}}],["0x20",{"2":{"1022":1,"1056":1,"2614":3,"2626":1,"2627":1}}],["0x100",{"2":{"2679":1}}],["0x10ffff",{"2":{"2301":2}}],["0x1e9587",{"2":{"2386":1}}],["0x1eff",{"2":{"317":1}}],["0x1d",{"2":{"2356":1}}],["0x1c04",{"2":{"2392":1}}],["0x1c",{"2":{"2356":1}}],["0x1f",{"2":{"2385":1}}],["0x1f1e6",{"2":{"2220":1}}],["0x1f1fa",{"2":{"2220":1}}],["0x1f923",{"2":{"2220":1}}],["0x1f4a9",{"2":{"2220":1}}],["0x1f40d",{"2":{"2219":1}}],["0x1fff",{"2":{"317":1}}],["0x15",{"2":{"1632":3}}],["0x18",{"2":{"701":2}}],["0x1234",{"2":{"169":2,"184":2,"502":1}}],["0x03",{"2":{"2629":2,"2635":1,"2636":2}}],["0x03a8",{"2":{"1925":1}}],["0x07",{"2":{"2424":1,"2635":1}}],["0x06",{"2":{"2356":1,"2635":1}}],["0x05",{"2":{"2356":1,"2635":1,"2638":2}}],["0x0ca0",{"2":{"2220":2}}],["0x02",{"2":{"1950":1,"1985":1,"2628":2,"2635":3}}],["0x0a",{"2":{"1948":1}}],["0x0f",{"2":{"1899":1,"2384":1}}],["0x09",{"2":{"1870":1}}],["0x0b",{"2":{"1870":1}}],["0x08001c00",{"2":{"2392":1}}],["0x08001800",{"2":{"2392":1}}],["0x08001400",{"2":{"2392":1}}],["0x08001000",{"2":{"2392":1}}],["0x08000c00",{"2":{"2392":1}}],["0x08000800",{"2":{"2392":1}}],["0x08000400",{"2":{"2392":1}}],["0x08000000",{"2":{"2392":2}}],["0x08",{"2":{"1632":1,"1764":1,"1985":1}}],["0x0410",{"2":{"2392":2}}],["0x04",{"2":{"1632":3,"1764":1,"1985":1,"2356":1,"2357":1,"2385":1,"2630":2,"2635":1,"2637":2}}],["0x0e",{"2":{"1632":1}}],["0x01",{"2":{"1021":1,"1089":1,"1764":1,"1985":1,"1997":2,"2626":1,"2627":2,"2633":1,"2634":2,"2635":2}}],["0x0100",{"2":{"317":1,"502":1}}],["0x0",{"2":{"689":1,"2492":2}}],["0x005f",{"2":{"2220":1}}],["0x00c6",{"2":{"2220":1}}],["0x00e6",{"2":{"2220":1}}],["0x00",{"2":{"1380":8,"1632":1,"1665":1,"1667":1,"1764":1,"1852":1,"1927":1,"1985":1,"1990":1,"2176":1,"2354":1,"2626":2,"2633":2,"2635":2,"2679":1}}],["0x00ff",{"2":{"317":1,"2610":2}}],["0x0008e534",{"2":{"2392":1}}],["0x0002",{"2":{"1927":1}}],["0x00000002",{"2":{"2441":1}}],["0x00000001",{"2":{"2441":1}}],["0x0000",{"2":{"317":1,"2392":1,"2595":1,"2610":2}}],["0x0001",{"2":{"111":1,"169":1,"184":1}}],["0xcf",{"2":{"1852":1,"2176":1}}],["0xce",{"2":{"1852":1,"2176":1}}],["0xcd",{"2":{"1852":1,"2176":1}}],["0xcc",{"2":{"1852":1,"2176":1}}],["0xca",{"2":{"1852":1,"2176":1}}],["0xc9",{"2":{"1852":1,"2176":1}}],["0xc8",{"2":{"1852":1,"2176":1}}],["0xc7",{"2":{"1852":1,"2176":1}}],["0xc6",{"2":{"1852":1,"2176":1}}],["0xc5",{"2":{"1852":1,"2176":1}}],["0xc4",{"2":{"1852":1,"2176":1}}],["0xc3",{"2":{"1852":1,"2176":1}}],["0xc2",{"2":{"1852":1,"2176":1}}],["0xc1",{"2":{"1852":1,"2176":1}}],["0xc1ed",{"2":{"111":1,"2738":1}}],["0xc0",{"2":{"1852":1,"2176":1,"2385":1}}],["0xcb",{"2":{"114":1,"266":1,"1352":1,"1359":1,"1852":1,"2176":1,"2584":1,"2751":1}}],["0$",{"2":{"70":3}}],["0",{"0":{"56":1,"2315":1,"2372":1},"1":{"2373":1},"2":{"11":1,"14":1,"38":2,"56":1,"90":2,"102":1,"105":4,"114":5,"120":2,"122":2,"137":1,"168":1,"169":2,"176":1,"184":2,"191":2,"195":1,"199":2,"222":1,"231":4,"236":1,"238":2,"240":2,"247":1,"249":2,"266":5,"277":2,"292":1,"313":1,"317":8,"351":40,"370":1,"396":1,"411":1,"465":2,"487":2,"502":1,"505":1,"507":2,"511":1,"530":3,"534":1,"597":3,"598":1,"624":3,"629":1,"630":1,"633":1,"635":4,"636":2,"639":2,"644":1,"653":1,"656":1,"657":1,"659":2,"662":1,"679":1,"680":1,"688":1,"689":1,"726":2,"731":1,"757":2,"760":3,"763":1,"786":2,"789":4,"790":1,"792":3,"795":1,"818":2,"822":3,"825":1,"850":5,"854":6,"855":1,"857":3,"860":1,"885":4,"888":6,"889":1,"891":3,"894":1,"919":4,"922":6,"923":1,"925":3,"928":1,"953":2,"956":4,"957":1,"959":3,"962":1,"987":2,"990":4,"991":1,"993":3,"996":1,"1021":3,"1024":4,"1025":1,"1027":3,"1030":1,"1055":3,"1058":4,"1059":1,"1061":3,"1064":1,"1089":2,"1092":4,"1093":1,"1095":3,"1098":1,"1136":1,"1145":2,"1148":2,"1151":1,"1182":2,"1185":3,"1188":1,"1218":1,"1251":1,"1252":1,"1254":3,"1261":1,"1271":1,"1289":23,"1324":2,"1332":1,"1356":8,"1362":4,"1365":1,"1369":1,"1372":2,"1373":2,"1375":2,"1381":1,"1391":1,"1392":1,"1396":2,"1405":1,"1412":1,"1436":1,"1442":1,"1443":1,"1464":2,"1477":23,"1483":4,"1485":1,"1488":4,"1489":1,"1494":1,"1495":1,"1517":1,"1519":1,"1532":3,"1536":1,"1541":1,"1543":1,"1555":2,"1562":2,"1568":3,"1571":3,"1572":2,"1584":2,"1585":1,"1586":1,"1587":3,"1594":1,"1597":1,"1598":2,"1600":1,"1608":1,"1611":1,"1614":3,"1615":3,"1625":2,"1632":1,"1642":2,"1650":1,"1652":1,"1670":2,"1671":2,"1672":6,"1673":3,"1681":1,"1683":1,"1686":1,"1708":1,"1753":1,"1755":2,"1756":1,"1763":5,"1766":1,"1768":1,"1782":1,"1800":1,"1806":1,"1808":1,"1810":1,"1830":2,"1831":29,"1832":2,"1839":2,"1841":1,"1843":4,"1853":5,"1854":2,"1855":9,"1858":2,"1859":5,"1860":5,"1876":1,"1878":1,"1880":1,"1882":1,"1884":1,"1894":4,"1896":10,"1901":3,"1916":1,"1918":2,"1919":2,"1927":5,"1937":6,"1940":1,"1950":3,"1951":1,"1956":2,"1959":2,"1960":6,"1962":2,"1963":2,"1969":2,"1984":5,"1987":1,"1992":2,"1996":3,"1997":4,"2009":1,"2027":1,"2033":1,"2039":1,"2045":1,"2047":1,"2049":1,"2051":3,"2053":3,"2073":2,"2074":8,"2076":2,"2081":1,"2082":4,"2089":15,"2092":2,"2093":2,"2096":1,"2097":1,"2098":1,"2108":4,"2119":1,"2123":1,"2129":1,"2130":1,"2131":1,"2132":1,"2133":1,"2134":1,"2135":2,"2136":1,"2137":1,"2138":2,"2150":4,"2151":1,"2166":3,"2168":2,"2171":2,"2177":5,"2179":5,"2181":2,"2185":1,"2186":6,"2190":1,"2193":16,"2195":1,"2206":2,"2220":2,"2255":1,"2265":2,"2266":3,"2273":1,"2278":1,"2281":1,"2303":3,"2308":2,"2350":10,"2372":2,"2386":1,"2392":3,"2394":4,"2404":3,"2410":29,"2411":2,"2425":2,"2433":2,"2440":4,"2441":9,"2445":1,"2446":4,"2453":5,"2454":2,"2492":2,"2552":2,"2563":2,"2595":2,"2598":18,"2609":1,"2613":1,"2614":2,"2615":1,"2616":27,"2620":1,"2632":1,"2635":6,"2636":6,"2639":2,"2650":3,"2653":1,"2654":13,"2713":1,"2714":1,"2716":1,"2718":2,"2721":1,"2725":4,"2727":5,"2728":1,"2733":4,"2734":6,"2735":5,"2736":1,"2738":3,"2749":2,"2770":2,"2771":3,"2772":2,"2776":2,"2784":21,"2786":1,"2787":39}}],["3akeyboard",{"2":{"2605":1}}],["3aclosed+label",{"2":{"2605":1}}],["3apr+is",{"2":{"2605":1}}],["3d",{"2":{"2319":1}}],["3+0",{"2":{"1937":1}}],["3=5",{"2":{"1860":1}}],["3|128",{"2":{"1488":1}}],["34",{"2":{"1442":1,"1616":1,"1937":1}}],["333c30605e739ce9bedee5999fdaf81b",{"2":{"2392":1}}],["33s",{"2":{"2386":1}}],["3389",{"0":{"1950":1},"2":{"1950":3}}],["33",{"2":{"1442":1,"1616":1,"1937":1,"2616":6}}],["3360",{"0":{"1950":1},"2":{"118":1,"1950":3}}],["3b",{"2":{"1330":1}}],["35",{"2":{"1442":1,"1477":1,"1616":1,"1937":1,"2338":1,"2513":1}}],["3500",{"2":{"1949":1}}],["350",{"2":{"1251":1,"1720":1}}],["351",{"2":{"951":1,"1762":1}}],["384",{"2":{"2219":1}}],["38400",{"2":{"1136":1,"1238":1}}],["38",{"2":{"1442":1,"1616":1,"1763":1,"1831":1,"1937":1,"1984":1,"2410":1}}],["38u",{"2":{"705":1}}],["3k63",{"2":{"1091":1}}],["3k6",{"2":{"955":1,"989":1}}],["3key",{"2":{"154":2}}],["3v3",{"2":{"2383":2}}],["3v",{"2":{"629":2,"630":2,"1627":1,"1669":1,"2152":1,"2391":1,"2557":1,"2558":1,"2567":1,"2568":2,"2569":3}}],["3rd",{"2":{"457":1,"556":1,"2341":1}}],["39000",{"2":{"1136":1}}],["39x9",{"2":{"951":1}}],["39kbps",{"2":{"511":1,"2166":1}}],["39",{"2":{"315":2,"1442":1,"1616":1}}],["319",{"2":{"2616":3}}],["316",{"2":{"1290":4}}],["313",{"2":{"1290":1}}],["315ºc",{"2":{"2311":1}}],["315",{"2":{"1290":1}}],["314b",{"2":{"629":1}}],["31",{"2":{"231":4,"502":1,"644":2,"653":1,"1312":1,"1442":1,"1494":1,"1616":1,"1673":3,"1681":1,"1683":1,"1872":3,"1876":1,"1878":1,"1880":1,"1882":1,"1884":1,"1937":1,"2078":1,"2392":13,"2404":3,"2419":3,"2440":2,"2441":5,"2714":2,"2716":1}}],["3x",{"2":{"1614":1,"1615":1,"1943":1}}],["3x5+3",{"2":{"249":1}}],["3x5",{"2":{"217":1,"222":2,"249":1,"1533":1}}],["3x8",{"2":{"154":2}}],["3x7",{"2":{"154":2}}],["3x6",{"2":{"154":2}}],["360",{"2":{"1843":1,"2616":1,"2636":1}}],["36",{"2":{"154":2,"211":1,"755":1,"1616":1,"1762":1,"1937":1,"2308":1}}],["37",{"2":{"1442":1,"1616":1,"1763":1,"1937":1,"1984":1}}],["3731",{"2":{"236":1}}],["3733",{"2":{"134":1}}],["3741",{"2":{"236":1}}],["378",{"2":{"211":1}}],["378edd9",{"2":{"73":1}}],["3700",{"2":{"57":2}}],["320x480",{"2":{"2612":2}}],["3204",{"0":{"1947":1},"2":{"1947":2}}],["3286",{"2":{"2374":1}}],["328p",{"2":{"235":1}}],["32k",{"2":{"786":1,"788":2,"854":2,"888":2,"922":2,"953":2,"956":4,"990":2}}],["32kb",{"2":{"678":2}}],["32kb+",{"2":{"486":1}}],["32u2",{"2":{"702":1,"1213":1,"1234":1,"1503":1,"1504":1}}],["32u4rc",{"2":{"2268":1}}],["32u4",{"2":{"211":1,"487":1,"629":4,"633":1,"702":1,"1234":1,"1503":1,"1504":1,"1529":2,"2383":4}}],["32bit",{"2":{"588":1}}],["32730",{"2":{"2386":4}}],["32767",{"2":{"505":2,"1952":2}}],["3270",{"2":{"114":1,"207":8}}],["32",{"0":{"166":1},"2":{"63":1,"120":1,"231":1,"277":1,"506":1,"674":1,"675":1,"788":1,"854":2,"883":1,"888":2,"922":2,"956":2,"990":2,"1264":1,"1369":1,"1370":1,"1373":1,"1391":1,"1442":1,"1552":1,"1616":1,"1668":1,"1670":1,"1763":2,"1842":1,"1843":2,"1845":3,"1858":2,"1872":3,"1925":1,"1926":1,"1927":1,"1930":2,"1932":2,"1937":1,"1983":1,"1984":2,"1988":1,"2080":2,"2129":1,"2141":1,"2143":1,"2168":1,"2179":1,"2180":2,"2328":1,"2419":3,"2440":2,"2441":1,"2450":1,"2463":1,"2567":1,"2661":1,"2727":1,"2733":1,"2734":1}}],["3",{"0":{"81":1,"539":1,"1332":1,"2197":1,"2206":1,"2355":1,"2472":1,"2507":1},"1":{"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"10":1,"23":1,"69":1,"70":1,"76":1,"81":1,"93":1,"114":2,"120":2,"122":2,"131":1,"134":3,"160":1,"176":3,"188":1,"191":1,"199":1,"211":1,"217":1,"222":1,"236":1,"240":1,"251":1,"266":6,"292":1,"313":1,"337":1,"350":1,"358":5,"359":5,"364":1,"366":1,"455":1,"491":3,"502":1,"511":1,"522":1,"530":2,"534":6,"540":1,"582":1,"606":1,"624":1,"629":1,"630":2,"633":1,"635":22,"636":1,"662":1,"685":2,"694":1,"757":2,"763":1,"786":2,"795":1,"818":2,"822":1,"825":1,"850":4,"860":1,"885":2,"894":1,"919":2,"928":1,"953":2,"955":1,"962":1,"987":2,"989":1,"996":1,"1021":4,"1030":1,"1055":4,"1064":1,"1089":2,"1091":1,"1098":1,"1127":1,"1130":1,"1136":1,"1145":2,"1148":1,"1151":1,"1169":1,"1171":2,"1182":2,"1188":1,"1218":1,"1305":1,"1332":1,"1391":1,"1420":1,"1424":1,"1442":1,"1488":2,"1494":1,"1503":4,"1504":2,"1506":1,"1541":1,"1565":1,"1568":2,"1587":1,"1597":1,"1600":1,"1614":4,"1615":3,"1616":1,"1627":1,"1632":1,"1669":1,"1670":1,"1673":3,"1723":2,"1760":2,"1763":1,"1766":1,"1831":31,"1839":2,"1843":3,"1857":1,"1859":3,"1860":1,"1872":3,"1896":2,"1900":2,"1936":1,"1940":1,"1943":1,"1984":1,"1987":2,"2074":4,"2076":1,"2080":1,"2081":1,"2082":2,"2096":1,"2097":1,"2098":3,"2150":1,"2152":1,"2155":1,"2157":1,"2158":1,"2166":1,"2186":2,"2188":1,"2191":1,"2193":16,"2205":4,"2207":1,"2212":1,"2299":1,"2334":1,"2338":4,"2339":4,"2349":1,"2350":3,"2391":3,"2394":9,"2404":3,"2410":31,"2411":2,"2419":3,"2425":2,"2430":2,"2433":2,"2446":1,"2450":1,"2457":1,"2459":2,"2511":1,"2513":1,"2536":1,"2558":1,"2567":1,"2568":2,"2569":3,"2573":1,"2598":16,"2615":26,"2635":2,"2636":1,"2654":9,"2684":1,"2716":1,"2733":1,"2735":1,"2759":1,"2773":1,"2779":1,"2785":1}}],["30fps",{"2":{"2616":6}}],["30x6",{"2":{"985":1}}],["300",{"2":{"505":2,"1720":1,"1721":1,"1845":1,"1901":1,"1940":2,"2182":1,"2726":2}}],["30000",{"2":{"2613":1}}],["3000",{"2":{"266":1,"511":1,"1541":1,"1842":1,"2169":1}}],["30",{"0":{"0":1,"19":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1},"2":{"114":1,"176":1,"351":2,"502":1,"1442":1,"1616":8,"1673":3,"1841":1,"1853":1,"1872":3,"1937":1,"1987":2,"1997":1,"2078":2,"2177":1,"2392":4,"2404":3,"2419":3,"2440":1,"2441":4,"2728":2}}],["1bpp",{"2":{"2615":1,"2635":2}}],["1b4f",{"2":{"629":3,"2383":3}}],["1ca027",{"2":{"1942":1}}],["1c11",{"2":{"629":1,"2281":1}}],["1=3",{"2":{"1860":1}}],["1>",{"2":{"1715":1,"2777":1}}],["1x",{"2":{"1614":1,"1615":1,"1943":1,"2155":1,"2567":1}}],["1x4",{"2":{"211":1}}],["1st",{"2":{"1381":1}}],["1️⃣",{"2":{"685":12}}],["1p5",{"2":{"641":1}}],["1eaf",{"2":{"629":1,"2280":1}}],["1ffb",{"2":{"629":1,"2383":1}}],["1u",{"2":{"2725":2}}],["1up60rgb",{"2":{"529":1}}],["1upkeyboards",{"2":{"191":2,"211":2,"236":1,"529":1}}],["1ul",{"2":{"105":4,"1327":2,"1587":4}}],["19",{"2":{"315":2,"351":1,"1442":1,"1477":1,"1616":1,"1673":3,"1872":3,"1937":2,"2404":3,"2419":3}}],["199",{"2":{"2770":1,"2771":1}}],["19939",{"2":{"236":1}}],["19954",{"2":{"211":1}}],["19997",{"2":{"236":1}}],["19998",{"2":{"211":1}}],["19991",{"2":{"211":1}}],["19993",{"2":{"211":1}}],["19987",{"2":{"211":1}}],["19985",{"2":{"211":1}}],["19980",{"2":{"211":1}}],["19961",{"2":{"211":1}}],["19966",{"2":{"211":1}}],["19925",{"2":{"211":1}}],["19923",{"2":{"199":1}}],["19974",{"2":{"211":1}}],["19948",{"2":{"211":1}}],["19941",{"2":{"199":1}}],["19940",{"2":{"199":1}}],["19912",{"2":{"211":1}}],["19916",{"2":{"199":1}}],["19919",{"2":{"199":1}}],["19918",{"2":{"199":1}}],["19910",{"2":{"199":1}}],["19902",{"2":{"199":1}}],["19901",{"2":{"199":1}}],["19909",{"2":{"199":1}}],["19907",{"2":{"199":1}}],["198",{"2":{"1019":1,"1762":1}}],["19849",{"2":{"211":1}}],["19845",{"2":{"199":1}}],["19842",{"2":{"199":1}}],["19893",{"2":{"199":1}}],["19898",{"2":{"199":1}}],["19891",{"2":{"199":1}}],["19890",{"2":{"199":1}}],["19869",{"2":{"199":1}}],["19867",{"2":{"199":1}}],["19866",{"2":{"199":1}}],["19864",{"2":{"199":1}}],["19863",{"2":{"199":1}}],["19860",{"2":{"199":1}}],["19854",{"2":{"211":1}}],["19857",{"2":{"199":1}}],["19856",{"2":{"199":1}}],["19859",{"2":{"199":1}}],["19851",{"2":{"199":1}}],["19825",{"2":{"211":1}}],["19828",{"2":{"199":1}}],["19821",{"2":{"199":1}}],["19826",{"2":{"199":1}}],["19829",{"2":{"199":1}}],["19808",{"2":{"199":1}}],["19800",{"2":{"199":1}}],["19806",{"2":{"199":1}}],["19889",{"2":{"199":1}}],["19888",{"2":{"199":1}}],["19887",{"2":{"199":1}}],["19885",{"2":{"199":1}}],["19884",{"2":{"199":1}}],["19874",{"2":{"199":1}}],["19879",{"2":{"199":1}}],["19872",{"2":{"199":1}}],["19877",{"2":{"199":1}}],["19875",{"2":{"199":1}}],["19833",{"2":{"199":1}}],["19831",{"2":{"199":1}}],["19830",{"2":{"199":1}}],["19815",{"2":{"199":1}}],["19817",{"2":{"199":1}}],["19813",{"2":{"199":1}}],["19780",{"2":{"222":2}}],["19784",{"2":{"199":1}}],["19738",{"2":{"211":1}}],["19793",{"2":{"199":1}}],["19795",{"2":{"199":1}}],["19778",{"2":{"199":1}}],["19777",{"2":{"199":1}}],["19774",{"2":{"199":1}}],["19767",{"2":{"199":1}}],["19768",{"2":{"199":1}}],["19761",{"2":{"199":1}}],["19749",{"2":{"236":1}}],["19748",{"2":{"199":1}}],["19742",{"2":{"199":1}}],["19752",{"2":{"199":1}}],["19750",{"2":{"199":1}}],["19756",{"2":{"199":1}}],["19755",{"2":{"199":1}}],["19753",{"2":{"199":1}}],["19723",{"2":{"199":1}}],["19721",{"2":{"199":1}}],["19726",{"2":{"199":1}}],["19722",{"2":{"199":1}}],["19720",{"2":{"199":1}}],["19718",{"2":{"199":1}}],["19715",{"2":{"199":1}}],["19714",{"2":{"199":1}}],["19713",{"2":{"199":1}}],["19712",{"2":{"199":1}}],["1970",{"2":{"463":1,"464":1,"465":2}}],["19705",{"2":{"211":1}}],["19700",{"2":{"211":1}}],["19703",{"2":{"199":1}}],["19704",{"2":{"199":1}}],["19701",{"2":{"199":1}}],["19689",{"2":{"211":1}}],["19683",{"2":{"199":1}}],["1967st",{"2":{"211":1}}],["19670",{"2":{"211":1}}],["19675",{"2":{"199":1}}],["19658",{"2":{"199":1}}],["19652",{"2":{"199":1}}],["19656",{"2":{"199":1}}],["19647",{"2":{"199":1}}],["19644",{"2":{"199":1}}],["19649",{"2":{"199":1}}],["19640",{"2":{"199":1}}],["19646",{"2":{"199":1}}],["19699",{"2":{"199":1}}],["19630",{"2":{"199":1}}],["19633",{"2":{"199":1}}],["19632",{"2":{"199":1}}],["19629",{"2":{"199":1}}],["19620",{"2":{"199":1}}],["19602",{"2":{"199":1}}],["19607",{"2":{"199":1}}],["19606",{"2":{"199":1}}],["19603",{"2":{"199":2}}],["19515",{"2":{"222":1}}],["19511",{"2":{"199":1}}],["19537",{"2":{"199":1}}],["19530",{"2":{"199":1}}],["19588",{"2":{"199":1}}],["19581",{"2":{"199":1}}],["19570",{"2":{"199":1}}],["19529",{"2":{"199":1}}],["19599",{"2":{"199":1}}],["19597",{"2":{"199":1}}],["19594",{"2":{"199":1}}],["19562",{"2":{"199":1}}],["19565",{"2":{"199":1}}],["19564",{"2":{"199":1}}],["19563",{"2":{"199":1}}],["19543",{"2":{"211":1}}],["19549",{"2":{"199":1}}],["19548",{"2":{"199":1}}],["19541",{"2":{"199":1}}],["19542",{"2":{"199":1}}],["19545",{"2":{"199":1}}],["19544",{"2":{"199":1}}],["19447",{"2":{"199":1}}],["19468",{"2":{"199":1}}],["19464",{"2":{"199":1}}],["19462",{"2":{"199":1}}],["19463",{"2":{"199":1}}],["19496",{"2":{"199":1}}],["19488",{"2":{"199":1}}],["19487",{"2":{"199":1}}],["19485",{"2":{"199":1}}],["19480",{"2":{"199":1}}],["19474",{"2":{"199":1}}],["19479",{"2":{"199":1}}],["19475",{"2":{"199":1}}],["19453",{"2":{"199":1}}],["19452",{"2":{"199":1}}],["19412",{"2":{"199":1}}],["19411",{"2":{"199":1}}],["19418",{"2":{"199":1}}],["19416",{"2":{"199":1}}],["19415",{"2":{"199":1}}],["19400",{"2":{"199":1}}],["19313",{"2":{"199":1}}],["19341",{"2":{"199":1}}],["19348",{"2":{"199":1}}],["19332",{"2":{"199":1}}],["1930",{"2":{"2671":1}}],["19304",{"2":{"199":1}}],["19302",{"2":{"199":1}}],["19301",{"2":{"199":1}}],["19306",{"2":{"199":1}}],["19303",{"2":{"199":1}}],["19350",{"2":{"199":1}}],["19326",{"2":{"199":1}}],["19325",{"2":{"199":1}}],["19399",{"2":{"199":1}}],["19397",{"2":{"199":1}}],["19394",{"2":{"199":1}}],["19382",{"2":{"199":1}}],["19370",{"2":{"199":1}}],["19366",{"2":{"199":1}}],["192",{"2":{"848":1,"1180":1,"1762":2,"2329":1}}],["19280",{"2":{"249":1}}],["19269",{"2":{"199":1}}],["19267",{"2":{"199":1}}],["19262",{"2":{"199":1}}],["1920",{"2":{"1845":1}}],["19200",{"2":{"1136":1,"1238":1}}],["19201",{"2":{"199":1}}],["19203",{"2":{"199":1}}],["19248",{"2":{"199":1}}],["19243",{"2":{"199":1}}],["19275",{"2":{"199":1}}],["19271",{"2":{"199":1}}],["19277",{"2":{"199":1}}],["19273",{"2":{"199":1}}],["19229",{"2":{"199":1}}],["19226",{"2":{"199":1}}],["19225",{"2":{"199":1}}],["19224",{"2":{"199":1}}],["19216",{"2":{"199":1}}],["19214",{"2":{"199":1}}],["1919",{"2":{"1944":1}}],["19194",{"2":{"199":1}}],["191",{"2":{"1853":1,"2177":1}}],["19172",{"2":{"199":1}}],["19153",{"2":{"199":1}}],["19159",{"2":{"191":1}}],["19160",{"2":{"199":1}}],["19167",{"2":{"199":1}}],["19163",{"2":{"199":1}}],["19135",{"2":{"199":1}}],["19137",{"2":{"191":1}}],["19110",{"2":{"199":1}}],["19119",{"2":{"191":1}}],["19140",{"2":{"191":1}}],["19146",{"2":{"191":1}}],["19144",{"2":{"191":1}}],["19143",{"2":{"188":1,"191":1}}],["19107",{"2":{"191":1}}],["19121",{"2":{"191":1}}],["19120",{"2":{"191":1}}],["19124",{"2":{"191":1}}],["19122",{"2":{"191":1}}],["19049",{"2":{"199":1}}],["19096",{"2":{"191":1}}],["19094",{"2":{"191":1}}],["19053",{"2":{"199":1}}],["19059",{"2":{"191":1}}],["19058",{"2":{"191":1}}],["19056",{"2":{"191":1}}],["19052",{"2":{"191":1}}],["19089",{"2":{"191":1}}],["19086",{"2":{"191":1}}],["19080",{"2":{"191":1}}],["19077",{"2":{"199":1}}],["19075",{"2":{"199":1}}],["19072",{"2":{"191":1}}],["19079",{"2":{"191":1}}],["19031",{"2":{"199":1}}],["19038",{"2":{"191":1}}],["19034",{"2":{"190":1,"191":1}}],["19024",{"2":{"199":1}}],["19028",{"2":{"191":1}}],["19029",{"2":{"191":1}}],["19020",{"2":{"191":1}}],["19015",{"2":{"191":1}}],["19018",{"2":{"191":1}}],["19069",{"2":{"211":1}}],["19066",{"2":{"191":1}}],["19060",{"2":{"191":1}}],["19065",{"2":{"191":1}}],["19063",{"2":{"191":1}}],["19068",{"2":{"191":1}}],["19005",{"2":{"236":1}}],["19006",{"2":{"191":1}}],["19007",{"2":{"191":1}}],["19004",{"2":{"188":1,"191":1}}],["1k81",{"2":{"1091":1}}],["1k8",{"2":{"955":1,"989":1}}],["1k05",{"2":{"853":1,"887":1,"921":1}}],["1k",{"2":{"788":1,"789":4,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":4,"1058":4,"1092":4,"2199":1,"2556":1}}],["1kb",{"2":{"673":1}}],["1key",{"2":{"154":2}}],["1khz",{"0":{"148":1},"2":{"148":1,"160":1}}],["1ms",{"2":{"148":1,"176":1,"211":1}}],["15ms",{"2":{"1859":1}}],["15min",{"2":{"588":1}}],["15x9",{"2":{"784":1}}],["15pad",{"2":{"266":1}}],["15",{"2":{"176":1,"351":1,"502":1,"635":4,"820":1,"857":1,"925":1,"1327":1,"1372":2,"1373":2,"1442":1,"1477":2,"1616":1,"1642":1,"1673":3,"1831":2,"1855":1,"1872":3,"1937":2,"2080":1,"2136":1,"2369":1,"2371":1,"2404":3,"2410":2,"2419":3,"2635":1}}],["15843",{"2":{"1289":1}}],["15847",{"2":{"211":1}}],["15814",{"2":{"160":1}}],["15815",{"2":{"160":1}}],["15801",{"2":{"160":1}}],["15805",{"2":{"160":1}}],["15889",{"2":{"236":1}}],["15880",{"2":{"160":1}}],["15883",{"2":{"160":1}}],["15882",{"2":{"160":1}}],["15866",{"2":{"160":1}}],["15859",{"2":{"160":1}}],["15828",{"2":{"160":1}}],["15827",{"2":{"160":1}}],["15829",{"2":{"160":1}}],["15821",{"2":{"160":1}}],["15703",{"2":{"1289":1}}],["15741",{"2":{"199":1}}],["15740",{"2":{"160":1}}],["15799",{"2":{"160":1}}],["15798",{"2":{"160":1}}],["15797",{"2":{"160":1}}],["15791",{"2":{"160":1}}],["15789",{"2":{"160":1}}],["15788",{"2":{"160":1}}],["15786",{"2":{"160":1}}],["15785",{"2":{"160":1}}],["15783",{"2":{"160":1}}],["15781",{"2":{"160":1}}],["15780",{"2":{"160":1}}],["15787",{"2":{"160":1}}],["15767",{"2":{"160":1}}],["15760",{"2":{"160":1}}],["15758",{"2":{"160":1}}],["15730",{"2":{"160":1}}],["15733",{"2":{"145":1}}],["15725",{"2":{"160":1}}],["15510",{"2":{"1289":1}}],["15519",{"2":{"160":1}}],["15505",{"2":{"1289":1}}],["15592",{"2":{"160":1}}],["15589",{"2":{"160":1}}],["15557",{"2":{"160":1}}],["15559",{"2":{"160":1}}],["15538",{"2":{"160":1}}],["15537",{"2":{"160":1}}],["15579",{"2":{"160":1}}],["15416",{"2":{"160":1}}],["15419",{"2":{"160":1}}],["15483",{"2":{"160":1}}],["15489",{"2":{"160":1}}],["15481",{"2":{"160":1}}],["15492",{"2":{"160":1}}],["15479",{"2":{"160":1}}],["15457",{"2":{"160":1}}],["15450",{"2":{"160":1}}],["15435",{"2":{"160":1}}],["15431",{"2":{"160":1}}],["15420",{"2":{"160":1}}],["15409",{"2":{"160":1}}],["15699",{"2":{"191":1}}],["15691",{"2":{"160":1}}],["15674",{"2":{"176":1}}],["15606",{"2":{"160":1}}],["15603",{"2":{"160":1}}],["15609",{"2":{"160":1}}],["15682",{"2":{"160":1}}],["15687",{"2":{"160":1}}],["15684",{"2":{"160":1}}],["15681",{"2":{"160":1}}],["15680",{"2":{"145":1}}],["15668",{"2":{"160":1}}],["15667",{"2":{"160":1}}],["15665",{"2":{"160":1}}],["15662",{"2":{"160":1}}],["15661",{"2":{"160":1}}],["15646",{"2":{"160":1}}],["15647",{"2":{"160":1}}],["15645",{"2":{"160":1}}],["15643",{"2":{"160":1}}],["15641",{"2":{"160":1}}],["15638",{"2":{"160":1}}],["15637",{"2":{"160":1}}],["15636",{"2":{"160":1}}],["15635",{"2":{"160":1}}],["15657",{"2":{"145":1}}],["15988",{"2":{"160":1}}],["15985",{"2":{"160":1}}],["15984",{"2":{"160":1}}],["15987",{"2":{"160":1}}],["15976",{"2":{"160":1}}],["15938",{"2":{"160":1}}],["15935",{"2":{"160":1}}],["15919",{"2":{"160":1}}],["15907",{"2":{"176":1}}],["15906",{"2":{"160":1}}],["15904",{"2":{"160":1}}],["15968",{"2":{"160":1}}],["15954",{"2":{"160":1}}],["15953",{"2":{"160":1}}],["15959",{"2":{"145":1}}],["15944",{"2":{"160":1}}],["15924",{"2":{"160":1}}],["15925",{"2":{"160":1}}],["15923",{"2":{"160":1}}],["15999",{"2":{"160":1}}],["15997",{"2":{"160":1}}],["15993",{"2":{"160":1}}],["15992",{"2":{"160":1}}],["15991",{"2":{"160":1}}],["15996",{"2":{"145":1}}],["15990",{"2":{"145":1}}],["15378",{"2":{"160":1}}],["15376",{"2":{"160":1}}],["15340",{"2":{"160":1}}],["15349",{"2":{"160":1}}],["15336",{"2":{"160":1}}],["15368",{"2":{"160":1}}],["15352",{"2":{"160":1}}],["15321",{"2":{"160":1}}],["15320",{"2":{"145":1}}],["15316",{"2":{"134":1}}],["15313",{"2":{"134":1}}],["15312",{"2":{"134":1}}],["15306",{"2":{"160":1}}],["15305",{"2":{"160":1}}],["15304",{"2":{"160":1}}],["15307",{"2":{"134":1}}],["15302",{"2":{"134":1}}],["15301",{"2":{"134":1}}],["15309",{"2":{"134":1}}],["15303",{"2":{"134":1}}],["15277",{"2":{"160":1}}],["15207",{"2":{"160":1}}],["15205",{"2":{"134":1}}],["15286",{"2":{"176":1}}],["15285",{"2":{"160":1}}],["15282",{"2":{"160":1}}],["15292",{"2":{"176":1}}],["15298",{"2":{"134":1}}],["15299",{"2":{"134":1}}],["15239",{"2":{"134":1}}],["15221",{"2":{"134":1}}],["15223",{"2":{"134":1}}],["15240",{"2":{"134":1}}],["15243",{"2":{"134":1}}],["15244",{"2":{"134":1}}],["15268",{"2":{"134":1}}],["15263",{"2":{"134":1}}],["15262",{"2":{"134":1}}],["15261",{"2":{"134":1}}],["15260",{"2":{"134":1}}],["15269",{"2":{"134":1}}],["15132",{"2":{"160":1}}],["15130",{"2":{"134":1}}],["15167",{"2":{"134":1}}],["15162",{"2":{"133":1,"134":1}}],["15115",{"2":{"134":1}}],["15116",{"2":{"134":1}}],["15109",{"2":{"134":1}}],["15185",{"2":{"134":1}}],["15184",{"2":{"134":1}}],["15171",{"2":{"134":1}}],["15170",{"2":{"134":1}}],["15174",{"2":{"134":1}}],["15199",{"2":{"134":1}}],["15196",{"2":{"134":1}}],["15195",{"2":{"134":1}}],["150",{"2":{"288":1,"656":2,"657":1,"1279":1,"1452":1,"1453":1,"1553":1,"1555":1,"1845":1,"1940":2}}],["15088",{"2":{"160":1}}],["15083",{"2":{"160":1}}],["15029",{"2":{"134":2}}],["15020",{"2":{"134":1}}],["15021",{"2":{"134":1}}],["15073",{"2":{"134":1}}],["15068",{"2":{"134":1}}],["15055",{"2":{"134":1}}],["15019",{"2":{"134":1}}],["15014",{"2":{"134":1}}],["15017",{"2":{"134":1}}],["15012",{"2":{"134":1}}],["15011",{"2":{"134":1}}],["15010",{"2":{"134":1}}],["15018",{"2":{"134":1}}],["15047",{"2":{"134":1}}],["15040",{"2":{"134":2}}],["15031",{"2":{"134":1}}],["15034",{"2":{"134":1}}],["15037",{"2":{"133":1,"134":1}}],["1500",{"2":{"598":2,"1443":1}}],["15006",{"2":{"160":1}}],["15004",{"2":{"134":1}}],["15003",{"2":{"134":1}}],["15002",{"2":{"134":1}}],["18x4",{"2":{"1087":1}}],["18x8",{"2":{"1053":1}}],["18x11",{"2":{"1019":1}}],["18x12",{"2":{"654":1}}],["18499",{"2":{"199":1}}],["18455",{"2":{"191":1}}],["18450",{"2":{"191":1}}],["18459",{"2":{"191":1}}],["18449",{"2":{"191":1}}],["18441",{"2":{"191":1}}],["18477",{"2":{"191":1}}],["18475",{"2":{"191":1}}],["18472",{"2":{"191":1}}],["1840",{"2":{"211":1}}],["18408",{"2":{"191":1}}],["18403",{"2":{"191":1}}],["18402",{"2":{"191":1}}],["18404",{"2":{"190":1,"191":1}}],["18463",{"2":{"199":1}}],["18467",{"2":{"191":1}}],["18464",{"2":{"191":1}}],["18431",{"2":{"191":1}}],["18432",{"2":{"191":1}}],["18439",{"2":{"191":1}}],["18437",{"2":{"191":1}}],["18438880",{"2":{"160":1}}],["18428",{"2":{"191":1}}],["18426",{"2":{"191":1}}],["18423",{"2":{"191":1}}],["18424",{"2":{"191":1}}],["18421",{"2":{"191":1}}],["18414",{"2":{"191":1}}],["18419",{"2":{"191":1}}],["18418",{"2":{"191":1}}],["18417",{"2":{"191":1}}],["18415",{"2":{"191":1}}],["18521",{"2":{"249":1}}],["18527",{"2":{"191":1}}],["18581",{"2":{"191":1}}],["18588",{"2":{"188":1,"191":1}}],["18574",{"2":{"191":1}}],["18577",{"2":{"191":1}}],["18557",{"2":{"191":1}}],["18553",{"2":{"191":1}}],["18566",{"2":{"191":1}}],["18560",{"2":{"191":1}}],["18565",{"2":{"190":1,"191":1}}],["18545",{"2":{"191":1}}],["18544",{"2":{"191":1}}],["18593",{"2":{"191":1}}],["18594",{"2":{"191":1}}],["18599",{"2":{"191":1}}],["18592",{"2":{"191":1}}],["18513",{"2":{"190":1,"191":1}}],["183874",{"2":{"2303":1}}],["183883",{"2":{"2303":3}}],["18371",{"2":{"199":1}}],["18370",{"2":{"191":1}}],["18351",{"2":{"191":1}}],["18352",{"2":{"191":1}}],["18332",{"2":{"277":1}}],["18338",{"2":{"191":1}}],["18333",{"2":{"191":1}}],["18345",{"2":{"191":1}}],["18394",{"2":{"191":1}}],["18399",{"2":{"191":1}}],["18396",{"2":{"191":1}}],["18366",{"2":{"191":1}}],["18363",{"2":{"190":1,"191":1}}],["18323",{"2":{"191":1}}],["18310",{"2":{"191":1}}],["18309",{"2":{"189":1,"191":1}}],["187",{"2":{"1763":1,"1984":1}}],["18734",{"2":{"191":1}}],["18730",{"2":{"191":1}}],["18725",{"2":{"191":1}}],["18729",{"2":{"191":2}}],["18728",{"2":{"191":1}}],["18727",{"2":{"191":1}}],["18726",{"2":{"191":2}}],["18720",{"2":{"191":1}}],["18721",{"2":{"191":1}}],["18701",{"2":{"191":1}}],["18700",{"2":{"191":1}}],["18709",{"2":{"191":1}}],["18766",{"2":{"191":1}}],["18767",{"2":{"191":1}}],["18769",{"2":{"188":1,"191":1}}],["18751",{"2":{"191":1}}],["18753",{"2":{"191":2}}],["18750",{"2":{"191":1}}],["18716",{"2":{"191":1}}],["18715",{"2":{"191":1}}],["18714",{"2":{"191":1}}],["18717",{"2":{"191":1}}],["18710",{"2":{"188":1,"191":1}}],["18775",{"2":{"191":1}}],["18774",{"2":{"190":1,"191":1}}],["18776",{"2":{"189":1,"191":1}}],["18745",{"2":{"199":1}}],["18749",{"2":{"188":1,"191":1}}],["18740",{"2":{"188":1,"191":1}}],["18789",{"2":{"191":1}}],["18781",{"2":{"191":1}}],["18787",{"2":{"188":1,"191":1}}],["18782",{"2":{"188":1,"191":1}}],["18791",{"2":{"191":1}}],["18796",{"2":{"188":1,"191":1}}],["18792",{"2":{"188":1,"191":1}}],["18249",{"2":{"191":1}}],["18244",{"2":{"191":1}}],["18205",{"2":{"191":1}}],["18299",{"2":{"191":1}}],["18298",{"2":{"191":1}}],["18297",{"2":{"191":1}}],["18292",{"2":{"191":1}}],["18290",{"2":{"188":1,"191":1}}],["18268",{"2":{"191":1}}],["18262",{"2":{"191":1}}],["18260",{"2":{"191":1}}],["18259",{"2":{"191":1}}],["18215",{"2":{"191":2}}],["18212",{"2":{"191":1}}],["18289",{"2":{"191":1}}],["18279",{"2":{"191":1}}],["18274",{"2":{"191":1}}],["18271",{"2":{"188":1,"191":1}}],["18234",{"2":{"191":1}}],["18235",{"2":{"191":1}}],["18230",{"2":{"191":1}}],["18236",{"2":{"189":1,"191":1}}],["18224",{"2":{"191":1}}],["18228",{"2":{"191":1}}],["18222",{"2":{"191":1}}],["18654",{"2":{"191":1}}],["18650",{"2":{"191":1}}],["18651",{"2":{"191":1}}],["18659",{"2":{"190":1,"191":1}}],["18617",{"2":{"191":1}}],["18613",{"2":{"191":1}}],["18618",{"2":{"191":1}}],["18615",{"2":{"191":1}}],["18692",{"2":{"191":1}}],["18693",{"2":{"191":1}}],["18690",{"2":{"191":1}}],["18687",{"2":{"191":1}}],["18689",{"2":{"191":1}}],["18683",{"2":{"188":1,"191":1}}],["18649",{"2":{"191":1}}],["18640",{"2":{"191":1}}],["18641",{"2":{"191":1}}],["18643",{"2":{"188":1,"191":1}}],["18629",{"2":{"191":1}}],["18609",{"2":{"191":1}}],["18608",{"2":{"191":1}}],["18606",{"2":{"191":1}}],["18601",{"2":{"188":1,"191":1}}],["18638",{"2":{"211":1}}],["18635",{"2":{"191":1}}],["18631",{"2":{"191":1}}],["18637",{"2":{"189":1,"191":1}}],["18634",{"2":{"188":1,"191":1}}],["18668",{"2":{"191":1}}],["18667",{"2":{"191":1}}],["18662",{"2":{"191":1}}],["18669",{"2":{"188":1,"191":1}}],["18660",{"2":{"188":1,"191":1}}],["189kbps",{"2":{"511":1,"2166":1}}],["18915",{"2":{"199":1}}],["18910",{"2":{"191":1}}],["18921f",{"2":{"1443":1}}],["18921",{"2":{"191":1}}],["18924",{"2":{"191":1}}],["18984",{"2":{"191":1}}],["18982",{"2":{"191":1}}],["1897",{"2":{"675":1}}],["18977",{"2":{"191":1}}],["18979",{"2":{"191":1}}],["18978",{"2":{"191":1}}],["18974",{"2":{"191":1}}],["18973",{"2":{"191":1}}],["18972",{"2":{"188":1,"191":1}}],["18933",{"2":{"191":1}}],["18939",{"2":{"188":1,"191":1}}],["189000",{"2":{"1136":1}}],["18908",{"2":{"191":1}}],["18901",{"2":{"189":1,"191":1}}],["18992",{"2":{"191":1}}],["18999",{"2":{"191":1}}],["18997",{"2":{"191":1}}],["18991",{"2":{"191":1}}],["18998",{"2":{"191":1}}],["18996",{"2":{"191":1}}],["1895",{"2":{"674":1}}],["18954",{"2":{"191":1}}],["18956",{"2":{"191":1}}],["18959",{"2":{"191":1}}],["18952",{"2":{"191":1}}],["18951",{"2":{"191":1}}],["18958",{"2":{"188":1,"191":1}}],["18943",{"2":{"199":1}}],["18944",{"2":{"191":1}}],["18942",{"2":{"191":1}}],["18940",{"2":{"191":1,"199":1}}],["18949",{"2":{"191":1}}],["18948",{"2":{"191":1}}],["18947",{"2":{"191":1}}],["18946",{"2":{"191":1}}],["18965",{"2":{"191":1}}],["18969",{"2":{"191":1}}],["18961",{"2":{"188":1,"191":1}}],["18964",{"2":{"188":1,"191":1}}],["18963",{"2":{"188":1,"191":1}}],["18962",{"2":{"188":1,"191":1}}],["188",{"2":{"1763":1,"1984":1}}],["18822",{"2":{"191":1}}],["18852",{"2":{"199":1}}],["18855",{"2":{"191":1}}],["18859",{"2":{"191":1}}],["18858",{"2":{"191":1}}],["18887",{"2":{"191":1}}],["18884",{"2":{"191":1}}],["18886",{"2":{"191":1}}],["18882",{"2":{"188":1,"191":1}}],["18876",{"2":{"191":1}}],["18878",{"2":{"191":1}}],["18874",{"2":{"191":1}}],["18877",{"2":{"188":1,"191":1}}],["18860",{"2":{"191":1}}],["18866",{"2":{"191":1}}],["18867",{"2":{"191":1}}],["18864",{"2":{"188":1,"191":1}}],["18811",{"2":{"191":1}}],["18804",{"2":{"191":1}}],["18806",{"2":{"191":1}}],["18803",{"2":{"191":1}}],["18800",{"2":{"188":1,"191":2}}],["18807",{"2":{"188":1,"191":1}}],["18838",{"2":{"191":1}}],["18837",{"2":{"191":1}}],["18832",{"2":{"188":1,"191":1}}],["18834",{"2":{"188":1,"191":1}}],["18890",{"2":{"199":1}}],["18898",{"2":{"188":1,"191":1}}],["18893",{"2":{"188":1,"191":1}}],["18892",{"2":{"188":1,"191":1}}],["18840",{"2":{"191":1}}],["18847",{"2":{"188":1,"191":1}}],["18844",{"2":{"188":1,"191":1}}],["18843",{"2":{"188":1,"191":1}}],["18196",{"2":{"191":1}}],["18194",{"2":{"191":1}}],["18195",{"2":{"191":1}}],["18183",{"2":{"191":1}}],["18178",{"2":{"191":1}}],["18175",{"2":{"176":1}}],["18116",{"2":{"176":1}}],["18117",{"2":{"176":1}}],["18108",{"2":{"191":1}}],["18101",{"2":{"191":1}}],["18102",{"2":{"176":1}}],["18100",{"2":{"176":1}}],["18168",{"2":{"176":1}}],["18131",{"2":{"176":1}}],["18152",{"2":{"169":1,"176":1}}],["18",{"2":{"114":1,"351":1,"729":1,"789":1,"956":1,"1442":1,"1477":1,"1616":1,"1673":3,"1762":1,"1872":3,"1937":2,"2404":3,"2419":3,"2542":1,"2627":1,"2633":3}}],["18098",{"2":{"191":1}}],["18099",{"2":{"176":1}}],["18066",{"2":{"199":1}}],["18060",{"2":{"190":1,"191":1}}],["18067",{"2":{"176":1}}],["18063",{"2":{"176":1}}],["18028",{"2":{"176":1}}],["18025",{"2":{"176":1}}],["18020",{"2":{"176":1}}],["18029",{"2":{"176":1}}],["18036",{"2":{"191":1}}],["18039",{"2":{"176":1}}],["18038",{"2":{"176":1}}],["18032",{"2":{"176":1}}],["18037",{"2":{"176":1}}],["18058",{"2":{"191":1}}],["18050",{"2":{"176":1}}],["18056",{"2":{"176":1}}],["18057",{"2":{"176":1}}],["18018",{"2":{"176":1}}],["18016",{"2":{"176":1}}],["18011",{"2":{"176":1}}],["18044",{"2":{"191":1}}],["18043",{"2":{"176":1}}],["18045",{"2":{"176":1}}],["18042",{"2":{"176":1}}],["18006",{"2":{"191":1}}],["18008",{"2":{"176":1}}],["18007",{"2":{"176":1}}],["18000",{"2":{"176":1}}],["1800",{"2":{"57":2,"211":1,"1936":1,"2656":1,"2659":1}}],["180",{"2":{"31":2,"34":2,"582":1,"985":1,"1762":1,"1854":2,"1859":3,"1860":2,"1904":2,"1941":2,"1952":2,"1953":2,"2178":2,"2181":1,"2616":1}}],["14k5",{"2":{"1091":1}}],["14",{"2":{"351":1,"635":4,"1091":1,"1442":1,"1616":1,"1673":3,"1831":2,"1870":1,"1872":3,"1937":1,"2080":1,"2156":1,"2369":1,"2371":1,"2404":3,"2410":2,"2419":3}}],["14674",{"2":{"160":1}}],["14678",{"2":{"134":1}}],["14655",{"2":{"134":1}}],["14659",{"2":{"133":1,"134":1}}],["14639",{"2":{"134":1}}],["14662",{"2":{"134":1}}],["14699",{"2":{"134":1}}],["14600",{"2":{"134":1}}],["149",{"2":{"1763":1,"1984":1}}],["14944",{"2":{"266":1}}],["14948",{"2":{"160":1}}],["14947",{"2":{"134":1}}],["14934",{"2":{"134":1}}],["14906",{"2":{"134":1}}],["14989",{"2":{"160":1}}],["14982",{"2":{"134":1}}],["14983",{"2":{"134":1}}],["14980",{"2":{"134":1}}],["14967",{"2":{"134":1}}],["14969",{"2":{"133":1,"134":1}}],["14928",{"2":{"134":1}}],["14919",{"2":{"134":1}}],["14917",{"2":{"133":1,"134":1}}],["14975",{"2":{"134":1}}],["14973",{"2":{"134":1}}],["14976",{"2":{"133":1,"134":1}}],["14972",{"2":{"133":1,"134":1}}],["14814",{"2":{"199":1}}],["14877",{"2":{"176":1}}],["14879",{"2":{"134":1}}],["14872",{"2":{"134":1}}],["14864",{"2":{"134":1}}],["14848",{"2":{"134":1}}],["14835",{"2":{"134":1}}],["14839",{"2":{"133":1,"134":1}}],["14898",{"2":{"134":1}}],["14899",{"2":{"133":1,"134":1}}],["14895",{"2":{"133":1,"134":1}}],["14894",{"2":{"133":1,"134":1}}],["14888",{"2":{"133":1,"134":1}}],["14859",{"2":{"134":1}}],["14854",{"2":{"134":1}}],["14858",{"2":{"133":1,"134":1}}],["14855",{"2":{"133":1,"134":1}}],["1471",{"2":{"1944":1}}],["14713",{"2":{"134":1}}],["14764",{"2":{"674":2}}],["14760",{"2":{"133":1,"134":1}}],["14785",{"2":{"134":1}}],["14780",{"2":{"134":1}}],["14751",{"2":{"134":1}}],["14752",{"2":{"131":1,"134":1}}],["14730",{"2":{"134":1}}],["14775",{"2":{"134":1}}],["14747",{"2":{"134":1}}],["14749",{"2":{"134":1}}],["14740",{"2":{"134":1}}],["14745",{"2":{"133":1,"134":1}}],["14743",{"2":{"133":1,"134":1}}],["14720",{"2":{"134":1}}],["14729",{"2":{"134":1}}],["14727",{"2":{"133":1,"134":1}}],["14726",{"2":{"133":1,"134":1}}],["14723",{"2":{"133":1,"134":1}}],["14243",{"2":{"160":1}}],["14248",{"2":{"134":2}}],["14261",{"2":{"134":1}}],["14252",{"2":{"134":1}}],["14235",{"2":{"134":1}}],["14231",{"2":{"133":1,"134":1}}],["14289",{"2":{"134":1}}],["14200",{"2":{"176":1}}],["14208",{"2":{"134":1}}],["14206",{"2":{"134":1}}],["14201",{"2":{"134":1}}],["14207",{"2":{"133":1,"134":1}}],["14215",{"2":{"134":1}}],["14213",{"2":{"134":1}}],["14216",{"2":{"133":1,"134":1}}],["14210",{"2":{"133":1,"134":1}}],["144",{"2":{"816":1,"917":1,"1053":1,"1762":3,"2328":1}}],["14464",{"2":{"134":1}}],["14462",{"2":{"132":1,"134":1}}],["14452",{"2":{"191":1}}],["14455",{"2":{"134":1}}],["14454",{"2":{"134":1}}],["14456",{"2":{"133":1,"134":1}}],["14442",{"2":{"134":1}}],["14420",{"2":{"176":1}}],["14421",{"2":{"134":1}}],["14422",{"2":{"130":1,"134":1}}],["14497",{"2":{"134":1}}],["14490",{"2":{"134":1}}],["14496",{"2":{"134":1}}],["14415",{"2":{"134":1}}],["14413",{"2":{"134":1}}],["14419",{"2":{"134":1}}],["14408",{"2":{"134":1}}],["14404",{"2":{"133":1,"134":1}}],["14474",{"2":{"134":1}}],["14470",{"2":{"134":1}}],["14434",{"2":{"134":1}}],["14439",{"2":{"134":2}}],["14433",{"2":{"134":1}}],["14430",{"2":{"134":1}}],["14325",{"2":{"134":1}}],["14327",{"2":{"134":1}}],["14399",{"2":{"134":1}}],["14372",{"2":{"134":1}}],["14374",{"2":{"134":1}}],["14370",{"2":{"132":1,"134":1}}],["14343",{"2":{"134":1}}],["14348",{"2":{"133":1,"134":1}}],["14389",{"2":{"134":1}}],["14380",{"2":{"133":1,"134":1}}],["14388",{"2":{"130":1,"134":1}}],["14308",{"2":{"133":1,"134":1}}],["14580",{"2":{"160":1}}],["14584",{"2":{"130":1,"134":1}}],["14590",{"2":{"134":1}}],["14591",{"2":{"131":1,"134":1}}],["14546",{"2":{"134":1}}],["14508",{"2":{"134":1}}],["14530",{"2":{"133":1,"134":1}}],["14194",{"2":{"134":1}}],["14195",{"2":{"131":1,"134":1}}],["14181",{"2":{"134":1}}],["14155",{"2":{"134":1}}],["14150",{"2":{"114":1}}],["14174",{"2":{"134":1}}],["14171",{"2":{"114":1}}],["14172",{"2":{"114":1}}],["14118",{"2":{"114":1}}],["14146",{"2":{"114":1}}],["14142",{"2":{"114":1}}],["14140",{"2":{"114":1}}],["14144",{"2":{"114":2}}],["14123",{"2":{"114":1}}],["14120",{"2":{"114":1}}],["14106",{"2":{"114":1}}],["14108",{"2":{"114":1}}],["14105",{"2":{"114":1}}],["14136",{"2":{"114":1}}],["14133",{"2":{"114":1}}],["14134",{"2":{"113":1,"114":1}}],["14132",{"2":{"113":1,"114":1}}],["140",{"2":{"2772":1}}],["14091",{"2":{"160":1}}],["14095",{"2":{"114":1}}],["14090",{"2":{"114":1}}],["14097",{"2":{"114":1}}],["14052",{"2":{"114":1}}],["14051",{"2":{"114":1}}],["14017",{"2":{"114":1}}],["14065",{"2":{"160":1}}],["14061",{"2":{"114":1}}],["14063",{"2":{"114":1}}],["14048",{"2":{"114":1}}],["14045",{"2":{"114":1}}],["14033",{"2":{"134":1}}],["14039",{"2":{"114":1}}],["14038",{"2":{"114":1}}],["14005",{"2":{"114":1}}],["14007",{"2":{"114":1}}],["14089",{"2":{"114":1}}],["14084",{"2":{"114":1}}],["14080",{"2":{"114":1}}],["14083",{"2":{"114":2}}],["14079",{"2":{"114":1}}],["14025",{"2":{"113":1,"114":1}}],["12bit",{"2":{"1438":1}}],["12x12",{"2":{"917":1}}],["12x16",{"2":{"848":1}}],["12x8",{"2":{"883":1}}],["12x4",{"2":{"624":1}}],["12",{"2":{"199":1,"266":1,"292":1,"315":2,"317":1,"350":9,"351":1,"506":3,"633":1,"635":4,"641":1,"688":1,"755":1,"792":1,"959":1,"993":1,"1027":1,"1061":1,"1276":1,"1443":1,"1477":2,"1611":1,"1616":1,"1670":1,"1673":3,"1831":3,"1872":3,"1937":1,"1983":1,"2077":1,"2080":4,"2371":1,"2404":3,"2410":3,"2419":3,"2592":1,"2614":1}}],["12674",{"2":{"114":1}}],["12670",{"2":{"114":1,"134":1}}],["12671",{"2":{"94":1}}],["12632",{"2":{"114":1}}],["12637",{"2":{"114":1}}],["12633",{"2":{"93":1}}],["12692",{"2":{"134":1}}],["12691",{"2":{"134":1}}],["12699",{"2":{"114":1}}],["12697",{"2":{"94":1}}],["12689",{"2":{"114":1}}],["12685",{"2":{"93":1}}],["12669",{"2":{"114":1}}],["12641",{"2":{"114":1}}],["12602",{"2":{"94":1}}],["12600",{"2":{"93":1}}],["12625",{"2":{"94":1}}],["12626",{"2":{"94":1}}],["12651",{"2":{"93":1}}],["12617",{"2":{"114":1}}],["12619",{"2":{"93":1}}],["12613",{"2":{"86":1}}],["1252",{"2":{"2221":1}}],["125",{"2":{"1842":1,"1935":2}}],["1250",{"2":{"1251":1,"2766":1,"2767":1}}],["12508",{"2":{"130":1,"134":1}}],["12509",{"2":{"93":1}}],["12538",{"2":{"114":1}}],["12567",{"2":{"114":1}}],["12560",{"2":{"93":1}}],["12561",{"2":{"92":1}}],["12588",{"2":{"93":1}}],["12580",{"2":{"93":1}}],["121",{"2":{"1616":1}}],["12159",{"2":{"114":1}}],["12116",{"2":{"114":1}}],["12160",{"2":{"94":1}}],["12161",{"2":{"94":1}}],["12187",{"2":{"94":1}}],["12197",{"2":{"94":1}}],["12108",{"2":{"134":1}}],["12109",{"2":{"94":1}}],["12107",{"2":{"93":1}}],["12172",{"2":{"93":1}}],["12425",{"2":{"114":1}}],["12495",{"2":{"94":1}}],["12403",{"2":{"93":1}}],["12444",{"2":{"93":1}}],["12417",{"2":{"93":1}}],["12419",{"2":{"93":1}}],["12435",{"2":{"93":1}}],["12482",{"2":{"92":1}}],["123",{"2":{"1396":1,"1616":1}}],["12315",{"2":{"114":1}}],["12314",{"2":{"114":1}}],["12317",{"2":{"93":1}}],["12386",{"2":{"114":1}}],["12327",{"2":{"94":1}}],["12342",{"2":{"93":1}}],["12361",{"2":{"93":1}}],["122",{"2":{"207":5,"1616":1}}],["12240",{"2":{"114":1}}],["12249",{"2":{"94":1}}],["12238",{"2":{"114":1}}],["12237",{"2":{"93":1}}],["12211",{"2":{"114":1}}],["12216",{"2":{"93":1}}],["12284",{"2":{"94":1}}],["12286",{"2":{"94":1}}],["12258",{"2":{"93":1}}],["12226",{"2":{"86":1}}],["129",{"2":{"1477":2}}],["129u",{"2":{"705":1}}],["12950",{"2":{"134":1}}],["12951",{"2":{"114":1}}],["12947",{"2":{"131":1,"134":2}}],["12946",{"2":{"114":1}}],["12949",{"2":{"114":1}}],["12945",{"2":{"92":1}}],["12914",{"2":{"114":1}}],["12915",{"2":{"95":1}}],["12987",{"2":{"93":1}}],["12985",{"2":{"93":1}}],["12936",{"2":{"93":1}}],["12933",{"2":{"92":1}}],["12977",{"2":{"92":1}}],["12976",{"2":{"92":1}}],["128x40",{"2":{"2612":2}}],["128x128",{"2":{"1849":1,"1858":3,"2612":2}}],["128x32",{"2":{"1849":2,"1858":1,"1859":1,"1860":1,"2174":1,"2180":1,"2612":1}}],["128x64",{"0":{"1858":1},"1":{"1859":1},"2":{"232":1,"1849":3,"1855":1,"1858":2,"2174":1,"2612":3}}],["128u",{"2":{"688":1}}],["128",{"2":{"633":1,"702":1,"1213":1,"1234":1,"1264":1,"1488":1,"1503":1,"1504":1,"1591":1,"1592":2,"1855":1,"1858":1,"1860":1,"1956":4,"2180":1,"2220":1,"2639":5,"2727":1,"2734":1}}],["12870",{"2":{"114":1}}],["12878",{"2":{"92":1}}],["12819",{"2":{"114":1}}],["12893",{"2":{"114":1}}],["12895",{"2":{"92":1}}],["12859",{"2":{"114":1}}],["12851",{"2":{"114":1}}],["12856",{"2":{"95":1}}],["12845",{"2":{"114":1}}],["12846",{"2":{"94":1}}],["12831",{"2":{"114":1}}],["12833",{"2":{"95":1}}],["12832",{"2":{"95":1}}],["12805",{"2":{"93":1}}],["12861",{"2":{"114":1}}],["12864",{"2":{"94":1}}],["12868",{"2":{"93":1}}],["12866",{"2":{"92":1}}],["12828",{"2":{"93":1}}],["12888",{"2":{"92":1}}],["12881",{"2":{"86":1}}],["127",{"2":{"176":1,"505":2,"1670":1,"1671":2,"1672":1,"1768":1,"1830":2,"1831":1,"1832":1,"1853":1,"1944":1,"1950":5,"1952":2,"1956":8,"1958":5,"1992":1,"2076":1,"2078":2,"2177":1,"2220":2,"2410":1}}],["12795",{"2":{"160":2}}],["12797",{"2":{"114":1}}],["12789",{"2":{"114":1}}],["12767",{"2":{"114":1}}],["12755",{"2":{"114":1}}],["12754",{"2":{"114":1}}],["12750",{"2":{"92":1}}],["12770",{"2":{"94":1}}],["12721",{"2":{"93":1}}],["12723",{"2":{"92":1}}],["120",{"2":{"1437":1,"1616":1,"1843":1,"2078":1,"2771":2,"2776":1}}],["12097",{"2":{"114":1}}],["12091",{"2":{"93":1}}],["12023",{"2":{"114":1}}],["12022",{"2":{"73":1}}],["12069",{"2":{"114":1}}],["12067",{"2":{"94":1}}],["12063",{"2":{"93":1}}],["12054",{"2":{"94":1}}],["12086",{"2":{"93":1}}],["12018",{"2":{"93":1}}],["12039",{"2":{"73":1}}],["12001",{"2":{"77":1}}],["12000",{"2":{"76":1,"1950":1}}],["120000",{"2":{"25":1}}],["1200",{"2":{"25":1,"1238":1,"1947":1}}],["11",{"0":{"1334":1},"2":{"145":1,"176":2,"191":1,"211":1,"249":1,"317":2,"350":1,"351":1,"633":1,"635":4,"822":1,"1133":1,"1442":1,"1477":1,"1616":1,"1673":3,"1831":2,"1872":3,"2080":2,"2156":1,"2168":1,"2185":1,"2193":4,"2371":1,"2386":1,"2404":3,"2410":2,"2419":3,"2572":1,"2614":1,"2635":1}}],["112",{"2":{"1477":1,"1616":1,"1763":3,"1984":3,"2727":1,"2734":1}}],["11261",{"2":{"77":1}}],["11237",{"2":{"75":1}}],["118",{"2":{"1616":1}}],["11842",{"2":{"114":1}}],["11846",{"2":{"77":1}}],["11896",{"2":{"114":1}}],["11890",{"2":{"94":1}}],["11893",{"2":{"76":1}}],["11864",{"2":{"92":1}}],["11863",{"2":{"75":1}}],["11820",{"2":{"75":1}}],["11829",{"2":{"75":1}}],["11823",{"2":{"75":1}}],["11824",{"2":{"74":1}}],["11804",{"2":{"75":1}}],["11805",{"2":{"75":1}}],["119972",{"2":{"2303":2}}],["119",{"2":{"1616":1}}],["11988",{"2":{"93":1}}],["11981",{"2":{"72":1}}],["11978",{"2":{"86":1}}],["11927",{"2":{"77":1}}],["11928",{"2":{"76":1}}],["11930",{"2":{"107":1,"114":1}}],["11935",{"2":{"93":1}}],["11936",{"2":{"76":1}}],["11938",{"2":{"74":1}}],["11907",{"2":{"76":1}}],["11905",{"2":{"76":1}}],["11966",{"2":{"75":1}}],["11943",{"2":{"75":1}}],["11940",{"2":{"75":1}}],["11913",{"2":{"74":1}}],["11912",{"2":{"74":1}}],["11000010",{"2":{"2185":1}}],["11001000",{"2":{"2185":1}}],["110",{"2":{"1616":1,"2185":1,"2771":2,"2772":2}}],["11025u",{"2":{"688":1}}],["11036",{"2":{"134":1}}],["11083",{"2":{"93":1}}],["11059",{"2":{"134":2}}],["11055",{"2":{"93":1}}],["11057",{"2":{"74":1}}],["11046",{"2":{"74":1}}],["117",{"2":{"951":1,"1477":1,"1616":1,"1983":1,"2074":1}}],["11727",{"2":{"93":1}}],["11728",{"2":{"73":1}}],["11793",{"2":{"77":1}}],["11750",{"2":{"75":1}}],["11751",{"2":{"75":1}}],["11768",{"2":{"74":1}}],["116",{"2":{"1477":5,"1616":1}}],["11621",{"2":{"77":1}}],["11620",{"2":{"77":1}}],["11615",{"2":{"77":1}}],["11617",{"2":{"77":1}}],["11646",{"2":{"77":1}}],["11630",{"2":{"77":1}}],["11637",{"2":{"75":1}}],["11607",{"2":{"77":1}}],["11600",{"2":{"73":1}}],["11689",{"2":{"77":1}}],["11688",{"2":{"76":1}}],["11687",{"2":{"74":1}}],["11672",{"2":{"75":1}}],["113",{"2":{"1616":1}}],["11350",{"2":{"74":1}}],["11307",{"2":{"74":1}}],["111",{"2":{"1616":1}}],["11151",{"2":{"114":1}}],["11154",{"2":{"74":1}}],["11123",{"2":{"77":1}}],["11111",{"2":{"77":1}}],["11108",{"2":{"76":1}}],["11101",{"2":{"76":1}}],["11165",{"2":{"75":1}}],["11168",{"2":{"75":1}}],["11162",{"2":{"73":1}}],["11195",{"2":{"72":1}}],["115",{"2":{"1473":2,"1616":1}}],["115200",{"2":{"1136":1,"1238":1,"2188":1}}],["11528",{"2":{"199":1}}],["11529",{"2":{"77":1}}],["11536",{"2":{"93":1}}],["11588",{"2":{"77":1}}],["11584",{"2":{"73":1}}],["11504",{"2":{"77":1}}],["11502",{"2":{"76":1}}],["11548",{"2":{"76":1}}],["11544",{"2":{"76":1}}],["11542",{"2":{"76":1}}],["11576",{"2":{"75":1}}],["11570",{"2":{"74":1}}],["11553",{"2":{"74":1}}],["11552",{"2":{"74":1}}],["11519",{"2":{"74":1}}],["11598",{"2":{"77":1}}],["11595",{"2":{"74":1}}],["11594",{"2":{"73":1}}],["114",{"2":{"1477":2,"1616":1,"1831":1,"2410":1}}],["11487",{"2":{"92":1}}],["11495",{"2":{"77":1}}],["11492",{"2":{"76":1}}],["11408",{"2":{"76":1}}],["11409",{"2":{"73":1}}],["11422",{"2":{"114":1}}],["11426",{"2":{"74":1}}],["11427",{"2":{"73":1}}],["11450",{"2":{"73":1}}],["11435",{"2":{"73":1}}],["11473",{"2":{"73":1}}],["11449",{"2":{"77":1}}],["11447",{"2":{"73":1}}],["11448",{"2":{"73":1}}],["11414",{"2":{"77":1}}],["11413",{"2":{"77":1}}],["11418",{"2":{"74":1}}],["11412",{"2":{"73":1}}],["11415",{"2":{"72":1}}],["1360",{"2":{"2464":1}}],["13606",{"2":{"114":1}}],["13697",{"2":{"114":1}}],["13696",{"2":{"114":1}}],["13695",{"2":{"114":1}}],["13692",{"2":{"114":1}}],["13691",{"2":{"114":1}}],["13690",{"2":{"114":1}}],["13698",{"2":{"114":1}}],["13668",{"2":{"114":1}}],["13667",{"2":{"114":1}}],["13665",{"2":{"114":1}}],["13664",{"2":{"114":1}}],["13658",{"2":{"114":1}}],["13653",{"2":{"114":1}}],["13633",{"2":{"114":1}}],["13688",{"2":{"114":1}}],["13687",{"2":{"114":1}}],["13686",{"2":{"114":1}}],["13685",{"2":{"114":1}}],["13684",{"2":{"114":1}}],["13681",{"2":{"114":1}}],["13689",{"2":{"114":1}}],["13680",{"2":{"114":1}}],["13648",{"2":{"114":1}}],["13647",{"2":{"114":1}}],["13646",{"2":{"114":1}}],["13645",{"2":{"114":1}}],["13649",{"2":{"114":1}}],["13641",{"2":{"114":1}}],["13629",{"2":{"114":1}}],["13677",{"2":{"114":2}}],["13672",{"2":{"114":1}}],["13671",{"2":{"114":1}}],["13676",{"2":{"114":1}}],["13673",{"2":{"113":1,"114":1}}],["135",{"2":{"784":1,"1453":1,"1762":1}}],["13546",{"2":{"114":1}}],["13542",{"2":{"114":1}}],["13525",{"2":{"114":1}}],["13523",{"2":{"107":1,"114":1}}],["13533",{"2":{"114":1}}],["13511",{"2":{"114":1}}],["13597",{"2":{"114":1}}],["13596",{"2":{"114":1}}],["13571",{"2":{"114":1}}],["13570",{"2":{"114":1}}],["13551",{"2":{"114":1}}],["13550",{"2":{"114":1}}],["13559",{"2":{"114":1}}],["13504",{"2":{"114":1}}],["13502",{"2":{"114":1}}],["13588",{"2":{"114":1}}],["13566",{"2":{"114":1}}],["134217728",{"2":{"2392":1}}],["13425",{"2":{"114":1}}],["13471",{"2":{"114":1}}],["13470",{"2":{"114":1}}],["13404",{"2":{"114":1}}],["13405",{"2":{"114":1}}],["13403",{"2":{"114":1}}],["13481",{"2":{"114":1}}],["13480",{"2":{"114":1}}],["13442",{"2":{"114":1}}],["13457",{"2":{"114":1}}],["13454",{"2":{"114":1}}],["13450",{"2":{"114":1}}],["13433",{"2":{"114":1}}],["13430",{"2":{"114":1}}],["13418",{"2":{"107":1,"114":1}}],["13310",{"2":{"114":1}}],["13312",{"2":{"113":1,"114":1}}],["13371",{"2":{"114":1}}],["1337",{"2":{"114":1}}],["13377",{"2":{"114":1}}],["13398",{"2":{"114":1}}],["13399",{"2":{"114":1}}],["13389",{"2":{"114":1}}],["13383",{"2":{"114":1}}],["13366",{"2":{"114":1}}],["13360",{"2":{"114":1}}],["13350",{"2":{"114":1}}],["13349",{"2":{"114":1}}],["13333",{"2":{"114":1}}],["13330",{"2":{"114":2}}],["13321",{"2":{"114":1}}],["13304",{"2":{"114":1}}],["13309",{"2":{"114":1}}],["13302",{"2":{"114":1}}],["132x162",{"2":{"2612":1,"2615":1}}],["132x64",{"2":{"1855":1}}],["132",{"2":{"2303":1}}],["13286",{"2":{"139":1,"145":1}}],["13243",{"2":{"114":1}}],["13247",{"2":{"114":1}}],["13209",{"2":{"114":1}}],["13201",{"2":{"114":1}}],["13271",{"2":{"114":1}}],["13228",{"2":{"114":1}}],["13297",{"2":{"114":1}}],["13298",{"2":{"114":1}}],["13296",{"2":{"114":1}}],["13293",{"2":{"114":1}}],["13253",{"2":{"114":1}}],["13251",{"2":{"114":1}}],["13257",{"2":{"114":1}}],["13252",{"2":{"114":1}}],["13236",{"2":{"114":1}}],["13239",{"2":{"114":1}}],["13238",{"2":{"114":1}}],["13237",{"2":{"114":1}}],["131",{"2":{"1477":1}}],["13146",{"2":{"114":1}}],["13147",{"2":{"114":1}}],["13189",{"2":{"114":1}}],["13165",{"2":{"114":1}}],["13172",{"2":{"114":1}}],["13154",{"2":{"114":1}}],["13152",{"2":{"114":1}}],["13151",{"2":{"114":1}}],["13150",{"2":{"114":1}}],["13955",{"2":{"134":1}}],["13954",{"2":{"114":1}}],["13944",{"2":{"134":1}}],["13993",{"2":{"114":1}}],["13992",{"2":{"114":1}}],["13988",{"2":{"114":1}}],["13980",{"2":{"114":1}}],["13985",{"2":{"114":1}}],["13979",{"2":{"114":1}}],["13973",{"2":{"113":1,"114":1}}],["13937",{"2":{"114":1}}],["13931",{"2":{"114":1}}],["13932",{"2":{"114":1}}],["13918",{"2":{"133":1,"134":1}}],["13913",{"2":{"114":1}}],["13912",{"2":{"114":1}}],["13902",{"2":{"134":1}}],["13900",{"2":{"114":1}}],["13908",{"2":{"114":1}}],["13905",{"2":{"114":1}}],["13901",{"2":{"114":1}}],["13968",{"2":{"114":1}}],["13926",{"2":{"114":1}}],["13920",{"2":{"114":1}}],["13927",{"2":{"113":1,"114":1}}],["13810",{"2":{"114":1}}],["13819",{"2":{"114":1}}],["13886",{"2":{"114":1}}],["13885",{"2":{"114":1}}],["13872",{"2":{"114":1}}],["13877",{"2":{"114":1}}],["13838",{"2":{"114":1}}],["13831",{"2":{"114":1}}],["13832",{"2":{"114":1}}],["13830",{"2":{"114":1}}],["13826",{"2":{"114":1}}],["13821",{"2":{"114":1}}],["13823",{"2":{"114":1}}],["13850",{"2":{"114":1}}],["13890",{"2":{"133":1,"134":1}}],["13898",{"2":{"114":1}}],["13896",{"2":{"114":1}}],["13894",{"2":{"113":1,"114":1}}],["13801",{"2":{"114":1}}],["13804",{"2":{"114":1}}],["13800",{"2":{"114":1}}],["13842",{"2":{"134":1}}],["13846",{"2":{"114":1}}],["13843",{"2":{"113":1,"114":1}}],["137000",{"2":{"1136":1}}],["13706",{"2":{"114":1}}],["137kbps",{"2":{"511":1,"2166":1}}],["13789",{"2":{"134":1}}],["13724",{"2":{"114":1}}],["13722",{"2":{"114":1}}],["13720",{"2":{"114":1}}],["13728",{"2":{"114":1}}],["13799",{"2":{"114":1}}],["1375",{"2":{"1935":1}}],["13758",{"2":{"114":1}}],["13755",{"2":{"114":1}}],["13731",{"2":{"114":1}}],["13716",{"2":{"114":1}}],["13717",{"2":{"114":1}}],["13715",{"2":{"114":1}}],["13718",{"2":{"114":1}}],["13713",{"2":{"114":1}}],["13712",{"2":{"114":1}}],["13777",{"2":{"113":1,"114":1}}],["13740",{"2":{"114":1}}],["13747",{"2":{"114":1}}],["13749",{"2":{"113":1,"114":1}}],["13748",{"2":{"113":1,"114":1}}],["130",{"2":{"1477":2,"1997":1,"2766":1,"2767":1,"2772":1}}],["13056",{"2":{"114":1}}],["13098",{"2":{"114":1}}],["13089",{"2":{"114":1}}],["13081",{"2":{"107":1,"114":1}}],["13078",{"2":{"114":1}}],["13077",{"2":{"114":1}}],["13076",{"2":{"114":1}}],["13074",{"2":{"114":1}}],["13070",{"2":{"114":1}}],["13069",{"2":{"114":1}}],["13065",{"2":{"114":1}}],["13064",{"2":{"114":1}}],["13062",{"2":{"114":1}}],["13045",{"2":{"114":1}}],["13044",{"2":{"114":1}}],["13025",{"2":{"114":1}}],["13023",{"2":{"94":1}}],["13024",{"2":{"93":1}}],["13014",{"2":{"93":1}}],["13",{"2":{"70":1,"351":1,"633":1,"635":4,"1095":1,"1134":1,"1185":1,"1442":1,"1528":1,"1616":1,"1673":3,"1831":2,"1872":3,"1937":1,"2080":2,"2371":1,"2404":3,"2410":2,"2419":3,"2637":2}}],["17915",{"2":{"199":1}}],["17911",{"2":{"176":1}}],["17962",{"2":{"190":1,"191":1}}],["17999",{"2":{"176":1}}],["17996",{"2":{"176":1}}],["17989",{"2":{"176":1}}],["17935",{"2":{"191":1}}],["17936",{"2":{"176":1}}],["17931",{"2":{"176":1}}],["17905",{"2":{"176":1}}],["17904",{"2":{"176":2}}],["17923",{"2":{"176":1}}],["17940",{"2":{"167":1,"176":1}}],["17893",{"2":{"211":1}}],["17892",{"2":{"191":1}}],["17880",{"2":{"191":1}}],["17839",{"2":{"176":1}}],["17832",{"2":{"176":1}}],["17817",{"2":{"176":1}}],["17808",{"2":{"176":1}}],["17800",{"2":{"176":1}}],["17803",{"2":{"176":1}}],["17850",{"2":{"176":1}}],["17856",{"2":{"176":1}}],["17855",{"2":{"176":1}}],["17854",{"2":{"176":1}}],["17853",{"2":{"176":1}}],["17862",{"2":{"176":1}}],["17867",{"2":{"176":1}}],["17868",{"2":{"176":1}}],["17863",{"2":{"176":1}}],["17861",{"2":{"176":1}}],["17866",{"2":{"176":1}}],["17864",{"2":{"176":1}}],["17842",{"2":{"176":1}}],["17848",{"2":{"176":1}}],["17840",{"2":{"176":1}}],["17820",{"2":{"199":1}}],["17827",{"2":{"176":1}}],["17823",{"2":{"176":1}}],["17723",{"2":{"191":1}}],["17798",{"2":{"176":1}}],["17795",{"2":{"176":1}}],["17790",{"2":{"176":1}}],["17791",{"2":{"176":1}}],["17716",{"2":{"176":1}}],["17711",{"2":{"176":1}}],["17777",{"2":{"176":1}}],["17776",{"2":{"175":1,"176":1}}],["17732",{"2":{"176":1}}],["17735",{"2":{"176":1}}],["17734",{"2":{"176":1}}],["17786",{"2":{"176":1}}],["17755",{"2":{"176":1}}],["17760",{"2":{"176":1}}],["17748",{"2":{"176":1}}],["17745",{"2":{"176":1}}],["17740",{"2":{"176":1}}],["17706",{"2":{"191":1}}],["17702",{"2":{"176":1}}],["17707",{"2":{"176":1}}],["17708",{"2":{"176":1}}],["17703",{"2":{"176":1}}],["17693",{"2":{"176":1}}],["17695",{"2":{"176":1}}],["17663",{"2":{"191":1}}],["17661",{"2":{"176":1}}],["17669",{"2":{"176":1}}],["17678",{"2":{"176":1}}],["17675",{"2":{"176":1}}],["17679",{"2":{"176":1}}],["17638",{"2":{"176":1}}],["17632",{"2":{"176":1}}],["17639",{"2":{"176":1}}],["17684",{"2":{"176":1}}],["17658",{"2":{"176":1}}],["17656",{"2":{"176":1}}],["17652",{"2":{"176":1}}],["17655",{"2":{"176":1}}],["17654",{"2":{"176":1}}],["17651",{"2":{"176":1}}],["17650",{"2":{"176":1}}],["17645",{"2":{"176":1}}],["17647",{"2":{"176":1}}],["17643",{"2":{"176":1}}],["17615",{"2":{"176":1}}],["17611",{"2":{"176":1}}],["17612",{"2":{"176":1}}],["17613",{"2":{"175":1,"176":1}}],["17601",{"2":{"176":1}}],["17607",{"2":{"176":1}}],["17603",{"2":{"176":1}}],["17602",{"2":{"176":1}}],["175ms",{"2":{"2199":2}}],["175",{"2":{"1453":1,"2199":1}}],["17588",{"2":{"199":1}}],["17584",{"2":{"176":1}}],["17534",{"2":{"176":1}}],["17533",{"2":{"176":1}}],["17593",{"2":{"176":1}}],["17595",{"2":{"176":1}}],["17522",{"2":{"176":1}}],["17549",{"2":{"176":1}}],["17545",{"2":{"176":1}}],["17540",{"2":{"176":1}}],["17559",{"2":{"176":1}}],["17557",{"2":{"176":1}}],["17554",{"2":{"176":1}}],["17501",{"2":{"176":1}}],["17507",{"2":{"176":1}}],["17506",{"2":{"176":1}}],["17579",{"2":{"176":1}}],["17578",{"2":{"176":1}}],["17512",{"2":{"176":1}}],["17519",{"2":{"176":1}}],["17517",{"2":{"176":1}}],["17516",{"2":{"176":1}}],["17514",{"2":{"176":1}}],["174",{"2":{"251":1,"1289":2}}],["17463",{"2":{"176":1}}],["17414",{"2":{"176":1}}],["17492",{"2":{"176":1}}],["17459",{"2":{"176":2}}],["17439",{"2":{"176":1}}],["17435",{"2":{"176":1}}],["17438",{"2":{"176":2}}],["17423",{"2":{"176":2}}],["17426",{"2":{"176":1}}],["17420",{"2":{"176":1}}],["17488",{"2":{"176":1}}],["17481",{"2":{"176":1}}],["17482",{"2":{"175":2,"176":1}}],["17440",{"2":{"176":1}}],["17448",{"2":{"176":1}}],["17444",{"2":{"176":1}}],["17371",{"2":{"176":1}}],["17376",{"2":{"176":1}}],["17335",{"2":{"176":1}}],["17333",{"2":{"176":1}}],["17383",{"2":{"176":1}}],["17385",{"2":{"176":1}}],["17387",{"2":{"176":1}}],["17368",{"2":{"176":1}}],["17397",{"2":{"176":1}}],["17399",{"2":{"176":1}}],["17396",{"2":{"176":1}}],["17354",{"2":{"176":1}}],["17356",{"2":{"176":1}}],["17355",{"2":{"176":1}}],["17352",{"2":{"176":1}}],["17342",{"2":{"176":1}}],["17326",{"2":{"176":1}}],["172",{"2":{"1289":2}}],["17282",{"2":{"199":1}}],["17287",{"2":{"176":1}}],["17265",{"2":{"176":1}}],["17263",{"2":{"176":1}}],["17234",{"2":{"176":1}}],["17232",{"2":{"176":1}}],["17231",{"2":{"176":1}}],["17210",{"2":{"176":1}}],["17295",{"2":{"176":1}}],["17275",{"2":{"176":1}}],["17272",{"2":{"176":1}}],["17271",{"2":{"176":1}}],["17258",{"2":{"176":1}}],["17257",{"2":{"176":1}}],["17256",{"2":{"176":1}}],["17229",{"2":{"176":1}}],["17228",{"2":{"176":1}}],["17222",{"2":{"176":1}}],["170",{"2":{"2078":1}}],["17007",{"2":{"199":1}}],["17046",{"2":{"176":1}}],["17099",{"2":{"176":1}}],["17091",{"2":{"176":1}}],["17095",{"2":{"145":1}}],["17065",{"2":{"176":1}}],["17028",{"2":{"199":1}}],["17020",{"2":{"176":1}}],["17025",{"2":{"145":1}}],["17024",{"2":{"145":1}}],["17037",{"2":{"141":1,"145":1}}],["17189",{"2":{"191":1}}],["17184",{"2":{"176":1}}],["17129",{"2":{"191":1}}],["17174",{"2":{"176":1}}],["17178",{"2":{"176":1}}],["17176",{"2":{"175":1,"176":1}}],["17143",{"2":{"176":1}}],["17142",{"2":{"176":1}}],["17114",{"2":{"176":1}}],["17111",{"2":{"175":1,"176":1}}],["17156",{"2":{"145":1}}],["17150",{"2":{"145":1}}],["17136",{"2":{"145":1}}],["17133",{"2":{"145":1}}],["17104",{"2":{"145":1}}],["17106",{"2":{"145":1}}],["17",{"2":{"55":2,"111":2,"340":1,"351":1,"1442":1,"1477":1,"1616":1,"1673":3,"1872":3,"1937":1,"2073":2,"2338":2,"2404":3,"2419":3,"2653":2,"2733":2,"2785":1}}],["10glbprf",{"2":{"2185":1}}],["10kohm",{"2":{"2158":1}}],["10ms",{"2":{"1943":1,"2767":1}}],["10µf",{"2":{"1627":1}}],["103",{"2":{"1616":1}}],["10388",{"2":{"63":1}}],["10bits",{"2":{"641":1}}],["10bit",{"2":{"641":1}}],["109",{"2":{"1616":1}}],["10904",{"2":{"114":1}}],["10997",{"2":{"74":1}}],["10976",{"2":{"77":1}}],["10973",{"2":{"72":1}}],["10974",{"2":{"65":1}}],["10972",{"2":{"65":1}}],["106",{"2":{"1616":1}}],["10638",{"2":{"65":1}}],["10622",{"2":{"63":1}}],["108",{"2":{"1477":1,"1616":1}}],["10817",{"2":{"76":1}}],["10894",{"2":{"75":1}}],["10807",{"2":{"74":1}}],["10800",{"2":{"62":1}}],["10840",{"2":{"65":1}}],["10824",{"2":{"65":1}}],["10837",{"2":{"64":1}}],["104",{"2":{"1477":2,"1616":1}}],["10419",{"2":{"92":1}}],["10418",{"2":{"77":1}}],["10417",{"2":{"65":1}}],["10400",{"2":{"74":1}}],["10437",{"2":{"73":1}}],["10438",{"2":{"65":1}}],["10439",{"2":{"63":1}}],["10420",{"2":{"65":1}}],["10491",{"2":{"64":1}}],["107",{"2":{"1616":1}}],["10730",{"2":{"74":1}}],["10735",{"2":{"64":1}}],["10767",{"2":{"65":1}}],["10716",{"2":{"65":1}}],["10750",{"2":{"64":1}}],["10706",{"2":{"63":1}}],["105",{"2":{"1477":1,"1616":1}}],["10533",{"2":{"114":1}}],["10530",{"2":{"65":1}}],["10528",{"2":{"72":1}}],["10524",{"2":{"64":1}}],["10563",{"2":{"65":1}}],["10549",{"2":{"63":1}}],["102",{"2":{"1616":1,"1831":1,"2410":1}}],["102559237",{"2":{"1318":1}}],["10259",{"2":{"63":1}}],["1024",{"2":{"673":1,"682":6,"694":3,"1943":1,"2392":2,"2613":1}}],["1023",{"2":{"630":1,"1937":1}}],["10231",{"2":{"65":1}}],["10214",{"2":{"65":1}}],["10206",{"2":{"65":1}}],["10204",{"2":{"63":1}}],["10260",{"2":{"63":1}}],["10",{"0":{"1334":1},"2":{"55":1,"73":1,"111":2,"114":1,"340":1,"351":1,"502":1,"511":1,"551":1,"584":1,"630":1,"633":1,"635":4,"641":3,"703":1,"707":1,"1320":1,"1365":1,"1434":1,"1442":1,"1477":1,"1488":2,"1489":1,"1597":1,"1616":4,"1670":2,"1673":3,"1831":3,"1841":3,"1842":1,"1872":3,"1937":2,"1939":1,"1948":1,"1969":2,"2078":2,"2080":1,"2166":1,"2169":1,"2193":4,"2217":1,"2293":1,"2338":1,"2369":2,"2371":3,"2378":1,"2386":1,"2404":3,"2410":3,"2419":3,"2616":1,"2733":2,"2736":2,"2767":1,"2784":1}}],["10101100",{"2":{"2185":1}}],["10101000",{"2":{"2185":1}}],["10103",{"2":{"50":1}}],["101",{"2":{"207":1,"1477":2,"1616":1,"1937":1}}],["10174",{"2":{"145":1}}],["10171",{"2":{"93":1}}],["10179",{"2":{"63":1}}],["10183",{"2":{"63":1}}],["10127",{"2":{"50":1}}],["10129",{"2":{"50":1}}],["10169",{"2":{"49":1}}],["100ms",{"2":{"2651":2}}],["100ma",{"2":{"134":1}}],["100644",{"2":{"2303":1}}],["100k",{"2":{"1324":1}}],["10088",{"2":{"62":1,"114":1}}],["1000ms",{"2":{"1412":1,"1616":1}}],["1000",{"2":{"120":1,"1391":1,"1398":1,"1412":1,"1721":1,"1842":1,"1845":2,"1899":1,"1947":2,"1949":1,"1963":1,"1969":2,"2738":1}}],["10008",{"2":{"50":1}}],["10000000",{"2":{"2186":3}}],["1000000",{"2":{"1943":1}}],["100000l",{"2":{"502":2}}],["100000",{"2":{"11":1,"704":1,"1324":1}}],["10053",{"2":{"50":1}}],["10040",{"2":{"50":1}}],["100",{"0":{"2197":1,"2204":1},"1":{"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"25":2,"273":1,"505":2,"511":1,"689":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1182":1,"1257":1,"1416":1,"1438":1,"1611":1,"1616":1,"1842":1,"1845":1,"1937":3,"1948":1,"1950":2,"1969":2,"2078":2,"2166":1,"2204":1,"2303":7,"2338":2,"2386":3,"2492":2,"2563":1,"2616":2,"2651":1,"2739":2}}],["16bit",{"2":{"2747":1}}],["16bpp",{"2":{"2615":3}}],["16mb",{"2":{"2632":1}}],["16mhz",{"2":{"2368":1,"2383":2}}],["16ms",{"2":{"1768":1,"1992":1}}],["16t",{"2":{"2143":1}}],["16th",{"2":{"1443":1}}],["16k",{"2":{"854":2,"888":2,"922":2,"956":2,"990":2}}],["16kb",{"2":{"486":1}}],["16x2",{"2":{"1627":1,"1642":2}}],["16x",{"2":{"1614":1,"1615":1}}],["16x12",{"2":{"1180":1}}],["16x16",{"2":{"1143":1}}],["16x9",{"2":{"816":1}}],["16x8",{"2":{"784":1,"2616":1}}],["16c0",{"2":{"629":3,"2384":1,"2385":2}}],["16188",{"2":{"160":1}}],["16181",{"2":{"160":1}}],["16185",{"2":{"160":1}}],["16163",{"2":{"176":1}}],["16168",{"2":{"160":1}}],["16167",{"2":{"160":1}}],["16166",{"2":{"160":1}}],["16162",{"2":{"160":1}}],["16157",{"2":{"160":1}}],["16135",{"2":{"160":1}}],["16134",{"2":{"160":1}}],["16128",{"2":{"160":1}}],["16127",{"2":{"160":1}}],["16116",{"2":{"160":1}}],["16113",{"2":{"160":1}}],["16112",{"2":{"160":1}}],["16114",{"2":{"145":1}}],["16107",{"2":{"160":1}}],["16109",{"2":{"160":1}}],["16108",{"2":{"160":1}}],["16102",{"2":{"160":1}}],["16100",{"2":{"160":1}}],["16190",{"2":{"160":1}}],["162",{"2":{"1213":1}}],["16292",{"2":{"160":1}}],["16290",{"2":{"160":1}}],["16276",{"2":{"160":1}}],["16277",{"2":{"160":1}}],["16230",{"2":{"160":1}}],["16208",{"2":{"160":1}}],["16287",{"2":{"176":1}}],["16282",{"2":{"160":1}}],["16280",{"2":{"160":1}}],["16215",{"2":{"160":1}}],["16217",{"2":{"160":1}}],["16228",{"2":{"160":1}}],["16222",{"2":{"160":1}}],["16225",{"2":{"160":1}}],["16221",{"2":{"160":1}}],["16220",{"2":{"160":2}}],["16256",{"2":{"160":1}}],["16252",{"2":{"160":1}}],["16254",{"2":{"160":1}}],["16257",{"2":{"145":1}}],["16251",{"2":{"145":1}}],["16268",{"2":{"160":1}}],["16269",{"2":{"145":1}}],["16266",{"2":{"145":1}}],["16411",{"2":{"1289":1}}],["16436",{"2":{"176":1}}],["16438",{"2":{"145":1}}],["16423",{"2":{"145":1}}],["16441",{"2":{"145":1}}],["169",{"2":{"1289":2}}],["16992",{"2":{"176":1}}],["16996",{"2":{"176":1}}],["16990",{"2":{"176":1}}],["16997",{"2":{"145":1}}],["16949",{"2":{"176":1}}],["16941",{"2":{"145":1}}],["16932",{"2":{"176":1}}],["16939",{"2":{"145":1}}],["16974",{"2":{"145":1}}],["16958",{"2":{"145":1}}],["16951",{"2":{"145":2}}],["16957",{"2":{"145":1}}],["16915",{"2":{"145":1}}],["16961",{"2":{"145":1}}],["16960",{"2":{"145":1}}],["16926",{"2":{"145":1}}],["16909",{"2":{"145":1}}],["16810",{"2":{"176":1}}],["16800",{"2":{"176":1}}],["16806",{"2":{"145":1}}],["16879",{"2":{"176":1}}],["16875",{"2":{"145":1}}],["16874",{"2":{"145":1}}],["16871",{"2":{"145":1}}],["16865",{"2":{"145":1}}],["16863",{"2":{"145":1}}],["16869",{"2":{"145":1}}],["16827",{"2":{"145":1}}],["16892",{"2":{"145":1}}],["16891",{"2":{"145":1}}],["16859",{"2":{"145":2}}],["16843",{"2":{"145":1}}],["16778",{"2":{"176":1}}],["16770",{"2":{"145":1}}],["16773",{"2":{"145":1}}],["16716",{"2":{"145":1}}],["16718",{"2":{"145":1}}],["16705",{"2":{"145":1}}],["16706",{"2":{"145":1}}],["16702",{"2":{"145":1}}],["16723",{"2":{"145":1}}],["16728",{"2":{"145":1}}],["16782",{"2":{"145":1}}],["16785",{"2":{"145":1}}],["16783",{"2":{"145":1}}],["16738",{"2":{"145":1}}],["16737",{"2":{"145":1}}],["16732",{"2":{"145":1}}],["16689",{"2":{"236":1}}],["16681",{"2":{"145":1}}],["16699",{"2":{"199":1}}],["16669",{"2":{"176":1}}],["16668",{"2":{"173":1,"176":1}}],["16667",{"2":{"145":1}}],["16620",{"2":{"145":1}}],["16621",{"2":{"145":1}}],["16617",{"2":{"145":1}}],["16614",{"2":{"145":1}}],["16611",{"2":{"145":1}}],["16630",{"2":{"145":1}}],["16637",{"2":{"145":1}}],["16635",{"2":{"145":1}}],["16640",{"2":{"145":1}}],["16649",{"2":{"145":1}}],["16647",{"2":{"145":1}}],["16600",{"2":{"145":1}}],["16584",{"2":{"176":1}}],["16588",{"2":{"145":1}}],["16597",{"2":{"145":1}}],["16596",{"2":{"145":1}}],["16593",{"2":{"145":1}}],["16559",{"2":{"145":1}}],["16523",{"2":{"145":1}}],["16525",{"2":{"145":1}}],["16505",{"2":{"145":1}}],["16516",{"2":{"145":1}}],["16518",{"2":{"145":1}}],["16561",{"2":{"145":1}}],["16543",{"2":{"145":1}}],["16303",{"2":{"1289":1}}],["16300",{"2":{"160":1}}],["16384u",{"2":{"688":1}}],["16384",{"2":{"682":2}}],["16394",{"2":{"176":1}}],["16359",{"2":{"160":1}}],["16358",{"2":{"160":1}}],["16357",{"2":{"160":1}}],["16348",{"2":{"160":1}}],["16316",{"2":{"160":1}}],["16312",{"2":{"160":1}}],["16315",{"2":{"145":1}}],["16371",{"2":{"175":2,"176":1}}],["16378",{"2":{"160":1}}],["16376",{"2":{"160":1}}],["16370",{"2":{"145":1}}],["16336",{"2":{"176":1}}],["16339",{"2":{"145":1}}],["16337",{"2":{"145":1}}],["16331",{"2":{"145":1}}],["16099",{"2":{"160":1}}],["16096",{"2":{"160":1}}],["16091",{"2":{"160":1}}],["16095",{"2":{"145":1}}],["16076",{"2":{"188":1,"191":1}}],["16075",{"2":{"160":1}}],["16072",{"2":{"160":1}}],["16070",{"2":{"160":1}}],["16054",{"2":{"160":1}}],["16059",{"2":{"160":1}}],["16053",{"2":{"160":1}}],["16050",{"2":{"160":1}}],["16051",{"2":{"160":1}}],["16044",{"2":{"160":1}}],["16041",{"2":{"160":1}}],["16040",{"2":{"160":1}}],["16032",{"2":{"160":1}}],["16039",{"2":{"160":1}}],["16038",{"2":{"145":1}}],["16067",{"2":{"160":1}}],["16063",{"2":{"160":1}}],["16068",{"2":{"145":1}}],["1602a",{"2":{"1627":1}}],["16027",{"2":{"160":1}}],["16026",{"2":{"160":1}}],["16028",{"2":{"160":1}}],["16025",{"2":{"160":1}}],["16023",{"2":{"160":1}}],["16020",{"2":{"160":1}}],["16017",{"2":{"160":1}}],["16016",{"2":{"160":1}}],["16015",{"2":{"160":1}}],["16000",{"2":{"1950":1}}],["16000000",{"2":{"514":1}}],["1600",{"2":{"1947":2,"1950":1}}],["16001",{"2":{"160":1}}],["16007",{"2":{"160":1}}],["16002",{"2":{"160":1}}],["16004",{"2":{"145":1}}],["16089",{"2":{"160":1}}],["16082",{"2":{"160":1}}],["16081",{"2":{"160":1}}],["16080",{"2":{"160":1}}],["16087",{"2":{"160":1}}],["16084",{"2":{"145":1}}],["16086",{"2":{"145":1}}],["16",{"0":{"11":1,"166":1,"1327":1},"2":{"11":2,"63":1,"134":1,"160":1,"166":2,"176":1,"236":1,"351":1,"551":1,"601":2,"635":4,"659":2,"717":1,"723":1,"851":1,"854":2,"886":1,"888":2,"891":1,"922":2,"956":2,"990":2,"1022":1,"1056":1,"1090":1,"1263":1,"1264":2,"1327":5,"1369":1,"1373":1,"1442":1,"1477":1,"1482":2,"1488":2,"1489":1,"1552":1,"1616":1,"1629":1,"1632":2,"1670":2,"1673":3,"1686":1,"1763":2,"1768":2,"1831":2,"1841":1,"1842":2,"1843":4,"1845":3,"1854":1,"1858":1,"1872":3,"1937":1,"1984":2,"1988":1,"1992":2,"2131":1,"2141":1,"2143":1,"2180":1,"2219":1,"2268":1,"2369":1,"2371":1,"2392":17,"2404":3,"2410":2,"2419":3,"2440":1,"2445":1,"2450":1,"2452":1,"2531":1,"2614":3,"2615":2,"2616":1,"2635":1,"2727":4,"2734":6,"2747":1}}],["1",{"0":{"345":1,"537":1,"2204":1,"2353":1,"2470":1,"2496":1},"2":{"10":1,"14":1,"45":3,"90":2,"102":1,"105":2,"114":5,"120":2,"134":1,"145":1,"160":1,"168":1,"169":1,"172":1,"176":1,"184":1,"191":2,"195":1,"197":2,"199":2,"201":4,"211":6,"222":1,"231":1,"236":1,"247":1,"249":3,"259":1,"266":14,"272":2,"279":1,"286":1,"292":2,"313":4,"317":3,"350":2,"453":1,"463":1,"464":1,"465":2,"473":1,"499":1,"511":2,"529":1,"530":6,"534":6,"573":1,"598":1,"616":1,"633":1,"635":22,"636":1,"639":4,"641":3,"656":1,"673":1,"674":2,"680":1,"685":1,"688":1,"690":1,"701":2,"703":1,"757":2,"786":2,"788":1,"789":4,"818":2,"822":2,"850":4,"853":2,"854":2,"885":2,"887":2,"888":2,"919":2,"921":2,"922":2,"953":3,"955":1,"956":2,"987":2,"989":1,"990":2,"1021":4,"1024":4,"1055":4,"1058":4,"1089":2,"1091":1,"1092":4,"1126":1,"1136":1,"1145":2,"1169":1,"1171":3,"1182":2,"1218":1,"1251":1,"1252":1,"1261":1,"1267":1,"1276":1,"1289":5,"1316":2,"1327":3,"1356":1,"1362":4,"1369":10,"1373":4,"1381":1,"1391":1,"1398":1,"1421":1,"1424":1,"1433":2,"1436":2,"1442":1,"1443":5,"1464":1,"1472":2,"1494":2,"1503":16,"1504":7,"1528":1,"1532":1,"1534":1,"1543":1,"1546":1,"1547":2,"1555":1,"1568":2,"1571":3,"1584":2,"1585":1,"1586":1,"1587":3,"1591":7,"1594":3,"1597":1,"1598":2,"1600":1,"1602":1,"1608":1,"1611":2,"1614":3,"1615":5,"1616":1,"1617":1,"1625":1,"1632":2,"1642":1,"1672":2,"1673":3,"1676":2,"1693":2,"1706":1,"1708":1,"1753":2,"1755":2,"1760":2,"1763":6,"1766":1,"1767":2,"1782":1,"1831":32,"1839":4,"1841":2,"1842":1,"1843":9,"1845":4,"1855":1,"1859":3,"1860":2,"1872":3,"1894":3,"1896":13,"1899":4,"1900":1,"1901":2,"1918":1,"1927":4,"1943":1,"1950":5,"1952":1,"1956":1,"1969":1,"1978":2,"1979":1,"1984":6,"1987":1,"1990":2,"1996":1,"2009":1,"2074":7,"2076":3,"2080":1,"2081":1,"2082":6,"2089":2,"2097":1,"2098":1,"2135":1,"2143":1,"2145":1,"2153":1,"2166":2,"2181":1,"2185":1,"2186":4,"2188":1,"2190":3,"2191":2,"2193":16,"2195":1,"2205":4,"2206":1,"2207":1,"2208":1,"2209":1,"2212":1,"2217":1,"2221":1,"2255":1,"2266":1,"2287":1,"2288":1,"2303":13,"2308":1,"2334":1,"2338":8,"2339":8,"2350":12,"2352":1,"2392":3,"2394":9,"2402":4,"2404":3,"2406":1,"2410":32,"2411":4,"2419":3,"2425":2,"2430":2,"2433":2,"2440":2,"2441":7,"2446":1,"2450":1,"2460":1,"2511":1,"2513":8,"2530":2,"2547":1,"2563":1,"2569":1,"2572":1,"2573":1,"2595":1,"2598":16,"2605":1,"2610":1,"2613":1,"2615":11,"2624":1,"2627":4,"2631":1,"2633":1,"2635":3,"2636":2,"2639":2,"2654":10,"2658":1,"2684":1,"2699":1,"2715":1,"2716":2,"2721":1,"2724":1,"2725":3,"2727":1,"2733":2,"2734":1,"2735":2,"2736":1,"2738":3,"2766":1,"2767":1,"2773":1,"2774":1,"2775":1,"2784":1,"2787":1,"2796":1}}],["=+",{"2":{"1454":1,"1456":1,"1465":1}}],["=>",{"2":{"196":4,"1718":4,"1937":1}}],["=helix",{"2":{"55":4}}],["=======",{"2":{"2513":2}}],["==========================",{"2":{"689":1}}],["=================================================",{"2":{"689":1}}],["============================",{"2":{"689":1}}],["=====",{"2":{"689":1}}],["==",{"2":{"13":1,"90":4,"194":1,"476":2,"502":1,"689":1,"1291":2,"1337":2,"1339":1,"1538":1,"1555":1,"1568":1,"1593":1,"1598":4,"1708":1,"1853":1,"1916":1,"1927":5,"1959":1,"1966":1,"1978":2,"1997":1,"2177":1,"2206":1,"2207":3,"2208":2,"2209":3,"2266":4,"2530":1,"2616":1,"2626":1,"2627":1,"2632":1,"2633":1,"2635":1,"2637":1,"2779":1}}],["=",{"0":{"141":1,"167":1,"195":1,"245":1},"2":{"10":1,"28":1,"49":1,"87":1,"88":3,"104":3,"118":9,"119":1,"127":3,"134":1,"166":1,"176":4,"199":1,"201":1,"202":1,"232":1,"234":7,"235":1,"247":1,"266":2,"272":2,"292":2,"350":1,"416":1,"417":1,"438":2,"465":1,"470":1,"473":1,"474":1,"475":2,"508":2,"510":2,"514":5,"516":2,"530":3,"533":1,"534":2,"557":1,"565":2,"566":3,"570":1,"588":4,"596":1,"597":1,"598":1,"631":1,"643":1,"655":1,"659":1,"671":5,"678":4,"680":1,"684":1,"685":14,"689":2,"690":4,"693":1,"700":1,"730":1,"734":2,"756":1,"760":2,"785":1,"792":2,"817":1,"822":2,"849":1,"857":2,"884":1,"891":2,"918":1,"925":2,"952":1,"959":2,"986":1,"993":2,"1020":1,"1027":2,"1054":1,"1061":2,"1088":1,"1095":2,"1124":1,"1127":2,"1130":2,"1144":1,"1148":1,"1181":1,"1185":2,"1212":1,"1233":1,"1250":1,"1254":4,"1256":1,"1257":1,"1258":1,"1259":1,"1260":1,"1282":1,"1328":1,"1340":3,"1351":1,"1366":1,"1367":1,"1369":4,"1381":4,"1384":2,"1386":1,"1396":6,"1400":2,"1412":6,"1415":1,"1420":1,"1421":1,"1422":4,"1423":1,"1427":1,"1428":2,"1430":1,"1431":1,"1433":2,"1435":1,"1438":1,"1441":1,"1442":1,"1450":1,"1476":1,"1477":1,"1483":8,"1485":2,"1492":1,"1498":1,"1499":1,"1500":1,"1501":1,"1528":2,"1530":3,"1532":1,"1537":1,"1538":1,"1545":4,"1546":2,"1547":3,"1548":14,"1555":4,"1560":3,"1561":3,"1566":1,"1570":1,"1572":2,"1585":1,"1586":2,"1591":1,"1593":1,"1595":1,"1597":6,"1598":1,"1608":3,"1628":1,"1632":1,"1669":2,"1671":1,"1672":7,"1690":1,"1695":1,"1701":2,"1703":7,"1704":7,"1706":11,"1713":1,"1717":1,"1724":6,"1755":1,"1756":5,"1757":1,"1762":1,"1763":3,"1766":2,"1767":5,"1768":2,"1825":1,"1830":2,"1838":1,"1845":3,"1850":1,"1851":3,"1852":1,"1853":5,"1854":1,"1859":4,"1860":4,"1863":1,"1868":2,"1871":1,"1893":3,"1894":4,"1895":3,"1896":13,"1905":1,"1908":1,"1911":1,"1913":1,"1916":1,"1921":1,"1923":1,"1927":14,"1933":1,"1935":1,"1936":1,"1937":1,"1938":1,"1942":2,"1947":1,"1948":1,"1949":1,"1950":5,"1951":1,"1958":6,"1959":7,"1960":14,"1962":7,"1963":4,"1977":1,"1978":1,"1979":3,"1983":1,"1984":3,"1987":2,"1990":5,"1992":2,"1996":7,"1997":6,"2070":3,"2078":7,"2080":6,"2082":4,"2101":4,"2106":1,"2111":1,"2141":1,"2149":1,"2159":2,"2168":7,"2175":2,"2176":1,"2177":5,"2183":2,"2184":1,"2185":5,"2186":5,"2187":2,"2188":1,"2192":1,"2193":1,"2195":1,"2199":1,"2202":4,"2204":2,"2205":4,"2206":11,"2207":11,"2208":3,"2209":7,"2210":1,"2216":1,"2219":6,"2220":5,"2263":1,"2266":13,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2283":1,"2285":1,"2287":1,"2288":1,"2301":1,"2302":2,"2339":3,"2344":1,"2386":1,"2394":3,"2427":1,"2433":2,"2441":6,"2445":1,"2446":1,"2447":1,"2462":1,"2552":3,"2561":1,"2569":2,"2581":1,"2604":1,"2605":2,"2612":1,"2615":12,"2616":31,"2618":3,"2620":1,"2626":6,"2627":6,"2628":6,"2629":2,"2630":2,"2633":6,"2634":6,"2635":14,"2636":6,"2637":6,"2638":6,"2639":9,"2645":2,"2651":1,"2715":1,"2716":1,"2724":1,"2728":1,"2744":9,"2746":1,"2749":1,"2767":6,"2786":2}}],["2d",{"2":{"2744":1}}],["2bpp",{"2":{"2635":2}}],["2c1219002b135937334d4e00",{"2":{"2392":1}}],["2t",{"2":{"2143":1}}],["2=4",{"2":{"1860":1}}],["2ms",{"2":{"1859":1}}],["2>",{"2":{"1715":1,"2777":1}}],["2x2",{"2":{"2350":1}}],["2x1800",{"2":{"2297":1}}],["2x",{"2":{"1614":1,"1615":1,"1943":2,"2155":2}}],["2x4",{"2":{"114":1,"211":1}}],["2v",{"2":{"1609":1}}],["2u",{"2":{"1289":2,"2658":1}}],["2kro",{"2":{"2698":1}}],["2kω",{"2":{"1126":1}}],["2k1",{"2":{"853":1,"887":1,"921":1}}],["2k",{"2":{"786":2,"788":1,"789":6,"854":2,"888":2,"922":2,"956":2,"990":2,"1021":2,"1024":6,"1055":2,"1058":6,"1089":2,"1092":6,"1943":1,"2158":1}}],["2key",{"2":{"154":2}}],["2️⃣",{"2":{"685":3}}],["2a03",{"2":{"629":2}}],["2ffb",{"2":{"629":1,"2382":1}}],["2ff9",{"2":{"629":1,"2382":1}}],["2ff4",{"2":{"629":1,"2382":1,"2489":1,"2492":2}}],["2ff3",{"2":{"629":1,"2382":1}}],["2ff0",{"2":{"629":1}}],["2fef",{"2":{"629":1}}],["23x",{"2":{"2567":1}}],["239",{"2":{"1853":1,"2177":1,"2616":9}}],["239a",{"2":{"629":3,"2383":3}}],["23954",{"2":{"277":1}}],["23945",{"2":{"277":1}}],["23999",{"2":{"277":1}}],["23967",{"2":{"277":1}}],["23963",{"2":{"277":1}}],["23987",{"2":{"277":1}}],["23985",{"2":{"277":1}}],["23983",{"2":{"277":1}}],["23981",{"2":{"277":1}}],["23980",{"2":{"277":1}}],["23923",{"2":{"277":1}}],["23925",{"2":{"277":1}}],["23924",{"2":{"277":1}}],["23917",{"2":{"277":1}}],["23911",{"2":{"277":1}}],["23979",{"2":{"277":1}}],["23975",{"2":{"277":1}}],["23901",{"2":{"277":1}}],["23857",{"2":{"277":1}}],["23818",{"2":{"277":1}}],["23896",{"2":{"277":1}}],["23894",{"2":{"277":1}}],["23883",{"2":{"277":1}}],["23885",{"2":{"277":1}}],["23881",{"2":{"277":1}}],["2370",{"2":{"375":2}}],["23709",{"2":{"266":1}}],["23796",{"2":{"277":1}}],["23793",{"2":{"266":1}}],["23792",{"2":{"266":1}}],["23790",{"2":{"266":1}}],["23782",{"2":{"277":1}}],["23789",{"2":{"266":1}}],["23788",{"2":{"266":1}}],["23787",{"2":{"266":1}}],["23786",{"2":{"266":1}}],["23785",{"2":{"266":1}}],["23784",{"2":{"266":1}}],["23783",{"2":{"266":1}}],["23781",{"2":{"266":1}}],["23780",{"2":{"266":1}}],["23779",{"2":{"266":1}}],["23778",{"2":{"266":1}}],["23774",{"2":{"266":1}}],["23773",{"2":{"266":1}}],["23772",{"2":{"266":1}}],["23771",{"2":{"266":1}}],["23770",{"2":{"266":1}}],["23765",{"2":{"277":1}}],["23769",{"2":{"266":1}}],["23768",{"2":{"266":1}}],["23767",{"2":{"266":1}}],["23764",{"2":{"266":1}}],["23763",{"2":{"266":1}}],["23762",{"2":{"266":1}}],["23760",{"2":{"266":1}}],["23759",{"2":{"266":1}}],["23758",{"2":{"266":1}}],["23757",{"2":{"266":1}}],["23754",{"2":{"266":1}}],["23751",{"2":{"266":1}}],["23750",{"2":{"266":1}}],["23749",{"2":{"266":1}}],["23747",{"2":{"266":1}}],["23746",{"2":{"266":1}}],["23745",{"2":{"266":1}}],["23719",{"2":{"266":1}}],["23716",{"2":{"266":1}}],["23714",{"2":{"266":1}}],["23712",{"2":{"266":1}}],["23726",{"2":{"266":1}}],["23266",{"2":{"266":1}}],["23264",{"2":{"266":1}}],["23222",{"2":{"266":1}}],["23221",{"2":{"266":1}}],["23206",{"2":{"266":1}}],["23202",{"2":{"266":1}}],["23292",{"2":{"266":1}}],["23299",{"2":{"266":1}}],["23294",{"2":{"266":1}}],["23293",{"2":{"266":1}}],["23297",{"2":{"266":1}}],["23289",{"2":{"266":1}}],["23288",{"2":{"266":1}}],["23287",{"2":{"266":1}}],["23286",{"2":{"266":1}}],["23285",{"2":{"266":1}}],["23277",{"2":{"266":1}}],["23276",{"2":{"266":1}}],["23273",{"2":{"266":1}}],["23259",{"2":{"266":1}}],["23246",{"2":{"266":1}}],["23248",{"2":{"266":1}}],["23247",{"2":{"266":1}}],["23236",{"2":{"266":1}}],["23217",{"2":{"266":1}}],["23642",{"2":{"277":1}}],["23692",{"2":{"277":1}}],["23694",{"2":{"266":1}}],["23697",{"2":{"266":1}}],["23691",{"2":{"266":1}}],["23685",{"2":{"266":1}}],["23668",{"2":{"266":1}}],["23663",{"2":{"266":1}}],["23630",{"2":{"277":1}}],["23635",{"2":{"266":1}}],["23633",{"2":{"266":1}}],["23627",{"2":{"266":1}}],["23624",{"2":{"266":1}}],["23622",{"2":{"266":1}}],["23616",{"2":{"266":1}}],["23614",{"2":{"266":1}}],["23612",{"2":{"266":1}}],["23609",{"2":{"266":1}}],["23607",{"2":{"266":1}}],["23606",{"2":{"266":1}}],["23601",{"2":{"266":1}}],["23673",{"2":{"266":1}}],["23650",{"2":{"277":1}}],["23655",{"2":{"266":1}}],["23652",{"2":{"266":1}}],["23658",{"2":{"266":1}}],["23653",{"2":{"266":1}}],["23657",{"2":{"266":1}}],["23656",{"2":{"266":1}}],["23598",{"2":{"266":1}}],["23599",{"2":{"266":1}}],["23593",{"2":{"266":1}}],["23591",{"2":{"266":1}}],["23590",{"2":{"266":1}}],["23589",{"2":{"266":1}}],["23588",{"2":{"266":1}}],["23585",{"2":{"266":1}}],["23576",{"2":{"266":1}}],["23573",{"2":{"266":1}}],["23569",{"2":{"266":1}}],["23567",{"2":{"266":1}}],["23566",{"2":{"266":1}}],["23565",{"2":{"266":1}}],["23564",{"2":{"266":1}}],["23562",{"2":{"266":1}}],["23557",{"2":{"266":1}}],["23556",{"2":{"266":1}}],["23547",{"2":{"266":1}}],["23542",{"2":{"266":1}}],["23541",{"2":{"266":1}}],["23540",{"2":{"266":1}}],["23534",{"2":{"266":1}}],["23533",{"2":{"266":1}}],["23532",{"2":{"266":1}}],["23530",{"2":{"266":1}}],["23520",{"2":{"277":1}}],["23529",{"2":{"266":1}}],["23525",{"2":{"266":1}}],["23524",{"2":{"266":1}}],["23522",{"2":{"266":1}}],["23516",{"2":{"266":1}}],["23515",{"2":{"266":1}}],["23514",{"2":{"266":1}}],["23512",{"2":{"266":1}}],["23511",{"2":{"266":1}}],["23488",{"2":{"266":1}}],["23486",{"2":{"266":1}}],["23462",{"2":{"266":1}}],["23461",{"2":{"266":1}}],["23460",{"2":{"266":1}}],["23463",{"2":{"266":1}}],["23453",{"2":{"266":1}}],["23452",{"2":{"266":1}}],["23455",{"2":{"266":1}}],["2341",{"2":{"629":2,"2383":2}}],["23419",{"2":{"266":1}}],["23418",{"2":{"266":1}}],["23412",{"2":{"266":1}}],["23406",{"2":{"266":1}}],["23403",{"2":{"266":1}}],["23402",{"2":{"266":1}}],["23405",{"2":{"266":1}}],["23407",{"2":{"266":1}}],["23448",{"2":{"266":1}}],["23437",{"2":{"277":1}}],["23439",{"2":{"277":1}}],["23436",{"2":{"266":1}}],["23434",{"2":{"266":1}}],["23432",{"2":{"266":1}}],["23425",{"2":{"266":1}}],["23424",{"2":{"266":1}}],["23423",{"2":{"266":1}}],["23421",{"2":{"266":1}}],["23426",{"2":{"266":1}}],["23422",{"2":{"266":1}}],["23355",{"2":{"277":1}}],["23357",{"2":{"266":1}}],["23341",{"2":{"277":1}}],["23346",{"2":{"266":1}}],["23335",{"2":{"266":1}}],["23330",{"2":{"266":1}}],["23399",{"2":{"266":1}}],["23396",{"2":{"266":1}}],["23395",{"2":{"266":1}}],["23397",{"2":{"266":1}}],["23394",{"2":{"266":1}}],["23393",{"2":{"266":1}}],["23390",{"2":{"266":1}}],["23384",{"2":{"266":1}}],["23379",{"2":{"266":1}}],["23378",{"2":{"266":1}}],["23377",{"2":{"266":1}}],["23376",{"2":{"266":1}}],["23373",{"2":{"266":1}}],["23371",{"2":{"266":1}}],["23375",{"2":{"266":1}}],["23367",{"2":{"266":1}}],["23361",{"2":{"266":1}}],["23360",{"2":{"266":1}}],["23311",{"2":{"266":1}}],["23309",{"2":{"266":1}}],["23307",{"2":{"266":1}}],["23305",{"2":{"266":1}}],["23302",{"2":{"266":1}}],["23329",{"2":{"266":1}}],["23324",{"2":{"266":1}}],["23321",{"2":{"266":1}}],["23322",{"2":{"266":1}}],["23188",{"2":{"266":1}}],["23185",{"2":{"266":1}}],["23179",{"2":{"266":1}}],["2316",{"2":{"2508":1}}],["23169",{"2":{"266":1}}],["23162",{"2":{"266":1}}],["23144",{"2":{"266":1}}],["23143",{"2":{"249":1}}],["23111",{"2":{"266":1}}],["23116",{"2":{"249":1}}],["23112",{"2":{"249":1}}],["23110",{"2":{"249":1}}],["23119",{"2":{"249":1}}],["23155",{"2":{"249":1}}],["23129",{"2":{"249":1}}],["23127",{"2":{"249":1}}],["23121",{"2":{"249":1}}],["23128",{"2":{"249":1}}],["23106",{"2":{"249":1}}],["23104",{"2":{"249":1}}],["23102",{"2":{"249":1}}],["23109",{"2":{"249":1}}],["23108",{"2":{"249":1}}],["23",{"2":{"249":1,"351":1,"556":1,"854":1,"922":1,"990":1,"1024":1,"1058":1,"1092":1,"1442":1,"1477":3,"1616":1,"1673":3,"1872":3,"1937":22,"2404":3,"2419":3,"2633":1}}],["23038",{"2":{"266":1}}],["23037",{"2":{"249":1}}],["230400",{"2":{"1136":1}}],["23048",{"2":{"249":1}}],["23047",{"2":{"249":1}}],["23049",{"2":{"249":1}}],["23097",{"2":{"277":1}}],["23091",{"2":{"277":1}}],["23096",{"2":{"249":1}}],["23095",{"2":{"249":1}}],["23094",{"2":{"249":1}}],["23092",{"2":{"249":1}}],["23093",{"2":{"249":1}}],["23084",{"2":{"249":1}}],["23083",{"2":{"249":1}}],["23081",{"2":{"249":1}}],["23085",{"2":{"249":1}}],["23076",{"2":{"266":1}}],["23077",{"2":{"249":1}}],["23074",{"2":{"249":1}}],["23073",{"2":{"249":1}}],["23063",{"2":{"249":1}}],["23067",{"2":{"249":1}}],["23029",{"2":{"249":1}}],["23000",{"2":{"249":1}}],["23002",{"2":{"249":1}}],["23055",{"2":{"266":1}}],["23059",{"2":{"249":1}}],["23056",{"2":{"249":1}}],["23058",{"2":{"249":1}}],["23052",{"2":{"249":1}}],["247",{"2":{"1853":1,"2177":1}}],["248",{"2":{"1312":1,"2301":1}}],["24lc256",{"2":{"674":2}}],["24lc128",{"2":{"674":3}}],["24lc64",{"2":{"674":3}}],["24lc32a",{"2":{"176":1,"674":3}}],["24xx",{"0":{"2330":1},"2":{"671":1,"674":1}}],["24316",{"2":{"277":1}}],["24322",{"2":{"277":1}}],["24253",{"2":{"277":1}}],["24238",{"2":{"277":1}}],["24237",{"2":{"277":1}}],["24236",{"2":{"277":1}}],["24233",{"2":{"277":1}}],["24232",{"2":{"277":1}}],["24231",{"2":{"277":1}}],["24234",{"2":{"277":1}}],["24215",{"2":{"277":1}}],["24240",{"2":{"277":1}}],["24201",{"2":{"277":1}}],["24200",{"2":{"277":1}}],["24203",{"2":{"277":1}}],["24202",{"2":{"277":1}}],["24116",{"2":{"277":1}}],["24191",{"2":{"277":1}}],["24192",{"2":{"277":1}}],["24185",{"2":{"277":1}}],["24180",{"2":{"277":1}}],["24163",{"2":{"277":1}}],["24155",{"2":{"277":1}}],["24146",{"2":{"277":1}}],["24143",{"2":{"277":1}}],["24142",{"2":{"277":1}}],["24136",{"2":{"277":1}}],["24133",{"2":{"277":1}}],["24127",{"2":{"277":1}}],["24122",{"2":{"277":1}}],["24120",{"2":{"277":1}}],["240px",{"2":{"2616":1}}],["240",{"2":{"2615":3}}],["240x80",{"2":{"2615":2}}],["240x320",{"2":{"2612":2,"2615":1,"2616":4}}],["240x240",{"2":{"2612":2,"2615":1,"2616":1}}],["24092",{"2":{"277":1}}],["24094",{"2":{"277":1}}],["24086",{"2":{"277":1}}],["24087",{"2":{"277":1}}],["24068",{"2":{"277":1}}],["24064",{"2":{"277":1}}],["24060",{"2":{"277":1}}],["24032",{"2":{"277":1}}],["24017",{"2":{"277":1}}],["24016",{"2":{"277":1}}],["24011",{"2":{"277":1}}],["24010",{"2":{"277":1}}],["24054",{"2":{"277":1}}],["24055",{"2":{"277":1}}],["24051",{"2":{"277":1}}],["24049",{"2":{"277":1}}],["24020",{"2":{"277":1}}],["2400",{"2":{"1238":1}}],["24009",{"2":{"277":1}}],["24008",{"2":{"277":1}}],["24006",{"2":{"277":1}}],["24003",{"2":{"277":1}}],["24001",{"2":{"277":1}}],["24",{"2":{"238":1,"339":1,"340":2,"351":1,"1087":1,"1477":2,"1616":1,"1673":3,"1845":1,"1858":1,"1872":3,"1937":6,"1983":1,"2185":1,"2404":3,"2419":3,"2632":1}}],["22947",{"2":{"277":1}}],["22948",{"2":{"249":1}}],["22942",{"2":{"249":1}}],["22934",{"2":{"249":1}}],["22932",{"2":{"249":1}}],["22926",{"2":{"266":1}}],["22922",{"2":{"249":1}}],["22921",{"2":{"249":1}}],["22920",{"2":{"249":1}}],["22997",{"2":{"249":1}}],["22998",{"2":{"249":1}}],["22992",{"2":{"249":1}}],["22991",{"2":{"249":1}}],["22917",{"2":{"249":1}}],["22911",{"2":{"249":1}}],["22910",{"2":{"249":1}}],["22901",{"2":{"249":1}}],["22909",{"2":{"249":1}}],["22908",{"2":{"249":1}}],["22905",{"2":{"249":1}}],["22985",{"2":{"249":1}}],["22971",{"2":{"249":1}}],["22979",{"2":{"249":1}}],["22975",{"2":{"249":1}}],["22970",{"2":{"249":1}}],["22967",{"2":{"266":1}}],["22962",{"2":{"266":1}}],["22969",{"2":{"249":1}}],["22966",{"2":{"249":1}}],["22961",{"2":{"249":1}}],["22953",{"2":{"249":1}}],["22955",{"2":{"249":1}}],["22951",{"2":{"249":1}}],["22857",{"2":{"249":1}}],["22851",{"2":{"249":1}}],["22859",{"2":{"249":1}}],["22895",{"2":{"266":1}}],["22891",{"2":{"266":1}}],["22897",{"2":{"249":1}}],["22896",{"2":{"249":1}}],["22899",{"2":{"249":1}}],["22898",{"2":{"249":1}}],["22819",{"2":{"249":1}}],["22811",{"2":{"249":1}}],["22814",{"2":{"249":1}}],["22884",{"2":{"249":1}}],["22873",{"2":{"249":1}}],["22879",{"2":{"249":1}}],["22878",{"2":{"249":1}}],["22872",{"2":{"249":1}}],["22866",{"2":{"249":1}}],["22864",{"2":{"249":1}}],["22863",{"2":{"249":1}}],["22862",{"2":{"249":1}}],["22861",{"2":{"249":1}}],["22860",{"2":{"249":1}}],["22869",{"2":{"249":1}}],["22865",{"2":{"249":1}}],["22832",{"2":{"249":1}}],["22839",{"2":{"249":1}}],["22830",{"2":{"249":1}}],["22829",{"2":{"249":1}}],["22823",{"2":{"249":1}}],["22826",{"2":{"249":1}}],["22825",{"2":{"249":1}}],["22824",{"2":{"249":1}}],["22809",{"2":{"249":1}}],["22802",{"2":{"249":1}}],["22808",{"2":{"249":1}}],["22807",{"2":{"249":1}}],["22806",{"2":{"249":1}}],["22801",{"2":{"249":1}}],["22803",{"2":{"249":1}}],["22800",{"2":{"249":1}}],["22731",{"2":{"266":1}}],["22736",{"2":{"249":1}}],["22799",{"2":{"249":1}}],["22796",{"2":{"249":1}}],["22798",{"2":{"249":1}}],["22797",{"2":{"249":1}}],["22792",{"2":{"249":1}}],["22795",{"2":{"249":1}}],["22771",{"2":{"249":1}}],["22775",{"2":{"249":1}}],["22764",{"2":{"249":1}}],["22763",{"2":{"249":1}}],["22762",{"2":{"249":1}}],["22760",{"2":{"249":1}}],["22759",{"2":{"249":1}}],["22753",{"2":{"249":1}}],["22750",{"2":{"249":1}}],["22741",{"2":{"266":1}}],["22745",{"2":{"249":1}}],["22743",{"2":{"249":1}}],["22740",{"2":{"249":1}}],["22742",{"2":{"249":1}}],["22721",{"2":{"249":1}}],["22726",{"2":{"249":1}}],["22719",{"2":{"249":1}}],["22715",{"2":{"249":1}}],["22714",{"2":{"249":1}}],["22712",{"2":{"249":1}}],["22710",{"2":{"249":1}}],["22709",{"2":{"249":1}}],["22708",{"2":{"249":1}}],["22701",{"2":{"249":1}}],["22695",{"2":{"266":1}}],["22662",{"2":{"266":1}}],["22649",{"2":{"249":1}}],["22652",{"2":{"249":1}}],["22651",{"2":{"249":1}}],["22656",{"2":{"249":1}}],["22603",{"2":{"249":1}}],["22688",{"2":{"249":1}}],["22682",{"2":{"249":1}}],["22681",{"2":{"249":1}}],["22680",{"2":{"249":1}}],["22670",{"2":{"277":1}}],["22675",{"2":{"249":1}}],["22674",{"2":{"249":1}}],["22673",{"2":{"249":1}}],["22638",{"2":{"249":1}}],["22637",{"2":{"249":1}}],["22636",{"2":{"249":1}}],["22635",{"2":{"249":1}}],["22628",{"2":{"249":1}}],["22625",{"2":{"249":1}}],["22620",{"2":{"249":1}}],["22617",{"2":{"249":1}}],["22579",{"2":{"249":1}}],["22578",{"2":{"249":1}}],["22577",{"2":{"249":1}}],["22575",{"2":{"249":1}}],["22570",{"2":{"249":1}}],["22558",{"2":{"249":1}}],["22560",{"2":{"249":1}}],["22562",{"2":{"249":1}}],["22530",{"2":{"249":1}}],["22518",{"2":{"249":1}}],["22546",{"2":{"249":1}}],["22543",{"2":{"249":1}}],["22542",{"2":{"249":1}}],["22549",{"2":{"236":1}}],["22548",{"2":{"236":1}}],["22545",{"2":{"236":1}}],["22544",{"2":{"236":1}}],["22526",{"2":{"249":1}}],["22529",{"2":{"249":1}}],["22523",{"2":{"236":1}}],["22528",{"2":{"236":1}}],["22525",{"2":{"236":1}}],["22",{"2":{"236":1,"249":1,"340":1,"351":1,"1442":1,"1616":1,"1673":3,"1872":3,"1937":4,"2404":3,"2419":3}}],["224x64",{"2":{"1988":1}}],["224",{"2":{"1763":4,"1984":4,"2727":1,"2734":1}}],["22489",{"2":{"277":1}}],["22480",{"2":{"236":1}}],["22474",{"2":{"249":1}}],["22471",{"2":{"236":1}}],["22419",{"2":{"249":1}}],["22497",{"2":{"236":1}}],["22437",{"2":{"236":1}}],["22435",{"2":{"236":1}}],["22434",{"2":{"236":1}}],["22436",{"2":{"236":1}}],["22469",{"2":{"236":1}}],["22446",{"2":{"236":1}}],["22444",{"2":{"236":1}}],["22448",{"2":{"236":1}}],["22445",{"2":{"236":1}}],["22423",{"2":{"236":1}}],["22401",{"2":{"249":1}}],["22403",{"2":{"236":1}}],["22400",{"2":{"236":1}}],["223",{"2":{"1853":1,"1855":1,"2177":1,"2179":1}}],["22396",{"2":{"1324":3}}],["22398",{"2":{"236":1}}],["22374",{"2":{"249":1}}],["22379",{"2":{"236":1}}],["22358",{"2":{"249":1}}],["22357",{"2":{"236":1}}],["22341",{"2":{"249":1}}],["22342",{"2":{"236":1}}],["22332",{"2":{"236":1}}],["22368",{"2":{"249":1}}],["22364",{"2":{"236":1}}],["22366",{"2":{"236":1}}],["22363",{"2":{"236":1}}],["22369",{"2":{"236":1}}],["22365",{"2":{"236":1}}],["22384",{"2":{"249":1}}],["22383",{"2":{"236":1}}],["22381",{"2":{"236":1}}],["22380",{"2":{"236":1}}],["22328",{"2":{"236":1}}],["22325",{"2":{"236":1}}],["22324",{"2":{"236":1}}],["22323",{"2":{"236":1}}],["22321",{"2":{"236":1}}],["22315",{"2":{"249":1}}],["22314",{"2":{"249":1}}],["22312",{"2":{"236":1}}],["22310",{"2":{"236":1}}],["22313",{"2":{"236":1}}],["22311",{"2":{"236":1}}],["22303",{"2":{"249":1}}],["22304",{"2":{"249":1}}],["22305",{"2":{"236":1}}],["22309",{"2":{"236":1}}],["22308",{"2":{"236":1}}],["22201",{"2":{"249":1}}],["22200",{"2":{"236":1}}],["22281",{"2":{"249":1}}],["22280",{"2":{"236":1}}],["22276",{"2":{"249":1}}],["22297",{"2":{"236":1}}],["22239",{"2":{"236":1}}],["22235",{"2":{"236":1}}],["22236",{"2":{"236":1}}],["22242",{"2":{"236":1}}],["22248",{"2":{"236":1}}],["22265",{"2":{"266":1}}],["22263",{"2":{"249":1}}],["22268",{"2":{"236":1}}],["22264",{"2":{"236":1}}],["22267",{"2":{"236":1}}],["22221",{"2":{"236":1}}],["22222",{"2":{"236":1}}],["22251",{"2":{"266":1}}],["22256",{"2":{"236":1}}],["22253",{"2":{"236":1}}],["22212",{"2":{"236":1}}],["22135",{"2":{"266":1}}],["22133",{"2":{"236":1}}],["22114",{"2":{"249":1}}],["22117",{"2":{"236":1}}],["22185",{"2":{"249":1}}],["22188",{"2":{"236":1}}],["22108",{"2":{"236":1}}],["22106",{"2":{"236":1}}],["22105",{"2":{"236":1}}],["22152",{"2":{"236":1}}],["22151",{"2":{"236":1}}],["22149",{"2":{"236":1}}],["22148",{"2":{"236":1}}],["22145",{"2":{"236":1}}],["22144",{"2":{"236":1}}],["22193",{"2":{"236":1}}],["22170",{"2":{"236":1}}],["22163",{"2":{"236":1}}],["22125",{"2":{"236":1}}],["22122",{"2":{"236":1}}],["22121",{"2":{"236":1}}],["22129",{"2":{"236":1}}],["22126",{"2":{"236":1}}],["22123",{"2":{"236":1}}],["220",{"2":{"2770":1,"2771":1}}],["22050u",{"2":{"688":1}}],["22021",{"2":{"236":1}}],["22025",{"2":{"236":1}}],["22082",{"2":{"249":1}}],["22089",{"2":{"236":1}}],["22088",{"2":{"236":1}}],["22087",{"2":{"236":1}}],["22085",{"2":{"236":1}}],["22084",{"2":{"236":1}}],["22068",{"2":{"236":1}}],["22041",{"2":{"236":1}}],["22049",{"2":{"236":1}}],["22034",{"2":{"236":1}}],["22013",{"2":{"236":1}}],["22011",{"2":{"236":1}}],["22010",{"2":{"236":1}}],["22017",{"2":{"236":1}}],["22091",{"2":{"249":1}}],["22099",{"2":{"236":1}}],["22090",{"2":{"236":1}}],["22072",{"2":{"236":1}}],["22073",{"2":{"236":1}}],["22074",{"2":{"236":1}}],["22071",{"2":{"236":1}}],["22009",{"2":{"236":1}}],["22008",{"2":{"236":1}}],["22007",{"2":{"236":1}}],["22006",{"2":{"236":1}}],["22004",{"2":{"236":1}}],["25mhz",{"2":{"2560":1}}],["254",{"2":{"1853":1,"2177":1}}],["253",{"2":{"1853":1,"2177":1}}],["251",{"2":{"1853":1,"2177":1}}],["25k",{"2":{"1478":1}}],["25keys",{"2":{"154":5,"160":1}}],["250",{"2":{"788":2,"1320":1,"1721":1,"1949":1,"1969":1}}],["25xx",{"2":{"671":1,"675":1}}],["255",{"2":{"582":2,"657":1,"790":1,"855":2,"889":2,"923":2,"957":2,"991":2,"1025":2,"1059":2,"1093":2,"1254":4,"1483":3,"1494":2,"1763":1,"1768":1,"1800":1,"1806":1,"1808":1,"1810":1,"1845":1,"1855":2,"1984":1,"1992":3,"1997":9,"2027":1,"2033":1,"2039":1,"2045":1,"2047":1,"2049":1,"2051":3,"2053":3,"2073":2,"2076":3,"2078":1,"2089":9,"2092":2,"2093":2,"2134":1,"2145":1,"2179":1,"2265":2,"2616":20,"2635":1,"2636":3,"2716":2,"2727":2,"2733":3,"2734":3}}],["25u×2uh",{"2":{"2725":1}}],["25u",{"2":{"259":1,"2658":1}}],["25",{"0":{"237":1,"267":1},"1":{"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"265":1,"266":1,"338":2,"340":1,"351":3,"506":1,"888":1,"1091":1,"1442":1,"1477":1,"1616":1,"1673":3,"1831":1,"1872":3,"1937":3,"1940":2,"1969":1,"1988":1,"2078":1,"2264":1,"2308":3,"2404":3,"2410":1,"2419":3,"2626":1,"2650":1,"2725":2}}],["256kb",{"2":{"2567":1}}],["256u",{"2":{"688":2}}],["256",{"2":{"46":1,"694":1,"1143":1,"1264":1,"2613":2,"2614":4,"2616":1,"2617":1,"2635":1}}],["26356",{"2":{"2508":1}}],["260",{"2":{"2288":1}}],["2601",{"2":{"2288":1}}],["26000",{"2":{"1136":1}}],["266",{"2":{"1335":1}}],["26k7",{"2":{"853":1,"887":1,"921":1}}],["26kbps",{"2":{"511":1,"2166":1}}],["26",{"0":{"146":1,"177":1,"192":1,"223":1,"250":1},"1":{"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1},"2":{"170":1,"317":2,"338":1,"351":6,"853":1,"887":1,"921":1,"1442":1,"1477":1,"1616":1,"1673":3,"1872":3,"1937":3,"2404":3,"2419":3,"2650":1}}],["21944",{"2":{"249":1}}],["21948",{"2":{"236":1}}],["21926",{"2":{"236":1}}],["21929",{"2":{"236":1}}],["21939",{"2":{"236":2}}],["21938",{"2":{"236":1}}],["21996",{"2":{"236":1}}],["21995",{"2":{"236":1}}],["21994",{"2":{"236":1}}],["21993",{"2":{"236":1}}],["21991",{"2":{"236":1}}],["21981",{"2":{"236":1}}],["21986",{"2":{"236":1}}],["21975",{"2":{"236":1}}],["21979",{"2":{"236":1}}],["21978",{"2":{"236":1}}],["21977",{"2":{"236":1}}],["21966",{"2":{"236":1}}],["21964",{"2":{"236":1}}],["21960",{"2":{"236":1}}],["21918",{"2":{"236":1}}],["21909",{"2":{"236":1}}],["21906",{"2":{"236":1}}],["21908",{"2":{"236":1}}],["21905",{"2":{"236":1}}],["21904",{"2":{"236":1}}],["21903",{"2":{"236":1}}],["21883",{"2":{"249":1}}],["21825",{"2":{"236":1}}],["21827",{"2":{"222":1}}],["21897",{"2":{"236":1}}],["21898",{"2":{"236":1}}],["21892",{"2":{"236":1}}],["21891",{"2":{"236":1}}],["21890",{"2":{"236":1}}],["21879",{"2":{"236":1}}],["21874",{"2":{"236":1}}],["21878",{"2":{"236":1}}],["21875",{"2":{"236":1}}],["21866",{"2":{"236":1}}],["21865",{"2":{"236":1}}],["21861",{"2":{"236":1}}],["21859",{"2":{"236":1}}],["21804",{"2":{"236":1}}],["21800",{"2":{"222":1}}],["21842",{"2":{"222":1}}],["21830",{"2":{"222":1}}],["21817",{"2":{"222":1}}],["21815",{"2":{"222":1}}],["21775",{"2":{"249":1}}],["21770",{"2":{"249":1}}],["21777",{"2":{"249":1}}],["21773",{"2":{"222":1}}],["21721",{"2":{"249":1}}],["21727",{"2":{"222":1}}],["21767",{"2":{"236":1}}],["21744",{"2":{"236":1}}],["21740",{"2":{"236":1}}],["21792",{"2":{"222":1}}],["21757",{"2":{"222":1}}],["21751",{"2":{"222":1}}],["21717",{"2":{"236":1}}],["21711",{"2":{"236":1}}],["21718",{"2":{"222":1}}],["21714",{"2":{"222":1}}],["21710",{"2":{"222":1}}],["21704",{"2":{"222":1}}],["21709",{"2":{"222":1}}],["21708",{"2":{"222":1}}],["21703",{"2":{"222":1}}],["216",{"2":{"654":1,"2614":1}}],["21695",{"2":{"266":1}}],["21671",{"2":{"236":1}}],["21676",{"2":{"222":1}}],["21687",{"2":{"249":1}}],["21684",{"2":{"236":1}}],["21688",{"2":{"236":1}}],["21682",{"2":{"222":1}}],["21667",{"2":{"236":1}}],["21662",{"2":{"236":1}}],["21664",{"2":{"236":1}}],["21663",{"2":{"222":1}}],["21661",{"2":{"222":1}}],["21656",{"2":{"266":1}}],["21654",{"2":{"236":1}}],["21659",{"2":{"222":1}}],["21653",{"2":{"222":1}}],["21658",{"2":{"222":1}}],["21651",{"2":{"222":1}}],["21642",{"2":{"236":1}}],["21645",{"2":{"222":1}}],["21644",{"2":{"222":1}}],["21640",{"2":{"222":1}}],["21636",{"2":{"222":1}}],["21635",{"2":{"222":1}}],["21630",{"2":{"222":1}}],["21623",{"2":{"249":1}}],["21626",{"2":{"222":1}}],["21625",{"2":{"222":1}}],["21624",{"2":{"222":1}}],["21611",{"2":{"236":1}}],["21614",{"2":{"222":1}}],["21612",{"2":{"222":1}}],["21613",{"2":{"222":1}}],["21576",{"2":{"236":1}}],["21574",{"2":{"236":1}}],["21579",{"2":{"222":1}}],["21572",{"2":{"222":1}}],["21548",{"2":{"249":1}}],["21543",{"2":{"222":1}}],["21540",{"2":{"222":1}}],["21569",{"2":{"222":1}}],["21567",{"2":{"222":1}}],["21526",{"2":{"222":1}}],["21523",{"2":{"222":1}}],["21592",{"2":{"222":1}}],["21596",{"2":{"222":1}}],["21594",{"2":{"222":1}}],["21591",{"2":{"222":1}}],["21583",{"2":{"236":1}}],["21589",{"2":{"222":1}}],["21588",{"2":{"222":1}}],["21580",{"2":{"222":1}}],["21554",{"2":{"222":1}}],["21553",{"2":{"222":1}}],["21558",{"2":{"222":1}}],["21551",{"2":{"222":1}}],["21519",{"2":{"222":1}}],["21517",{"2":{"222":1}}],["21514",{"2":{"222":1}}],["21507",{"2":{"222":1}}],["21410",{"2":{"266":1}}],["21456",{"2":{"249":1}}],["21450",{"2":{"236":1}}],["21454",{"2":{"222":1}}],["21402",{"2":{"236":1}}],["21405",{"2":{"222":1}}],["21448",{"2":{"249":1}}],["21447",{"2":{"222":1}}],["21444",{"2":{"222":1}}],["21467",{"2":{"236":1}}],["21468",{"2":{"222":1}}],["21465",{"2":{"222":1}}],["21494",{"2":{"236":1}}],["21497",{"2":{"222":1}}],["21495",{"2":{"222":1}}],["21498",{"2":{"222":1}}],["21496",{"2":{"222":2}}],["21493",{"2":{"222":1}}],["21489",{"2":{"222":1}}],["21484",{"2":{"222":1}}],["21482",{"2":{"222":1}}],["21486",{"2":{"222":1}}],["21485",{"2":{"222":1}}],["21480",{"2":{"222":1}}],["21476",{"2":{"222":1}}],["21473",{"2":{"222":1}}],["21472",{"2":{"222":1}}],["21435",{"2":{"222":1}}],["21432",{"2":{"222":1}}],["21436",{"2":{"222":1}}],["21434",{"2":{"222":1}}],["21422",{"2":{"222":1}}],["21427",{"2":{"222":1}}],["21424",{"2":{"222":1}}],["213",{"2":{"1318":1}}],["21398",{"2":{"249":1}}],["21391",{"2":{"222":1}}],["21345",{"2":{"222":1}}],["21343",{"2":{"222":1}}],["21307",{"2":{"222":1}}],["21302",{"2":{"222":1}}],["21380",{"2":{"236":1}}],["21389",{"2":{"222":1}}],["21384",{"2":{"222":1}}],["21382",{"2":{"222":1}}],["21370",{"2":{"222":1}}],["21364",{"2":{"236":1}}],["21365",{"2":{"222":1}}],["21363",{"2":{"222":1}}],["21360",{"2":{"222":1}}],["21366",{"2":{"222":1}}],["21339",{"2":{"222":1}}],["21337",{"2":{"222":1}}],["21332",{"2":{"222":1}}],["21324",{"2":{"222":1}}],["21325",{"2":{"222":1}}],["21322",{"2":{"222":1}}],["21320",{"2":{"222":1}}],["21354",{"2":{"222":1}}],["21353",{"2":{"222":1}}],["21352",{"2":{"222":1}}],["21206",{"2":{"222":1}}],["21205",{"2":{"222":1}}],["21298",{"2":{"222":1}}],["21299",{"2":{"222":1}}],["21296",{"2":{"222":1}}],["21292",{"2":{"222":1}}],["21293",{"2":{"222":1}}],["21287",{"2":{"222":1}}],["21284",{"2":{"222":1}}],["21281",{"2":{"222":1}}],["21273",{"2":{"249":1}}],["21272",{"2":{"222":1}}],["21278",{"2":{"222":1}}],["21271",{"2":{"222":1}}],["21260",{"2":{"222":1}}],["21248",{"2":{"222":1}}],["21240",{"2":{"222":1}}],["21247",{"2":{"222":1}}],["21237",{"2":{"222":1}}],["21234",{"2":{"222":1}}],["21217",{"2":{"222":1}}],["21124",{"2":{"249":1}}],["21174",{"2":{"236":1}}],["21171",{"2":{"236":1}}],["21176",{"2":{"222":1}}],["21190",{"2":{"222":1}}],["21144",{"2":{"222":1}}],["21169",{"2":{"222":1}}],["21164",{"2":{"222":1}}],["21157",{"2":{"222":1}}],["21154",{"2":{"222":1}}],["21151",{"2":{"222":1}}],["21139",{"2":{"222":1}}],["21135",{"2":{"222":1}}],["21134",{"2":{"222":1}}],["21113",{"2":{"222":1}}],["21110",{"2":{"222":1}}],["21116",{"2":{"222":1}}],["21115",{"2":{"222":1}}],["21109",{"2":{"222":1}}],["21108",{"2":{"222":1}}],["21107",{"2":{"222":1}}],["210",{"2":{"2770":2,"2771":2,"2772":1}}],["21060",{"2":{"236":1}}],["21079",{"2":{"222":1}}],["21072",{"2":{"222":1}}],["21096",{"2":{"249":1}}],["21095",{"2":{"222":1}}],["21094",{"2":{"222":1}}],["21092",{"2":{"222":1}}],["21054",{"2":{"222":1}}],["21056",{"2":{"222":1}}],["21046",{"2":{"222":1}}],["21044",{"2":{"211":1}}],["21015",{"2":{"222":1}}],["21013",{"2":{"211":1}}],["21086",{"2":{"222":1}}],["21033",{"2":{"211":1}}],["21032",{"2":{"211":1}}],["21005",{"2":{"211":1}}],["21007",{"2":{"211":1}}],["21002",{"2":{"211":1}}],["21029",{"2":{"211":1}}],["21",{"2":{"145":1,"176":2,"191":1,"211":1,"249":1,"315":2,"351":1,"1133":1,"1442":1,"1616":1,"1673":3,"1872":3,"1937":3,"2404":3,"2419":3}}],["27312",{"2":{"2464":1}}],["275ms",{"2":{"2209":1}}],["275",{"2":{"2209":1}}],["270",{"2":{"1859":1,"1860":1,"1904":2,"1941":2,"1952":2,"1953":2,"2616":1}}],["27749e1",{"2":{"73":1}}],["27",{"0":{"66":1,"115":1,"161":1,"212":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1},"2":{"88":1,"104":1,"127":1,"170":1,"340":2,"351":4,"1442":1,"1616":1,"1673":3,"1872":3,"1937":1,"2404":3,"2419":3}}],["282",{"2":{"1937":2}}],["285",{"2":{"1671":2,"2627":2}}],["28672",{"2":{"1324":2,"2464":1,"2508":1}}],["280",{"2":{"1251":1}}],["28e9",{"2":{"629":1}}],["28",{"0":{"52":1,"96":1,"135":1,"200":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1},"2":{"55":1,"88":1,"104":1,"127":1,"351":4,"1442":1,"1616":1,"1673":3,"1872":3,"1937":2,"2404":3,"2419":3}}],["2",{"0":{"344":1,"346":1,"538":1,"1326":1,"1847":1,"1891":1,"1899":1,"2205":1,"2315":1,"2354":1,"2372":1,"2471":1,"2497":1,"2731":1},"1":{"1892":1,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1898":1,"1899":1,"1900":1,"1901":1,"1902":1,"1903":1,"1904":1,"1905":1,"1906":1,"2373":1,"2498":1,"2499":1,"2500":1,"2501":1,"2502":1,"2503":1,"2504":1,"2505":1,"2506":1},"2":{"37":2,"45":3,"49":1,"69":1,"114":7,"120":2,"133":2,"134":3,"175":1,"176":4,"188":1,"191":5,"201":3,"211":7,"222":2,"236":4,"249":2,"266":12,"272":2,"279":1,"292":1,"299":4,"313":3,"317":1,"345":1,"346":1,"350":5,"375":1,"448":1,"459":1,"473":1,"487":2,"491":1,"505":2,"511":1,"522":1,"530":2,"532":1,"534":6,"540":1,"570":1,"624":1,"629":1,"633":1,"635":21,"636":1,"639":2,"641":2,"656":1,"674":1,"675":1,"679":1,"680":1,"681":2,"685":2,"688":2,"689":1,"757":2,"786":2,"788":1,"789":4,"818":2,"822":1,"850":4,"853":2,"854":2,"885":2,"887":2,"888":2,"919":2,"921":2,"922":2,"953":2,"956":2,"987":2,"990":2,"1021":4,"1024":4,"1055":4,"1058":4,"1089":2,"1092":4,"1127":1,"1130":1,"1134":1,"1136":1,"1145":2,"1182":2,"1218":2,"1264":1,"1267":3,"1271":2,"1289":2,"1316":1,"1332":1,"1356":1,"1372":1,"1391":1,"1417":1,"1420":1,"1421":1,"1435":1,"1442":1,"1453":1,"1485":1,"1488":1,"1506":1,"1528":1,"1533":1,"1534":1,"1568":2,"1585":1,"1587":1,"1591":5,"1594":1,"1595":1,"1596":1,"1597":1,"1600":1,"1609":1,"1613":1,"1614":2,"1615":6,"1616":1,"1629":1,"1632":2,"1673":3,"1724":3,"1756":2,"1760":2,"1763":1,"1767":1,"1826":1,"1831":32,"1839":4,"1843":4,"1845":1,"1847":1,"1857":1,"1859":3,"1860":1,"1872":3,"1891":2,"1899":3,"1901":3,"1917":3,"1918":1,"1937":2,"1943":1,"1950":1,"1955":1,"1978":5,"1984":1,"1990":1,"1996":1,"1997":1,"2074":6,"2076":2,"2080":4,"2081":1,"2082":1,"2089":2,"2097":1,"2098":1,"2133":1,"2143":2,"2158":2,"2166":1,"2171":2,"2186":2,"2190":1,"2191":3,"2193":19,"2205":5,"2207":1,"2208":2,"2209":1,"2212":1,"2273":1,"2280":1,"2300":1,"2308":3,"2328":2,"2334":1,"2338":6,"2339":6,"2344":1,"2372":2,"2391":1,"2394":9,"2402":4,"2404":3,"2410":32,"2411":4,"2419":3,"2425":2,"2430":2,"2433":2,"2440":2,"2441":4,"2443":1,"2446":1,"2469":1,"2475":1,"2511":1,"2530":1,"2552":1,"2569":2,"2598":16,"2605":1,"2609":2,"2614":2,"2624":1,"2631":1,"2635":2,"2654":16,"2679":1,"2684":1,"2721":1,"2725":1,"2727":3,"2728":1,"2731":6,"2733":1,"2734":3,"2736":1,"2767":2,"2773":7,"2774":9,"2775":5,"2777":3}}],["290",{"2":{"2627":2}}],["295",{"2":{"2130":1}}],["294",{"2":{"2130":1}}],["29k",{"2":{"953":1,"955":2,"987":1,"989":2,"1089":1,"1091":2}}],["29",{"0":{"9":1,"39":1,"78":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1},"2":{"88":1,"104":1,"127":1,"351":3,"955":1,"989":1,"1091":1,"1442":1,"1616":1,"1673":3,"1872":3,"1937":2,"2404":3,"2419":3,"2440":1,"2441":4}}],["20x4",{"2":{"1627":1}}],["20kbps",{"2":{"511":1,"2166":1}}],["209",{"2":{"251":1}}],["20996",{"2":{"222":1}}],["20992",{"2":{"222":1}}],["20998",{"2":{"211":1}}],["20981",{"2":{"211":1}}],["20949",{"2":{"211":1}}],["20962",{"2":{"211":1}}],["20960",{"2":{"211":1}}],["20969",{"2":{"211":1}}],["20953",{"2":{"236":1}}],["20958",{"2":{"211":1}}],["20957",{"2":{"211":1}}],["20956",{"2":{"211":1}}],["20931",{"2":{"211":1}}],["20932",{"2":{"211":1}}],["20930",{"2":{"211":1}}],["20924",{"2":{"211":1}}],["20923",{"2":{"211":1}}],["20929",{"2":{"211":1}}],["20928",{"2":{"211":1}}],["20927",{"2":{"211":1}}],["20926",{"2":{"211":1}}],["20921",{"2":{"211":1}}],["20920",{"2":{"211":1}}],["20915",{"2":{"211":1}}],["20919",{"2":{"211":1}}],["20918",{"2":{"211":1}}],["20917",{"2":{"211":1}}],["20913",{"2":{"211":1}}],["20912",{"2":{"211":1}}],["20908",{"2":{"211":1}}],["20907",{"2":{"211":1}}],["20906",{"2":{"211":1}}],["20901",{"2":{"211":1}}],["20900",{"2":{"211":1}}],["20799",{"2":{"211":1}}],["20791",{"2":{"211":1}}],["20790",{"2":{"211":1}}],["20789",{"2":{"211":1}}],["20788",{"2":{"211":1}}],["20787",{"2":{"211":1}}],["20786",{"2":{"211":1}}],["20785",{"2":{"211":1}}],["20784",{"2":{"211":1}}],["20783",{"2":{"211":1}}],["20782",{"2":{"211":1}}],["20781",{"2":{"211":1}}],["20779",{"2":{"211":1}}],["20778",{"2":{"211":1}}],["20777",{"2":{"211":1}}],["20776",{"2":{"211":1}}],["20775",{"2":{"211":1}}],["20774",{"2":{"211":1}}],["20773",{"2":{"211":1}}],["20770",{"2":{"211":1}}],["20761",{"2":{"222":1}}],["20765",{"2":{"211":1}}],["20764",{"2":{"211":1}}],["20763",{"2":{"211":1}}],["20756",{"2":{"211":1}}],["20755",{"2":{"211":1}}],["20754",{"2":{"211":1}}],["20753",{"2":{"211":1}}],["20752",{"2":{"211":1}}],["20751",{"2":{"211":1}}],["20750",{"2":{"211":1}}],["20749",{"2":{"211":1}}],["20748",{"2":{"211":1}}],["20747",{"2":{"211":1}}],["20746",{"2":{"211":1}}],["20745",{"2":{"211":1}}],["20744",{"2":{"211":1}}],["20743",{"2":{"211":1}}],["20742",{"2":{"211":1}}],["20741",{"2":{"211":1}}],["20740",{"2":{"211":1}}],["20732",{"2":{"236":1}}],["20733",{"2":{"211":1}}],["20739",{"2":{"211":1}}],["20738",{"2":{"211":1}}],["20737",{"2":{"211":1}}],["20736",{"2":{"211":1}}],["20735",{"2":{"211":1}}],["20731",{"2":{"211":1}}],["20734",{"2":{"211":1}}],["20723",{"2":{"211":1}}],["20728",{"2":{"211":1}}],["20727",{"2":{"211":1}}],["20726",{"2":{"211":1}}],["20725",{"2":{"211":1}}],["20724",{"2":{"211":1}}],["20722",{"2":{"211":1}}],["20720",{"2":{"211":1}}],["20719",{"2":{"211":1}}],["20718",{"2":{"211":1}}],["20717",{"2":{"211":1}}],["20716",{"2":{"211":1}}],["20715",{"2":{"211":1}}],["20714",{"2":{"211":1}}],["20713",{"2":{"211":1}}],["20712",{"2":{"211":1}}],["20711",{"2":{"211":1}}],["20710",{"2":{"211":1}}],["20708",{"2":{"211":1}}],["20706",{"2":{"211":1}}],["20703",{"2":{"211":1}}],["20899",{"2":{"211":1}}],["20895",{"2":{"211":1}}],["20893",{"2":{"211":1}}],["20892",{"2":{"211":1}}],["20891",{"2":{"211":1}}],["20897",{"2":{"211":1}}],["20889",{"2":{"211":1}}],["20888",{"2":{"211":1}}],["20887",{"2":{"211":1}}],["20886",{"2":{"211":1}}],["20885",{"2":{"211":1}}],["20884",{"2":{"211":1}}],["20882",{"2":{"211":1}}],["20881",{"2":{"211":1}}],["20880",{"2":{"211":1}}],["20879",{"2":{"211":1}}],["20878",{"2":{"211":1}}],["20877",{"2":{"211":1}}],["20876",{"2":{"211":1}}],["20875",{"2":{"211":1}}],["20874",{"2":{"211":1}}],["20873",{"2":{"211":1}}],["20872",{"2":{"211":1}}],["20871",{"2":{"211":1}}],["20870",{"2":{"211":1}}],["20863",{"2":{"236":1}}],["20869",{"2":{"211":1}}],["20867",{"2":{"211":1}}],["20866",{"2":{"211":1}}],["20865",{"2":{"211":1}}],["20864",{"2":{"211":1}}],["20861",{"2":{"211":1}}],["20860",{"2":{"211":1}}],["20857",{"2":{"236":1}}],["20859",{"2":{"211":1}}],["20858",{"2":{"211":1}}],["20855",{"2":{"211":1}}],["20854",{"2":{"211":1}}],["20853",{"2":{"211":1}}],["20851",{"2":{"211":1}}],["20850",{"2":{"211":1}}],["20849",{"2":{"211":1}}],["20848",{"2":{"211":1}}],["20847",{"2":{"211":1}}],["20845",{"2":{"211":1}}],["20844",{"2":{"211":1}}],["20843",{"2":{"211":1}}],["20842",{"2":{"211":1}}],["20835",{"2":{"211":1}}],["20834",{"2":{"211":1}}],["20833",{"2":{"211":1}}],["20832",{"2":{"211":1}}],["20831",{"2":{"211":1}}],["20830",{"2":{"211":1}}],["20836",{"2":{"211":1}}],["20829",{"2":{"211":1}}],["20827",{"2":{"211":1}}],["20825",{"2":{"211":1}}],["20824",{"2":{"211":1}}],["20822",{"2":{"211":1}}],["20821",{"2":{"211":1}}],["20820",{"2":{"211":1}}],["20819",{"2":{"211":1}}],["20818",{"2":{"211":1}}],["20816",{"2":{"211":1}}],["20814",{"2":{"211":1}}],["20813",{"2":{"211":1}}],["20812",{"2":{"211":1}}],["20810",{"2":{"211":1}}],["20806",{"2":{"211":1}}],["20808",{"2":{"211":1}}],["20805",{"2":{"211":1}}],["20804",{"2":{"211":1}}],["20809",{"2":{"211":1}}],["20807",{"2":{"211":1}}],["20802",{"2":{"211":1}}],["20801",{"2":{"211":1}}],["20800",{"2":{"211":1}}],["20699",{"2":{"211":1}}],["20698",{"2":{"211":1}}],["20697",{"2":{"211":1}}],["20696",{"2":{"211":1}}],["20695",{"2":{"211":1}}],["20694",{"2":{"211":1}}],["20693",{"2":{"211":1}}],["20692",{"2":{"211":1}}],["20691",{"2":{"211":1}}],["20689",{"2":{"211":1}}],["20688",{"2":{"211":1}}],["20685",{"2":{"211":1}}],["20684",{"2":{"211":1}}],["20682",{"2":{"211":1}}],["20681",{"2":{"211":1}}],["20680",{"2":{"211":1}}],["2067",{"2":{"629":1}}],["20670",{"2":{"211":1}}],["20679",{"2":{"211":1}}],["20678",{"2":{"211":1}}],["20677",{"2":{"211":1}}],["20676",{"2":{"211":1}}],["20675",{"2":{"211":1}}],["20672",{"2":{"211":1}}],["20671",{"2":{"211":1}}],["20669",{"2":{"211":2}}],["20667",{"2":{"211":1}}],["20666",{"2":{"211":1}}],["20665",{"2":{"211":1}}],["20663",{"2":{"211":1}}],["20662",{"2":{"211":1}}],["20661",{"2":{"211":1}}],["20660",{"2":{"211":1}}],["20653",{"2":{"211":1}}],["20659",{"2":{"211":1}}],["20658",{"2":{"211":1}}],["20657",{"2":{"211":1}}],["20651",{"2":{"211":1}}],["20645",{"2":{"249":1}}],["20646",{"2":{"222":1}}],["20648",{"2":{"211":1}}],["20640",{"2":{"211":1}}],["20642",{"2":{"211":1}}],["20633",{"2":{"211":1}}],["20634",{"2":{"211":1}}],["20639",{"2":{"211":1}}],["20636",{"2":{"211":1}}],["20635",{"2":{"211":1}}],["20638",{"2":{"211":1}}],["20629",{"2":{"211":1}}],["20628",{"2":{"211":1}}],["20622",{"2":{"211":1}}],["20621",{"2":{"211":1}}],["20620",{"2":{"211":1}}],["20623",{"2":{"211":1}}],["20619",{"2":{"211":1}}],["20614",{"2":{"211":1}}],["20613",{"2":{"211":1}}],["20612",{"2":{"211":1}}],["20611",{"2":{"211":1}}],["20610",{"2":{"211":1}}],["20604",{"2":{"211":1}}],["20600",{"2":{"211":1}}],["205",{"2":{"1615":1,"2770":1,"2771":1,"2772":1}}],["20534",{"2":{"222":1}}],["20524",{"2":{"211":1}}],["20599",{"2":{"211":1}}],["20598",{"2":{"211":1}}],["20597",{"2":{"211":1}}],["20596",{"2":{"211":1}}],["20595",{"2":{"211":1}}],["20594",{"2":{"211":1}}],["20593",{"2":{"211":1}}],["20592",{"2":{"211":1}}],["20588",{"2":{"211":1}}],["20586",{"2":{"211":1}}],["20585",{"2":{"211":1}}],["20583",{"2":{"211":1}}],["20580",{"2":{"211":1}}],["20584",{"2":{"211":1}}],["20577",{"2":{"211":1}}],["20571",{"2":{"211":1}}],["20570",{"2":{"211":1}}],["20572",{"2":{"211":1}}],["20569",{"2":{"211":1}}],["20568",{"2":{"211":1}}],["20567",{"2":{"211":1}}],["20566",{"2":{"211":1}}],["20565",{"2":{"211":1}}],["20564",{"2":{"211":1}}],["20563",{"2":{"211":1}}],["20562",{"2":{"211":1}}],["20561",{"2":{"211":1}}],["20560",{"2":{"211":1}}],["20558",{"2":{"211":1}}],["20555",{"2":{"211":1}}],["20554",{"2":{"211":1}}],["20553",{"2":{"211":1}}],["20552",{"2":{"211":1}}],["20549",{"2":{"211":1}}],["20548",{"2":{"211":1}}],["20547",{"2":{"211":1}}],["20546",{"2":{"211":1}}],["20541",{"2":{"211":1}}],["20517",{"2":{"222":1}}],["20515",{"2":{"211":1}}],["20519",{"2":{"211":1}}],["20518",{"2":{"211":1}}],["20516",{"2":{"211":1}}],["20508",{"2":{"211":1}}],["20504",{"2":{"211":1}}],["20500",{"2":{"211":1}}],["20405",{"2":{"266":1}}],["20402",{"2":{"222":1}}],["20456",{"2":{"211":1}}],["20454",{"2":{"211":1}}],["20410",{"2":{"236":1}}],["20411",{"2":{"211":1}}],["20417",{"2":{"211":1}}],["20412",{"2":{"211":1}}],["20499",{"2":{"211":1}}],["20498",{"2":{"211":1}}],["20496",{"2":{"211":1}}],["20495",{"2":{"211":1}}],["20494",{"2":{"211":1}}],["20491",{"2":{"211":1}}],["20490",{"2":{"211":1}}],["20480",{"2":{"2392":1}}],["2048",{"2":{"679":1,"682":3}}],["20481",{"2":{"222":1}}],["20489",{"2":{"211":1}}],["20488",{"2":{"211":1}}],["20487",{"2":{"211":1}}],["20475",{"2":{"211":1}}],["20473",{"2":{"211":1}}],["20478",{"2":{"211":1}}],["20477",{"2":{"211":1}}],["20474",{"2":{"211":1}}],["20470",{"2":{"211":1}}],["20468",{"2":{"211":1}}],["20463",{"2":{"211":1}}],["20443",{"2":{"211":1}}],["20442",{"2":{"211":1}}],["20440",{"2":{"211":1}}],["20433",{"2":{"211":1}}],["20432",{"2":{"211":1}}],["20439",{"2":{"211":1}}],["20438",{"2":{"211":1}}],["20436",{"2":{"211":1}}],["20430",{"2":{"211":1}}],["20427",{"2":{"236":1}}],["20422",{"2":{"211":1}}],["20423",{"2":{"211":1}}],["20395",{"2":{"222":1}}],["20397",{"2":{"211":1}}],["20398",{"2":{"211":1}}],["20389",{"2":{"222":1}}],["20383",{"2":{"211":1}}],["20381",{"2":{"211":1}}],["20367",{"2":{"211":1}}],["20365",{"2":{"211":1}}],["20356",{"2":{"211":1}}],["20350",{"2":{"211":1}}],["20348",{"2":{"211":1}}],["20349",{"2":{"211":1}}],["20341",{"2":{"211":1}}],["20340",{"2":{"211":1}}],["20347",{"2":{"211":1}}],["20339",{"2":{"211":1}}],["20337",{"2":{"211":1}}],["20334",{"2":{"211":2}}],["20331",{"2":{"211":1}}],["20325",{"2":{"211":1}}],["20326",{"2":{"211":1}}],["20321",{"2":{"211":1}}],["20328",{"2":{"211":1}}],["20320",{"2":{"211":1}}],["20315",{"2":{"236":1}}],["20311",{"2":{"211":1}}],["20317",{"2":{"211":1}}],["20316",{"2":{"211":1}}],["20310",{"2":{"211":1}}],["20314",{"2":{"211":1}}],["20313",{"2":{"211":1}}],["20312",{"2":{"211":1}}],["20308",{"2":{"211":1}}],["20303",{"2":{"211":1}}],["20300",{"2":{"211":1}}],["201",{"2":{"2770":1}}],["20101",{"2":{"266":1}}],["20188",{"2":{"211":1}}],["20183",{"2":{"211":1}}],["20148",{"2":{"211":1}}],["20168",{"2":{"211":1}}],["20167",{"2":{"211":1}}],["20113",{"2":{"211":1}}],["20110",{"2":{"211":1}}],["2017",{"2":{"315":2,"2316":1,"2348":3}}],["20177",{"2":{"211":1}}],["20172",{"2":{"211":1}}],["2015",{"2":{"1302":1,"2348":1}}],["20157",{"2":{"211":1}}],["20156",{"2":{"211":1}}],["20155",{"2":{"211":1}}],["20159",{"2":{"211":1}}],["20154",{"2":{"211":1}}],["20150",{"2":{"211":1}}],["20191",{"2":{"211":1}}],["20194",{"2":{"211":1}}],["20192",{"2":{"211":1}}],["2019",{"0":{"0":1,"1280":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"2":{"55":2,"134":1,"351":1}}],["200u",{"2":{"2578":1}}],["20043e64",{"2":{"2303":1}}],["2004a",{"2":{"1627":1}}],["200ms",{"2":{"1865":1,"2207":1,"2766":1,"2769":1,"2774":1,"2775":1}}],["200",{"2":{"502":1,"505":4,"1721":1,"1867":1,"1936":1,"1945":2,"1969":1,"1992":2,"2076":1,"2082":1,"2182":1,"2338":1,"2608":2,"2713":2,"2766":1,"2770":1,"2771":2,"2772":1}}],["20059",{"2":{"236":1}}],["20056",{"2":{"211":1}}],["20097",{"2":{"211":1}}],["20092",{"2":{"211":1}}],["20083",{"2":{"211":1}}],["20084",{"2":{"211":1}}],["20078",{"2":{"211":1}}],["20075",{"2":{"211":1}}],["20079",{"2":{"211":1}}],["20020",{"2":{"211":1}}],["20019",{"2":{"211":1}}],["20013",{"2":{"211":1}}],["20061",{"2":{"211":1}}],["20034",{"2":{"211":1}}],["20033",{"2":{"211":1}}],["20030",{"2":{"211":1}}],["2003",{"2":{"116":1}}],["2000000",{"2":{"1936":1,"1950":1}}],["20000",{"2":{"211":1,"1136":1}}],["20003",{"2":{"211":1}}],["20001",{"2":{"211":1}}],["20006",{"2":{"211":1}}],["20004",{"2":{"211":1}}],["2000th",{"2":{"116":1}}],["2000",{"0":{"116":1},"2":{"511":1,"1940":1,"1950":1,"1962":1,"2169":1,"2350":1,"2736":1}}],["20273",{"2":{"277":1}}],["20274",{"2":{"211":1}}],["20255",{"2":{"222":1}}],["20253",{"2":{"211":1}}],["20292",{"2":{"211":1}}],["20297",{"2":{"211":1}}],["20293",{"2":{"211":1}}],["20290",{"2":{"211":1}}],["20289",{"2":{"211":1}}],["2024",{"0":{"237":1,"250":1,"267":1},"1":{"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"249":1,"251":1,"265":1,"268":1,"338":3,"339":1,"340":8,"351":3,"2609":2}}],["20241124",{"2":{"341":1}}],["20241",{"2":{"211":1}}],["20248",{"2":{"211":1}}],["20243",{"2":{"211":1}}],["20262",{"2":{"211":1}}],["20230",{"2":{"222":1}}],["20234",{"2":{"211":1}}],["20238",{"2":{"211":1}}],["20237",{"2":{"211":1}}],["20236",{"2":{"211":1}}],["20235",{"2":{"211":1}}],["2023",{"0":{"192":1,"200":1,"212":1,"223":1},"1":{"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1},"2":{"254":1,"351":4}}],["20220",{"2":{"236":1}}],["2022",{"0":{"135":1,"146":1,"161":1,"177":1},"1":{"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1},"2":{"170":2,"317":2,"351":4,"2392":17}}],["20218",{"2":{"211":1}}],["20211",{"2":{"211":1}}],["2021",{"0":{"66":1,"78":1,"96":1,"115":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1},"2":{"88":3,"104":3,"114":2,"127":3,"351":4}}],["20204",{"2":{"211":1}}],["20203",{"2":{"211":1}}],["2020",{"0":{"9":1,"19":1,"39":1,"52":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1},"2":{"55":2,"351":4,"1253":2}}],["20",{"2":{"49":1,"69":1,"111":1,"134":1,"351":1,"359":5,"507":1,"635":1,"1137":2,"1267":1,"1442":1,"1616":5,"1673":3,"1841":1,"1843":1,"1859":1,"1872":3,"1937":3,"1943":1,"1948":1,"2078":3,"2308":2,"2392":1,"2404":3,"2419":3,"2616":1,"2626":3,"2727":1,"2734":1,"2776":1}}],["k42",{"2":{"2653":4,"2655":1,"2785":2}}],["k40",{"2":{"2653":4,"2655":1,"2785":2}}],["k22",{"2":{"2653":4,"2655":1,"2785":2}}],["k21",{"2":{"2653":4,"2655":1,"2785":2}}],["k20",{"2":{"2653":4,"2655":1,"2785":2}}],["k13",{"2":{"2653":4,"2655":1,"2785":2}}],["k12",{"2":{"2653":4,"2655":1,"2785":2}}],["k11",{"2":{"2653":4,"2655":1,"2785":2}}],["k10",{"2":{"2653":4,"2655":1,"2785":2}}],["k03",{"2":{"2653":4,"2655":1,"2785":2}}],["k02",{"2":{"2653":4,"2655":1,"2785":2}}],["k01",{"2":{"2653":4,"2655":1,"2785":2}}],["k00",{"2":{"2653":4,"2655":1,"2785":2}}],["kp",{"2":{"2394":19,"2433":19}}],["kprepublic",{"2":{"102":12,"114":1,"122":10,"134":2,"154":4,"199":1,"226":2,"236":1,"253":4,"266":2}}],["kxy",{"2":{"2318":1}}],["kvms",{"2":{"1867":1}}],["kvm",{"0":{"1866":1},"2":{"1866":1}}],["kω",{"2":{"789":14,"854":14,"888":14,"922":14,"956":14,"990":14,"1024":14,"1058":14,"1092":14}}],["khz",{"2":{"788":6,"853":5,"887":5,"921":5,"955":3,"989":3,"1091":5}}],["kl",{"2":{"1289":7,"2191":3}}],["kle",{"2":{"405":3,"2466":1,"2605":1,"2654":4,"2656":1,"2659":1,"2725":1}}],["kle2json",{"0":{"405":1},"2":{"405":3}}],["klein",{"2":{"249":1}}],["kl90",{"2":{"222":1,"249":1}}],["kumaokobo",{"2":{"241":10,"249":2}}],["kudox",{"2":{"241":16}}],["k83",{"2":{"217":1}}],["kj",{"2":{"211":1}}],["k552",{"2":{"199":2}}],["koyu",{"2":{"211":1}}],["kopibeng",{"2":{"211":5}}],["koalafications",{"2":{"211":1}}],["koolertron",{"2":{"211":1}}],["ko",{"0":{"1697":1,"1698":1,"1699":1,"1700":1,"1709":1},"2":{"188":1,"191":1,"1697":1,"1700":1,"1701":1,"1703":9,"1704":2,"1706":1,"1707":3,"1708":2,"1709":8,"1712":1}}],["korean",{"2":{"176":1,"2742":2}}],["krush60",{"2":{"249":1}}],["kr",{"2":{"176":4}}],["kkatano",{"2":{"154":6,"160":2,"211":1}}],["kapton",{"2":{"2309":1}}],["kapcave",{"2":{"122":2,"134":1}}],["katakana",{"2":{"1317":1,"2430":2}}],["katana60",{"2":{"381":1,"2332":1}}],["karabiner",{"0":{"1318":1},"2":{"1317":1,"1318":4}}],["karn",{"2":{"249":1}}],["karlk90",{"2":{"163":1}}],["kana",{"2":{"222":1,"1752":1,"1753":2,"1755":1,"2724":2}}],["kangaroo",{"2":{"211":1}}],["kastenwagen",{"2":{"211":2}}],["kamigakushi",{"2":{"207":2,"211":1,"217":2}}],["ka2hiro",{"2":{"160":1}}],["kagamidget",{"2":{"154":2}}],["kagizaraya",{"2":{"154":3,"160":1,"241":1,"249":1}}],["kakunpc",{"2":{"154":11,"160":2}}],["knife",{"2":{"2171":2,"2305":1}}],["knife66",{"2":{"211":3}}],["knight",{"2":{"145":1,"2072":2,"2074":2,"2075":2,"2076":6,"2078":2,"2101":1,"2415":2,"2750":1}}],["knops",{"2":{"114":1}}],["knowledge",{"2":{"567":1,"682":1,"1301":1,"2167":1,"2362":1,"2761":1,"2762":2,"2764":1}}],["know",{"0":{"1295":1},"2":{"228":1,"245":1,"331":1,"335":1,"356":1,"401":1,"437":1,"446":1,"698":2,"1289":1,"1290":1,"1298":1,"1316":1,"1378":2,"1381":1,"1571":1,"1615":1,"1709":1,"1716":1,"1925":1,"2161":1,"2172":1,"2294":1,"2456":1,"2493":1,"2507":2,"2513":1,"2519":1,"2527":1,"2761":1,"2785":1,"2787":1,"2791":1}}],["knows",{"2":{"49":1,"160":1,"690":1}}],["known",{"0":{"629":1,"1528":1,"1609":1},"1":{"1529":1},"2":{"37":1,"488":1,"554":1,"626":1,"629":1,"1126":1,"1180":1,"1253":1,"1491":1,"1535":1,"1566":1,"1870":1,"2156":1,"2288":1,"2513":1,"2552":1,"2605":1,"2615":2,"2693":1}}],["knobs",{"2":{"249":1}}],["knob",{"2":{"13":1}}],["kmac",{"2":{"241":4}}],["km",{"2":{"132":1,"176":1,"370":3,"371":1,"374":2,"378":2,"380":2,"381":1,"386":1,"388":1,"389":1,"390":1,"391":1,"393":3,"394":3,"401":1,"1349":1,"1477":1,"2164":3,"2267":1,"2316":1,"2395":1,"2464":1,"2484":1,"2485":1,"2493":1,"2508":2,"2551":1,"2592":1,"2611":1}}],["kyria",{"2":{"102":2,"114":3,"134":1,"222":2,"277":1}}],["k33",{"2":{"2653":4,"2655":1,"2785":2}}],["k32",{"2":{"2653":4,"2655":1,"2785":2}}],["k320",{"2":{"86":1,"102":2,"181":2,"191":1}}],["k31",{"2":{"2653":4,"2655":1,"2785":2}}],["k310",{"2":{"114":1,"181":2,"191":1}}],["k30",{"2":{"2653":4,"2655":1,"2785":2}}],["k34",{"2":{"222":1}}],["k3x0",{"2":{"102":1,"181":2}}],["ktec",{"2":{"102":3}}],["kzar",{"2":{"92":1,"93":1}}],["kib",{"2":{"2303":1,"2374":1,"2392":3}}],["kit",{"2":{"624":1}}],["kira80",{"2":{"241":2}}],["kira",{"2":{"241":2,"249":1}}],["kira75",{"2":{"241":2}}],["kikoslab",{"2":{"222":1,"249":1}}],["kiko",{"2":{"211":1}}],["kicad",{"2":{"211":1}}],["kinds",{"2":{"1488":1,"2102":1,"2366":1}}],["kind",{"0":{"533":1,"1716":1},"1":{"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1722":1,"1723":1,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1},"2":{"1488":1,"1489":1,"2207":1}}],["king",{"2":{"176":1}}],["kintwin",{"2":{"222":1}}],["kint41",{"2":{"114":1,"2541":1}}],["kint",{"2":{"114":1,"134":1}}],["kint2pp",{"2":{"94":1}}],["kint36",{"2":{"93":1,"94":1,"114":1,"199":1,"2541":1}}],["kinetis",{"0":{"491":1},"2":{"114":1,"145":2,"191":1,"2281":1,"2563":1,"2585":1,"2661":1}}],["kinetic",{"0":{"1842":1},"2":{"74":1,"145":2,"175":2,"176":1,"222":2,"1840":1,"1842":3,"1845":1,"1846":1,"1952":1}}],["kinesis",{"2":{"93":2,"114":1,"211":1,"217":2,"222":3,"2541":2}}],["kiibohd",{"0":{"2281":1},"2":{"50":1,"629":2,"2281":1}}],["k",{"2":{"49":2,"65":1,"114":1,"154":2,"191":1,"236":1,"249":2,"266":8,"277":1,"313":1,"530":2,"1398":2,"1548":1,"1565":2,"1568":1,"1910":1,"1913":4,"2072":1,"2186":1,"2191":1,"2207":1,"2394":3,"2415":1,"2425":3,"2446":1,"2653":1,"2744":1}}],["kb2",{"2":{"559":2}}],["kb2040",{"0":{"1354":1},"2":{"163":1,"176":2,"1348":1,"1352":4,"1355":1,"1358":1,"2580":1,"2751":1}}],["kb1",{"2":{"559":1}}],["kb16",{"2":{"176":1,"191":1,"249":1}}],["kb38",{"2":{"222":1,"266":1}}],["kb83",{"2":{"217":1,"222":1}}],["kbo5000",{"2":{"199":1}}],["kbfirmware",{"0":{"391":1},"2":{"173":4,"391":2,"541":1,"2316":2,"2466":1,"2605":2}}],["kbd",{"2":{"1568":1}}],["kbdmania",{"2":{"241":2,"249":1}}],["kbd66",{"2":{"211":1}}],["kbd67mkiirgb",{"2":{"217":1}}],["kbd67",{"2":{"114":1,"217":1,"249":1}}],["kbdfans",{"2":{"154":1,"160":1,"191":1,"211":6,"217":2,"241":2,"249":1}}],["kb",{"0":{"593":1,"1814":1,"1818":1,"2059":1,"2063":1,"2232":1,"2780":1},"1":{"1815":1,"2060":1,"2233":1},"2":{"34":1,"70":1,"90":3,"105":4,"111":1,"125":2,"132":1,"185":2,"190":1,"191":3,"197":13,"199":3,"203":2,"211":1,"229":1,"230":1,"231":3,"266":1,"277":6,"370":6,"371":1,"378":4,"380":2,"381":2,"383":1,"384":1,"385":1,"386":1,"388":2,"389":1,"390":1,"391":1,"393":3,"394":3,"401":1,"511":1,"534":3,"566":4,"568":4,"571":1,"573":1,"577":1,"579":1,"583":1,"586":1,"587":1,"591":2,"593":1,"594":1,"595":1,"1310":1,"1349":1,"1368":3,"1370":3,"1378":2,"1382":1,"1420":2,"1441":1,"1477":1,"1587":2,"1598":1,"1754":2,"1755":1,"1767":2,"1771":2,"1860":2,"1864":2,"1950":2,"1954":2,"1955":1,"1971":1,"1972":1,"1990":2,"1995":2,"2164":3,"2168":1,"2200":1,"2267":1,"2316":1,"2332":2,"2340":4,"2345":1,"2394":4,"2395":1,"2431":4,"2461":1,"2464":1,"2484":1,"2485":1,"2493":1,"2508":2,"2530":4,"2551":1,"2592":1,"2605":2,"2606":1,"2611":1,"2615":1,"2616":4,"2617":1,"2620":1,"2788":4}}],["kc5",{"0":{"1749":1},"1":{"1750":1,"1751":1},"2":{"1750":1}}],["kc4",{"0":{"1746":1,"1749":1},"1":{"1747":1,"1748":1,"1750":1,"1751":1},"2":{"1747":1,"1750":1}}],["kc3",{"0":{"1743":1,"1746":1,"1749":1},"1":{"1744":1,"1745":1,"1747":1,"1748":1,"1750":1,"1751":1},"2":{"1744":1,"1747":1,"1750":1}}],["kc2",{"0":{"1740":1,"1743":1,"1746":1,"1749":1},"1":{"1741":1,"1742":1,"1744":1,"1745":1,"1747":1,"1748":1,"1750":1,"1751":1},"2":{"1741":1,"1744":1,"1747":1,"1750":1,"2199":3}}],["kc1",{"0":{"1740":1,"1743":1,"1746":1,"1749":1},"1":{"1741":1,"1742":1,"1744":1,"1745":1,"1747":1,"1748":1,"1750":1,"1751":1},"2":{"1741":1,"1744":1,"1747":1,"1750":1,"2199":3}}],["kc60",{"2":{"236":1,"2078":1}}],["kc",{"0":{"8":2,"89":1,"1403":1,"1404":1,"1405":1,"1406":1,"1407":4,"1737":1},"1":{"1738":1,"1739":1},"2":{"7":2,"8":3,"38":6,"89":1,"90":8,"94":1,"176":2,"188":3,"191":5,"194":5,"195":2,"196":9,"199":5,"202":3,"209":6,"231":16,"255":1,"313":211,"502":3,"505":3,"530":338,"572":1,"573":1,"1289":7,"1306":2,"1309":3,"1310":5,"1312":1,"1313":6,"1320":1,"1336":57,"1337":5,"1339":9,"1340":14,"1369":1,"1372":4,"1373":4,"1377":2,"1381":2,"1394":2,"1396":1,"1397":10,"1398":4,"1403":6,"1404":1,"1405":4,"1406":1,"1407":1,"1412":8,"1422":4,"1440":3,"1441":1,"1453":1,"1454":1,"1455":1,"1460":3,"1466":1,"1467":8,"1482":2,"1483":3,"1485":1,"1488":2,"1533":6,"1536":13,"1537":3,"1540":2,"1543":10,"1545":6,"1546":3,"1547":7,"1548":19,"1555":3,"1560":5,"1561":9,"1565":19,"1568":1,"1593":2,"1597":4,"1598":6,"1602":3,"1603":1,"1620":1,"1625":2,"1672":6,"1692":1,"1701":2,"1703":6,"1704":4,"1706":8,"1708":3,"1715":15,"1718":9,"1721":3,"1723":3,"1724":3,"1738":1,"1910":40,"1911":11,"1912":11,"1913":3,"1915":1,"1916":3,"1919":1,"1920":1,"1921":10,"1972":3,"1996":1,"2113":6,"2150":34,"2151":9,"2194":2,"2199":6,"2202":2,"2205":2,"2206":2,"2207":12,"2208":7,"2209":2,"2217":3,"2255":4,"2266":8,"2318":1,"2357":1,"2394":329,"2406":3,"2412":55,"2413":63,"2417":41,"2422":2,"2424":2,"2425":36,"2426":24,"2427":34,"2428":13,"2429":23,"2430":36,"2431":64,"2432":63,"2433":37,"2434":3,"2436":1,"2438":41,"2442":7,"2444":10,"2446":72,"2447":22,"2449":64,"2450":2,"2452":7,"2453":7,"2454":4,"2529":2,"2610":3,"2644":1,"2653":8,"2655":1,"2740":1,"2766":2,"2767":2,"2769":3,"2770":9,"2771":14,"2772":9,"2773":19,"2774":16,"2775":9,"2776":6,"2777":19,"2785":5,"2786":17,"2787":1}}],["kent",{"2":{"2789":1}}],["kerpleplork",{"2":{"556":4}}],["kernel",{"0":{"2355":1},"2":{"199":1,"1277":1,"2394":1,"2595":1}}],["kept",{"2":{"529":1,"609":1,"689":1,"1611":1,"1965":1,"2485":1,"2585":1}}],["keaboard",{"2":{"253":2}}],["kezewa",{"2":{"241":2,"249":1}}],["kestra",{"2":{"211":1}}],["kegen",{"2":{"191":1,"211":1}}],["kelowna",{"2":{"154":2}}],["keeb",{"2":{"2614":6}}],["keebzdotnet",{"2":{"211":1}}],["keebs",{"2":{"160":8,"176":1}}],["keebio",{"0":{"45":1},"2":{"45":1,"114":3,"134":1,"191":1,"199":2,"222":1,"277":1,"1349":1,"2169":1}}],["keeps",{"2":{"1339":1,"1340":2}}],["keeping",{"2":{"481":1,"679":1,"1306":1,"1841":1,"2190":1,"2347":1,"2758":1,"2776":1}}],["keep",{"2":{"6":1,"74":2,"113":1,"124":1,"194":1,"211":2,"364":1,"453":2,"457":1,"468":1,"479":1,"502":1,"551":1,"556":1,"560":2,"587":1,"615":1,"616":2,"689":1,"1126":1,"1331":1,"1339":1,"1368":1,"1375":1,"1388":1,"1401":1,"1508":1,"1534":1,"1596":1,"1620":1,"1693":1,"1845":1,"1956":1,"2150":1,"2185":1,"2199":1,"2274":1,"2301":1,"2311":2,"2312":2,"2313":1,"2315":1,"2318":1,"2342":1,"2344":1,"2345":1,"2347":1,"2350":1,"2459":1,"2463":1,"2482":1,"2483":1,"2525":2,"2526":1,"2536":2,"2540":1,"2549":1,"2603":1,"2607":3,"2613":1,"2615":1,"2617":1,"2713":1,"2796":1}}],["keylog",{"2":{"2744":2}}],["keylight",{"2":{"1764":1,"1985":1,"1996":1}}],["key3",{"2":{"2350":6}}],["key2",{"2":{"2350":10}}],["key0",{"2":{"2350":6}}],["key1",{"2":{"2191":1,"2350":6}}],["keyreleases",{"2":{"1768":2,"1992":2}}],["keyrepeating",{"2":{"1449":1,"1462":1,"1467":1}}],["keyrepeat",{"2":{"1448":1,"1449":1,"1461":1}}],["keyrecords",{"2":{"1970":1}}],["keyrecord",{"2":{"22":3,"160":1,"194":2,"195":2,"534":2,"572":1,"573":2,"588":1,"1289":1,"1339":1,"1340":1,"1369":1,"1381":1,"1396":2,"1397":2,"1412":1,"1421":1,"1422":2,"1453":1,"1460":2,"1467":3,"1482":1,"1483":1,"1556":2,"1594":1,"1619":1,"1672":1,"1830":1,"1868":1,"1913":1,"1915":1,"1916":1,"1917":1,"1918":1,"1919":1,"1921":2,"1959":1,"1960":1,"1971":2,"1972":1,"1979":1,"1981":1,"2082":2,"2116":1,"2190":2,"2206":1,"2209":1,"2340":1,"2452":1,"2453":1,"2454":1,"2643":1,"2766":1,"2767":2,"2774":1,"2775":1,"2776":1,"2777":1,"2788":42}}],["keyup",{"2":{"1336":1,"1402":1,"1404":1,"1597":2,"2113":2,"2713":2,"2727":2,"2734":2}}],["keydown",{"2":{"1336":1,"1372":1,"1402":1,"1403":1,"1597":2,"1992":1,"2113":2,"2713":2,"2727":1,"2734":1}}],["keyed",{"2":{"610":1}}],["keyevent",{"2":{"211":1,"573":1,"1975":2,"2788":1}}],["key>",{"2":{"416":1,"438":2,"439":2}}],["key=value",{"2":{"374":1}}],["keypos",{"2":{"573":1,"1996":1,"2193":2}}],["keypads",{"2":{"266":1}}],["keypad",{"2":{"181":2,"222":1,"1310":1,"1316":1,"1672":1,"2394":20,"2424":1,"2428":1,"2432":1,"2433":19}}],["keypresses",{"0":{"1280":1},"2":{"1372":1,"1397":1,"1591":1,"1768":1,"1992":1,"2108":1,"2167":1,"2558":1,"2687":1}}],["keypress",{"0":{"1289":1,"1290":1},"2":{"98":1,"1289":1,"1336":1,"1377":1,"1443":1,"1592":1,"1594":1,"1610":1,"1992":1,"2190":1,"2418":2,"2688":1,"2726":1}}],["keyhive",{"2":{"144":10,"145":3}}],["keycap",{"2":{"2740":1}}],["keycaps",{"2":{"2183":1,"2664":1}}],["keycapsss",{"2":{"249":1}}],["keychron",{"2":{"134":1,"176":1,"191":4,"211":2,"226":14,"236":5,"249":3,"266":2}}],["keycode",{"0":{"16":2,"38":1,"142":1,"231":1,"547":1,"570":1,"571":1,"1381":1,"1732":1,"1958":1,"2117":1,"2191":1,"2241":1,"2254":1,"2679":1,"2786":1},"1":{"572":1,"573":1,"1733":1,"1734":1,"2242":1,"2243":1,"2255":1,"2256":1},"2":{"3":1,"7":1,"15":1,"16":1,"22":4,"38":1,"112":1,"133":1,"134":3,"141":3,"142":1,"145":2,"167":1,"182":4,"188":9,"191":15,"194":9,"195":5,"198":2,"199":7,"222":5,"231":25,"235":1,"236":1,"249":1,"255":2,"259":1,"266":2,"277":2,"504":2,"505":3,"534":14,"540":6,"547":2,"569":2,"570":2,"572":3,"573":3,"588":1,"624":1,"626":1,"1282":1,"1289":2,"1304":1,"1307":1,"1315":2,"1320":3,"1336":1,"1339":4,"1340":4,"1369":4,"1372":1,"1373":4,"1381":7,"1396":14,"1397":5,"1401":1,"1405":1,"1407":1,"1412":3,"1421":2,"1422":7,"1441":6,"1453":2,"1460":5,"1467":13,"1468":2,"1471":1,"1476":1,"1479":1,"1480":1,"1482":2,"1483":15,"1488":3,"1489":3,"1536":2,"1537":2,"1543":3,"1546":1,"1548":2,"1549":1,"1555":2,"1556":2,"1560":3,"1561":3,"1565":1,"1568":1,"1593":2,"1597":1,"1619":1,"1620":2,"1672":2,"1690":1,"1691":1,"1707":1,"1708":6,"1715":5,"1717":1,"1723":2,"1732":1,"1733":2,"1734":1,"1737":1,"1738":1,"1741":2,"1744":3,"1747":4,"1750":5,"1829":1,"1830":2,"1831":1,"1832":1,"1835":1,"1868":2,"1908":2,"1909":1,"1910":1,"1911":11,"1912":3,"1913":5,"1915":2,"1916":2,"1917":2,"1918":3,"1919":7,"1920":6,"1921":11,"1959":2,"1960":2,"1965":1,"1971":2,"1972":3,"1979":3,"1981":2,"1986":1,"1996":1,"2072":1,"2082":4,"2083":1,"2101":1,"2110":1,"2113":5,"2116":3,"2148":1,"2150":3,"2151":3,"2190":3,"2199":7,"2202":1,"2206":3,"2208":5,"2209":2,"2211":1,"2220":3,"2241":1,"2242":2,"2254":1,"2255":2,"2256":1,"2266":39,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":1,"2301":1,"2340":1,"2355":2,"2356":2,"2357":1,"2420":1,"2435":1,"2436":1,"2437":1,"2440":2,"2442":3,"2445":3,"2449":2,"2450":4,"2452":5,"2453":5,"2454":2,"2604":1,"2606":1,"2611":1,"2643":2,"2644":1,"2647":1,"2648":1,"2649":1,"2713":1,"2725":1,"2740":3,"2748":3,"2766":2,"2767":5,"2774":2,"2775":2,"2776":3,"2777":8,"2785":1,"2786":1,"2788":41}}],["keycodes",{"0":{"3":1,"7":1,"15":1,"182":1,"188":1,"219":1,"254":1,"534":1,"569":1,"1304":1,"1305":1,"1306":1,"1445":1,"1480":1,"1493":1,"1531":1,"1546":1,"1549":1,"1604":1,"1610":1,"1673":1,"1691":1,"1707":1,"1725":1,"1765":1,"1831":1,"1872":1,"1909":1,"1986":1,"2072":1,"2107":1,"2113":1,"2144":1,"2148":1,"2194":1,"2211":1,"2222":1,"2344":1,"2393":1,"2394":1,"2395":1,"2409":1,"2424":1,"2435":1,"2438":1,"2610":1,"2611":1,"2740":1},"1":{"570":1,"571":1,"572":1,"573":1,"1605":1,"1611":1,"1612":1,"1613":1,"1614":1,"1615":1,"1616":1,"1617":1,"1618":1,"2114":1,"2394":1,"2395":1,"2396":1,"2397":1,"2398":1,"2399":1,"2400":1,"2401":1,"2402":1,"2403":1,"2404":1,"2405":1,"2406":1,"2407":1,"2408":1,"2409":1,"2410":1,"2411":1,"2412":1,"2413":1,"2414":1,"2415":1,"2416":1,"2417":1,"2418":1,"2419":1,"2420":1,"2421":1,"2422":1,"2423":1,"2425":1,"2426":1,"2427":1,"2428":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2611":1,"2741":1,"2742":1},"2":{"3":1,"7":1,"15":1,"16":2,"38":1,"49":1,"74":1,"93":1,"94":1,"114":1,"119":1,"120":5,"142":2,"145":2,"160":2,"176":1,"182":4,"186":1,"188":25,"191":29,"194":1,"198":1,"199":8,"211":1,"219":1,"222":1,"231":3,"254":4,"255":1,"257":1,"258":1,"259":2,"266":7,"277":5,"313":1,"317":4,"318":1,"505":2,"529":1,"534":4,"557":2,"570":4,"571":1,"572":1,"621":4,"1273":1,"1302":3,"1304":3,"1305":1,"1306":1,"1308":1,"1310":1,"1313":2,"1316":2,"1337":1,"1369":2,"1373":2,"1381":3,"1391":5,"1394":10,"1396":5,"1398":2,"1407":1,"1412":2,"1416":1,"1422":4,"1435":2,"1439":1,"1440":3,"1441":3,"1443":1,"1482":4,"1483":3,"1488":1,"1535":3,"1537":1,"1543":2,"1545":1,"1546":2,"1548":1,"1549":1,"1555":1,"1562":1,"1564":1,"1566":1,"1610":1,"1611":1,"1692":1,"1693":1,"1740":1,"1743":1,"1746":1,"1749":1,"1761":1,"1825":2,"1829":2,"1830":1,"1835":1,"1839":1,"1859":2,"1868":2,"1870":2,"1910":4,"1911":1,"1913":1,"1921":1,"1959":1,"1960":1,"1979":1,"1982":1,"1986":6,"1989":1,"1992":2,"1996":1,"2070":1,"2072":4,"2073":2,"2110":1,"2113":3,"2187":3,"2188":1,"2191":2,"2199":2,"2206":1,"2208":6,"2210":1,"2216":1,"2219":2,"2220":1,"2221":2,"2241":1,"2266":1,"2301":1,"2344":1,"2357":1,"2358":2,"2363":1,"2393":1,"2394":2,"2395":1,"2409":1,"2424":2,"2432":4,"2434":1,"2435":2,"2436":2,"2437":1,"2442":2,"2446":1,"2448":1,"2450":3,"2463":2,"2529":1,"2604":1,"2605":3,"2606":1,"2610":6,"2642":1,"2653":1,"2679":2,"2682":1,"2702":1,"2726":1,"2740":1,"2741":1,"2742":2,"2744":1,"2748":3,"2762":2,"2763":1,"2779":1,"2785":2,"2786":1,"2788":1}}],["keyword",{"2":{"103":1,"120":1,"126":1,"457":1,"1391":1}}],["key",{"0":{"15":1,"42":1,"99":1,"196":2,"202":1,"272":1,"421":1,"507":1,"611":1,"1309":1,"1315":1,"1319":1,"1328":1,"1346":1,"1446":1,"1460":1,"1463":1,"1464":1,"1465":1,"1466":1,"1554":1,"1555":1,"1560":1,"1561":1,"1590":1,"1619":1,"1689":1,"1693":1,"1694":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1708":1,"1713":1,"1716":1,"1721":1,"1723":1,"1737":1,"1846":1,"1907":1,"1908":1,"1915":1,"1918":1,"1919":1,"1971":1,"1975":1,"2197":1,"2353":1,"2405":1,"2407":1,"2420":1,"2650":1,"2680":1,"2681":1,"2684":1,"2692":1,"2726":1,"2775":1,"2779":2},"1":{"1447":1,"1448":1,"1449":1,"1450":1,"1451":1,"1452":1,"1453":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1465":1,"1466":1,"1467":1,"1468":1,"1469":1,"1470":1,"1471":1,"1472":1,"1473":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1690":1,"1691":1,"1692":1,"1694":1,"1695":1,"1696":1,"1697":2,"1698":2,"1699":2,"1700":2,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"1714":1,"1715":1,"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1722":1,"1723":1,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":2,"1739":2,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"1908":1,"1909":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1,"1918":1,"1919":1,"1920":1,"1921":1,"1972":1,"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"22":1,"38":3,"43":1,"50":1,"63":1,"73":2,"93":2,"99":6,"110":1,"112":14,"114":7,"119":1,"134":2,"137":1,"160":5,"175":1,"176":4,"188":2,"191":7,"194":12,"195":3,"196":3,"199":7,"201":1,"202":9,"203":5,"206":2,"211":8,"218":1,"222":5,"231":1,"236":1,"249":1,"255":2,"257":1,"258":1,"259":2,"266":3,"268":1,"272":8,"277":1,"316":3,"374":11,"378":1,"413":2,"417":3,"418":1,"425":1,"426":1,"437":3,"502":1,"504":1,"505":34,"510":1,"515":9,"529":4,"530":1,"540":4,"571":8,"572":2,"573":1,"588":4,"609":1,"610":1,"612":1,"614":1,"623":2,"624":3,"626":2,"689":1,"1169":1,"1172":5,"1272":1,"1289":3,"1307":1,"1309":4,"1312":1,"1315":2,"1317":3,"1320":1,"1323":1,"1329":1,"1336":2,"1340":5,"1346":1,"1362":1,"1363":18,"1366":14,"1369":1,"1371":1,"1372":5,"1373":1,"1377":2,"1383":1,"1390":1,"1392":1,"1394":8,"1396":4,"1397":2,"1398":3,"1404":1,"1405":2,"1412":1,"1422":1,"1435":2,"1436":1,"1439":1,"1440":1,"1442":1,"1443":2,"1445":1,"1446":3,"1447":1,"1448":10,"1449":4,"1450":1,"1451":1,"1453":2,"1459":1,"1460":6,"1467":7,"1468":6,"1472":4,"1473":1,"1475":2,"1479":1,"1482":1,"1493":1,"1530":1,"1531":1,"1532":5,"1533":6,"1536":5,"1537":2,"1538":3,"1540":1,"1541":1,"1543":5,"1545":1,"1547":2,"1548":3,"1552":3,"1554":1,"1555":6,"1557":2,"1558":1,"1559":1,"1560":9,"1561":8,"1562":2,"1567":2,"1568":35,"1585":1,"1591":1,"1592":1,"1593":1,"1594":1,"1597":1,"1601":2,"1602":3,"1604":1,"1606":1,"1610":1,"1619":1,"1620":3,"1673":1,"1689":4,"1690":3,"1691":2,"1692":4,"1693":7,"1695":7,"1696":2,"1697":3,"1700":1,"1701":6,"1703":16,"1704":5,"1706":7,"1707":6,"1708":9,"1709":5,"1710":3,"1711":9,"1712":6,"1713":12,"1714":8,"1715":3,"1716":2,"1718":2,"1720":1,"1721":7,"1722":6,"1723":2,"1724":1,"1725":1,"1735":1,"1763":6,"1764":2,"1765":1,"1766":8,"1839":2,"1840":2,"1841":3,"1842":1,"1843":4,"1845":5,"1846":2,"1862":1,"1870":2,"1872":1,"1907":9,"1908":5,"1909":4,"1910":8,"1911":9,"1912":2,"1913":1,"1914":3,"1915":6,"1916":2,"1917":2,"1918":9,"1919":8,"1920":5,"1921":1,"1958":1,"1959":1,"1960":2,"1965":7,"1966":7,"1969":1,"1972":1,"1974":5,"1975":5,"1979":5,"1984":6,"1985":2,"1986":1,"1987":13,"1988":3,"1989":1,"1992":1,"1996":1,"1997":1,"2072":1,"2107":1,"2116":1,"2117":1,"2144":1,"2147":4,"2150":15,"2151":7,"2155":1,"2163":5,"2164":1,"2167":2,"2183":1,"2185":1,"2188":2,"2190":4,"2191":5,"2192":1,"2194":3,"2198":1,"2199":13,"2200":8,"2206":1,"2207":16,"2208":3,"2209":12,"2210":1,"2217":6,"2220":2,"2222":1,"2234":3,"2235":1,"2236":1,"2269":1,"2275":2,"2276":1,"2301":8,"2313":1,"2318":1,"2340":1,"2344":2,"2350":5,"2352":2,"2353":5,"2354":2,"2355":1,"2358":2,"2393":2,"2394":7,"2395":1,"2396":1,"2397":1,"2398":1,"2399":1,"2400":1,"2401":1,"2402":1,"2403":1,"2404":1,"2405":4,"2406":2,"2407":2,"2408":1,"2409":4,"2410":1,"2411":1,"2412":1,"2413":1,"2414":1,"2415":1,"2416":1,"2417":1,"2418":1,"2419":1,"2420":5,"2421":1,"2422":2,"2423":1,"2425":1,"2426":1,"2427":1,"2428":1,"2429":3,"2430":1,"2431":2,"2432":1,"2433":1,"2434":3,"2435":4,"2438":1,"2440":2,"2441":1,"2446":5,"2447":1,"2449":7,"2450":1,"2452":1,"2453":2,"2454":1,"2475":1,"2489":1,"2494":1,"2526":1,"2529":14,"2530":4,"2557":1,"2563":1,"2605":2,"2611":1,"2647":1,"2650":1,"2651":3,"2653":2,"2654":8,"2655":4,"2656":2,"2658":2,"2679":1,"2680":2,"2681":1,"2682":1,"2683":1,"2684":3,"2688":1,"2690":3,"2692":1,"2693":5,"2698":2,"2699":1,"2701":3,"2702":1,"2710":1,"2713":6,"2718":2,"2721":1,"2725":23,"2726":3,"2727":1,"2728":1,"2729":1,"2730":2,"2732":2,"2734":1,"2740":1,"2745":1,"2750":1,"2763":1,"2766":3,"2767":6,"2768":13,"2769":4,"2770":4,"2771":6,"2772":4,"2773":3,"2774":27,"2775":18,"2776":4,"2777":7,"2778":1,"2779":3,"2784":2,"2785":1,"2787":2,"2788":2}}],["keyswitch",{"2":{"1586":1,"1590":1,"1597":1,"2312":2,"2313":3,"2315":1,"2318":5,"2350":5,"2728":1}}],["keyswitches",{"2":{"510":1,"1491":1,"2305":1}}],["keystroke",{"2":{"1397":2}}],["keystrokes",{"2":{"1390":1,"1475":1,"1988":1,"2110":1,"2114":1,"2207":1,"2217":1,"2263":1,"2623":1}}],["keys",{"0":{"112":1,"291":1,"422":1,"1308":1,"1310":1,"1316":1,"1317":1,"1328":1,"1336":1,"1344":1,"1543":1,"1706":1,"1740":1,"1743":1,"1746":1,"1749":1,"1836":1,"1837":1,"1838":1,"1840":1,"1911":1,"1914":1,"1921":1,"1966":1,"1970":1,"1971":1,"1972":1,"1979":1,"2208":1,"2209":1,"2351":1,"2396":1,"2411":1,"2413":1,"2414":1,"2418":1,"2426":1,"2428":1,"2432":1,"2434":1,"2529":1,"2655":1,"2658":1,"2659":1,"2729":1,"2772":1},"1":{"1711":1,"1712":1,"1713":1,"1741":1,"1742":1,"1744":1,"1745":1,"1747":1,"1748":1,"1750":1,"1751":1,"1837":1,"1838":2,"1839":2,"1840":1,"1841":2,"1842":2,"1843":2,"1844":2,"1845":2,"1846":2,"1847":1,"1912":1,"1913":1,"1915":1,"1916":1,"1917":1,"1971":1,"1972":2,"2352":1,"2353":1,"2354":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2530":1},"2":{"7":2,"70":1,"74":1,"98":2,"112":2,"114":2,"119":2,"134":2,"145":1,"154":4,"160":1,"176":5,"182":2,"190":2,"191":6,"194":2,"196":3,"199":1,"201":1,"202":3,"211":6,"236":1,"255":1,"259":1,"263":1,"277":1,"374":1,"413":1,"418":1,"502":1,"505":4,"515":2,"525":1,"540":2,"546":1,"548":1,"610":1,"611":1,"614":1,"1308":2,"1310":1,"1312":2,"1315":1,"1317":2,"1321":2,"1323":1,"1337":2,"1340":1,"1344":1,"1363":1,"1366":1,"1371":1,"1372":1,"1375":1,"1384":1,"1392":1,"1394":3,"1397":2,"1398":1,"1408":1,"1410":1,"1423":1,"1440":1,"1442":1,"1449":3,"1453":6,"1454":1,"1456":1,"1457":1,"1460":2,"1463":1,"1464":1,"1465":1,"1466":1,"1467":4,"1468":1,"1469":1,"1470":1,"1471":1,"1472":2,"1482":1,"1483":3,"1491":1,"1534":1,"1536":2,"1537":2,"1540":6,"1541":1,"1543":2,"1545":5,"1547":1,"1551":1,"1552":3,"1554":1,"1555":10,"1562":1,"1565":1,"1568":1,"1591":1,"1593":1,"1620":7,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1692":3,"1693":4,"1706":1,"1711":1,"1712":2,"1714":4,"1715":1,"1716":1,"1718":3,"1721":1,"1722":2,"1724":1,"1766":1,"1836":1,"1837":3,"1838":1,"1840":6,"1843":1,"1844":1,"1846":1,"1847":2,"1870":1,"1910":2,"1911":1,"1913":2,"1914":3,"1915":1,"1916":1,"1917":3,"1918":1,"1921":4,"1925":1,"1933":1,"1937":1,"1965":3,"1966":1,"1970":4,"1971":2,"1972":2,"1975":2,"1987":4,"1988":4,"1996":3,"2104":1,"2146":1,"2149":1,"2150":10,"2151":2,"2160":1,"2183":2,"2185":4,"2186":2,"2188":3,"2190":10,"2191":4,"2198":1,"2199":2,"2207":1,"2209":4,"2210":1,"2220":2,"2301":1,"2305":1,"2316":1,"2318":1,"2344":2,"2350":5,"2359":1,"2393":1,"2406":1,"2409":3,"2411":1,"2412":1,"2418":4,"2435":3,"2439":1,"2441":3,"2442":1,"2444":1,"2445":1,"2446":1,"2447":2,"2453":1,"2456":1,"2462":1,"2463":1,"2489":3,"2494":1,"2529":12,"2530":1,"2598":2,"2610":1,"2642":1,"2649":1,"2650":1,"2653":2,"2654":1,"2655":2,"2656":2,"2658":1,"2659":3,"2663":1,"2667":1,"2684":1,"2700":1,"2710":1,"2719":1,"2725":1,"2729":2,"2730":1,"2741":1,"2744":1,"2745":1,"2765":1,"2766":1,"2767":7,"2768":3,"2774":4,"2775":2,"2777":1,"2779":1,"2784":1,"2785":2}}],["keymapping",{"2":{"1318":1}}],["keymap=",{"2":{"2460":1}}],["keymap=skully",{"2":{"424":1}}],["keymap=none",{"2":{"423":1,"424":1}}],["keymap=default",{"2":{"370":1,"414":1,"415":1,"417":1,"424":1}}],["keymap>",{"2":{"393":1,"394":1,"2267":1,"2291":1,"2464":1,"2484":1,"2485":1,"2493":1}}],["keymap",{"0":{"5":1,"272":1,"386":1,"390":1,"500":1,"539":1,"540":1,"541":1,"568":1,"623":1,"1303":1,"1307":1,"1383":1,"1385":1,"1418":1,"2298":1,"2302":1,"2439":1,"2440":1,"2441":1,"2443":1,"2461":1,"2462":1,"2475":1,"2479":1,"2484":1,"2485":1,"2509":1,"2604":1,"2682":1},"1":{"1304":1,"1305":1,"1306":1,"1307":1,"1308":1,"1309":1,"1310":1,"1311":1,"1312":1,"1313":1,"1314":1,"1315":1,"1316":1,"1317":1,"1318":1,"1319":1,"1320":1,"1321":1,"1384":1,"1385":1,"1386":2,"1387":1,"1388":1,"1389":1,"2440":1,"2441":2,"2442":2,"2443":1,"2444":2,"2445":2,"2446":2,"2447":2},"2":{"4":1,"5":4,"18":4,"31":1,"32":1,"34":1,"36":1,"45":1,"48":1,"55":1,"75":2,"86":1,"89":1,"90":1,"92":4,"93":3,"94":1,"114":19,"119":2,"120":3,"123":1,"125":7,"133":1,"134":7,"139":1,"145":4,"160":5,"173":1,"176":19,"185":7,"189":1,"191":10,"199":14,"202":2,"206":1,"211":14,"213":1,"218":1,"222":6,"228":1,"229":1,"236":7,"241":1,"249":7,"253":1,"255":2,"256":1,"266":7,"270":1,"272":2,"273":1,"277":6,"304":1,"313":2,"314":1,"315":2,"316":2,"318":1,"331":1,"352":1,"370":16,"371":3,"374":7,"377":1,"378":4,"379":1,"380":5,"381":4,"386":6,"388":6,"390":5,"393":7,"394":7,"395":3,"401":2,"404":1,"414":4,"415":1,"417":1,"422":1,"423":1,"424":2,"425":2,"426":4,"441":2,"458":3,"496":1,"497":1,"500":1,"502":1,"522":3,"526":1,"527":2,"528":1,"529":8,"530":8,"533":2,"534":2,"537":1,"538":1,"539":1,"541":4,"548":1,"556":2,"559":1,"568":3,"570":2,"573":2,"577":1,"579":1,"583":1,"586":1,"587":1,"588":3,"591":1,"595":1,"601":1,"614":2,"623":1,"1275":1,"1282":2,"1289":1,"1303":1,"1306":1,"1307":4,"1312":1,"1313":1,"1316":1,"1349":1,"1369":4,"1370":1,"1371":1,"1373":1,"1375":1,"1381":1,"1382":2,"1383":4,"1384":1,"1385":1,"1389":1,"1391":3,"1392":3,"1396":2,"1399":2,"1412":1,"1413":3,"1414":2,"1415":1,"1416":2,"1420":9,"1421":1,"1422":11,"1434":1,"1435":1,"1437":1,"1441":1,"1442":1,"1450":1,"1452":1,"1453":1,"1471":1,"1477":2,"1482":1,"1537":1,"1544":1,"1545":1,"1546":1,"1549":1,"1565":4,"1568":1,"1586":4,"1587":2,"1591":1,"1592":1,"1597":4,"1598":2,"1602":1,"1631":1,"1671":1,"1690":1,"1695":1,"1703":1,"1717":1,"1754":1,"1767":2,"1771":1,"1816":1,"1821":1,"1829":1,"1838":1,"1839":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1851":2,"1864":1,"1868":1,"1906":2,"1908":1,"1911":1,"1914":1,"1925":1,"1966":1,"1967":1,"1971":1,"1977":1,"1978":1,"1979":1,"1990":2,"1995":1,"1996":1,"2061":1,"2066":1,"2070":1,"2080":1,"2082":1,"2116":1,"2147":2,"2164":1,"2168":1,"2175":2,"2183":1,"2188":2,"2192":2,"2195":1,"2199":2,"2202":3,"2207":5,"2208":1,"2209":2,"2210":1,"2216":1,"2219":4,"2220":5,"2221":1,"2281":1,"2283":2,"2285":2,"2287":2,"2291":5,"2297":2,"2298":6,"2299":2,"2300":6,"2301":5,"2302":1,"2303":4,"2313":1,"2318":1,"2332":1,"2338":3,"2339":2,"2341":2,"2363":1,"2388":1,"2393":1,"2395":1,"2435":1,"2440":3,"2441":4,"2443":3,"2444":2,"2448":2,"2449":1,"2450":1,"2456":1,"2460":2,"2461":6,"2462":4,"2464":2,"2467":2,"2472":1,"2474":7,"2475":4,"2476":2,"2477":6,"2478":1,"2479":3,"2480":4,"2484":7,"2485":4,"2491":2,"2493":2,"2508":1,"2509":1,"2541":1,"2551":2,"2604":2,"2605":10,"2606":5,"2610":2,"2611":1,"2616":2,"2653":2,"2655":2,"2725":2,"2740":2,"2741":2,"2742":70,"2748":2,"2750":2,"2762":1,"2766":1,"2767":2,"2774":1,"2775":1,"2776":1,"2777":1,"2785":2,"2786":1,"2787":1,"2788":1,"2795":1}}],["keymaps",{"0":{"17":1,"36":1,"120":1,"265":1,"275":1,"383":1,"528":1,"1389":1,"1391":1,"1395":1,"1399":1,"1413":1,"2445":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"1392":1,"1393":1,"1394":1,"1396":1,"1397":1,"1398":1,"1399":1,"1400":1,"1401":1,"1402":1,"1403":1,"1404":1,"1405":1,"1406":1,"1407":1,"1408":1,"1409":1,"1410":1,"1411":1,"1412":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"2446":1,"2447":1},"2":{"0":1,"2":1,"3":1,"4":2,"5":1,"7":1,"8":1,"9":1,"15":1,"17":2,"19":1,"32":1,"36":3,"39":1,"52":1,"60":1,"65":1,"73":1,"74":1,"75":2,"107":1,"114":3,"125":1,"134":1,"139":1,"141":2,"145":2,"160":2,"167":1,"173":2,"176":3,"182":2,"185":1,"191":8,"199":4,"201":1,"211":2,"213":4,"220":1,"222":1,"224":2,"228":5,"231":1,"232":1,"236":2,"238":1,"249":7,"265":5,"266":5,"268":2,"275":3,"277":1,"312":1,"318":1,"337":1,"352":1,"354":2,"363":1,"370":3,"371":1,"378":2,"380":1,"383":2,"388":1,"390":1,"401":1,"498":2,"519":2,"529":5,"530":2,"556":1,"559":1,"560":2,"622":1,"623":1,"641":1,"1289":1,"1290":1,"1302":3,"1303":1,"1307":1,"1383":1,"1396":3,"1415":1,"1418":1,"1422":2,"1430":2,"1830":1,"1922":1,"2183":1,"2184":1,"2202":1,"2209":1,"2291":2,"2297":2,"2299":1,"2300":3,"2303":1,"2338":2,"2339":2,"2341":2,"2344":1,"2439":1,"2440":1,"2445":4,"2456":1,"2461":1,"2462":1,"2463":1,"2479":1,"2480":7,"2482":2,"2484":2,"2485":1,"2486":1,"2487":1,"2495":1,"2604":6,"2605":5,"2606":4,"2762":1,"2763":2,"2764":1,"2786":1}}],["keyboardproject",{"2":{"2592":1}}],["keyboard=true",{"2":{"1282":1}}],["keyboard=clueboard",{"2":{"414":1,"415":1,"424":1,"2460":1}}],["keyboardname",{"2":{"659":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1185":1,"2297":2}}],["keyboard>",{"2":{"393":1,"394":1,"564":1,"1385":1,"1386":2,"1972":1,"2267":1,"2291":1,"2464":1,"2484":1,"2485":1,"2493":1,"2508":1}}],["keyboard|keymap|kbfirmware",{"0":{"173":1},"2":{"176":1}}],["keyboardio",{"2":{"37":2,"176":1}}],["keyboard",{"0":{"29":1,"37":1,"44":1,"55":1,"59":1,"86":1,"102":1,"122":1,"144":1,"154":1,"168":1,"181":1,"197":1,"207":1,"217":1,"226":1,"241":1,"253":1,"262":1,"270":1,"291":1,"320":1,"385":1,"389":1,"498":1,"508":1,"521":1,"537":1,"538":1,"543":1,"567":1,"574":1,"575":1,"576":1,"577":1,"581":1,"582":1,"583":1,"587":1,"589":1,"591":1,"592":1,"595":1,"624":1,"1280":1,"1300":1,"1323":1,"1387":1,"1392":1,"1408":1,"1410":1,"1755":1,"1757":1,"1837":1,"1925":1,"1926":1,"1953":1,"1955":1,"2152":1,"2183":1,"2297":1,"2322":1,"2331":1,"2333":1,"2335":1,"2340":1,"2341":1,"2343":1,"2345":1,"2350":1,"2360":1,"2488":1,"2489":1,"2490":1,"2492":1,"2493":1,"2541":1,"2582":1,"2592":1,"2605":1,"2640":1,"2647":1,"2652":1,"2736":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"45":1,"60":1,"509":1,"510":1,"511":1,"568":1,"575":1,"576":2,"577":2,"578":1,"579":1,"580":1,"581":1,"582":2,"583":2,"588":1,"590":1,"591":1,"593":1,"594":1,"595":1,"1301":1,"1388":1,"1389":1,"1838":1,"1839":1,"2153":1,"2154":1,"2155":1,"2156":1,"2157":1,"2158":1,"2159":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1,"2172":1,"2332":1,"2333":1,"2334":1,"2335":1,"2336":2,"2337":2,"2338":2,"2339":2,"2340":2,"2341":2,"2342":1,"2343":1,"2344":2,"2345":1,"2346":1,"2347":1,"2348":1,"2349":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2489":1,"2490":1,"2491":2,"2492":2,"2493":1,"2494":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2600":1,"2601":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1},"2":{"4":2,"14":2,"31":2,"34":3,"36":1,"50":6,"55":1,"56":1,"62":1,"67":3,"70":5,"74":1,"75":2,"76":2,"82":2,"86":6,"90":3,"92":1,"93":2,"94":3,"99":1,"102":2,"105":4,"107":1,"110":2,"111":2,"112":1,"114":7,"116":2,"119":1,"120":1,"122":2,"124":1,"125":5,"133":4,"134":10,"144":2,"145":3,"149":1,"154":4,"160":14,"168":2,"169":1,"173":2,"176":8,"181":2,"184":1,"185":5,"191":10,"197":2,"199":6,"201":3,"204":1,"207":2,"209":3,"211":10,"217":3,"218":1,"221":2,"222":11,"226":2,"229":3,"233":2,"234":1,"236":11,"238":1,"240":1,"241":4,"249":12,"253":4,"255":1,"262":3,"263":2,"265":1,"266":67,"270":4,"277":7,"291":1,"304":1,"306":1,"311":1,"313":4,"318":2,"320":2,"322":1,"334":2,"336":1,"337":1,"370":10,"371":3,"374":2,"375":2,"378":7,"380":1,"381":4,"383":3,"384":2,"385":3,"386":4,"388":1,"389":4,"391":4,"393":6,"394":6,"395":3,"401":3,"404":1,"414":4,"415":2,"421":1,"422":1,"425":2,"426":6,"437":2,"496":3,"497":1,"498":2,"502":8,"504":2,"506":2,"508":2,"511":1,"513":3,"515":7,"516":4,"519":3,"521":3,"528":1,"529":5,"530":2,"533":2,"534":6,"535":3,"537":4,"540":1,"556":2,"559":5,"563":1,"564":1,"565":1,"566":3,"567":2,"568":3,"573":1,"574":4,"576":3,"577":3,"579":1,"580":6,"581":1,"582":1,"583":3,"584":2,"586":1,"587":1,"588":1,"589":1,"590":2,"591":1,"592":3,"595":1,"601":1,"606":1,"609":3,"614":2,"623":1,"624":6,"625":2,"626":5,"627":6,"629":2,"658":1,"671":2,"678":1,"679":1,"680":1,"681":1,"689":1,"693":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1121":1,"1124":1,"1127":1,"1130":2,"1133":1,"1147":1,"1174":1,"1184":1,"1263":1,"1267":1,"1272":1,"1273":1,"1275":1,"1279":1,"1280":3,"1282":2,"1283":1,"1284":1,"1285":1,"1291":1,"1294":1,"1301":1,"1305":1,"1308":1,"1310":1,"1311":1,"1312":1,"1315":3,"1316":1,"1317":4,"1318":2,"1320":2,"1321":1,"1323":2,"1324":5,"1327":1,"1331":1,"1335":2,"1337":2,"1339":1,"1340":1,"1349":1,"1351":2,"1358":1,"1363":1,"1366":1,"1368":1,"1369":3,"1370":1,"1371":1,"1372":1,"1374":1,"1375":1,"1377":1,"1378":4,"1382":1,"1383":1,"1384":4,"1385":1,"1386":1,"1388":7,"1389":1,"1390":1,"1391":1,"1392":1,"1394":1,"1396":1,"1401":2,"1413":1,"1414":1,"1422":6,"1423":1,"1430":1,"1435":2,"1436":1,"1440":1,"1441":2,"1442":5,"1443":1,"1447":1,"1472":1,"1473":1,"1477":1,"1491":1,"1494":1,"1500":2,"1501":1,"1506":2,"1507":1,"1531":1,"1532":1,"1533":1,"1535":1,"1536":2,"1566":1,"1568":4,"1587":1,"1591":4,"1596":2,"1598":3,"1601":1,"1603":1,"1605":1,"1611":2,"1617":1,"1631":1,"1632":1,"1693":3,"1711":3,"1712":3,"1713":1,"1714":2,"1715":1,"1752":3,"1753":1,"1754":4,"1755":1,"1756":1,"1757":2,"1758":1,"1759":1,"1763":9,"1764":1,"1766":1,"1767":3,"1768":2,"1771":1,"1814":1,"1817":1,"1818":1,"1823":1,"1830":1,"1836":1,"1837":1,"1850":1,"1851":3,"1854":5,"1863":1,"1864":1,"1866":3,"1867":2,"1868":1,"1891":2,"1893":1,"1894":1,"1895":1,"1896":1,"1913":4,"1922":1,"1925":4,"1926":1,"1946":1,"1950":1,"1954":2,"1955":1,"1963":1,"1965":2,"1971":1,"1984":9,"1985":1,"1986":1,"1987":6,"1988":1,"1990":3,"1992":2,"1995":1,"1996":1,"1997":1,"1998":1,"2059":1,"2062":1,"2063":1,"2068":1,"2069":3,"2070":1,"2079":1,"2080":6,"2081":1,"2082":1,"2098":1,"2099":1,"2101":2,"2102":1,"2104":1,"2105":1,"2114":2,"2140":1,"2155":1,"2156":1,"2159":2,"2160":2,"2163":2,"2164":5,"2165":1,"2166":2,"2167":9,"2168":9,"2169":2,"2172":1,"2175":4,"2178":5,"2179":1,"2183":3,"2184":4,"2187":3,"2188":2,"2192":1,"2195":2,"2198":1,"2205":2,"2214":1,"2215":1,"2221":3,"2232":1,"2267":1,"2271":1,"2275":2,"2283":3,"2285":3,"2287":3,"2288":1,"2289":1,"2291":5,"2295":2,"2297":6,"2299":3,"2300":11,"2301":7,"2302":3,"2305":2,"2307":5,"2310":2,"2315":1,"2316":7,"2317":1,"2318":4,"2319":1,"2320":2,"2322":1,"2323":1,"2332":2,"2333":3,"2334":4,"2335":4,"2336":1,"2337":1,"2338":4,"2339":5,"2340":3,"2341":3,"2342":3,"2343":1,"2344":6,"2345":1,"2347":1,"2348":1,"2350":4,"2353":1,"2354":2,"2355":2,"2356":1,"2358":1,"2361":1,"2369":3,"2371":4,"2373":3,"2375":1,"2377":1,"2379":1,"2381":1,"2388":1,"2395":5,"2409":2,"2424":1,"2432":1,"2435":3,"2436":1,"2437":1,"2444":1,"2445":1,"2446":2,"2450":1,"2456":5,"2457":1,"2459":1,"2460":5,"2461":2,"2462":1,"2464":1,"2465":1,"2466":2,"2468":1,"2474":1,"2475":1,"2478":1,"2480":1,"2485":1,"2487":1,"2488":1,"2489":7,"2490":2,"2491":3,"2493":5,"2494":3,"2496":1,"2508":4,"2529":2,"2530":1,"2541":1,"2547":1,"2551":2,"2552":2,"2554":1,"2562":5,"2563":2,"2564":2,"2565":1,"2572":1,"2579":1,"2592":10,"2593":2,"2594":1,"2595":7,"2596":1,"2597":1,"2598":1,"2603":2,"2604":1,"2605":26,"2606":4,"2611":5,"2612":1,"2615":2,"2616":4,"2620":1,"2623":1,"2647":1,"2648":1,"2653":6,"2654":8,"2655":1,"2658":1,"2659":3,"2663":2,"2664":1,"2665":1,"2667":1,"2669":1,"2671":2,"2672":2,"2678":1,"2682":1,"2685":1,"2686":1,"2689":1,"2691":1,"2696":2,"2697":2,"2704":1,"2707":1,"2708":1,"2710":4,"2711":7,"2712":2,"2713":1,"2725":4,"2727":1,"2734":1,"2736":2,"2738":5,"2740":5,"2741":1,"2750":1,"2762":1,"2764":4,"2766":2,"2777":1,"2779":2,"2780":1,"2783":6,"2784":2,"2785":3,"2787":1,"2788":1,"2795":1}}],["keyboards",{"0":{"41":1,"54":1,"116":1,"382":1,"559":1,"568":1,"1383":1,"1418":1,"1533":1,"1596":1,"2310":1,"2653":1},"1":{"42":1,"43":1,"55":1,"56":1,"57":1,"58":1,"1384":1,"1385":1,"1386":1,"1387":1,"1388":1,"1389":1},"2":{"2":1,"14":1,"28":1,"30":1,"33":1,"35":2,"36":3,"37":1,"43":3,"49":1,"50":1,"58":1,"65":2,"67":1,"69":2,"70":5,"73":2,"74":3,"86":3,"90":1,"92":1,"93":2,"102":1,"107":3,"109":1,"110":1,"114":9,"116":1,"118":1,"122":1,"123":1,"124":2,"132":1,"134":5,"144":1,"145":2,"152":1,"154":1,"160":14,"168":1,"169":2,"173":2,"176":2,"181":1,"191":4,"197":1,"199":2,"201":3,"209":1,"211":3,"213":2,"218":1,"221":1,"222":5,"235":1,"236":4,"240":2,"249":17,"251":1,"262":1,"266":8,"277":3,"282":1,"317":4,"363":1,"370":4,"371":1,"373":1,"374":3,"375":2,"378":1,"380":1,"382":2,"389":1,"390":1,"391":1,"401":1,"429":1,"448":1,"499":2,"502":2,"506":1,"508":1,"509":1,"515":1,"519":1,"521":1,"529":1,"530":1,"538":1,"552":1,"556":1,"559":4,"560":3,"564":1,"606":5,"607":1,"622":1,"626":1,"630":1,"641":1,"1121":1,"1124":1,"1127":2,"1130":2,"1132":3,"1133":2,"1135":1,"1137":1,"1138":1,"1278":1,"1279":1,"1281":1,"1294":1,"1302":3,"1309":1,"1313":1,"1315":1,"1347":1,"1353":1,"1354":1,"1366":2,"1367":2,"1383":1,"1389":1,"1414":1,"1415":1,"1421":1,"1422":1,"1430":2,"1440":1,"1442":1,"1467":1,"1473":3,"1491":1,"1492":1,"1494":1,"1496":1,"1531":1,"1532":3,"1538":1,"1565":1,"1566":1,"1585":1,"1611":1,"1752":1,"1768":1,"1854":1,"1855":1,"1862":1,"1950":2,"1964":1,"1980":1,"1992":1,"1996":1,"1997":1,"2069":1,"2070":2,"2073":1,"2080":2,"2082":1,"2099":1,"2152":4,"2156":2,"2163":1,"2169":1,"2178":1,"2184":1,"2263":1,"2267":2,"2268":2,"2270":1,"2272":1,"2279":1,"2281":1,"2282":1,"2283":1,"2285":1,"2291":1,"2295":1,"2296":1,"2297":2,"2299":2,"2300":4,"2301":1,"2303":1,"2307":1,"2316":1,"2319":1,"2323":1,"2331":1,"2332":1,"2334":3,"2335":1,"2338":13,"2339":13,"2346":3,"2350":1,"2351":1,"2361":1,"2384":1,"2394":1,"2433":1,"2439":1,"2460":3,"2461":2,"2464":1,"2466":1,"2480":1,"2484":1,"2489":1,"2493":1,"2495":1,"2508":3,"2578":1,"2580":3,"2581":2,"2582":1,"2583":1,"2584":1,"2585":1,"2592":3,"2603":1,"2605":3,"2606":1,"2614":6,"2652":1,"2653":3,"2692":1,"2710":3,"2711":1,"2712":1,"2727":1,"2734":1,"2740":1,"2750":1,"2764":3,"2781":1}}],["g5",{"2":{"1831":1,"2410":1}}],["g3",{"2":{"1831":1,"2410":1}}],["g♯",{"2":{"1831":6,"2410":6}}],["gs5",{"2":{"1831":1,"2410":1}}],["gs4",{"2":{"1831":1,"2410":1}}],["gs3",{"2":{"1831":1,"2410":1}}],["gs2",{"2":{"1831":1,"2410":1}}],["gs1",{"2":{"1831":1,"2410":1}}],["gs",{"2":{"1831":1,"2410":1}}],["gskt00",{"2":{"122":2}}],["g♭",{"2":{"1831":6,"2410":6}}],["gb5",{"2":{"1831":1,"2410":1}}],["gb4",{"2":{"1831":1,"2410":1}}],["gb3",{"2":{"1831":1,"2410":1}}],["gb2",{"2":{"1831":1,"2410":1}}],["gb1",{"2":{"1831":1,"2410":1}}],["gb",{"2":{"1587":1,"1831":1,"2410":1}}],["gboy",{"2":{"191":1}}],["gboards",{"2":{"145":1,"154":4,"160":1,"191":1,"1565":2}}],["g1",{"2":{"1171":1,"1831":1,"2410":1}}],["g0",{"2":{"1171":1}}],["gnd",{"2":{"638":1,"639":1,"685":8,"691":1,"758":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1123":1,"1126":1,"1129":1,"1146":1,"1169":2,"1183":1,"1273":1,"1611":1,"1755":1,"2099":1,"2157":1,"2158":1,"2268":1,"2271":1,"2273":1,"2274":1,"2276":1,"2278":1,"2280":1,"2288":2,"2315":1,"2369":2,"2371":4,"2373":2,"2375":2,"2377":2,"2379":2,"2391":2,"2489":1,"2552":1,"2569":6}}],["gnu++14",{"2":{"176":1}}],["gnu11",{"2":{"176":1}}],["gnu",{"0":{"330":1},"2":{"134":1,"236":3,"322":1,"326":1,"1417":4,"2349":1,"2609":4}}],["gp3",{"2":{"2580":1}}],["gp8",{"2":{"2572":1}}],["gpx",{"2":{"2572":1}}],["gp0",{"2":{"1897":1,"2580":2}}],["gp19",{"2":{"2580":1}}],["gp18",{"2":{"2580":1}}],["gp17",{"2":{"2578":1}}],["gp1",{"2":{"1897":1,"2580":2}}],["gpt",{"2":{"686":8,"687":4,"1507":4}}],["gptd15",{"2":{"1507":1}}],["gptd8",{"2":{"691":1}}],["gptd8tim8",{"2":{"685":1}}],["gptd6",{"2":{"687":1}}],["gptd6tim6",{"2":{"685":1}}],["gptd9",{"2":{"686":1}}],["gptd7tim7",{"2":{"685":1}}],["gp20",{"2":{"2580":1}}],["gp2",{"2":{"2580":1}}],["gp29",{"2":{"636":1}}],["gp28",{"2":{"636":1}}],["gp27",{"2":{"636":1}}],["gp26",{"2":{"636":1}}],["gpl3",{"2":{"2603":1}}],["gpl2+",{"2":{"2603":1,"2605":1}}],["gpl2",{"2":{"2603":1}}],["gplv3",{"2":{"2349":2}}],["gplv2",{"0":{"2609":1},"2":{"2349":1}}],["gpl",{"2":{"522":1,"1417":1,"2349":1,"2603":1,"2609":1}}],["gpioa",{"2":{"1357":1}}],["gpiob",{"2":{"707":2}}],["gpios",{"2":{"696":1,"2562":1,"2563":1,"2564":1}}],["gpiov3",{"2":{"690":1}}],["gpiov2",{"2":{"690":1}}],["gpiov1",{"2":{"690":1}}],["gpiof",{"2":{"65":1}}],["gpio",{"0":{"159":1,"243":1,"695":1,"1589":1,"2571":1},"1":{"696":1,"697":1,"698":1,"2572":1,"2573":1},"2":{"49":1,"64":1,"94":1,"114":3,"133":1,"134":1,"160":2,"243":13,"244":1,"249":2,"266":4,"277":1,"576":5,"580":3,"633":1,"644":2,"656":3,"664":1,"670":1,"695":1,"696":13,"697":1,"707":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1122":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":2,"1129":2,"1130":1,"1134":2,"1145":1,"1169":5,"1171":2,"1182":1,"1214":2,"1249":1,"1251":1,"1256":1,"1262":3,"1349":1,"1504":1,"1508":2,"1585":1,"1629":4,"1755":6,"1897":2,"2179":3,"2563":2,"2564":2,"2569":1,"2571":1,"2572":3,"2573":3,"2578":1,"2582":1,"2603":1,"2714":2,"2715":3,"2716":3,"2721":1,"2723":2,"2724":6,"2728":4,"2731":2,"2732":4,"2736":3,"2739":1}}],["gd25q64cs",{"2":{"2583":2}}],["gdb",{"2":{"328":1,"335":1,"2552":3,"2794":1}}],["gd32v",{"2":{"191":1,"629":2}}],["gd32vf103",{"2":{"130":2,"134":1,"176":2,"495":1}}],["gmt",{"2":{"315":2,"317":2}}],["gmmk2",{"2":{"236":1}}],["gmmk",{"2":{"102":3,"114":11,"134":1,"144":4,"145":2,"160":2,"176":3,"191":2,"199":1,"222":1,"2282":1}}],["gc9a01",{"2":{"277":1,"2612":2,"2615":7}}],["gc9107",{"2":{"277":1}}],["gc9xxx",{"2":{"277":1}}],["gcc10",{"2":{"134":1}}],["gcc",{"2":{"73":1,"132":1,"134":2,"222":1,"325":1,"331":1,"2300":1,"2540":1}}],["gk61",{"2":{"236":3}}],["g2",{"2":{"211":2,"1171":1,"1831":1,"2410":1}}],["g60",{"2":{"211":2}}],["g431",{"2":{"249":1}}],["g4",{"2":{"191":1,"1831":1,"2410":1}}],["g474",{"2":{"49":1}}],["gluing",{"2":{"2306":1}}],["glue",{"2":{"430":1,"2319":1}}],["glossary",{"0":{"2660":1},"1":{"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1,"2670":1,"2671":1,"2672":1,"2673":1,"2674":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":1,"2691":1,"2692":1,"2693":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2699":1,"2700":1,"2701":1,"2702":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2708":1}}],["glorious",{"2":{"2282":2}}],["globs",{"2":{"411":1}}],["globe",{"2":{"236":1}}],["globally",{"2":{"1378":1,"1701":1,"1703":1}}],["global",{"0":{"657":1,"790":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1},"2":{"94":1,"134":1,"172":1,"176":2,"191":1,"325":1,"326":1,"328":1,"460":2,"515":1,"566":1,"644":1,"652":1,"656":2,"657":1,"786":2,"790":1,"850":2,"855":1,"885":2,"889":1,"919":2,"923":1,"953":2,"957":1,"987":2,"991":1,"1021":2,"1025":1,"1055":2,"1059":1,"1089":2,"1093":1,"1363":4,"1366":1,"1381":1,"1422":1,"1767":3,"1795":1,"1796":1,"1797":1,"1798":1,"1799":1,"1979":1,"1990":3,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2050":1,"2052":1,"2054":1,"2208":1,"2476":1,"2714":1,"2766":1,"2767":1}}],["glcdfont",{"2":{"1852":1,"1855":1,"2179":1}}],["gliding",{"2":{"1845":1}}],["glide",{"2":{"1845":1,"1945":1,"1952":3}}],["glides",{"2":{"1845":1}}],["glitch",{"2":{"211":1,"688":1}}],["glance",{"2":{"433":1,"2527":1,"2782":1}}],["glamorous",{"2":{"251":1}}],["glacier",{"2":{"211":1}}],["glyphs",{"2":{"2614":21,"2624":2,"2626":4,"2627":1,"2628":2,"2629":2}}],["glyph",{"0":{"2627":1,"2628":1},"2":{"176":1,"2614":2,"2624":2,"2626":3,"2627":13,"2628":8,"2629":2}}],["glenpickle",{"2":{"154":4,"160":1}}],["gif",{"2":{"2614":2}}],["gifs",{"2":{"138":1,"2612":1}}],["giving",{"2":{"1532":1,"2517":1}}],["gives",{"2":{"433":1,"436":1,"479":1,"1528":1,"1552":1,"1723":1,"1763":1,"1859":1,"1984":1,"2301":1,"2513":1,"2768":1}}],["give",{"0":{"2365":1},"2":{"302":1,"1138":1,"1337":1,"1563":2,"1925":1,"1964":1,"2264":1,"2314":1,"2344":1,"2526":1,"2540":1,"2574":1,"2768":1,"2789":1}}],["given",{"0":{"2759":1},"2":{"166":1,"638":2,"639":2,"739":1,"766":1,"798":1,"828":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1,"1191":1,"1337":1,"1434":1,"1453":1,"1555":3,"1563":1,"1565":1,"1684":1,"1687":1,"1732":1,"1737":1,"1740":1,"1743":1,"1746":1,"1749":1,"1840":2,"1865":1,"2089":9,"2092":2,"2113":3,"2190":1,"2209":1,"2241":1,"2244":1,"2247":1,"2254":1,"2261":1,"2300":1,"2316":1,"2343":1,"2354":1,"2358":1,"2359":1,"2442":1,"2448":1,"2489":1,"2589":1,"2603":1,"2605":2,"2606":1,"2616":2,"2655":1,"2767":1,"2787":1}}],["gigadevice",{"0":{"495":1},"2":{"495":1}}],["giabalanai",{"2":{"222":1}}],["ginkgo65hot",{"2":{"176":1}}],["gingham",{"2":{"154":2}}],["gitconfig",{"2":{"385":1}}],["gitignore",{"2":{"160":2,"176":1,"191":1}}],["git",{"0":{"6":1,"1299":1,"2470":1,"2510":1,"2511":1,"2514":1,"2521":1,"2675":1},"1":{"2511":1,"2515":1,"2516":1},"2":{"10":1,"24":1,"114":1,"199":1,"211":1,"249":1,"347":12,"349":16,"352":2,"358":10,"359":11,"360":9,"361":6,"400":1,"428":1,"529":1,"530":2,"554":7,"556":1,"1299":2,"2291":2,"2303":8,"2467":1,"2470":12,"2471":1,"2476":2,"2477":10,"2479":1,"2482":2,"2483":2,"2485":1,"2492":1,"2500":1,"2503":8,"2505":2,"2511":1,"2513":21,"2514":1,"2515":1,"2516":19,"2521":2,"2526":18,"2527":18,"2528":2,"2531":1,"2542":1,"2545":10,"2549":3,"2552":1,"2603":1,"2607":3,"2676":1,"2762":1}}],["github",{"0":{"1299":1,"2303":1,"2467":1,"2471":1,"2476":1,"2477":1,"2482":1,"2487":1,"2676":1,"2755":1},"1":{"2468":1,"2469":1,"2470":1,"2471":1,"2472":1,"2473":1,"2474":1,"2475":1,"2476":1,"2477":1,"2478":1,"2479":1},"2":{"2":1,"21":2,"134":1,"236":1,"282":3,"340":1,"341":2,"347":1,"350":1,"352":1,"358":1,"359":2,"425":1,"446":1,"482":1,"515":1,"520":1,"554":6,"624":1,"1279":1,"1297":1,"1298":1,"1299":2,"1311":1,"1312":2,"1318":3,"1320":1,"1335":1,"1413":1,"1417":3,"1868":1,"2221":1,"2291":1,"2303":6,"2460":2,"2461":2,"2467":3,"2468":2,"2469":2,"2470":1,"2471":1,"2472":1,"2474":2,"2475":2,"2476":4,"2477":7,"2478":2,"2479":2,"2480":2,"2481":1,"2482":2,"2483":2,"2485":1,"2487":3,"2501":1,"2507":2,"2511":1,"2514":1,"2516":11,"2526":5,"2549":2,"2550":1,"2553":1,"2592":1,"2605":1,"2711":1,"2755":1}}],["ggkeyboards",{"2":{"114":1}}],["gu",{"2":{"2409":3,"2435":3}}],["guessed",{"2":{"1868":1}}],["guess",{"2":{"1862":1}}],["guestures",{"2":{"176":1}}],["guarantees",{"2":{"2616":1}}],["guarantee",{"2":{"570":1}}],["guaranteed",{"2":{"341":1,"698":1}}],["guarded",{"2":{"2288":1,"2587":1}}],["guard",{"2":{"145":1,"176":1,"199":1,"222":1,"356":1}}],["guards",{"2":{"4":1,"134":1,"453":1,"2603":1}}],["gurindam",{"2":{"154":2}}],["guiding",{"2":{"2761":1}}],["guidance",{"2":{"2457":1}}],["guided",{"2":{"2789":1}}],["guides",{"0":{"2320":1},"2":{"551":1,"1274":1,"2311":1}}],["guidelines",{"0":{"556":1,"2331":1},"1":{"557":1,"558":1,"559":1,"560":1,"561":1,"2332":1,"2333":1,"2334":1,"2335":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2341":1,"2342":1,"2343":1,"2344":1,"2345":1,"2346":1,"2347":1,"2348":1,"2349":1},"2":{"367":2,"453":1,"462":1,"550":2,"556":1,"559":1,"560":1,"615":1,"1299":1,"1374":1,"1375":1,"2297":1,"2479":1,"2592":2,"2598":1,"2764":1}}],["guide",{"0":{"302":1,"1861":1,"2304":1,"2366":1},"1":{"2305":1,"2306":1,"2307":1,"2308":1,"2309":1,"2310":1,"2311":1,"2312":1,"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1,"2367":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2385":1,"2386":1,"2387":1,"2388":1,"2389":1,"2390":1,"2391":1,"2392":1},"2":{"199":1,"322":2,"323":1,"371":1,"624":2,"1295":1,"2172":1,"2300":1,"2303":2,"2306":1,"2307":1,"2318":1,"2320":3,"2385":1,"2456":1,"2457":3,"2458":1,"2459":1,"2467":2,"2472":1,"2479":1,"2481":1,"2493":1,"2542":1,"2543":1}}],["guitar",{"2":{"1435":2,"1436":3,"1440":1}}],["gui+s",{"2":{"196":1,"1718":1}}],["gui",{"2":{"114":1,"231":2,"266":1,"292":1,"318":1,"623":1,"1308":2,"1336":8,"1337":8,"1407":1,"1602":1,"1603":1,"1604":1,"1606":2,"1620":1,"1704":3,"1706":1,"1715":8,"1910":1,"1917":3,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2278":1,"2280":1,"2281":1,"2282":1,"2288":2,"2394":4,"2403":1,"2409":26,"2412":9,"2413":10,"2429":4,"2435":26,"2449":13,"2456":1,"2530":4,"2531":1,"2617":1,"2744":1,"2748":1,"2777":8}}],["gr",{"2":{"2190":1,"2191":3}}],["grunt",{"2":{"1412":1}}],["grb",{"2":{"1251":1,"1253":3}}],["grv",{"2":{"313":2,"530":2,"1602":2,"1704":2,"2394":1,"2427":1,"2446":1,"2447":1,"2766":1,"2767":1}}],["growing",{"2":{"2789":1}}],["grow",{"2":{"550":1,"2743":1}}],["grown",{"2":{"113":1,"606":1,"2331":2}}],["grounded",{"2":{"2383":1}}],["ground",{"2":{"334":1,"502":1,"674":1,"1262":1,"1272":1,"1273":1,"1425":1,"1428":2,"1432":1,"1508":1,"1589":1,"1599":1,"2317":1,"2597":1}}],["groupbuys",{"2":{"2605":1}}],["group",{"0":{"1463":1,"1464":1,"1465":1,"1466":1},"2":{"249":5,"407":1,"457":1,"609":1,"1294":1,"1463":1,"1464":1,"1465":1,"1466":1,"2076":1,"2185":4,"2361":1,"2393":1,"2792":1}}],["groups",{"2":{"231":1,"1453":2,"2186":1}}],["gritty",{"0":{"2448":1},"2":{"302":1}}],["grin",{"2":{"179":1}}],["grid",{"2":{"112":1,"249":1,"510":3,"1389":1,"1585":1,"1763":1,"1984":1,"1988":1,"2163":3,"2721":1,"2736":1}}],["grayscale",{"2":{"2614":4,"2635":5}}],["graystudio",{"2":{"211":1}}],["gram",{"2":{"1921":1}}],["grammar",{"2":{"176":1}}],["graphic",{"2":{"2614":2}}],["graphical",{"2":{"2362":1,"2466":1,"2468":1,"2496":1,"2542":1,"2612":1,"2617":1}}],["graphics",{"0":{"408":1,"2631":1,"2633":1},"1":{"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1},"2":{"2614":2,"2617":2,"2631":3,"2632":1,"2633":4,"2634":1}}],["grape",{"2":{"211":1}}],["grabbing",{"2":{"2312":1}}],["grab",{"2":{"324":1,"2312":1,"2513":1}}],["gracefully",{"2":{"209":1}}],["granularity",{"2":{"2143":1}}],["granular",{"2":{"195":1,"1448":1,"1453":1,"1460":1,"2766":1,"2774":1,"2775":1,"2776":1,"2777":1}}],["gradients",{"2":{"1987":2}}],["gradient",{"2":{"176":1,"199":1,"292":1,"1369":1,"1766":4,"1986":2,"1987":22,"1989":3,"2072":2,"2074":2,"2075":2,"2077":1,"2078":2,"2415":2,"2750":3}}],["grave",{"0":{"1601":1,"1704":1,"2403":1},"1":{"1602":1,"1603":1,"1604":1,"1605":1,"1606":1},"2":{"114":1,"188":1,"191":1,"199":1,"291":1,"623":1,"1319":1,"1568":1,"1601":2,"1604":1,"1606":4,"1622":1,"1704":4,"2394":1,"2403":2,"2409":2,"2427":1,"2435":2,"2444":2,"2463":1,"2547":1,"2741":1,"2744":1,"2788":1}}],["grs",{"2":{"114":1,"160":1}}],["greyscale",{"2":{"2624":1,"2631":1}}],["grep",{"2":{"2605":2}}],["greek",{"2":{"2741":1,"2742":2}}],["greeting",{"2":{"430":1,"1617":1}}],["greet",{"2":{"426":1,"430":1}}],["green",{"0":{"647":1,"649":1,"665":1,"667":1,"741":1,"743":1,"749":1,"768":1,"770":1,"776":1,"800":1,"802":1,"808":1,"832":1,"834":1,"840":1,"867":1,"869":1,"875":1,"901":1,"903":1,"909":1,"935":1,"937":1,"943":1,"969":1,"971":1,"977":1,"1003":1,"1005":1,"1011":1,"1037":1,"1039":1,"1045":1,"1071":1,"1073":1,"1079":1,"1105":1,"1107":1,"1113":1,"1158":1,"1160":1,"1162":1,"1176":1,"1178":1,"1195":1,"1197":1,"1203":1},"1":{"648":1,"650":1,"666":1,"668":1,"742":1,"744":1,"750":1,"769":1,"771":1,"777":1,"801":1,"803":1,"809":1,"833":1,"835":1,"841":1,"868":1,"870":1,"876":1,"902":1,"904":1,"910":1,"936":1,"938":1,"944":1,"970":1,"972":1,"978":1,"1004":1,"1006":1,"1012":1,"1038":1,"1040":1,"1046":1,"1072":1,"1074":1,"1080":1,"1106":1,"1108":1,"1114":1,"1159":1,"1161":1,"1163":1,"1177":1,"1179":1,"1196":1,"1198":1,"1204":1},"2":{"49":1,"282":3,"341":1,"435":1,"542":2,"593":1,"626":1,"648":2,"650":2,"659":1,"662":1,"666":2,"668":2,"734":1,"737":1,"742":2,"744":2,"750":2,"760":1,"763":1,"769":2,"771":2,"777":2,"792":1,"795":1,"801":2,"803":2,"809":2,"822":1,"825":1,"833":2,"835":2,"841":2,"857":1,"860":1,"868":2,"870":2,"876":2,"891":1,"894":1,"902":2,"904":2,"910":2,"925":1,"928":1,"936":2,"938":2,"944":2,"959":1,"962":1,"970":2,"972":2,"978":2,"993":1,"996":1,"1004":2,"1006":2,"1012":2,"1027":1,"1030":1,"1038":2,"1040":2,"1046":2,"1061":1,"1064":1,"1072":2,"1074":2,"1080":2,"1095":1,"1098":1,"1106":2,"1108":2,"1114":2,"1148":1,"1151":1,"1159":2,"1161":2,"1163":2,"1171":1,"1177":2,"1179":2,"1185":1,"1188":1,"1196":2,"1198":2,"1204":2,"1253":1,"1254":1,"1369":1,"1991":2,"1995":2,"1996":1,"2009":1,"2011":1,"2072":1,"2076":1,"2080":2,"2082":1,"2089":1,"2096":3,"2415":1,"2552":1,"2608":1}}],["greatest",{"2":{"2587":1}}],["greater",{"2":{"63":1,"352":1,"364":1,"689":1,"1373":1,"1468":2,"1973":1,"2450":1}}],["great",{"2":{"483":1,"506":1,"1295":1,"1453":1,"1532":1,"1534":1,"1721":1,"2485":1,"2520":1,"2521":1,"2549":1,"2554":1,"2585":1}}],["greatly",{"2":{"49":1,"2300":1}}],["gh",{"2":{"2477":4}}],["ghcr",{"2":{"2476":1}}],["gh62",{"2":{"391":5,"2316":5}}],["gh60",{"2":{"370":2,"401":2,"2492":1}}],["gherkin",{"2":{"266":1,"2568":1}}],["ghoul",{"2":{"199":1}}],["ghosting",{"0":{"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1},"2":{"134":1,"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"2350":2,"2728":1}}],["ghost",{"2":{"112":1,"199":1,"502":2,"818":1,"2728":1}}],["gh80",{"2":{"57":4,"266":1}}],["gauge",{"2":{"2758":1}}],["gather",{"2":{"1933":1,"2758":1}}],["gathering",{"2":{"401":1}}],["gateway",{"2":{"2788":1}}],["gateron",{"2":{"2305":1}}],["gate",{"2":{"1495":1,"1508":2}}],["gasc",{"2":{"1337":2}}],["gamma",{"2":{"236":1}}],["game",{"2":{"241":6,"1390":1,"1549":1,"1668":1,"2521":1}}],["gamers",{"2":{"148":1}}],["gamebuddy",{"2":{"102":3,"114":1}}],["galleon",{"2":{"211":1}}],["galaxy",{"2":{"114":1}}],["garbled",{"2":{"191":1}}],["gap",{"2":{"134":1,"2350":1}}],["gain",{"2":{"131":1,"633":1,"2750":1}}],["gained",{"2":{"100":1,"107":1,"138":1}}],["gaining",{"2":{"86":1,"2669":1}}],["gold",{"2":{"1991":2,"2096":3}}],["goldenrod",{"2":{"1991":2,"2096":2}}],["golden",{"2":{"1473":1}}],["googletest",{"2":{"2303":1}}],["google",{"0":{"2790":2},"2":{"336":1,"2790":3,"2791":1}}],["googling",{"2":{"335":1}}],["goodbye",{"2":{"1435":1,"1436":2}}],["good",{"2":{"119":1,"453":1,"458":2,"473":1,"474":1,"476":1,"551":1,"574":1,"589":1,"1275":1,"1296":1,"1377":1,"1383":1,"1417":1,"1475":1,"1925":1,"1953":1,"2199":1,"2207":2,"2303":1,"2309":1,"2311":2,"2312":1,"2313":1,"2350":1,"2363":1,"2392":1,"2456":1,"2519":1,"2553":1,"2595":1,"2766":1,"2779":1,"2789":1}}],["goal",{"2":{"262":1,"457":1,"1383":1}}],["going",{"2":{"188":1,"268":1,"567":1,"680":1,"1369":1,"2200":1,"2313":2,"2315":1,"2318":1,"2344":1,"2352":1,"2464":1,"2482":1,"2527":2,"2529":1,"2653":2,"2654":1,"2753":1,"2795":1}}],["goes",{"2":{"166":1,"336":1,"354":1,"433":1,"1327":1,"1432":2,"1490":1,"1925":1,"2073":1,"2143":1,"2386":1,"2392":1,"2603":1,"2612":1,"2727":1,"2733":1,"2734":1}}],["gotten",{"2":{"537":1}}],["got",{"2":{"143":1,"164":1,"176":1,"179":1,"182":1,"190":1,"245":1,"454":1,"1311":1,"1423":1,"2318":1}}],["go",{"0":{"553":1},"2":{"92":1,"119":1,"137":1,"148":1,"291":1,"302":1,"331":2,"349":1,"354":1,"453":1,"455":1,"499":1,"609":2,"1372":2,"1422":1,"1432":1,"1472":2,"1489":2,"1610":2,"1853":1,"1860":1,"1977":1,"2100":1,"2177":1,"2181":1,"2200":1,"2221":1,"2278":1,"2280":1,"2288":1,"2299":1,"2303":1,"2306":1,"2313":1,"2316":1,"2464":1,"2529":1,"2547":1,"2552":1,"2585":1,"2590":1,"2605":2,"2654":1,"2767":2}}],["gone",{"2":{"172":1}}],["gon",{"0":{"18":1},"2":{"18":3}}],["g",{"0":{"2008":1,"2010":1},"1":{"2009":1,"2011":1},"2":{"38":2,"65":1,"114":1,"145":2,"160":1,"191":2,"211":6,"236":1,"249":3,"266":2,"313":1,"349":1,"506":1,"529":1,"530":2,"626":2,"635":1,"659":2,"662":1,"666":1,"734":3,"737":1,"742":1,"746":1,"750":1,"752":1,"760":3,"763":1,"769":1,"773":1,"777":1,"779":1,"792":3,"795":1,"801":1,"805":1,"809":1,"811":1,"822":3,"825":1,"833":1,"837":1,"841":1,"843":1,"857":3,"860":1,"868":1,"872":1,"876":1,"878":1,"891":3,"894":1,"902":1,"906":1,"910":1,"912":1,"925":3,"928":1,"936":1,"940":1,"944":1,"946":1,"959":3,"962":1,"970":1,"974":1,"978":1,"980":1,"993":3,"996":1,"1004":1,"1008":1,"1012":1,"1014":1,"1027":3,"1030":1,"1038":1,"1042":1,"1046":1,"1048":1,"1061":3,"1064":1,"1072":1,"1076":1,"1080":1,"1082":1,"1095":3,"1098":1,"1106":1,"1110":1,"1114":1,"1116":1,"1125":1,"1129":1,"1148":2,"1151":1,"1159":1,"1163":1,"1169":1,"1171":2,"1185":3,"1188":1,"1196":1,"1200":1,"1204":1,"1206":1,"1254":2,"1324":1,"1336":1,"1353":1,"1354":1,"1363":2,"1366":3,"1372":1,"1396":1,"1399":1,"1415":1,"1434":1,"1488":1,"1533":1,"1544":1,"1546":1,"1561":3,"1565":2,"1595":1,"1694":1,"1708":3,"1714":1,"1715":1,"1752":1,"1763":1,"1767":2,"1831":19,"1851":2,"1854":1,"1859":2,"1904":1,"1937":1,"1952":1,"1965":1,"1980":1,"1984":1,"1986":1,"1988":1,"1990":2,"1995":1,"1996":2,"1997":3,"2009":1,"2011":1,"2072":2,"2080":1,"2082":3,"2083":1,"2089":10,"2101":1,"2164":5,"2167":3,"2178":1,"2186":1,"2191":1,"2199":1,"2208":1,"2297":1,"2307":1,"2309":2,"2310":1,"2319":1,"2374":2,"2394":3,"2410":19,"2412":1,"2415":1,"2425":3,"2446":1,"2479":2,"2506":1,"2540":1,"2541":2,"2552":1,"2558":1,"2563":2,"2603":1,"2604":1,"2605":3,"2606":1,"2608":1,"2616":1,"2713":1,"2744":1,"2767":8,"2777":1}}],["gfx",{"2":{"31":3,"34":2,"1861":10,"2616":2}}],["ge",{"2":{"2409":2,"2435":2}}],["gemini",{"2":{"2187":3,"2190":2}}],["geminipr",{"0":{"2186":1},"2":{"2184":1,"2186":6,"2188":1,"2191":2,"2737":1}}],["geminate60",{"2":{"154":2,"211":1}}],["german",{"2":{"1392":3,"2697":1,"2742":8}}],["gergo",{"2":{"154":2}}],["gergoplex",{"2":{"145":1,"191":1}}],["geekhack",{"2":{"1312":1,"1326":1,"1334":1,"1335":1}}],["geometric",{"2":{"2727":1,"2734":1}}],["geometry",{"2":{"2616":2}}],["geonworks",{"2":{"241":1,"249":1}}],["georgi",{"2":{"154":2}}],["gesture",{"0":{"1940":1},"2":{"1899":1,"1939":1,"1945":1,"1946":1,"1952":3}}],["gestures",{"0":{"1945":1,"1946":1},"2":{"176":1,"1940":3,"1943":2,"1945":2,"1946":1,"1952":3}}],["gesc",{"2":{"191":2,"199":2,"1602":1,"1603":2,"1604":1,"2403":1}}],["genuine",{"2":{"1320":1}}],["gen1",{"2":{"424":1}}],["gentoo",{"2":{"191":1,"211":2,"2470":1,"2503":1}}],["gentleman",{"2":{"176":1}}],["gentleman65",{"2":{"168":2,"211":2}}],["genisis",{"2":{"114":1}}],["genesis",{"2":{"102":3}}],["generic",{"0":{"174":1,"1556":1,"1830":1,"2580":1,"2581":1},"2":{"50":1,"172":1,"175":1,"176":3,"236":3,"625":1,"1383":1,"1453":3,"1830":1,"1933":2,"2152":2,"2392":1,"2432":1,"2581":2,"2583":2,"2664":1,"2704":1}}],["generating",{"2":{"606":1,"614":1,"1422":1,"1468":1,"1865":1,"2284":1,"2286":1,"2592":1,"2650":1,"2710":1}}],["generation",{"2":{"12":1,"132":1,"176":1,"191":3,"199":2,"222":4,"231":1,"249":1,"277":1,"2545":1}}],["generators",{"2":{"278":2,"471":1,"472":1}}],["generator",{"0":{"471":1},"2":{"132":1,"160":2,"1632":1,"2306":1}}],["generates",{"2":{"404":1,"613":1,"2466":1}}],["generated",{"2":{"73":1,"403":1,"521":1,"545":1,"614":1,"688":1,"1400":1,"1431":1,"1438":1,"1563":1,"2300":1,"2342":2,"2440":1,"2552":1,"2605":1,"2614":5,"2623":1}}],["generate",{"0":{"401":1,"403":1,"404":1,"614":1},"2":{"70":4,"95":1,"114":1,"132":2,"138":1,"145":1,"191":1,"199":2,"211":1,"236":2,"249":2,"277":1,"282":3,"313":1,"388":1,"401":2,"403":2,"404":1,"521":1,"607":3,"614":5,"1349":1,"1430":3,"1477":1,"1478":1,"1600":1,"1937":1,"1948":1,"1952":1,"2269":2,"2276":2,"2300":2,"2551":2,"2614":4}}],["generally",{"2":{"341":1,"435":1,"457":1,"468":1,"470":1,"473":1,"476":1,"479":1,"485":1,"486":1,"502":1,"597":1,"616":1,"617":1,"628":1,"671":1,"675":1,"703":1,"726":1,"1214":1,"1235":1,"1275":1,"1372":1,"1427":1,"1494":1,"1506":1,"1569":1,"1598":1,"1753":1,"1769":1,"1912":1,"1975":1,"1986":1,"1993":1,"2207":1,"2308":1,"2347":1,"2357":1,"2366":1,"2385":1,"2489":1,"2552":1,"2614":2,"2615":1,"2616":1,"2718":1,"2750":1,"2759":3}}],["generalise",{"2":{"191":1,"236":1}}],["generalize",{"2":{"160":1}}],["general",{"0":{"556":1,"620":1,"2711":1},"1":{"557":1,"558":1,"559":1,"560":1,"561":1},"2":{"5":1,"10":1,"175":1,"201":1,"213":1,"233":1,"403":1,"432":1,"453":1,"455":1,"550":1,"1267":1,"1417":3,"1507":1,"1693":1,"1981":1,"2207":1,"2338":1,"2349":1,"2519":1,"2521":1,"2585":2,"2589":1,"2608":1,"2609":3,"2615":1,"2616":1,"2624":1,"2631":1,"2757":1}}],["gets",{"2":{"437":1,"519":1,"586":1,"587":1,"592":1,"598":1,"599":1,"600":1,"1390":1,"1401":1,"1414":1,"1467":2,"1487":1,"1860":1,"1954":1,"1974":1,"2095":6,"2190":1,"2213":3,"2350":2,"2444":1,"2563":1,"2796":1}}],["getter",{"2":{"475":1}}],["getters",{"2":{"236":2}}],["getting",{"0":{"358":1,"359":1,"2316":1,"2752":1},"1":{"2753":1,"2754":1,"2755":1},"2":{"211":2,"341":1,"617":1,"624":2,"641":1,"1369":1,"1375":1,"2533":1,"2543":1,"2602":1,"2603":1,"2608":1,"2654":1,"2752":1}}],["getta25",{"2":{"154":2}}],["getreuer",{"2":{"179":1,"191":1,"1490":1}}],["get",{"0":{"307":1,"308":1,"309":1,"1292":1,"1518":1,"1694":1,"1793":1,"1799":1,"1809":1,"1812":1,"1887":1,"2020":1,"2026":1,"2032":1,"2038":1,"2048":1,"2054":1,"2057":1,"2224":1,"2244":1,"2362":1},"1":{"1519":1,"1794":1,"1800":1,"1810":1,"1813":1,"1888":1,"2021":1,"2027":1,"2033":1,"2039":1,"2049":1,"2055":1,"2058":1,"2225":1,"2245":1,"2246":1},"2":{"22":4,"23":1,"50":1,"75":1,"143":1,"145":1,"151":1,"190":1,"191":3,"194":6,"195":2,"199":1,"222":4,"236":2,"249":1,"273":1,"276":1,"277":1,"315":1,"323":1,"324":1,"327":1,"330":1,"375":1,"378":1,"399":1,"454":1,"471":1,"502":1,"505":2,"515":1,"529":1,"551":1,"556":1,"557":1,"560":2,"566":1,"570":1,"586":1,"627":1,"1272":1,"1291":2,"1295":1,"1315":1,"1324":1,"1337":10,"1339":1,"1340":1,"1349":1,"1369":1,"1377":2,"1378":1,"1379":1,"1380":1,"1381":1,"1392":1,"1401":1,"1420":1,"1422":2,"1434":1,"1440":1,"1441":1,"1446":2,"1448":2,"1449":2,"1453":7,"1460":5,"1467":1,"1476":1,"1483":1,"1484":1,"1518":1,"1520":1,"1525":1,"1534":1,"1536":2,"1537":1,"1538":1,"1544":1,"1555":9,"1563":1,"1568":1,"1591":1,"1619":1,"1708":1,"1715":1,"1752":1,"1757":1,"1779":1,"1793":1,"1799":1,"1809":1,"1812":1,"1829":1,"1851":1,"1853":1,"1860":1,"1862":1,"1863":1,"1883":1,"1887":1,"1892":1,"1910":1,"1911":3,"1912":1,"1913":1,"1917":2,"1918":4,"1919":5,"1920":4,"1921":5,"1927":2,"1951":2,"1952":1,"1954":2,"1956":1,"1958":1,"1960":1,"1962":1,"1974":6,"1975":1,"1977":1,"1978":1,"1979":1,"1988":2,"1996":3,"1997":2,"2006":1,"2020":1,"2026":1,"2032":1,"2038":1,"2048":1,"2054":1,"2057":1,"2076":1,"2084":1,"2094":1,"2095":5,"2145":2,"2146":2,"2152":1,"2175":1,"2177":1,"2198":1,"2199":1,"2206":1,"2209":2,"2213":3,"2224":1,"2241":1,"2242":1,"2244":1,"2252":1,"2265":1,"2266":2,"2308":1,"2312":1,"2316":1,"2318":1,"2346":1,"2350":4,"2364":1,"2365":1,"2374":1,"2386":1,"2387":1,"2392":1,"2463":2,"2468":1,"2489":1,"2496":1,"2507":1,"2513":1,"2543":1,"2551":1,"2552":1,"2591":1,"2592":2,"2603":1,"2608":2,"2613":1,"2616":8,"2740":1,"2744":4,"2749":5,"2753":1,"2766":1,"2767":8,"2774":1,"2775":1,"2776":1,"2777":2,"2784":1,"2791":1}}],["gtk",{"2":{"2221":2}}],["gtest",{"2":{"114":1}}],["gt",{"0":{"141":1,"167":1,"195":1,"245":1,"307":1,"308":1,"309":1,"1402":1,"1403":1,"1404":1,"1405":1,"1406":2,"1407":5,"2340":1,"2341":1},"2":{"4":3,"18":2,"49":1,"55":3,"70":1,"94":1,"113":2,"114":5,"132":2,"133":2,"134":2,"166":1,"176":4,"191":3,"199":3,"201":2,"211":1,"222":1,"249":5,"277":1,"282":1,"290":2,"291":6,"300":1,"331":15,"335":1,"341":1,"345":2,"347":3,"349":8,"350":1,"370":1,"371":1,"400":1,"417":2,"433":1,"436":4,"500":1,"510":2,"511":3,"529":2,"534":2,"559":3,"613":1,"614":4,"621":1,"659":1,"696":1,"703":2,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1185":1,"1214":2,"1235":2,"1275":2,"1337":3,"1349":2,"1350":1,"1362":4,"1383":1,"1384":3,"1388":4,"1389":1,"1396":1,"1403":1,"1404":1,"1405":3,"1406":1,"1413":6,"1414":5,"1416":5,"1418":1,"1420":1,"1422":5,"1441":1,"1454":1,"1456":1,"1465":1,"1477":1,"1478":1,"1533":1,"1548":2,"1587":1,"1598":1,"1715":1,"1846":1,"1870":1,"1960":1,"1965":1,"1966":9,"1967":1,"1975":1,"2164":5,"2182":1,"2188":2,"2190":1,"2207":1,"2297":2,"2299":4,"2300":18,"2301":2,"2303":1,"2318":1,"2335":2,"2338":1,"2341":1,"2342":3,"2350":1,"2386":4,"2388":2,"2392":1,"2394":1,"2417":2,"2427":1,"2438":2,"2474":1,"2480":5,"2484":2,"2507":4,"2513":7,"2526":3,"2540":2,"2541":2,"2547":4,"2550":2,"2551":2,"2552":2,"2562":1,"2563":1,"2603":1,"2605":4,"2615":1,"2616":4,"2617":1,"2653":4,"2710":1,"2725":1,"2767":2,"2777":1,"2779":1}}],["e5",{"2":{"1831":1,"2410":1}}],["e4",{"2":{"1831":1,"2410":1}}],["e3",{"2":{"1831":1,"2410":1}}],["e2",{"2":{"1831":1,"2410":1}}],["e♭",{"2":{"1831":6,"2410":6}}],["ebay",{"2":{"2389":1,"2694":1}}],["eb5",{"2":{"1831":1,"2410":1}}],["eb4",{"2":{"1831":1,"2410":1}}],["eb3",{"2":{"1831":1,"2410":1}}],["eb2",{"2":{"1831":1,"2410":1}}],["eb1",{"2":{"1831":1,"2410":1}}],["eb",{"2":{"1831":1,"2410":1}}],["eimsk",{"2":{"1894":2}}],["eicra",{"2":{"1894":1}}],["eighth",{"2":{"2112":1,"2193":1}}],["eight",{"2":{"1632":2,"1670":1,"1859":1,"2129":1,"2143":1}}],["either",{"2":{"49":1,"60":1,"87":1,"88":2,"104":2,"127":2,"137":1,"152":1,"352":1,"395":1,"405":1,"436":1,"454":1,"555":1,"560":1,"613":1,"626":1,"635":1,"643":1,"683":1,"701":1,"1127":1,"1130":1,"1169":1,"1250":1,"1262":1,"1276":1,"1305":1,"1340":1,"1417":1,"1424":1,"1427":1,"1430":1,"1475":1,"1488":1,"1568":1,"1591":2,"1592":1,"1642":1,"1668":1,"1860":1,"1910":1,"1962":1,"1965":1,"1967":1,"2158":1,"2170":1,"2183":1,"2188":2,"2276":1,"2311":1,"2344":1,"2349":1,"2484":1,"2545":1,"2557":1,"2564":1,"2605":1,"2609":1,"2615":1,"2616":1,"2626":1,"2642":1,"2768":1}}],["ejct",{"2":{"1320":1,"2394":1,"2432":1}}],["eject",{"0":{"1320":1},"2":{"1320":3,"2394":2,"2432":2}}],["e1",{"2":{"1831":1,"2410":1}}],["e15",{"2":{"635":1}}],["e14",{"2":{"635":1}}],["e12",{"2":{"635":1}}],["e11",{"2":{"635":1}}],["e10",{"2":{"635":1}}],["e13",{"2":{"635":1}}],["e7",{"2":{"635":1}}],["e8",{"2":{"635":2}}],["e88",{"2":{"211":1}}],["e9",{"2":{"635":1}}],["egg",{"2":{"616":1,"2203":1,"2204":3,"2205":2}}],["eggman",{"2":{"154":2}}],["eg",{"2":{"374":1,"459":1,"470":1,"505":1,"559":1,"573":1,"592":1,"638":1,"639":3,"698":1,"1218":1,"1398":1,"1407":1,"1477":1,"1536":1,"1629":1,"1723":1,"1974":1,"2129":1,"2131":1,"2133":1,"2135":1,"2152":1,"2212":1,"2269":2,"2273":1,"2276":2,"2283":1,"2285":1,"2287":1,"2584":1,"2605":1,"2711":2}}],["euro",{"2":{"2358":1}}],["europe",{"2":{"1305":1}}],["eubg",{"2":{"2185":1,"2186":1}}],["eu",{"2":{"241":2,"2191":1}}],["eyes",{"2":{"2312":1}}],["eyeohdesigns",{"2":{"236":1}}],["eyboard",{"2":{"1913":1}}],["eybord",{"2":{"1913":1}}],["eyalroz",{"2":{"176":1}}],["ec44c6c1675c25b9827aacd08c02433cccde7780",{"2":{"2303":1}}],["ec11",{"2":{"1595":1}}],["echo",{"0":{"434":1},"2":{"432":1,"434":1,"458":4,"470":1,"2474":2,"2507":1}}],["eclipse",{"0":{"322":1,"330":1,"331":1,"2531":1,"2535":1,"2536":1,"2539":1,"2673":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"2536":1,"2537":1,"2538":1,"2540":1,"2541":1},"2":{"322":1,"323":1,"326":1,"329":1,"331":2,"2531":3,"2534":1,"2535":2,"2536":6,"2537":3,"2538":1,"2541":1,"2673":1,"2762":1}}],["ecosystem",{"2":{"243":1}}],["eccentric",{"2":{"1614":1}}],["ecc",{"2":{"236":1}}],["ec",{"2":{"222":1,"247":2,"277":1,"1586":2,"2409":3,"2435":3}}],["ekow",{"2":{"211":1}}],["ek65",{"2":{"199":1}}],["equo",{"2":{"2470":1,"2503":1}}],["equally",{"2":{"1713":1}}],["equality",{"2":{"1337":1}}],["equal",{"2":{"417":1,"1327":1,"1622":1,"2185":1,"2190":1,"2394":3,"2427":1,"2433":2,"2626":2,"2633":2}}],["equals",{"2":{"249":1}}],["equivalency",{"2":{"476":1}}],["equivalents",{"2":{"496":1,"1249":1,"1955":1,"2569":1}}],["equivalent",{"2":{"7":1,"103":1,"185":1,"186":1,"232":1,"234":1,"674":1,"675":1,"678":1,"1563":1,"1569":1,"1627":1,"1768":1,"1986":2,"1992":1,"2072":1,"2442":1,"2530":1,"2563":1,"2564":1,"2605":4}}],["equinox",{"2":{"211":1}}],["eql",{"2":{"176":1,"313":1,"530":2,"2394":1,"2427":1,"2446":1}}],["efuse",{"2":{"2387":2}}],["ef8878fba5d3786e3f9c66436da63a560cd36ac9",{"2":{"530":2}}],["efgh",{"2":{"266":1}}],["ef",{"2":{"249":1}}],["efl",{"2":{"176":2,"191":1,"236":1,"277":1,"679":4,"682":1}}],["effort",{"2":{"606":1,"726":1,"1478":1,"2206":1,"2309":1,"2342":1}}],["efficiently",{"2":{"1475":1,"1615":1}}],["efficient",{"2":{"63":1,"231":1,"1121":2,"1122":1,"1128":1,"1859":1,"1965":1,"2183":1}}],["effect2",{"2":{"1767":6,"1990":6}}],["effective",{"2":{"688":1,"1363":1,"1715":1,"1845":1,"2767":1,"2777":1}}],["effectively",{"2":{"49":1,"163":1,"1262":1,"1671":1,"2163":1,"2359":1,"2776":1}}],["effects",{"0":{"1766":1,"1767":1,"1987":1,"1990":1,"2074":1,"2087":1,"2091":1},"1":{"1988":1,"1989":1,"2075":1,"2076":1,"2077":1,"2078":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1},"2":{"84":1,"93":2,"124":1,"134":1,"141":1,"222":1,"249":1,"266":1,"277":1,"458":3,"688":1,"1439":1,"1763":1,"1766":2,"1767":6,"1768":3,"1984":1,"1986":1,"1987":3,"1989":1,"1990":6,"1992":3,"2088":1,"2100":1,"2101":2,"2605":1,"2645":1,"2727":3,"2733":2,"2734":3}}],["effect",{"0":{"1988":1,"1989":1,"1998":1,"2075":1,"2076":1,"2088":1,"2090":1},"2":{"49":1,"74":1,"93":1,"134":1,"145":1,"160":2,"176":1,"191":6,"194":1,"199":1,"222":1,"236":1,"249":2,"266":1,"276":1,"277":1,"292":2,"530":1,"1310":1,"1375":1,"1439":1,"1443":2,"1448":1,"1540":1,"1545":1,"1615":1,"1766":3,"1767":21,"1781":1,"1783":1,"1785":1,"1786":1,"1787":1,"1788":1,"1789":1,"1790":1,"1791":1,"1792":1,"1793":1,"1794":1,"1795":1,"1796":1,"1797":1,"1798":1,"1799":1,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1807":1,"1809":1,"1810":1,"1811":1,"1845":1,"1860":2,"1900":1,"1986":2,"1987":3,"1988":4,"1989":1,"1990":21,"1998":2,"2008":1,"2010":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":1,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2046":1,"2048":1,"2049":1,"2050":1,"2052":1,"2054":1,"2055":1,"2056":1,"2069":1,"2072":2,"2074":1,"2075":10,"2076":11,"2077":2,"2088":1,"2089":1,"2090":1,"2091":6,"2092":14,"2100":1,"2101":1,"2209":1,"2415":2,"2416":2,"2727":1,"2733":1,"2734":1,"2750":10}}],["ede48346eee4b8d6847c19bc01420bee76a5e486",{"2":{"2303":1}}],["ed",{"2":{"275":1,"1912":2,"2563":1}}],["edges",{"2":{"1987":1}}],["edge",{"2":{"175":1,"1218":8,"1896":1,"2311":1,"2654":2,"2658":2,"2723":1}}],["editable",{"2":{"436":1}}],["editorconfig",{"2":{"2549":1}}],["editors",{"2":{"445":1,"2520":1}}],["editor",{"0":{"2462":1,"2520":1},"2":{"389":1,"390":1,"391":1,"401":2,"623":1,"1390":1,"1852":2,"2307":1,"2316":2,"2318":1,"2388":1,"2459":1,"2462":1,"2466":1,"2468":3,"2469":1,"2476":1,"2496":3,"2513":1,"2520":1,"2527":1,"2531":1,"2541":1,"2542":3,"2545":2,"2592":1,"2654":1,"2659":1,"2725":1}}],["edit",{"2":{"347":1,"349":1,"557":2,"609":1,"613":1,"1767":1,"1990":1,"2102":1,"2142":1,"2297":2,"2365":1,"2468":1,"2496":1,"2512":1,"2513":1,"2527":1,"2659":1}}],["edited",{"2":{"335":1,"352":1,"530":1,"1852":1,"2525":1}}],["editing",{"2":{"335":1,"402":1,"409":1,"557":1,"560":1,"1279":1,"1479":1,"2462":1,"2513":1,"2614":1}}],["edition",{"0":{"1358":1,"1361":1,"2584":1},"2":{"211":2,"249":3,"1358":1,"1361":1,"2584":1}}],["edits",{"2":{"211":1,"352":1}}],["edi",{"2":{"154":1,"160":1}}],["eopkg",{"2":{"2470":1,"2503":1}}],["eof",{"2":{"249":1,"2639":1}}],["eol",{"2":{"173":1}}],["eon95",{"2":{"57":2}}],["eon87",{"2":{"57":2}}],["eon75",{"2":{"57":2}}],["eon65",{"2":{"57":2}}],["eon40",{"2":{"57":2}}],["etc",{"0":{"1280":1},"2":{"169":1,"385":2,"451":1,"452":1,"473":1,"479":1,"573":1,"592":1,"659":1,"703":2,"734":2,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":1,"1185":2,"1214":2,"1235":2,"1249":1,"1276":2,"1291":1,"1331":1,"1349":1,"1375":1,"1435":1,"1854":1,"1925":1,"1965":1,"1997":1,"2069":1,"2080":1,"2103":1,"2167":1,"2178":1,"2305":2,"2311":1,"2531":1,"2542":1,"2592":2,"2603":3,"2605":4,"2606":1,"2744":1,"2745":2}}],["eh",{"2":{"154":4,"270":3,"277":1,"2409":2,"2435":2}}],["es",{"2":{"1536":1}}],["estimating",{"2":{"2264":1}}],["estimated",{"2":{"2264":1,"2266":1}}],["estonian",{"2":{"1392":1,"2742":3}}],["established",{"2":{"515":1,"2182":1,"2309":1}}],["especially",{"2":{"560":1,"1363":1,"1377":1,"1467":1,"1496":1,"1532":1,"1536":1,"2300":1,"2313":1,"2341":1,"2589":1,"2623":1,"2755":1,"2779":1,"2789":1}}],["espectro",{"2":{"154":2}}],["esr",{"2":{"551":1}}],["essential",{"2":{"328":1,"1710":1,"2338":1}}],["essentially",{"2":{"263":1,"2146":1,"2308":1}}],["eschew",{"2":{"460":1}}],["escaping",{"2":{"191":1}}],["escaped",{"2":{"2711":2}}],["escape",{"0":{"1339":1,"1601":1,"1704":1,"2403":1},"1":{"1602":1,"1603":1,"1604":1,"1605":1,"1606":1},"2":{"114":1,"176":1,"188":1,"191":1,"211":1,"231":1,"623":1,"624":1,"626":2,"1307":1,"1319":1,"1388":1,"1396":1,"1545":1,"1601":3,"1604":2,"1606":4,"1704":2,"2113":1,"2202":1,"2207":1,"2236":2,"2272":1,"2301":1,"2394":2,"2403":3,"2409":8,"2427":2,"2435":8,"2449":2,"2463":1,"2489":1,"2725":1}}],["esc",{"0":{"1319":1,"2202":1},"2":{"105":2,"114":1,"199":1,"313":1,"530":2,"1339":3,"1396":1,"1403":1,"1532":1,"1545":2,"1546":1,"1547":1,"1548":3,"1565":2,"1568":1,"1587":3,"1602":1,"1603":1,"1606":4,"1622":1,"1694":1,"1704":10,"2113":1,"2202":4,"2203":1,"2205":2,"2207":2,"2269":3,"2276":3,"2394":1,"2409":2,"2427":1,"2435":2,"2440":1,"2449":1,"2732":2,"2744":1,"2788":1}}],["epsize",{"2":{"1925":1,"1926":1}}],["epsize\`",{"2":{"1925":1}}],["epoch80",{"2":{"241":2}}],["ep",{"2":{"114":1,"190":1,"191":1,"211":1,"266":1,"516":2}}],["e6",{"2":{"111":1,"511":1,"1124":1,"1529":1,"2269":1,"2276":1,"2569":1,"2597":1}}],["emergencies",{"2":{"2759":1}}],["emerge",{"2":{"2470":1,"2503":1}}],["emery65",{"2":{"211":1}}],["em",{"2":{"1548":3}}],["emitting",{"2":{"2685":1}}],["emitted",{"2":{"1448":2,"1870":1}}],["emitter",{"2":{"1169":2}}],["emit",{"2":{"1453":1,"2206":1}}],["emac",{"2":{"2222":1,"2423":1}}],["emacs",{"2":{"176":1,"1536":1,"1910":1,"2221":2,"2222":2,"2234":1,"2235":1,"2236":1,"2423":2}}],["email>",{"2":{"1417":1}}],["email",{"2":{"1417":2,"1548":5,"2348":1,"2390":1,"2513":3}}],["emoji",{"0":{"283":1},"1":{"284":1,"285":1},"2":{"279":1,"433":2,"2219":1,"2220":1,"2301":1}}],["employing",{"2":{"1362":1}}],["emphasis",{"2":{"198":1,"201":1}}],["emptystring",{"2":{"181":2,"191":1}}],["empty",{"2":{"50":1,"199":1,"211":2,"222":1,"249":1,"540":2,"556":1,"1242":1,"1732":1,"2258":1,"2388":1,"2492":2,"2537":1,"2605":2}}],["embed",{"0":{"301":1},"2":{"301":1}}],["embedded",{"0":{"679":1},"2":{"174":1,"176":1,"300":1,"552":1,"678":3,"679":2,"682":3,"2446":1,"2578":1,"2605":2,"2617":1,"2722":1}}],["embracing",{"2":{"116":1}}],["emulating",{"2":{"678":1}}],["emulation",{"0":{"174":1,"682":1},"2":{"94":1,"131":1,"134":1,"249":1,"277":1,"671":1,"1721":1,"2184":1,"2570":1}}],["emulates",{"2":{"1711":1,"1712":1,"1940":1,"2274":1,"2368":1,"2372":1,"2385":1}}],["emulate",{"2":{"174":1,"1829":1,"1836":1,"2208":1,"2370":1,"2795":1}}],["emulated",{"2":{"145":1,"176":2,"671":1,"678":1,"682":1,"1500":1,"1713":1,"2187":1,"2795":1}}],["eep",{"2":{"509":2,"510":2}}],["eeproms",{"2":{"2570":1}}],["eeprom",{"0":{"131":1,"174":1,"604":1,"671":1,"682":1,"1368":1,"1769":1,"1811":1,"1993":1,"2056":1,"2164":1,"2330":1,"2649":1,"2722":1},"1":{"672":1,"673":1,"674":1,"675":1,"676":1,"677":1,"1369":1,"1370":1},"2":{"49":2,"65":1,"73":1,"94":3,"114":7,"131":5,"134":7,"145":1,"160":5,"174":2,"176":10,"188":1,"191":5,"211":1,"236":7,"249":1,"277":3,"504":1,"509":3,"510":3,"592":1,"604":1,"671":12,"673":4,"674":36,"675":13,"676":5,"678":4,"679":1,"680":2,"681":1,"682":2,"1280":5,"1307":5,"1308":1,"1324":2,"1368":5,"1369":10,"1370":2,"1378":1,"1494":3,"1532":1,"1534":1,"1568":4,"1769":1,"1774":1,"1776":1,"1778":1,"1787":1,"1790":1,"1792":1,"1796":1,"1798":1,"1802":1,"1804":1,"1807":1,"1811":1,"1832":1,"1868":2,"1986":2,"1993":1,"2001":1,"2003":1,"2005":1,"2014":1,"2017":1,"2019":1,"2023":1,"2025":1,"2029":1,"2031":1,"2035":1,"2037":1,"2041":1,"2043":1,"2046":1,"2052":1,"2056":1,"2073":6,"2089":9,"2090":5,"2091":3,"2092":7,"2093":3,"2164":9,"2187":1,"2217":1,"2221":1,"2270":1,"2272":1,"2279":1,"2284":1,"2286":1,"2301":1,"2330":3,"2395":2,"2416":2,"2557":1,"2570":1,"2611":2,"2649":3,"2722":4}}],["ee",{"2":{"191":1,"249":2,"509":1,"510":2,"1307":1,"1369":1,"1533":1,"1953":1,"2164":2,"2395":1,"2409":4,"2435":4,"2611":1,"2649":1}}],["eeconfig",{"0":{"1370":1},"2":{"94":1,"114":1,"134":1,"176":1,"191":2,"211":1,"236":1,"249":5,"266":1,"277":1,"673":1,"1368":6,"1369":7,"1370":7,"2164":1,"2649":1}}],["elbow",{"2":{"2312":1}}],["elapses",{"2":{"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1222":1,"1224":1,"1227":1,"1230":1}}],["elapsed32",{"2":{"588":1,"2168":1,"2616":6}}],["elapsed",{"2":{"249":1,"1363":1,"1412":1,"2082":1,"2651":1}}],["elf",{"2":{"236":1,"1324":1,"2464":1,"2508":1,"2552":2}}],["elongate",{"2":{"211":1}}],["ellora65",{"2":{"211":1}}],["ellipse",{"2":{"211":3,"236":1,"2616":3}}],["ellipses",{"2":{"138":1,"2616":3}}],["elevated",{"2":{"2313":1}}],["element++",{"2":{"1853":1,"2177":1}}],["element",{"2":{"1853":2,"2177":2}}],["elements",{"2":{"134":1,"2605":1,"2617":1}}],["electrical",{"2":{"1763":3,"1984":3,"2097":2,"2311":1,"2319":1,"2552":1,"2598":1,"2605":3}}],["electronics",{"2":{"701":1,"1508":1}}],["elephant42",{"2":{"191":2}}],["elephant",{"2":{"67":4,"72":1}}],["elsewhere",{"2":{"501":1,"557":1,"578":1,"1967":1,"2311":1,"2342":1,"2367":1,"2616":1,"2767":1,"2788":1}}],["else",{"2":{"90":6,"105":4,"179":1,"194":1,"196":3,"350":1,"352":2,"453":2,"473":1,"568":1,"572":2,"582":1,"593":1,"594":1,"626":1,"1339":2,"1340":1,"1350":1,"1369":2,"1396":3,"1402":1,"1412":1,"1420":1,"1483":3,"1536":1,"1544":1,"1561":1,"1587":7,"1598":6,"1706":1,"1718":3,"1724":2,"1830":1,"1854":2,"1860":1,"1911":2,"1918":1,"1919":2,"1958":1,"1974":1,"1997":2,"2168":1,"2178":1,"2188":1,"2206":1,"2207":6,"2208":2,"2209":4,"2221":1,"2266":2,"2289":1,"2338":2,"2348":1,"2454":1,"2549":2,"2639":1,"2643":2,"2651":1,"2762":1}}],["eligible",{"2":{"1914":1}}],["eliminating",{"0":{"1912":1},"2":{"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1}}],["eliminate",{"2":{"76":1,"222":1,"277":1,"1706":1,"1912":1,"2318":1,"2605":1}}],["elitec",{"2":{"122":1}}],["elite",{"0":{"1358":1,"1359":1,"1360":1},"1":{"1360":1,"1361":1},"2":{"86":2,"138":1,"189":2,"191":2,"199":1,"1348":7,"1351":2,"1352":4,"1359":5,"2164":1,"2270":1,"2308":1,"2584":2,"2712":1,"2751":1}}],["evaporate",{"2":{"2311":1}}],["evaluate",{"2":{"1980":1}}],["evaluates",{"2":{"1764":2,"1985":2,"2138":1,"2139":1}}],["evaluated",{"2":{"504":1}}],["evaluation",{"2":{"476":1}}],["evaluations",{"0":{"476":1}}],["evo70",{"2":{"211":1}}],["evy",{"0":{"57":1}}],["evyd13",{"0":{"57":1},"2":{"57":22,"211":1}}],["ever",{"2":{"112":1,"139":1,"175":1,"194":1,"1271":1,"1396":3,"2783":1}}],["everytime",{"2":{"2166":1}}],["everything",{"0":{"26":1},"2":{"332":1,"360":1,"582":1,"602":1,"1129":1,"1295":1,"1301":1,"1341":1,"1369":1,"1375":1,"1418":1,"1591":1,"1998":1,"2081":1,"2172":1,"2186":1,"2188":1,"2300":2,"2318":1,"2321":1,"2392":1,"2443":1,"2463":1,"2483":1,"2494":1,"2542":1,"2547":1,"2617":1,"2764":1,"2783":1}}],["everywhere",{"2":{"1974":1}}],["everyone",{"2":{"179":1,"349":1,"350":1,"551":1,"562":1,"1448":1,"1453":1,"2457":1}}],["every",{"0":{"2548":1},"2":{"92":1,"188":1,"194":2,"199":1,"399":1,"415":1,"435":1,"486":1,"497":1,"520":1,"521":1,"522":1,"556":1,"571":1,"586":1,"623":1,"673":1,"683":1,"688":1,"689":1,"1171":2,"1323":1,"1337":1,"1367":1,"1378":1,"1379":1,"1422":1,"1488":1,"1543":1,"1557":1,"1771":1,"1859":1,"1915":1,"1980":2,"1988":1,"1995":1,"2143":3,"2164":1,"2166":1,"2168":1,"2187":1,"2199":2,"2200":1,"2270":1,"2272":1,"2277":1,"2298":1,"2300":1,"2313":1,"2476":1,"2494":1,"2527":1,"2573":1,"2608":1,"2710":1,"2760":1,"2767":1,"2785":2}}],["even",{"2":{"93":1,"138":2,"190":1,"211":1,"459":1,"474":1,"481":1,"496":1,"505":2,"506":1,"533":1,"560":1,"575":1,"586":1,"597":2,"1174":1,"1315":1,"1323":1,"1340":2,"1362":1,"1363":1,"1368":1,"1369":2,"1390":1,"1403":1,"1417":1,"1467":1,"1469":1,"1536":1,"1545":1,"1555":2,"1562":1,"1600":1,"1605":1,"1700":1,"1708":1,"1712":1,"1713":1,"1843":1,"2083":1,"2146":1,"2150":1,"2156":1,"2184":1,"2199":1,"2221":1,"2264":1,"2266":1,"2301":1,"2313":1,"2319":1,"2341":1,"2344":1,"2494":1,"2585":1,"2609":1,"2616":1,"2646":1,"2768":2,"2777":1,"2780":1,"2791":2}}],["eventual",{"2":{"1383":1}}],["eventually",{"2":{"169":1,"1324":1,"2303":1,"2350":1}}],["events",{"0":{"350":1,"1975":1},"2":{"73":2,"203":1,"350":1,"571":1,"572":1,"573":1,"584":1,"1363":2,"1369":1,"1405":1,"1548":1,"1597":1,"1598":1,"1711":1,"1715":1,"1960":1,"1992":1,"2167":1,"2450":1,"2651":1,"2688":1,"2713":2,"2726":1,"2768":1,"2774":4,"2777":1,"2788":2}}],["event",{"0":{"1402":1,"2355":1},"2":{"46":3,"145":1,"176":1,"199":1,"203":1,"350":5,"521":1,"571":1,"573":1,"1312":1,"1336":2,"1394":4,"1403":1,"1404":1,"1406":1,"1485":1,"1548":2,"1561":3,"1565":1,"1713":1,"1866":1,"1960":1,"1975":3,"2105":1,"2109":1,"2113":3,"2190":1,"2353":1,"2680":1,"2681":1,"2701":1,"2769":1,"2770":2,"2771":3,"2772":2,"2773":1,"2779":1,"2788":1}}],["ez",{"2":{"50":1,"114":1,"270":2,"277":1,"378":1,"383":1,"2140":1,"2605":1}}],["e",{"2":{"38":2,"114":2,"266":2,"279":1,"292":1,"313":1,"349":1,"370":1,"371":2,"395":2,"396":2,"408":1,"411":2,"461":1,"506":1,"529":1,"530":2,"626":2,"703":1,"1125":1,"1129":1,"1169":2,"1214":1,"1235":1,"1324":1,"1349":2,"1352":13,"1353":1,"1354":1,"1356":2,"1359":5,"1363":1,"1372":1,"1375":1,"1396":2,"1399":1,"1415":1,"1434":1,"1488":2,"1533":1,"1544":1,"1546":1,"1548":2,"1555":2,"1568":1,"1591":1,"1595":1,"1629":2,"1694":1,"1708":3,"1714":1,"1715":1,"1724":2,"1752":1,"1767":2,"1831":13,"1851":2,"1854":1,"1859":2,"1891":1,"1904":1,"1910":1,"1912":4,"1937":1,"1952":1,"1965":2,"1980":1,"1986":1,"1990":2,"1997":1,"2072":1,"2080":1,"2082":3,"2083":1,"2101":1,"2113":1,"2164":5,"2167":3,"2178":1,"2186":1,"2190":1,"2191":4,"2199":1,"2208":1,"2297":1,"2307":2,"2309":2,"2310":1,"2319":1,"2374":2,"2386":1,"2394":3,"2410":13,"2425":3,"2440":1,"2446":1,"2466":1,"2479":2,"2540":2,"2541":2,"2558":1,"2563":2,"2603":2,"2604":2,"2605":4,"2606":1,"2608":1,"2614":1,"2616":1,"2744":1,"2777":1}}],["eat",{"2":{"2301":1}}],["eabi",{"2":{"325":1}}],["ea1514b3",{"2":{"314":1,"315":1}}],["eagle",{"2":{"211":1}}],["eager",{"2":{"94":1,"114":1,"199":1,"222":1,"236":1,"1363":9,"1366":4,"2713":3}}],["earliest",{"2":{"2563":1,"2564":1}}],["earlier",{"2":{"114":1,"1593":1,"1763":1,"1984":1,"2587":1,"2591":1,"2767":1,"2768":4,"2774":1,"2786":1}}],["early",{"0":{"2562":1,"2563":1,"2564":1},"1":{"2563":1,"2564":1,"2565":1},"2":{"49":1,"63":1,"65":1,"77":1,"279":2,"574":1,"575":1,"1560":1,"1863":1,"1949":1,"1965":1,"2206":1,"2316":1,"2562":2,"2563":5,"2564":4,"2605":5}}],["each",{"0":{"35":1,"1589":1,"1590":1},"1":{"36":1},"2":{"31":3,"34":1,"36":1,"45":2,"65":1,"118":1,"149":1,"160":1,"166":1,"176":2,"188":1,"222":1,"234":1,"273":1,"313":1,"340":1,"349":1,"374":2,"413":1,"414":1,"428":1,"433":1,"462":1,"484":1,"499":1,"502":1,"505":2,"506":1,"509":1,"516":1,"521":1,"556":2,"557":1,"568":1,"569":1,"580":1,"588":3,"610":1,"627":1,"641":1,"654":1,"659":1,"684":1,"697":1,"701":1,"734":1,"755":1,"760":1,"784":1,"792":1,"816":1,"822":1,"848":1,"857":1,"883":1,"891":1,"917":1,"925":1,"951":1,"959":1,"985":1,"993":1,"1019":1,"1027":1,"1053":1,"1061":1,"1087":1,"1095":1,"1143":1,"1148":1,"1171":2,"1180":1,"1185":1,"1218":1,"1249":1,"1254":1,"1272":1,"1273":1,"1289":1,"1302":1,"1349":1,"1363":1,"1366":1,"1368":1,"1377":1,"1383":1,"1393":1,"1394":2,"1422":1,"1443":3,"1475":2,"1478":1,"1488":2,"1489":1,"1555":1,"1560":1,"1585":2,"1592":2,"1594":1,"1595":2,"1596":1,"1600":1,"1611":1,"1650":1,"1652":1,"1676":1,"1695":1,"1710":1,"1714":1,"1721":1,"1763":1,"1768":1,"1840":1,"1842":1,"1854":1,"1858":1,"1859":2,"1860":1,"1891":1,"1950":1,"1952":2,"1958":1,"1984":1,"1988":2,"1992":1,"2069":1,"2070":1,"2076":3,"2078":7,"2081":1,"2121":1,"2125":1,"2155":1,"2163":1,"2164":1,"2168":1,"2169":1,"2172":1,"2178":1,"2180":1,"2185":1,"2199":6,"2200":2,"2205":3,"2208":6,"2215":1,"2219":1,"2220":3,"2272":1,"2296":1,"2297":1,"2303":1,"2307":1,"2310":1,"2312":2,"2313":1,"2315":1,"2318":1,"2328":1,"2329":1,"2350":1,"2354":1,"2386":1,"2393":2,"2441":1,"2444":2,"2446":1,"2463":1,"2526":1,"2538":1,"2562":1,"2583":1,"2587":2,"2597":2,"2606":1,"2613":1,"2614":1,"2615":2,"2616":3,"2624":2,"2631":2,"2632":1,"2634":2,"2636":2,"2653":2,"2654":2,"2655":1,"2725":4,"2726":1,"2727":2,"2728":1,"2733":1,"2734":2,"2769":1,"2774":1,"2779":1,"2792":3,"2796":1}}],["east",{"2":{"1904":1,"2219":1}}],["eason",{"2":{"222":1}}],["ease",{"2":{"70":1,"2219":1,"2357":1}}],["easyeda",{"2":{"93":1}}],["easy",{"0":{"1271":1},"1":{"1272":1},"2":{"6":1,"114":2,"139":1,"325":1,"380":1,"436":1,"453":2,"473":1,"479":1,"550":1,"551":1,"555":1,"557":1,"606":1,"623":1,"636":1,"695":1,"701":1,"1271":3,"1273":1,"1347":1,"1722":1,"2079":1,"2156":1,"2309":1,"2312":1,"2343":1,"2456":2,"2462":1,"2497":1,"2507":1,"2617":1}}],["easiest",{"2":{"557":1,"1272":1,"1529":1,"1763":1,"1984":1,"2199":1,"2219":1,"2313":1,"2365":1,"2654":1}}],["easier",{"2":{"2":1,"10":1,"21":1,"31":1,"45":1,"70":1,"118":1,"130":1,"133":1,"341":1,"363":1,"431":1,"432":1,"457":1,"469":1,"471":1,"481":1,"530":1,"1299":1,"1422":1,"1536":1,"1771":1,"1965":1,"1995":1,"2099":1,"2183":1,"2216":1,"2220":1,"2289":1,"2291":1,"2309":2,"2320":1,"2331":1,"2339":1,"2341":1,"2444":2,"2447":1,"2457":1,"2462":1,"2463":1,"2511":1,"2547":1,"2549":1,"2610":1,"2653":1,"2785":1,"2795":1}}],["easily",{"2":{"6":1,"65":1,"388":1,"615":1,"627":1,"1249":1,"1396":1,"1693":1,"1925":1,"1933":1,"2069":1,"2289":1,"2311":1,"2316":1,"2461":1,"2491":1,"2527":1,"2540":1,"2767":1,"2792":1}}],["exe",{"2":{"2492":3,"2547":1,"2552":1}}],["exercise",{"2":{"1555":1,"2653":1}}],["exec",{"2":{"160":1,"515":1,"596":1,"597":1,"598":1,"599":2,"600":2,"2168":2,"2301":1,"2394":1,"2431":1,"2788":1}}],["executor",{"0":{"597":1,"598":1},"2":{"515":1,"597":1,"598":1,"2301":1}}],["executors",{"2":{"134":1,"601":2}}],["executable",{"2":{"335":1,"2456":1,"2537":1,"2552":2,"2792":1,"2794":1}}],["executions",{"2":{"598":1}}],["execution",{"0":{"596":1,"599":1,"600":1},"1":{"597":1,"598":1,"599":1,"600":1,"601":1},"2":{"65":1,"249":1,"515":1,"597":3,"598":1,"599":2,"600":2,"698":1,"2301":1,"2563":1,"2613":1}}],["executing",{"2":{"49":1,"145":1,"568":1,"597":1,"598":1,"2098":1,"2552":1,"2563":2,"2564":1}}],["executed",{"2":{"424":1,"598":1,"698":2,"2207":1,"2563":3,"2564":2,"2565":1,"2613":1}}],["executes",{"2":{"49":1,"678":1,"681":1}}],["execute",{"2":{"49":1,"65":1,"77":1,"105":2,"247":1,"596":1,"1340":1,"1485":2,"2300":2,"2387":1,"2394":2,"2431":2,"2583":1}}],["exlm",{"2":{"1467":2,"2417":1,"2438":1}}],["exsl",{"2":{"1397":1,"2394":1,"2431":1}}],["exsel",{"2":{"231":2,"1397":3,"2394":2,"2431":2}}],["exhaustion",{"2":{"688":1,"689":1}}],["exhaustive",{"2":{"273":1,"692":1,"2602":1,"2603":1,"2758":1}}],["exisiting",{"2":{"2315":1}}],["existed",{"2":{"2207":1}}],["existence",{"2":{"199":1,"1401":1}}],["exists",{"2":{"191":1,"266":1,"374":2,"405":1,"610":1,"615":1,"1337":2,"1386":1,"1434":1,"1450":1,"1452":1,"1598":1,"1713":1,"1911":1,"2552":1,"2605":1,"2606":1}}],["exist",{"2":{"182":1,"191":1,"199":1,"236":1,"317":2,"496":1,"510":1,"539":1,"554":1,"1302":1,"1435":1,"2207":1,"2303":1,"2387":1,"2569":1,"2626":1,"2633":1,"2792":1}}],["existing",{"0":{"31":1,"34":1,"36":1,"2589":1,"2792":1},"2":{"50":2,"92":1,"118":1,"128":1,"143":1,"151":1,"160":2,"194":1,"201":1,"203":1,"213":1,"221":1,"240":1,"249":1,"262":1,"268":1,"272":1,"275":1,"282":3,"291":1,"331":1,"341":1,"344":1,"352":1,"386":1,"453":2,"481":1,"560":1,"569":1,"571":1,"1378":8,"1381":1,"1383":1,"1694":1,"1953":1,"2307":1,"2366":1,"2484":1,"2527":2,"2540":2,"2547":1,"2552":2,"2589":2,"2603":1,"2605":5,"2606":1,"2792":2}}],["exiting",{"2":{"2188":1,"2269":2,"2276":2}}],["exit",{"2":{"373":2,"393":1,"394":1,"395":1,"396":1,"402":1,"403":1,"411":1,"626":1,"1927":1,"2392":1,"2614":3,"2732":2}}],["exaggeration",{"2":{"2784":1}}],["exactly",{"2":{"1388":1,"1925":1,"2186":1,"2303":1,"2357":1}}],["exact",{"2":{"336":1,"538":1,"597":1,"1555":1,"1643":1,"1713":1,"2234":1,"2235":1,"2236":1,"2289":1,"2367":1,"2766":1,"2784":1}}],["examine",{"2":{"1533":1}}],["examines",{"2":{"376":1,"397":1}}],["examining",{"0":{"316":1}}],["examples",{"0":{"458":1,"1288":1,"1338":1,"1419":1,"1548":1,"1572":1,"1630":1,"1694":1,"1702":1,"1705":1,"1854":1,"1957":1,"1961":1,"1976":1,"1996":1,"1997":1,"2115":1,"2178":1,"2201":1,"2203":1},"1":{"1289":1,"1290":1,"1339":1,"1340":1,"1420":1,"1421":1,"1422":1,"1631":1,"1632":1,"1703":1,"1704":1,"1706":1,"1958":1,"1959":1,"1960":1,"1962":1,"1963":1,"1977":1,"1978":1,"1997":1,"1998":1,"2116":1,"2117":1,"2202":1,"2203":1,"2204":2,"2205":2,"2206":2,"2207":2,"2208":2,"2209":2},"2":{"99":1,"114":1,"198":1,"375":1,"376":1,"378":1,"380":1,"381":1,"405":1,"407":1,"411":1,"557":1,"609":2,"1288":1,"1338":1,"1367":1,"1383":1,"1403":1,"1555":1,"1556":1,"1693":1,"1700":1,"1715":1,"1767":1,"1925":1,"1961":1,"1990":1,"2185":1,"2186":1,"2199":1,"2200":1,"2203":3,"2209":4,"2300":1,"2309":1,"2323":1,"2333":1,"2350":1,"2521":1,"2614":3,"2616":2,"2690":1,"2777":1,"2791":1}}],["example",{"0":{"313":1,"414":1,"419":1,"420":1,"421":1,"422":1,"463":1,"464":1,"465":1,"530":1,"572":1,"576":1,"582":1,"585":1,"588":1,"590":1,"593":1,"594":1,"1369":1,"1380":1,"1381":1,"1411":1,"1429":1,"1473":1,"1483":1,"1485":1,"1508":1,"1701":1,"1724":1,"1755":1,"1756":1,"1830":1,"1852":1,"1853":1,"1927":1,"2077":1,"2176":1,"2177":1,"2202":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1,"2609":1,"2643":1,"2645":1},"1":{"1412":1},"2":{"49":2,"70":1,"90":2,"98":1,"99":2,"105":2,"111":1,"114":2,"160":1,"194":1,"202":1,"203":1,"211":1,"234":1,"272":1,"301":1,"314":1,"331":3,"358":1,"370":2,"373":1,"374":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"401":1,"414":2,"415":3,"417":2,"423":2,"424":1,"425":2,"426":4,"430":2,"432":1,"437":1,"441":2,"453":1,"470":1,"473":1,"513":1,"529":1,"532":1,"540":1,"554":1,"556":2,"557":1,"570":1,"572":1,"576":1,"582":1,"585":2,"588":1,"589":1,"597":1,"601":1,"611":1,"616":1,"624":2,"626":1,"659":1,"674":1,"690":1,"701":1,"703":2,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1169":1,"1171":1,"1185":1,"1214":2,"1218":1,"1235":2,"1253":1,"1275":1,"1289":1,"1290":1,"1306":1,"1330":1,"1336":1,"1337":2,"1339":2,"1340":2,"1349":1,"1350":1,"1362":2,"1368":1,"1369":4,"1372":1,"1376":1,"1380":2,"1381":1,"1388":1,"1394":8,"1396":1,"1397":1,"1398":2,"1401":1,"1402":1,"1413":1,"1414":1,"1418":1,"1419":3,"1422":1,"1425":1,"1428":1,"1430":1,"1432":1,"1442":1,"1449":1,"1453":1,"1467":1,"1468":1,"1482":1,"1484":1,"1485":1,"1488":2,"1501":1,"1506":1,"1508":1,"1534":1,"1536":1,"1540":1,"1547":1,"1548":3,"1555":1,"1556":1,"1560":2,"1561":2,"1562":1,"1567":1,"1572":1,"1595":1,"1596":1,"1600":2,"1620":1,"1632":1,"1671":1,"1672":1,"1692":1,"1701":1,"1703":1,"1704":1,"1706":2,"1708":1,"1722":1,"1724":1,"1755":1,"1756":1,"1757":1,"1758":1,"1762":1,"1763":1,"1767":1,"1829":1,"1840":1,"1842":1,"1845":1,"1851":1,"1852":1,"1853":1,"1855":1,"1859":1,"1891":1,"1894":1,"1895":1,"1897":2,"1906":1,"1911":2,"1917":1,"1919":1,"1925":1,"1927":1,"1955":1,"1958":1,"1960":1,"1962":1,"1963":1,"1979":1,"1983":1,"1984":1,"1990":1,"1997":1,"2079":1,"2085":1,"2089":1,"2097":1,"2105":1,"2117":2,"2151":1,"2160":1,"2164":1,"2168":1,"2175":1,"2176":1,"2177":1,"2183":1,"2184":1,"2187":1,"2190":1,"2193":2,"2195":1,"2198":1,"2199":2,"2202":1,"2205":1,"2207":5,"2208":1,"2209":2,"2219":2,"2220":1,"2221":1,"2291":2,"2297":1,"2300":4,"2316":1,"2332":2,"2334":1,"2338":2,"2339":1,"2341":1,"2342":1,"2345":1,"2348":3,"2350":2,"2356":1,"2358":1,"2370":1,"2383":1,"2386":3,"2387":1,"2388":1,"2406":1,"2432":1,"2441":1,"2443":1,"2446":1,"2450":1,"2452":1,"2453":1,"2454":1,"2460":2,"2491":1,"2508":2,"2529":1,"2530":1,"2563":1,"2585":1,"2587":1,"2588":1,"2589":1,"2598":1,"2603":1,"2605":3,"2615":1,"2616":1,"2651":1,"2656":1,"2710":1,"2711":6,"2712":2,"2713":1,"2721":1,"2725":6,"2727":4,"2728":3,"2733":3,"2734":4,"2735":1,"2736":1,"2738":3,"2740":1,"2741":1,"2767":3,"2773":3,"2774":1,"2775":1,"2776":1,"2782":1,"2785":2,"2787":1,"2789":1,"2792":1,"2794":1,"2796":1}}],["exclaim",{"2":{"2417":1,"2438":1}}],["exclamation",{"2":{"1467":1}}],["excluding",{"0":{"441":1},"2":{"502":1,"1494":1,"1915":1,"2716":1}}],["excluded",{"2":{"441":1,"2089":2}}],["exclude",{"2":{"176":2,"610":2,"1483":7}}],["exclusion",{"0":{"1619":1},"1":{"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1},"2":{"1619":2}}],["exclusions",{"2":{"114":1,"160":1}}],["exclusively",{"2":{"303":1,"2280":1}}],["exclusive",{"2":{"145":1,"1376":1}}],["exchangeable",{"2":{"683":1}}],["excess",{"2":{"617":1,"2312":1}}],["excessive",{"2":{"469":1,"688":1,"2623":1}}],["except",{"2":{"453":1,"461":2,"466":1,"502":1,"726":1,"1251":1,"1279":1,"1372":1,"1692":1,"1958":1,"2268":1,"2278":1,"2288":1,"2341":1,"2406":1,"2781":1}}],["exceptional",{"2":{"466":1}}],["exceptionname",{"2":{"460":1}}],["exception",{"2":{"189":1,"194":1,"461":1,"466":3,"1427":1,"1434":1,"2207":1,"2366":1,"2424":1,"2589":1,"2626":1}}],["exceptions",{"0":{"466":1},"2":{"145":1,"466":1,"625":1,"1482":1,"1965":1,"1980":1,"2342":1}}],["exceed",{"2":{"2307":1}}],["exceeds",{"2":{"176":1,"481":1}}],["exceeding",{"2":{"145":1}}],["exceeded",{"2":{"28":1,"516":1,"1462":1}}],["ext",{"2":{"2584":1}}],["extreg",{"2":{"1943":5}}],["extremely",{"2":{"479":1,"584":1,"628":1,"2502":1,"2778":1}}],["extraneous",{"2":{"2744":1}}],["extracondensedbold",{"2":{"2614":1}}],["extracts",{"2":{"613":1}}],["extracted",{"2":{"249":1,"2537":1}}],["extract",{"0":{"613":1},"2":{"236":1,"249":5,"277":1,"282":1,"607":1,"613":4,"2536":1,"2726":1}}],["extraction",{"2":{"191":1}}],["extrapolates",{"2":{"606":1}}],["extrakeys",{"2":{"191":1,"2744":1}}],["extrakey",{"2":{"70":1,"111":1,"191":1,"209":1,"515":1,"516":2,"1324":1,"1328":2,"2101":1,"2301":1,"2744":1}}],["extras",{"2":{"48":1,"114":1,"145":1,"199":2,"222":1,"277":1,"2742":1}}],["extra",{"0":{"546":1,"1328":1},"2":{"45":2,"114":1,"156":1,"176":1,"191":2,"199":1,"317":1,"563":1,"633":1,"671":1,"693":1,"1324":2,"1428":1,"1500":1,"1552":7,"2080":1,"2169":2,"2188":1,"2300":1,"2315":1,"2388":1,"2462":1,"2545":1,"2562":1,"2569":1,"2614":1,"2768":1}}],["extkeys",{"2":{"154":2}}],["extern",{"2":{"266":1,"1830":1,"2791":1}}],["externs",{"2":{"196":1}}],["externally",{"2":{"224":1,"228":1,"317":1,"2480":1}}],["external",{"0":{"228":1,"392":1,"2330":1,"2480":1,"2482":1,"2483":1,"2485":1,"2486":1},"1":{"393":1,"394":1,"395":1,"396":1,"397":1,"2481":1,"2482":1,"2483":1,"2484":1,"2485":1,"2486":1,"2487":1},"2":{"73":1,"114":1,"134":1,"160":1,"174":1,"220":1,"224":1,"228":3,"241":2,"253":2,"268":1,"270":2,"393":1,"394":1,"395":1,"396":1,"397":1,"638":1,"671":1,"674":10,"675":5,"678":1,"680":6,"681":1,"694":7,"1126":1,"1134":1,"1262":1,"1761":1,"1767":1,"1852":1,"1982":1,"1990":1,"2330":1,"2480":5,"2481":1,"2482":1,"2483":1,"2484":2,"2485":2,"2486":3,"2487":1,"2570":1,"2583":2,"2593":1,"2605":1,"2613":1,"2616":1,"2677":1}}],["extent",{"2":{"2195":1,"2616":1}}],["extensively",{"2":{"470":1}}],["extensive",{"2":{"355":1,"1304":1}}],["extensions",{"0":{"2549":1},"2":{"2549":2}}],["extension",{"2":{"199":1,"211":1,"454":1,"460":1,"505":2,"1842":1,"2549":3,"2551":2,"2585":1}}],["extensible",{"2":{"107":1,"114":1,"2531":1}}],["extending",{"0":{"599":1},"2":{"505":2,"571":1}}],["extend",{"2":{"145":1,"191":1,"599":2}}],["extended",{"2":{"74":1,"176":2,"211":1,"236":1,"435":2,"505":2,"674":1,"675":1,"676":1,"1553":1,"1952":2,"2382":1,"2383":1,"2385":1,"2387":2,"2569":1,"2742":2,"2759":1}}],["ext65",{"0":{"60":1},"2":{"60":1}}],["expires",{"2":{"2776":1}}],["expired",{"2":{"1980":1,"2768":1}}],["expansion",{"2":{"2329":1}}],["expands",{"2":{"395":1,"2767":1}}],["expanding",{"2":{"300":1,"1373":1,"2450":1}}],["expandable",{"2":{"300":1}}],["expanders",{"2":{"2323":1}}],["expander",{"2":{"266":1}}],["expanded",{"0":{"118":1},"2":{"70":1,"506":1,"1302":1,"2080":1}}],["expand",{"2":{"134":1,"160":1,"331":1,"395":1,"2767":1}}],["expression",{"2":{"469":1}}],["expressions",{"0":{"471":1,"473":1},"2":{"374":1,"473":1}}],["expressed",{"2":{"70":1}}],["explore",{"2":{"2319":1,"2363":1,"2463":1}}],["explorer",{"2":{"2283":1,"2285":1,"2287":1,"2491":2,"2540":1}}],["explanations",{"2":{"2298":1}}],["explanation",{"2":{"1371":1,"2200":1,"2210":1}}],["explained",{"2":{"1382":1,"2300":1}}],["explain",{"2":{"453":1,"455":1,"554":1,"560":1,"1713":1,"2294":1,"2781":1}}],["explains",{"2":{"412":1,"1710":1,"2336":1}}],["explaining",{"2":{"173":1,"1710":1,"2605":1,"2785":1,"2789":1}}],["explicit",{"0":{"124":1},"2":{"134":1,"198":1,"1565":1}}],["explicitly",{"2":{"14":1,"114":1,"191":1,"469":1,"674":1,"1469":1,"1532":1,"1566":1,"2075":1,"2089":1,"2188":1,"2750":1}}],["exporting",{"2":{"2614":2}}],["exports",{"2":{"370":2,"371":1}}],["exported",{"2":{"317":1}}],["export",{"2":{"134":1,"365":1,"366":1,"379":1,"391":1,"393":2,"394":2,"441":1,"519":1,"2316":2,"2605":1}}],["exposes",{"2":{"1350":1,"2343":1}}],["exposed",{"2":{"679":1,"680":1,"681":1,"2313":2,"2554":1,"2722":1}}],["expose",{"2":{"114":1,"145":1,"176":1,"211":1,"2344":1}}],["expert",{"2":{"703":2}}],["experiment",{"2":{"1937":1,"2319":1}}],["experimentation",{"2":{"556":1}}],["experimental",{"2":{"511":1,"1136":1,"1440":1,"2140":2,"2166":1}}],["experiencing",{"2":{"1297":1}}],["experience",{"2":{"496":1,"552":1,"1136":1,"1265":1,"1440":1,"1442":1,"2163":1,"2511":1}}],["expense",{"2":{"496":1,"2264":1}}],["expensive",{"2":{"114":1,"1366":1,"1771":1,"1995":1,"2308":1}}],["expects",{"2":{"1715":1,"2184":1,"2614":1,"2777":1}}],["expect",{"2":{"437":1,"1323":1,"1362":1,"1949":1,"2351":1,"2494":1,"2738":1,"2795":1}}],["expecting",{"2":{"124":1}}],["expected",{"2":{"4":1,"13":1,"317":1,"352":1,"701":1,"1484":1,"1723":1,"1763":3,"1965":1,"1984":3,"2188":1,"2725":1,"2769":1}}],["erm",{"0":{"1614":1},"2":{"1609":1,"1614":2,"1615":2}}],["err",{"2":{"496":1}}],["erroneous",{"2":{"145":1,"160":1}}],["error",{"0":{"152":1},"2":{"28":1,"92":1,"103":1,"114":4,"126":1,"145":1,"160":4,"176":3,"191":2,"199":3,"201":1,"211":1,"222":4,"236":1,"315":1,"433":1,"500":1,"516":1,"522":1,"556":1,"679":1,"710":2,"713":2,"716":2,"719":2,"722":2,"725":2,"728":2,"1227":2,"1230":2,"1375":1,"1474":1,"1896":1,"1948":1,"2318":1,"2339":1,"2392":1,"2476":1,"2493":1,"2507":1,"2513":1}}],["errors",{"0":{"2347":1},"2":{"17":1,"34":1,"73":2,"92":1,"114":2,"134":1,"145":2,"160":1,"191":2,"199":1,"211":2,"316":1,"360":1,"381":1,"481":1,"556":3,"1324":1,"1349":1,"1474":1,"1948":1,"2166":2,"2182":1,"2300":1,"2318":1,"2347":2,"2374":1,"2467":1,"2476":1,"2478":1,"2547":1,"2626":1,"2632":1,"2633":1,"2791":1}}],["eras",{"2":{"2394":1,"2431":1}}],["erasing",{"2":{"2386":1,"2392":1,"2492":1}}],["erased",{"2":{"2392":8}}],["erase",{"2":{"277":2,"673":1,"677":1,"680":1,"1275":1,"1324":1,"1853":1,"2177":1,"2268":2,"2386":1,"2394":2,"2431":2,"2492":1,"2516":1}}],["era",{"2":{"236":1,"249":1}}],["era65",{"2":{"222":1}}],["erovia",{"2":{"164":1}}],["ergotaco",{"2":{"154":2}}],["ergodash",{"2":{"154":4}}],["ergodone",{"2":{"102":2}}],["ergodox",{"0":{"1760":1},"2":{"8":1,"114":3,"134":1,"154":2,"211":1,"378":1,"1366":1,"1760":7,"2174":1,"2205":9,"2300":2}}],["ergoarrows",{"2":{"154":2}}],["ergo42",{"2":{"154":2}}],["ergo",{"2":{"154":2}}],["ergosaurus",{"2":{"144":2}}],["ergoinu",{"2":{"37":2,"160":1}}],["enamelled",{"2":{"2309":1}}],["enablehexnumpad",{"2":{"2221":1}}],["enable=true",{"2":{"1282":1,"1292":1}}],["enable=yes",{"2":{"93":1,"277":1,"375":1,"1291":1,"2101":1,"2794":1}}],["enabled",{"0":{"504":1,"1520":1,"1779":1,"2006":1},"1":{"1521":1,"1780":1,"2007":1},"2":{"112":3,"114":2,"174":1,"191":1,"209":4,"211":1,"222":2,"236":1,"249":2,"265":1,"268":1,"275":2,"277":1,"388":1,"397":1,"502":9,"505":1,"515":1,"516":1,"592":2,"636":1,"673":1,"686":1,"698":3,"1265":1,"1280":1,"1287":2,"1289":1,"1331":1,"1350":1,"1353":2,"1354":2,"1358":1,"1369":5,"1378":4,"1394":1,"1414":1,"1421":7,"1435":1,"1439":1,"1450":1,"1455":1,"1460":1,"1468":3,"1469":1,"1476":1,"1483":1,"1486":1,"1492":1,"1521":1,"1526":1,"1532":1,"1538":1,"1553":1,"1564":1,"1566":1,"1586":1,"1594":1,"1597":1,"1608":1,"1617":1,"1619":1,"1706":1,"1708":2,"1768":2,"1779":1,"1780":1,"1789":1,"1790":1,"1791":1,"1792":1,"1811":1,"1831":1,"1897":2,"1910":1,"1934":1,"1946":1,"1964":1,"1965":1,"1967":2,"1974":3,"1979":4,"1986":1,"1992":2,"2006":1,"2007":1,"2016":1,"2017":1,"2018":1,"2019":1,"2056":1,"2070":1,"2072":1,"2074":1,"2090":7,"2094":1,"2095":1,"2101":2,"2111":1,"2112":1,"2145":1,"2152":1,"2167":3,"2169":3,"2211":2,"2218":1,"2221":2,"2264":1,"2293":1,"2298":1,"2301":1,"2343":1,"2387":1,"2410":1,"2541":1,"2605":3,"2613":2,"2616":1,"2646":1,"2713":1,"2715":2,"2716":2,"2718":1,"2719":1,"2721":1,"2727":1,"2729":1,"2731":2,"2733":3,"2734":1,"2735":1,"2736":2,"2737":1,"2744":1,"2750":2,"2774":3,"2775":3,"2777":2}}],["enables",{"2":{"87":1,"114":1,"119":1,"502":7,"504":1,"505":6,"506":1,"513":1,"515":2,"582":1,"820":1,"1171":2,"1251":1,"1436":4,"1461":1,"1468":1,"1469":1,"1564":1,"1766":20,"1846":1,"1855":1,"1867":1,"1910":1,"1945":1,"1946":1,"1952":1,"1962":1,"1969":1,"1987":48,"2167":8,"2169":1,"2210":1,"2211":4,"2301":7,"2578":1,"2687":1,"2718":1,"2719":1,"2729":1,"2757":1,"2766":1,"2776":1}}],["enable",{"0":{"1450":1,"1476":1,"1511":1,"1523":1,"1537":1,"1775":1,"1776":1,"1908":1,"1967":1,"1974":1,"2002":1,"2003":1,"2091":1,"2141":1},"1":{"1538":1},"2":{"10":1,"28":1,"31":3,"34":3,"49":1,"65":5,"70":1,"74":1,"75":1,"87":3,"88":7,"93":2,"94":1,"103":1,"104":7,"114":6,"118":1,"119":1,"124":1,"126":1,"127":7,"131":1,"133":1,"134":12,"145":1,"160":2,"176":5,"191":3,"194":2,"199":1,"202":2,"209":2,"211":2,"222":2,"232":1,"234":1,"235":2,"236":2,"247":1,"249":1,"266":35,"273":1,"277":2,"318":1,"370":1,"429":1,"448":1,"502":2,"504":2,"505":4,"511":8,"513":1,"515":24,"516":7,"533":1,"582":1,"588":1,"596":2,"656":1,"658":1,"686":1,"687":1,"690":1,"698":1,"703":4,"733":1,"750":3,"752":1,"759":1,"777":3,"779":1,"791":1,"818":1,"820":1,"821":1,"841":3,"843":1,"856":1,"876":3,"878":1,"890":1,"910":3,"912":1,"924":1,"944":3,"946":1,"958":1,"978":3,"980":1,"992":1,"1026":1,"1060":1,"1094":1,"1130":1,"1138":2,"1147":1,"1163":3,"1174":1,"1184":1,"1204":3,"1206":1,"1214":3,"1235":2,"1254":1,"1263":2,"1265":1,"1267":1,"1282":2,"1289":2,"1290":1,"1292":1,"1313":3,"1317":4,"1318":1,"1324":4,"1325":1,"1328":2,"1335":3,"1337":2,"1351":1,"1356":1,"1369":3,"1414":3,"1420":1,"1421":4,"1423":1,"1427":1,"1434":2,"1435":2,"1436":2,"1439":1,"1442":1,"1443":1,"1450":1,"1451":1,"1468":1,"1470":1,"1476":3,"1483":1,"1485":4,"1486":1,"1492":1,"1494":4,"1506":1,"1507":1,"1530":2,"1532":1,"1537":1,"1538":2,"1540":1,"1545":2,"1549":1,"1564":1,"1566":1,"1568":1,"1570":1,"1585":1,"1586":2,"1587":2,"1591":2,"1595":1,"1597":2,"1598":1,"1608":7,"1628":1,"1669":1,"1690":2,"1695":2,"1706":1,"1717":1,"1721":2,"1723":1,"1724":3,"1752":1,"1756":2,"1766":22,"1768":1,"1825":2,"1827":1,"1828":1,"1837":1,"1838":2,"1842":1,"1843":3,"1845":1,"1850":2,"1851":1,"1854":1,"1863":1,"1868":2,"1871":1,"1893":2,"1894":2,"1895":2,"1896":2,"1899":4,"1901":2,"1905":1,"1908":1,"1923":1,"1933":2,"1934":1,"1940":13,"1944":1,"1945":4,"1946":5,"1948":1,"1950":1,"1952":6,"1953":1,"1955":1,"1960":1,"1961":1,"1962":1,"1964":1,"1967":3,"1969":1,"1974":6,"1977":3,"1979":1,"1987":50,"1989":1,"1992":1,"1996":1,"1997":1,"2070":2,"2073":1,"2075":11,"2079":1,"2080":2,"2081":1,"2082":3,"2091":2,"2094":1,"2101":4,"2106":1,"2111":1,"2141":1,"2142":1,"2144":1,"2145":4,"2149":1,"2159":1,"2164":1,"2167":13,"2169":4,"2175":3,"2178":1,"2183":3,"2184":2,"2185":1,"2186":1,"2187":2,"2188":1,"2192":1,"2195":2,"2199":1,"2202":1,"2210":2,"2219":4,"2220":2,"2221":3,"2263":2,"2269":1,"2276":1,"2301":17,"2302":2,"2338":5,"2339":2,"2344":4,"2409":2,"2435":2,"2552":4,"2561":1,"2604":1,"2605":8,"2611":1,"2612":2,"2613":1,"2615":12,"2618":2,"2713":3,"2721":1,"2727":1,"2731":2,"2733":4,"2734":1,"2735":1,"2736":1,"2737":1,"2739":1,"2744":8,"2745":2,"2746":1,"2748":2,"2750":46,"2766":1,"2767":5,"2774":1,"2777":1,"2796":1}}],["enabling",{"0":{"124":1,"234":1,"1331":1,"1838":1,"2081":1,"2618":1,"2622":1},"2":{"10":1,"50":1,"107":2,"134":1,"190":1,"191":1,"195":1,"232":2,"234":1,"388":1,"505":1,"512":1,"1232":1,"1313":1,"1440":1,"2169":1,"2188":1,"2487":1,"2605":1,"2615":11,"2617":1,"2744":2}}],["enjoy",{"2":{"2301":1}}],["enqueue",{"2":{"2200":1}}],["enqueued",{"2":{"314":1,"315":1}}],["energy",{"2":{"551":1,"1528":1}}],["enough",{"2":{"334":1,"486":1,"538":1,"556":1,"585":1,"588":2,"621":1,"1123":1,"1126":1,"1129":1,"1340":1,"1449":1,"1552":1,"1709":1,"1754":1,"1842":1,"1860":1,"2181":1,"2199":1,"2313":2,"2315":1,"2318":1,"2466":1,"2496":1,"2552":1,"2603":1,"2744":1}}],["encryption",{"2":{"2103":1}}],["encompasses",{"2":{"2361":1}}],["encompass",{"2":{"602":1,"606":1,"1341":1}}],["encountering",{"2":{"1704":1}}],["encountered",{"2":{"1278":1,"2112":1}}],["encounter",{"2":{"541":1,"1893":1,"2289":1,"2344":1,"2505":1}}],["encouraging",{"2":{"482":1}}],["encourages",{"2":{"1302":1}}],["encouraged",{"2":{"474":1,"496":1,"2593":1,"2603":1,"2608":1,"2757":1}}],["encourage",{"2":{"453":1,"455":1,"471":1,"537":1,"1566":1,"2605":1,"2695":1}}],["encodes",{"2":{"2186":1}}],["encode",{"2":{"1488":3}}],["encoded",{"2":{"1488":5}}],["encoder2b",{"2":{"1595":1,"1596":1,"2169":1}}],["encoder2a",{"2":{"1595":1,"1596":1,"2169":1}}],["encoder1b",{"2":{"1595":1,"1596":1,"2169":1}}],["encoder1a",{"2":{"1595":1,"1596":1,"2169":1}}],["encodermap",{"2":{"199":2}}],["encoder+encoder",{"2":{"176":1}}],["encoders",{"0":{"1595":1,"1600":1},"1":{"1596":1,"1597":1,"1598":1,"1599":1,"1600":1},"2":{"13":1,"114":3,"139":1,"145":1,"198":1,"201":3,"236":1,"277":1,"1595":3,"1596":1,"1597":3,"1598":1,"1599":1,"1600":6,"2195":3,"2605":1}}],["encoder",{"0":{"13":1,"90":1,"139":1,"209":1,"218":1,"1597":1,"2195":1,"2723":1},"1":{"2196":1},"2":{"13":2,"63":2,"74":1,"90":11,"93":1,"105":1,"110":1,"114":1,"134":1,"139":2,"145":3,"176":5,"191":5,"199":2,"201":3,"209":5,"211":8,"218":2,"222":3,"226":4,"247":1,"249":3,"255":1,"266":3,"277":2,"588":2,"630":1,"1271":2,"1595":13,"1596":13,"1597":16,"1598":9,"1600":9,"1986":1,"2072":1,"2169":3,"2195":5,"2605":4,"2623":1,"2723":5,"2725":2,"2736":2}}],["encoding",{"0":{"1488":1},"2":{"73":1,"211":1,"1252":1,"2614":2,"2624":1,"2631":1,"2705":1}}],["enclosing",{"2":{"294":1}}],["enhance",{"2":{"277":1,"320":1}}],["enhancement",{"2":{"93":1,"145":1,"222":2,"236":2,"249":1}}],["enhancements",{"0":{"49":1,"63":1,"74":1,"93":1},"2":{"211":1}}],["en",{"2":{"249":1,"656":1,"674":3,"1330":2}}],["english",{"2":{"211":1,"1392":1,"1478":4,"1912":1,"1921":1,"2186":1,"2430":1,"2696":1,"2742":5}}],["engine",{"2":{"145":1,"303":1,"1482":1}}],["env",{"2":{"93":1,"396":4,"411":4,"2547":1}}],["environments",{"2":{"132":1}}],["environment",{"0":{"310":1,"2460":1,"2469":1,"2495":1,"2497":1,"2508":1,"2533":1},"1":{"2470":1,"2471":1,"2472":1,"2496":1,"2497":1,"2498":2,"2499":2,"2500":2,"2501":2,"2502":2,"2503":2,"2504":2,"2505":2,"2506":2,"2507":1,"2508":1},"2":{"23":1,"321":1,"365":1,"366":1,"367":1,"376":4,"397":1,"401":1,"428":1,"437":1,"558":1,"624":2,"625":1,"1274":1,"2289":1,"2291":1,"2316":1,"2339":1,"2380":1,"2385":1,"2457":1,"2459":1,"2460":1,"2461":2,"2464":1,"2467":2,"2493":1,"2495":1,"2497":2,"2508":1,"2511":1,"2531":1}}],["enumerating",{"2":{"570":2,"1927":1,"2303":1}}],["enumeration",{"2":{"515":1,"2738":2}}],["enumerated",{"2":{"1396":1}}],["enumerate",{"2":{"570":1,"1927":1,"2382":1}}],["enums",{"2":{"199":1,"453":1,"557":1,"2203":2,"2207":1,"2462":1,"2604":2}}],["enum",{"2":{"50":1,"453":1,"532":1,"534":2,"557":1,"628":2,"1381":1,"1396":1,"1412":1,"1416":1,"1422":1,"1548":1,"1555":1,"1830":1,"1859":2,"1860":2,"1979":1,"2181":2,"2202":1,"2203":1,"2207":3,"2208":2,"2209":3,"2219":2,"2444":1}}],["ent",{"2":{"313":1,"530":2,"1422":1,"1460":1,"1555":1,"1972":1,"2151":1,"2199":2,"2394":1,"2427":1,"2446":1}}],["entities",{"0":{"286":1}}],["entirely",{"2":{"50":1,"222":1,"273":1,"352":1,"453":1,"1484":1,"1988":1,"2341":1,"2444":1,"2463":1,"2615":1}}],["entire",{"0":{"419":1},"2":{"50":1,"137":1,"199":1,"231":1,"249":1,"407":1,"411":1,"418":2,"1366":1,"1722":1,"1723":1,"1860":3,"2160":1,"2394":1,"2432":1,"2615":3,"2626":2,"2633":2,"2759":1}}],["entered",{"2":{"2513":2}}],["enters",{"2":{"2271":1,"2273":1}}],["entering",{"2":{"324":1,"592":1,"626":1,"2269":1,"2276":1,"2359":1,"2527":1,"2556":1,"2560":1,"2578":1}}],["enter80",{"2":{"241":2}}],["enter67",{"2":{"241":2}}],["enter",{"0":{"1459":1,"2359":1},"2":{"176":1,"211":1,"325":1,"335":2,"572":4,"624":1,"626":1,"1369":3,"1375":1,"1436":1,"1459":1,"1460":1,"1555":1,"1622":1,"1972":1,"2113":1,"2116":1,"2147":1,"2148":2,"2188":1,"2199":2,"2220":1,"2234":1,"2235":2,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":1,"2301":1,"2303":1,"2387":1,"2394":4,"2421":2,"2427":2,"2433":2,"2489":1,"2526":2,"2528":1,"2563":2,"2569":1,"2578":1,"2580":1,"2592":2,"2654":2,"2656":1,"2658":1,"2725":1}}],["entry",{"0":{"2578":1},"2":{"160":1,"176":1,"222":1,"236":1,"540":1,"627":2,"1478":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"2192":1,"2200":3,"2220":2,"2541":1,"2578":1,"2604":1,"2634":1,"2636":3,"2782":1}}],["entrypoint",{"2":{"94":1,"306":1,"428":2}}],["entries",{"0":{"3":1,"7":1,"15":1},"2":{"628":1,"1442":1,"1478":1,"1532":1,"1533":1,"1563":1,"2219":1,"2636":2}}],["ensures",{"2":{"209":1,"511":4,"1349":1,"2168":1,"2289":1,"2311":1,"2616":1}}],["ensure",{"2":{"31":1,"34":1,"90":1,"92":1,"160":1,"176":2,"191":3,"198":1,"240":1,"249":4,"317":1,"341":1,"366":1,"399":1,"407":1,"411":1,"483":1,"562":1,"584":1,"636":1,"674":1,"1126":1,"1292":1,"1351":1,"1418":1,"1721":1,"1965":1,"1974":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2283":1,"2285":1,"2287":1,"2288":1,"2307":1,"2311":1,"2312":1,"2502":1,"2546":1,"2552":1,"2585":1,"2587":2,"2605":1,"2606":1,"2616":1}}],["ended",{"2":{"2207":1}}],["endianness",{"2":{"1218":1,"1231":1}}],["endian",{"2":{"717":1,"723":1,"1488":1,"2624":1,"2631":1}}],["ending",{"2":{"265":1,"399":1,"1855":1,"2179":1}}],["endings",{"2":{"249":1,"277":1,"399":2,"2545":1}}],["endif",{"2":{"31":2,"34":2,"134":1,"247":1,"292":1,"453":1,"588":3,"1289":1,"1350":1,"1388":2,"1414":2,"1421":2,"1422":2,"1435":2,"1460":6,"1483":3,"1485":4,"1586":1,"1587":2,"1597":1,"1724":3,"1756":2,"1767":1,"1851":1,"1854":1,"1860":1,"1893":1,"1894":1,"1896":1,"1950":1,"1990":1,"2175":1,"2178":1,"2195":1,"2206":1,"2338":5,"2339":3,"2748":2}}],["endpoints",{"0":{"263":1},"2":{"176":1,"266":1,"317":2,"516":4,"1826":1,"2188":1}}],["endpoint",{"0":{"516":1},"2":{"49":1,"50":4,"112":2,"145":1,"191":1,"236":1,"249":1,"307":1,"314":1,"317":4,"514":1,"516":4,"2188":1,"2276":1,"2738":3}}],["ends",{"2":{"28":1,"124":1,"1475":2,"1718":1,"1724":1,"1728":1,"2190":1,"2200":1,"2508":1}}],["end",{"0":{"1728":1,"1730":1},"2":{"3":1,"15":1,"137":1,"160":1,"196":2,"199":1,"211":1,"255":2,"265":2,"350":5,"352":1,"435":1,"450":1,"453":2,"530":2,"534":1,"550":1,"574":1,"587":1,"588":1,"606":1,"609":1,"679":2,"1231":1,"1292":1,"1324":1,"1363":2,"1381":3,"1400":1,"1536":1,"1545":3,"1546":2,"1547":2,"1548":7,"1555":1,"1560":1,"1561":1,"1572":1,"1594":1,"1624":1,"1718":1,"1724":1,"1730":1,"1851":1,"1855":1,"1860":2,"1910":3,"2089":2,"2175":1,"2179":1,"2190":1,"2199":1,"2200":1,"2207":1,"2300":1,"2311":3,"2312":3,"2318":1,"2388":2,"2391":1,"2394":3,"2431":2,"2433":1,"2447":1,"2464":1,"2476":1,"2506":1,"2513":2,"2542":1,"2564":1,"2603":1,"2605":1,"2615":1,"2616":1,"2773":1,"2783":1,"2796":2}}],["lr",{"2":{"1858":2,"2191":3}}],["lra",{"0":{"1615":1},"2":{"1609":1,"1614":1,"1615":5}}],["lpt",{"2":{"2386":1}}],["lp",{"2":{"2208":3}}],["lprn",{"2":{"1692":1,"2208":5,"2417":1,"2438":1}}],["lpad",{"2":{"241":2,"2394":1,"2432":1}}],["lgr",{"2":{"2191":1}}],["lg",{"2":{"1616":10}}],["lgui",{"2":{"196":1,"313":1,"530":2,"1336":1,"1337":1,"1398":1,"1403":1,"1440":1,"1718":1,"1724":1,"2394":1,"2409":4,"2412":1,"2413":1,"2429":1,"2435":4,"2444":1,"2446":1,"2449":2}}],["l65",{"2":{"1609":1}}],["lyr",{"2":{"1369":2}}],["lyso1",{"2":{"154":2,"160":2}}],["lbrc",{"2":{"313":1,"530":2,"1910":1,"2394":1,"2427":1,"2446":1}}],["l17",{"2":{"1533":2}}],["l16",{"2":{"1533":2}}],["l15",{"2":{"1533":2}}],["l14",{"2":{"1533":2}}],["l13",{"2":{"1533":2}}],["l12",{"2":{"1533":2}}],["l11",{"2":{"1533":2}}],["l10",{"2":{"1533":2}}],["l1",{"0":{"673":1},"2":{"277":1,"673":1}}],["l09",{"2":{"1533":2}}],["l082",{"2":{"2589":1}}],["l08",{"2":{"1533":2}}],["l073rz",{"2":{"2605":1}}],["l072",{"2":{"2589":1}}],["l07",{"2":{"1533":2}}],["l06",{"2":{"1533":2}}],["l05",{"2":{"1533":2}}],["l04",{"2":{"1533":2}}],["l03",{"2":{"1533":2}}],["l02",{"2":{"1533":2}}],["l01",{"2":{"1533":2}}],["l0xx",{"2":{"692":1}}],["l0",{"0":{"673":1},"2":{"277":1}}],["lfs",{"2":{"2545":1}}],["lfuse",{"2":{"2387":2}}],["lf",{"2":{"249":1,"399":1,"2113":1}}],["lfk87",{"2":{"211":1}}],["lfkeyboards",{"2":{"160":1,"211":1}}],["lwin",{"2":{"1336":2,"1398":1,"2394":1,"2412":1,"2413":1,"2429":1,"2449":1}}],["lw75",{"2":{"241":2}}],["lw67",{"2":{"241":2}}],["lv061228b",{"2":{"1609":1}}],["lvgl",{"0":{"2617":1,"2618":1,"2619":1,"2620":1,"2621":1,"2622":1,"2623":1},"1":{"2618":1,"2619":1,"2620":2,"2621":2,"2622":1,"2623":1},"2":{"199":2,"236":1,"2613":1,"2617":5,"2618":2,"2620":9,"2621":3,"2622":1,"2623":6}}],["lv",{"2":{"176":2,"2622":1}}],["lsb",{"2":{"2635":8}}],["lsbfirst",{"0":{"1217":1},"1":{"1218":1,"1219":1},"2":{"1218":1,"1936":1,"1943":1}}],["lswp",{"2":{"2409":2,"2435":2}}],["lspo",{"2":{"2147":1,"2148":1,"2150":6,"2151":5,"2421":1}}],["lsusb",{"2":{"1925":1,"2489":1,"2595":2}}],["lshift",{"2":{"1337":1}}],["lshift+rshift+key",{"2":{"2301":1}}],["lshift+rshift+n",{"2":{"1325":1}}],["lshift+ralt",{"2":{"1337":1}}],["lsa",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["lsg",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["lscr",{"2":{"502":1,"1313":1,"2394":1,"2428":1}}],["ls",{"2":{"154":4}}],["lsft",{"2":{"120":2,"313":1,"530":2,"1336":1,"1337":2,"1373":4,"1391":2,"1394":4,"1398":1,"1403":1,"1467":1,"1483":6,"1537":3,"1540":1,"1543":2,"1546":1,"1547":2,"1548":5,"1560":1,"1565":1,"1692":1,"1715":1,"1724":1,"2150":6,"2151":2,"2217":1,"2266":1,"2394":1,"2412":1,"2413":1,"2429":1,"2436":1,"2444":1,"2446":1,"2449":3,"2452":1,"2529":1,"2769":1,"2770":5,"2771":8,"2772":5,"2777":1}}],["ld7032",{"2":{"2612":4,"2615":11}}],["lds",{"2":{"236":3}}],["ldscript",{"2":{"114":1}}],["ld",{"2":{"131":1,"134":1,"277":1,"2300":2}}],["llvm",{"2":{"454":2}}],["lld",{"2":{"191":1,"641":1}}],["ll",{"2":{"124":1,"143":2,"188":1,"232":1,"254":1,"272":1,"316":1,"537":1,"552":1,"557":1,"614":2,"679":1,"686":1,"687":1,"703":2,"1214":2,"1235":2,"1276":1,"1296":1,"1300":1,"1324":1,"1349":1,"1422":2,"1473":1,"1545":1,"1695":1,"1829":1,"1850":1,"2101":1,"2164":1,"2171":2,"2175":1,"2199":2,"2207":2,"2297":1,"2303":4,"2313":3,"2315":2,"2316":1,"2350":2,"2351":1,"2367":2,"2443":2,"2444":1,"2445":3,"2461":1,"2462":3,"2468":2,"2484":1,"2488":1,"2489":1,"2491":1,"2493":1,"2496":3,"2511":1,"2513":1,"2516":1,"2547":1,"2552":2,"2593":1,"2595":1,"2603":1,"2654":1,"2782":1,"2783":1,"2785":1,"2787":1}}],["luminosity",{"2":{"1171":6}}],["lumissil",{"2":{"729":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1}}],["lump",{"2":{"559":1,"560":1}}],["lune",{"2":{"211":1}}],["luna",{"2":{"191":1}}],["lucid",{"2":{"211":2}}],["lucky",{"2":{"2745":1}}],["luckily",{"2":{"2267":1,"2507":1}}],["luck",{"2":{"124":1,"173":1,"2494":1}}],["lulu",{"2":{"176":1}}],["lut",{"2":{"160":1,"404":2,"2741":1,"2742":2}}],["lufa",{"0":{"2":1,"6":1,"12":1,"2732":1},"2":{"6":4,"12":2,"49":1,"50":2,"93":1,"111":1,"114":2,"176":2,"191":1,"199":1,"277":1,"487":1,"514":1,"552":1,"1862":1,"2268":2,"2269":1,"2276":2,"2303":1,"2383":1,"2603":1,"2732":1,"2782":3}}],["l400",{"2":{"1369":1}}],["l4",{"2":{"191":1}}],["l422",{"2":{"114":1}}],["l443",{"2":{"93":1}}],["lcpo",{"2":{"2147":1,"2148":1,"2150":1,"2421":1}}],["lcbr",{"2":{"1910":1,"2417":1,"2438":1}}],["lctrl",{"2":{"1337":1,"2440":1}}],["lctl",{"2":{"38":2,"120":1,"194":5,"196":2,"313":1,"530":2,"1302":1,"1336":2,"1337":2,"1372":1,"1373":1,"1391":1,"1396":1,"1398":2,"1440":1,"1482":1,"1545":1,"1560":1,"1620":1,"1718":2,"1724":2,"2117":1,"2150":2,"2207":2,"2217":1,"2266":1,"2394":1,"2409":2,"2412":1,"2413":1,"2429":1,"2435":2,"2446":1,"2449":3,"2450":1,"2452":1,"2610":1}}],["lcag",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["lca",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["lcap",{"2":{"502":1,"1313":1,"2394":1,"2428":1}}],["lcmd",{"2":{"1336":1,"1398":1,"2394":1,"2412":1,"2413":1,"2429":1,"2449":1}}],["lc",{"2":{"491":1}}],["lck75",{"2":{"154":2}}],["lcds",{"2":{"138":1}}],["lcd",{"0":{"1626":1,"2173":1},"1":{"1627":1,"1628":1,"1629":1,"1630":1,"1631":1,"1632":1,"1633":1,"1634":1,"1635":1,"1636":1,"1637":1,"1638":1,"1639":1,"1640":1,"1641":1,"1642":1,"1643":1,"1644":1,"1645":1,"1646":1,"1647":1,"1648":1,"1649":1,"1650":1,"1651":1,"1652":1,"1653":1,"1654":1,"1655":1,"1656":1,"1657":1,"1658":1,"1659":1,"1660":1,"1661":1,"1662":1,"1663":1,"1664":1,"1665":1,"1666":1,"1667":1,"2174":1,"2175":1,"2176":1,"2177":1,"2178":1,"2179":1,"2180":1,"2181":1},"2":{"114":1,"133":1,"134":1,"277":1,"1627":1,"2174":1,"2323":1,"2612":7}}],["lmn",{"2":{"266":1}}],["lm",{"2":{"38":1,"134":1,"1372":3,"1373":6,"1620":1,"1765":9,"1966":1,"2406":2,"2408":9}}],["l",{"2":{"32":1,"116":1,"191":1,"249":1,"266":3,"313":1,"375":2,"378":1,"385":1,"388":1,"411":2,"530":2,"573":1,"1337":27,"1488":5,"1565":1,"1910":1,"1912":1,"2186":1,"2191":1,"2386":1,"2394":3,"2425":3,"2446":1,"2725":1,"2773":5,"2774":9,"2775":5}}],["lnrm",{"2":{"2409":2,"2435":2}}],["lng9",{"2":{"2394":1,"2430":1}}],["lng8",{"2":{"2394":1,"2430":1}}],["lng7",{"2":{"2394":1,"2430":1}}],["lng6",{"2":{"2394":1,"2430":1}}],["lng5",{"2":{"2394":1,"2430":1}}],["lng4",{"2":{"2394":1,"2430":1}}],["lng3",{"2":{"2394":1,"2430":1}}],["lng2",{"2":{"2394":1,"2430":1}}],["lng1",{"2":{"2394":1,"2430":1}}],["lnx",{"2":{"2217":1,"2218":1,"2234":1}}],["lnum",{"2":{"502":1,"1313":1,"2394":1,"2428":1}}],["ln",{"2":{"31":2,"451":1,"1851":2,"1860":5,"1861":4,"2175":2,"2181":3}}],["legs",{"2":{"2307":1,"2309":1}}],["leg",{"2":{"1831":1,"2307":3,"2410":1}}],["legato",{"2":{"1831":2,"2410":2}}],["legal",{"2":{"1315":1}}],["legacy",{"0":{"151":1,"682":1,"2321":1},"1":{"2322":1},"2":{"75":1,"86":2,"94":1,"114":2,"133":1,"134":2,"145":2,"176":3,"188":12,"191":18,"211":1,"222":1,"236":1,"254":1,"277":1,"384":1,"505":1,"678":2,"1351":1,"2722":2,"2743":1}}],["leonardo",{"2":{"629":2,"1330":2,"2383":1}}],["len",{"2":{"1927":2}}],["lenght",{"2":{"1477":2}}],["lengths",{"2":{"1437":1,"2309":3}}],["lengthy",{"2":{"689":1}}],["length",{"0":{"481":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"1225":1,"1228":1,"1243":1,"1245":1,"1929":1,"1931":1},"1":{"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"1226":1,"1227":1,"1229":1,"1230":1,"1244":1,"1246":1,"1930":1,"1932":1},"2":{"249":2,"313":1,"374":3,"481":1,"502":1,"709":2,"712":2,"715":2,"718":2,"721":2,"724":2,"1226":2,"1229":2,"1244":2,"1246":2,"1248":1,"1251":4,"1252":1,"1261":2,"1270":1,"1448":1,"1468":1,"1477":4,"1494":1,"1552":2,"1561":1,"1611":1,"1840":1,"1860":2,"1925":5,"1926":1,"1927":7,"1930":3,"1932":3,"1945":2,"2076":2,"2181":2,"2253":1,"2315":1,"2444":1,"2624":1,"2626":2,"2627":2,"2628":2,"2629":1,"2630":1,"2631":1,"2632":4,"2633":2,"2634":2,"2635":2,"2636":2,"2637":2,"2638":2,"2639":11,"2716":1}}],["lenient",{"2":{"114":1}}],["leeloo",{"2":{"236":2}}],["lefishe",{"2":{"154":2}}],["left=4",{"2":{"2616":1}}],["leftuf2",{"2":{"2164":1}}],["leftdfu",{"2":{"2164":2}}],["leftavrdude",{"2":{"2164":1}}],["leftmost",{"2":{"1571":1}}],["lefthand",{"2":{"509":1,"510":1}}],["leftover30",{"2":{"211":1}}],["leftover",{"2":{"77":1}}],["lefty",{"2":{"43":2,"134":3,"211":1,"241":6}}],["left",{"2":{"31":1,"34":1,"45":1,"100":1,"114":3,"137":1,"176":1,"202":2,"231":2,"236":2,"249":2,"257":1,"258":1,"259":2,"277":1,"289":1,"313":2,"331":3,"502":2,"506":2,"509":5,"510":4,"511":2,"530":2,"623":1,"624":1,"626":5,"674":1,"701":1,"1123":1,"1126":1,"1129":1,"1260":1,"1307":1,"1321":9,"1327":1,"1336":13,"1337":4,"1339":3,"1373":2,"1398":3,"1442":1,"1537":5,"1538":4,"1548":1,"1555":1,"1567":2,"1597":1,"1602":1,"1622":1,"1624":1,"1708":2,"1715":15,"1763":1,"1766":9,"1768":1,"1839":5,"1854":2,"1855":1,"1857":1,"1860":5,"1901":1,"1902":1,"1910":8,"1915":2,"1940":2,"1946":1,"1950":1,"1953":5,"1955":5,"1956":2,"1962":1,"1963":10,"1984":1,"1986":2,"1987":14,"1992":2,"2098":1,"2117":2,"2146":1,"2147":6,"2148":6,"2151":2,"2160":2,"2162":2,"2163":2,"2164":3,"2165":3,"2169":2,"2178":1,"2181":3,"2191":2,"2195":1,"2205":3,"2217":1,"2234":1,"2235":1,"2236":1,"2270":1,"2272":1,"2279":1,"2284":1,"2286":1,"2300":2,"2312":3,"2313":1,"2394":12,"2409":10,"2411":5,"2412":16,"2413":13,"2417":3,"2421":6,"2427":1,"2429":8,"2431":2,"2433":1,"2435":10,"2436":1,"2438":3,"2446":2,"2449":20,"2450":2,"2463":1,"2489":2,"2513":2,"2540":1,"2569":3,"2597":1,"2605":1,"2614":1,"2616":11,"2637":3,"2654":2,"2655":1,"2700":1,"2718":1,"2719":1,"2725":2,"2727":1,"2734":1,"2750":2,"2777":15}}],["le",{"2":{"154":2,"221":1,"222":1,"236":1,"515":1,"1528":3,"1529":4,"1530":1,"2717":1}}],["lean",{"2":{"2467":1}}],["leaps",{"2":{"2331":1}}],["learned",{"0":{"2511":1}}],["learn",{"2":{"2189":1,"2190":1,"2351":1,"2458":1,"2465":1,"2479":1,"2496":1,"2521":1,"2552":1,"2617":1,"2710":1,"2762":2,"2763":2}}],["learning",{"0":{"2189":1,"2517":1},"1":{"2518":1,"2519":1,"2520":1,"2521":1},"2":{"2189":1,"2458":1}}],["leaflabs",{"2":{"2389":1}}],["leaf",{"2":{"1475":1,"1488":7,"1489":1}}],["lease",{"2":{"349":1,"361":2,"2516":2}}],["least",{"2":{"199":1,"462":1,"482":1,"584":1,"635":1,"1218":1,"1373":1,"1453":1,"1650":1,"1652":1,"1670":1,"1735":1,"1837":1,"1843":1,"1844":1,"1936":1,"1943":2,"2155":2,"2163":2,"2207":1,"2313":1,"2341":1,"2392":1,"2450":1,"2471":1,"2759":1,"2784":1,"2795":1}}],["leak",{"2":{"236":1}}],["leaving",{"2":{"169":1,"184":1,"482":1,"1324":1,"1373":1,"2311":1,"2344":1,"2450":1,"2540":1}}],["leaves",{"2":{"1378":2,"1475":1}}],["leave",{"2":{"87":1,"103":1,"126":1,"462":1,"482":1,"510":1,"540":1,"1262":1,"1372":1,"1455":1,"1561":1,"2278":1,"2291":2,"2300":1,"2313":1,"2348":1,"2545":1,"2595":1}}],["leading",{"2":{"461":1,"689":1,"1218":6,"2185":1}}],["leader",{"0":{"196":2,"1716":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1735":1,"1736":1,"1737":1,"1740":1,"1743":1,"1746":1,"1749":1,"2407":1,"2684":1,"2726":1},"1":{"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1722":1,"1723":1,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":2,"1734":2,"1735":1,"1736":1,"1737":1,"1738":2,"1739":2,"1740":1,"1741":2,"1742":2,"1743":1,"1744":2,"1745":2,"1746":1,"1747":2,"1748":2,"1749":1,"1750":2,"1751":2},"2":{"93":1,"112":3,"176":1,"196":15,"199":2,"505":6,"515":2,"1716":2,"1718":12,"1720":2,"1721":5,"1722":9,"1723":1,"1724":15,"1725":2,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1735":2,"1736":1,"2407":2,"2684":2,"2726":3,"2788":1}}],["lead",{"2":{"73":1,"188":2,"191":2,"1425":2,"1428":1,"1432":1,"1717":1,"1724":1,"1725":1,"1842":1,"2312":1,"2407":1,"2623":1}}],["letting",{"2":{"2312":1}}],["letter",{"2":{"1475":4,"1479":1,"1482":1,"1536":1,"1543":1,"1713":4,"1916":1,"1921":1,"2207":3}}],["letters",{"0":{"2425":1},"2":{"191":1,"211":1,"292":1,"460":1,"1291":1,"1392":1,"1472":3,"1477":1,"1479":1,"1483":1,"1484":1,"1536":1,"1540":1,"1907":1,"1912":1,"1916":1,"2207":3,"2266":1,"2333":1,"2354":1,"2603":1,"2696":1,"2697":1}}],["let",{"2":{"70":1,"110":1,"194":1,"228":1,"245":1,"331":2,"335":1,"356":1,"414":2,"430":1,"448":1,"471":1,"510":1,"515":1,"572":1,"1337":1,"1339":2,"1340":1,"1369":1,"1372":2,"1381":1,"1389":1,"1420":1,"1689":1,"1713":1,"1933":1,"2152":1,"2172":1,"2200":1,"2278":1,"2280":1,"2288":1,"2301":1,"2302":1,"2332":1,"2460":1,"2493":1,"2497":1,"2529":1,"2765":1,"2769":1,"2787":1,"2789":1}}],["lets",{"2":{"70":27,"114":1,"148":1,"154":2,"270":2,"277":1,"372":1,"375":1,"430":1,"506":1,"1340":2,"1401":1,"1422":1,"1545":1,"2100":1,"2301":2,"2342":1,"2688":1,"2691":1,"2702":1,"2767":1}}],["lever",{"2":{"1937":2}}],["leveraging",{"2":{"1921":1}}],["leveraged",{"2":{"2759":1}}],["leverages",{"2":{"317":1,"1258":1,"1259":1,"1260":1,"1474":1,"1498":1}}],["leverage",{"2":{"138":1,"630":1,"2168":1,"2581":1,"2606":1}}],["leveling",{"0":{"174":1,"677":1,"678":1,"679":1,"680":1,"681":1,"682":1},"1":{"679":1,"680":1,"681":1,"682":1},"2":{"114":1,"174":1,"176":4,"191":1,"211":1,"236":5,"249":1,"277":1,"671":2,"677":3,"678":6,"679":8,"680":7,"681":5,"2722":3}}],["levels",{"2":{"112":1,"199":2,"453":1,"496":3,"502":2,"1493":1,"1494":3,"1513":1,"1517":1,"1519":1,"2168":1,"2334":1,"2399":1,"2716":2,"2788":1}}],["level",{"0":{"580":1,"1516":2,"1518":1,"2086":1},"1":{"1517":2,"1519":1},"2":{"4":1,"14":1,"28":1,"75":1,"90":4,"93":2,"125":3,"134":1,"145":2,"185":3,"191":2,"229":2,"243":2,"249":2,"262":1,"266":3,"277":3,"279":1,"355":1,"433":4,"453":1,"462":1,"496":1,"497":1,"498":1,"500":1,"502":2,"510":2,"511":1,"512":1,"517":1,"533":1,"534":2,"556":1,"567":1,"568":4,"576":1,"580":2,"592":2,"594":1,"609":1,"614":1,"630":1,"644":1,"653":1,"658":1,"696":6,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1171":4,"1174":1,"1184":1,"1262":1,"1263":1,"1267":1,"1369":1,"1384":1,"1493":2,"1494":2,"1496":1,"1501":2,"1506":1,"1507":1,"1514":1,"1515":1,"1516":1,"1517":2,"1518":1,"1519":1,"1536":1,"1568":1,"1586":1,"1595":1,"1597":1,"1598":3,"1619":1,"1754":3,"1755":1,"1760":1,"1765":2,"1767":1,"1771":1,"1814":1,"1816":1,"1817":1,"1818":1,"1821":1,"1823":1,"1855":1,"1860":3,"1864":1,"1954":2,"1971":2,"1980":1,"1990":1,"1995":1,"2059":1,"2061":1,"2062":1,"2063":1,"2066":1,"2068":1,"2073":1,"2168":2,"2179":1,"2230":1,"2232":1,"2281":1,"2283":1,"2285":1,"2287":1,"2338":2,"2339":1,"2387":1,"2394":1,"2399":2,"2408":2,"2442":1,"2562":2,"2563":1,"2565":1,"2585":1,"2603":1,"2605":2,"2606":2,"2612":1,"2616":1,"2668":1,"2710":1,"2714":1,"2716":1,"2727":1,"2733":1,"2734":1,"2758":1,"2759":1,"2780":2,"2781":1,"2785":1,"2786":1,"2788":1}}],["levinson",{"2":{"45":1}}],["ledarray",{"0":{"1269":1},"1":{"1270":1},"2":{"1270":1}}],["ledmatrix",{"2":{"65":1}}],["led",{"0":{"84":1,"158":1,"185":1,"233":1,"659":1,"661":1,"734":1,"736":1,"749":1,"751":1,"754":1,"760":1,"762":1,"776":1,"778":1,"782":1,"792":1,"794":1,"822":1,"824":1,"840":1,"842":1,"846":1,"857":1,"859":1,"875":1,"877":1,"881":1,"891":1,"893":1,"909":1,"911":1,"915":1,"925":1,"927":1,"943":1,"945":1,"949":1,"959":1,"961":1,"977":1,"979":1,"983":1,"993":1,"995":1,"1027":1,"1029":1,"1061":1,"1063":1,"1095":1,"1097":1,"1148":1,"1150":1,"1162":1,"1166":1,"1185":1,"1187":1,"1203":1,"1205":1,"1209":1,"1269":1,"1752":1,"1754":1,"1755":1,"1756":1,"1757":1,"1758":1,"1759":1,"1761":1,"1766":1,"1767":1,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1781":1,"1783":1,"1785":1,"1787":1,"1789":1,"1790":1,"1791":1,"1792":1,"1793":1,"1796":1,"1797":1,"1798":1,"1799":1,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1807":1,"1809":1,"1811":1,"1812":1,"1814":1,"1816":1,"1818":3,"1821":3,"2063":2,"2066":2,"2205":1,"2408":1,"2685":1,"2727":1},"1":{"662":1,"737":1,"750":1,"752":1,"763":1,"777":1,"779":1,"783":1,"795":1,"825":1,"841":1,"843":1,"847":1,"860":1,"876":1,"878":1,"882":1,"894":1,"910":1,"912":1,"916":1,"928":1,"944":1,"946":1,"950":1,"962":1,"978":1,"980":1,"984":1,"996":1,"1030":1,"1064":1,"1098":1,"1151":1,"1163":1,"1167":1,"1188":1,"1204":1,"1206":1,"1210":1,"1270":1,"1753":1,"1754":1,"1755":2,"1756":2,"1757":1,"1758":1,"1759":1,"1760":2,"1762":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":1,"1769":1,"1770":1,"1771":1,"1772":1,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1780":2,"1781":1,"1782":2,"1783":1,"1784":2,"1785":1,"1786":2,"1787":1,"1788":2,"1789":1,"1790":1,"1791":1,"1792":1,"1793":1,"1794":2,"1795":1,"1796":1,"1797":1,"1798":1,"1799":1,"1800":2,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1806":2,"1807":1,"1808":2,"1809":1,"1810":2,"1811":1,"1812":1,"1813":2,"1814":1,"1815":2,"1816":1,"1817":2,"1818":1,"1819":1,"1820":1,"1821":1,"1822":1,"1823":1},"2":{"32":2,"50":2,"65":1,"70":2,"84":1,"92":3,"93":10,"94":6,"111":1,"113":1,"114":13,"133":1,"134":9,"145":2,"160":5,"176":8,"183":14,"185":5,"191":27,"199":5,"211":3,"214":1,"221":3,"222":16,"233":1,"236":27,"249":33,"266":10,"277":11,"292":2,"502":1,"506":2,"511":1,"575":1,"576":2,"644":2,"646":1,"647":1,"648":1,"651":1,"654":1,"655":1,"659":4,"661":1,"662":4,"663":1,"664":1,"665":1,"666":1,"669":1,"729":1,"730":2,"734":6,"736":1,"737":4,"738":1,"741":1,"742":1,"745":1,"746":1,"749":3,"750":1,"751":3,"752":2,"753":1,"754":2,"755":1,"756":2,"760":6,"762":1,"763":5,"764":1,"768":1,"769":1,"772":1,"773":1,"776":3,"777":1,"778":3,"779":2,"780":1,"782":2,"784":1,"785":2,"792":6,"794":1,"795":5,"796":1,"800":1,"801":1,"804":1,"805":1,"808":1,"809":1,"810":1,"811":2,"812":1,"814":1,"816":1,"817":2,"822":6,"824":1,"825":5,"826":1,"830":1,"832":1,"833":1,"836":1,"837":1,"840":3,"841":1,"842":3,"843":2,"844":1,"846":2,"848":1,"849":2,"857":6,"859":1,"860":5,"861":1,"865":1,"867":1,"868":1,"871":1,"872":1,"875":3,"876":1,"877":3,"878":2,"879":1,"881":2,"883":1,"884":2,"891":6,"893":1,"894":5,"895":1,"899":1,"901":1,"902":1,"905":1,"906":1,"909":3,"910":1,"911":3,"912":2,"913":1,"915":2,"917":1,"918":2,"925":6,"927":1,"928":5,"929":1,"933":1,"935":1,"936":1,"939":1,"940":1,"943":3,"944":1,"945":3,"946":2,"947":1,"949":2,"951":1,"952":2,"959":6,"961":1,"962":5,"963":1,"967":1,"969":1,"970":1,"973":1,"974":1,"977":3,"978":1,"979":3,"980":2,"981":1,"983":2,"985":1,"986":2,"993":6,"995":1,"996":5,"997":1,"1001":1,"1003":1,"1004":1,"1007":1,"1008":1,"1011":1,"1012":1,"1013":1,"1014":2,"1015":1,"1017":1,"1019":1,"1020":2,"1027":6,"1029":1,"1030":5,"1031":1,"1035":1,"1037":1,"1038":1,"1041":1,"1042":1,"1045":1,"1046":1,"1047":1,"1048":2,"1049":1,"1051":1,"1053":1,"1054":2,"1061":6,"1063":1,"1064":5,"1065":1,"1069":1,"1071":1,"1072":1,"1075":1,"1076":1,"1079":1,"1080":1,"1081":1,"1082":2,"1083":1,"1085":1,"1087":1,"1088":2,"1095":6,"1097":1,"1098":5,"1099":1,"1100":1,"1103":1,"1105":1,"1106":1,"1109":1,"1110":1,"1113":1,"1114":1,"1115":1,"1116":2,"1117":1,"1119":1,"1143":1,"1144":1,"1148":4,"1150":1,"1151":5,"1152":1,"1156":1,"1158":1,"1159":1,"1162":3,"1163":1,"1164":1,"1166":2,"1168":1,"1169":6,"1170":1,"1171":10,"1172":2,"1176":1,"1177":1,"1180":1,"1181":2,"1185":6,"1187":1,"1188":5,"1189":1,"1193":1,"1195":1,"1196":1,"1199":1,"1200":1,"1203":3,"1204":1,"1205":3,"1206":2,"1207":1,"1209":2,"1249":2,"1251":2,"1252":1,"1253":1,"1254":3,"1269":1,"1270":3,"1271":2,"1335":1,"1353":1,"1357":1,"1494":1,"1496":3,"1544":1,"1568":2,"1594":1,"1608":3,"1752":9,"1753":12,"1754":10,"1755":12,"1756":7,"1757":6,"1758":3,"1760":9,"1761":2,"1762":4,"1763":26,"1764":10,"1765":12,"1766":64,"1767":31,"1768":21,"1771":12,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1780":1,"1781":1,"1782":3,"1812":1,"1813":1,"1819":4,"1822":4,"1851":7,"1950":1,"1982":3,"1983":2,"1984":25,"1985":12,"1987":1,"1988":1,"1990":10,"1992":5,"1993":1,"1995":4,"1996":17,"1997":11,"2008":1,"2009":2,"2064":4,"2067":4,"2069":2,"2070":2,"2076":4,"2077":2,"2080":4,"2081":4,"2086":1,"2089":9,"2097":6,"2098":3,"2099":2,"2101":1,"2167":3,"2175":7,"2205":10,"2269":2,"2276":2,"2301":3,"2315":1,"2327":1,"2339":2,"2340":3,"2408":13,"2530":1,"2557":2,"2567":1,"2569":5,"2578":2,"2605":3,"2713":1,"2714":2,"2724":6,"2727":12,"2732":3,"2733":3,"2734":9,"2739":1,"2763":1}}],["leds",{"0":{"1269":1,"2097":1},"1":{"1270":1},"2":{"25":1,"45":1,"50":1,"114":1,"160":1,"201":2,"211":1,"229":1,"249":2,"506":4,"586":1,"587":1,"642":2,"644":1,"647":1,"649":1,"654":2,"659":1,"665":1,"666":1,"667":1,"729":2,"734":2,"741":1,"742":1,"743":1,"745":1,"746":1,"747":1,"749":1,"750":1,"751":1,"752":1,"755":2,"760":2,"768":1,"769":1,"770":1,"772":1,"773":1,"774":1,"776":1,"777":1,"778":1,"779":1,"784":2,"786":1,"792":2,"800":1,"801":1,"802":1,"804":1,"805":1,"806":1,"808":1,"809":1,"810":1,"811":1,"816":2,"822":2,"832":1,"833":1,"834":1,"836":1,"837":1,"838":1,"840":1,"841":1,"842":1,"843":1,"848":2,"850":1,"857":2,"867":1,"868":1,"869":1,"871":1,"872":1,"873":1,"875":1,"876":1,"877":1,"878":1,"883":2,"885":1,"891":2,"901":1,"902":1,"903":1,"905":1,"906":1,"907":1,"909":1,"910":1,"911":1,"912":1,"917":2,"919":1,"925":2,"935":1,"936":1,"937":1,"939":1,"940":1,"941":1,"943":1,"944":1,"945":1,"946":1,"951":2,"953":1,"959":2,"969":1,"970":1,"971":1,"973":1,"974":1,"975":1,"977":1,"978":1,"979":1,"980":1,"985":2,"987":1,"993":2,"1003":1,"1004":1,"1005":1,"1007":1,"1008":1,"1009":1,"1011":1,"1012":1,"1013":1,"1014":1,"1019":2,"1027":2,"1037":1,"1038":1,"1039":1,"1041":1,"1042":1,"1043":1,"1045":1,"1046":1,"1047":1,"1048":1,"1053":2,"1061":2,"1071":1,"1072":1,"1073":1,"1075":1,"1076":1,"1077":1,"1079":1,"1080":1,"1081":1,"1082":1,"1087":2,"1089":1,"1095":2,"1105":1,"1106":1,"1107":1,"1109":1,"1110":1,"1111":1,"1113":1,"1114":1,"1115":1,"1116":1,"1143":2,"1148":1,"1158":1,"1159":1,"1160":1,"1162":1,"1163":1,"1171":2,"1178":1,"1180":2,"1185":2,"1195":1,"1196":1,"1197":1,"1199":1,"1200":1,"1201":1,"1203":1,"1204":1,"1205":1,"1206":1,"1249":4,"1251":1,"1252":1,"1253":1,"1254":2,"1257":1,"1270":1,"1331":1,"1351":2,"1415":1,"1491":3,"1494":1,"1495":1,"1496":2,"1508":2,"1592":1,"1752":2,"1754":1,"1758":1,"1759":1,"1760":3,"1762":1,"1763":2,"1766":1,"1767":2,"1768":4,"1783":1,"1814":1,"1816":1,"1818":1,"1821":1,"1983":1,"1984":2,"1987":3,"1988":1,"1990":2,"1992":4,"2010":1,"2059":1,"2061":1,"2063":1,"2066":1,"2069":6,"2070":10,"2076":5,"2079":1,"2080":6,"2086":1,"2089":7,"2091":6,"2092":14,"2097":2,"2098":3,"2099":1,"2169":2,"2198":1,"2199":1,"2205":1,"2319":1,"2328":3,"2329":2,"2340":1,"2664":1,"2704":2,"2716":2,"2724":1,"2727":5,"2733":3,"2734":5,"2739":1,"2783":2}}],["lessthan",{"2":{"2338":1}}],["less",{"2":{"24":1,"133":1,"134":1,"263":1,"455":1,"1324":1,"1363":1,"1366":1,"1440":1,"1441":1,"1448":1,"1472":1,"1553":1,"1558":2,"1859":1,"1943":1,"2185":1,"2199":2,"2300":1,"2460":1,"2573":1,"2603":1,"2651":1,"2710":1,"2768":1}}],["lone",{"2":{"1715":1,"2777":1}}],["longan",{"2":{"495":1}}],["long",{"0":{"1290":1},"2":{"131":1,"139":1,"151":1,"164":1,"243":1,"331":1,"436":1,"453":1,"455":1,"481":3,"505":4,"616":1,"621":1,"685":1,"689":1,"1252":1,"1324":1,"1327":1,"1443":1,"1447":1,"1449":1,"1451":1,"1453":1,"1477":1,"1488":1,"1501":1,"1548":1,"1552":4,"1600":1,"1611":1,"1616":17,"1689":1,"1721":1,"1925":1,"1965":1,"2076":1,"2078":6,"2101":1,"2166":1,"2172":1,"2207":1,"2209":1,"2220":1,"2315":1,"2344":1,"2512":1,"2541":1,"2585":1,"2616":1,"2653":1,"2755":1}}],["longer",{"2":{"48":1,"50":1,"98":1,"124":1,"130":1,"152":1,"194":1,"196":1,"201":1,"213":1,"218":1,"224":1,"233":1,"240":1,"262":2,"265":1,"268":1,"273":2,"276":1,"513":1,"522":1,"556":1,"559":1,"588":1,"627":1,"1256":1,"1280":1,"1413":1,"1446":1,"1449":1,"1453":1,"1469":1,"1478":1,"1708":1,"1715":1,"1845":1,"1940":1,"2199":1,"2200":1,"2207":1,"2209":1,"2311":2,"2342":1,"2501":1,"2604":1,"2605":1,"2616":2,"2744":1,"2767":1,"2768":1,"2773":2,"2777":1}}],["loud",{"2":{"1438":1,"1443":1}}],["louder",{"2":{"277":1}}],["lo",{"2":{"1398":4,"1760":1,"1912":1}}],["losh",{"2":{"2146":1}}],["loss",{"2":{"1368":1,"2213":1,"2301":1}}],["loses",{"2":{"1372":1,"2736":1}}],["lose",{"2":{"689":1,"1532":1,"2515":1}}],["lost",{"2":{"176":1,"671":1,"1591":1,"2672":1}}],["love",{"0":{"2511":1},"2":{"561":1,"1301":1,"1398":2,"2608":1}}],["lorem",{"2":{"301":1}}],["loki65",{"2":{"211":1}}],["lopt",{"2":{"176":1,"1336":1,"1398":1,"2394":1,"2412":1,"2413":1,"2429":1,"2449":1}}],["loadable",{"2":{"2614":1}}],["loads",{"2":{"1256":1,"2616":2}}],["loaded",{"2":{"626":1,"2392":1,"2540":1,"2613":3,"2616":2}}],["loader",{"0":{"2578":1},"2":{"292":3,"2273":3,"2276":1,"2392":3,"2578":1,"2580":1}}],["load",{"0":{"2491":1},"2":{"160":1,"450":1,"541":1,"592":1,"688":1,"1324":1,"2366":1,"2368":1,"2372":1,"2386":1,"2395":1,"2464":1,"2466":1,"2508":1,"2611":1,"2613":1,"2616":11}}],["loading",{"2":{"145":1,"1324":1,"2527":1,"2616":2}}],["loose",{"2":{"2318":2,"2485":1}}],["looking",{"0":{"2709":1},"2":{"228":1,"367":1,"430":2,"483":1,"602":1,"690":2,"1341":1,"1925":1,"2301":1,"2311":1,"2321":1,"2350":1,"2530":1,"2604":1}}],["look",{"2":{"194":1,"341":1,"414":1,"470":1,"559":1,"597":1,"627":1,"628":1,"1174":1,"1263":1,"1267":1,"1279":1,"1308":1,"1362":1,"1369":2,"1420":1,"1442":1,"1477":1,"1506":1,"1507":1,"1713":1,"2188":1,"2220":1,"2299":1,"2312":1,"2381":1,"2442":1,"2443":1,"2456":1,"2461":1,"2558":1,"2610":1,"2617":1,"2767":1,"2782":1,"2785":1,"2787":2,"2788":1,"2791":1,"2792":1}}],["lookup",{"2":{"191":1,"404":1,"1763":1,"1984":1,"2114":1,"2580":1,"2741":1}}],["looks",{"2":{"125":1,"185":1,"1447":1,"1460":1,"2303":1,"2462":1,"2464":1,"2784":1,"2786":1,"2787":1}}],["looping",{"2":{"2311":1,"2783":1}}],["loopgain",{"2":{"1614":1,"1615":1}}],["loops",{"2":{"145":1,"1974":1}}],["loop",{"0":{"2783":1},"1":{"2784":1,"2785":1,"2786":1,"2787":1,"2788":1},"2":{"65":1,"92":1,"113":1,"114":1,"160":1,"176":2,"277":1,"471":1,"588":1,"1435":2,"1501":1,"1853":2,"1855":1,"1989":1,"2177":2,"2269":1,"2272":2,"2276":1,"2311":1,"2616":1,"2782":1,"2783":2,"2787":1}}],["locate",{"2":{"2475":1,"2489":1,"2491":1}}],["locates",{"2":{"2442":1}}],["located",{"2":{"515":1,"626":1,"681":1,"1309":1,"1452":1,"1477":1,"1533":1,"1852":1,"2301":1,"2314":1,"2335":1,"2432":1,"2489":1,"2491":1,"2502":1,"2626":1,"2627":1,"2628":1,"2633":1,"2742":1}}],["locations",{"2":{"132":1,"160":1,"176":1,"204":1,"266":1,"335":1,"540":1,"659":1,"1981":1,"2108":1,"2299":1,"2653":1,"2721":1,"2735":1,"2786":2}}],["location",{"2":{"114":1,"133":1,"134":1,"160":1,"199":1,"234":1,"249":2,"365":1,"366":1,"450":1,"610":1,"674":1,"675":1,"681":1,"1442":1,"1852":1,"1981":1,"1987":1,"2314":1,"2342":1,"2461":1,"2474":1,"2480":1,"2536":1,"2540":1,"2552":2,"2615":2,"2616":3,"2637":5,"2654":2,"2785":1,"2796":1}}],["localhost",{"2":{"558":1}}],["locally",{"0":{"2481":1,"2483":1},"2":{"403":1,"556":1,"560":1,"1413":1,"2316":1,"2481":2,"2483":1,"2484":1}}],["local",{"2":{"402":1,"430":1,"455":1,"457":1,"460":1,"554":1,"555":1,"598":1,"616":1,"1858":1,"1859":1,"1981":1,"2180":1,"2291":1,"2303":2,"2317":1,"2437":1,"2450":1,"2467":1,"2470":1,"2481":1,"2482":1,"2483":1,"2491":1,"2507":2,"2516":2,"2529":1,"2605":1}}],["locale",{"2":{"249":1}}],["lockout",{"2":{"1969":1}}],["lockkeys",{"0":{"1623":1},"2":{"1623":1}}],["lockups",{"2":{"263":1}}],["locking",{"0":{"2105":1},"2":{"176":1,"188":1,"191":2,"199":2,"236":1,"266":32,"502":3,"1313":2,"2394":6,"2428":6,"2541":1,"2713":2,"2745":2}}],["locked",{"2":{"145":1,"266":1,"317":2,"340":3,"346":1,"2104":1,"2105":1,"2107":2,"2108":1,"2109":2,"2167":1,"2530":7,"2735":1}}],["lock",{"0":{"1313":1,"1689":1,"2202":1,"2405":1,"2428":1},"1":{"1690":1,"1691":1,"1692":1},"2":{"73":1,"160":2,"176":1,"188":2,"191":2,"199":2,"222":3,"231":2,"505":1,"506":1,"530":1,"1313":2,"1374":1,"1405":1,"1494":2,"1496":4,"1536":5,"1568":2,"1623":3,"1689":4,"1690":3,"1691":1,"1692":4,"1752":4,"1753":6,"1755":3,"1756":6,"1757":2,"1771":1,"1851":3,"1854":1,"1995":1,"1996":2,"1997":5,"2079":1,"2080":2,"2081":1,"2107":2,"2109":2,"2167":2,"2175":3,"2178":1,"2202":1,"2220":1,"2301":2,"2394":12,"2405":2,"2409":16,"2428":12,"2435":16,"2529":1,"2530":1,"2654":3,"2655":1,"2713":1,"2716":2,"2724":6,"2745":2,"2783":3,"2788":1}}],["lowr",{"2":{"2211":1}}],["lowest",{"2":{"496":1,"1366":1,"1375":1,"1376":1,"1443":1,"1760":1,"2210":1,"2394":1,"2434":1,"2447":1}}],["lower",{"0":{"2220":1},"2":{"198":1,"236":1,"639":1,"641":1,"688":3,"689":1,"701":2,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1136":1,"1262":1,"1369":1,"1372":2,"1375":1,"1377":1,"1380":1,"1441":1,"1471":1,"1494":1,"1611":1,"1721":1,"1841":2,"1842":1,"1845":1,"1937":2,"1943":2,"1944":2,"2191":3,"2210":2,"2211":3,"2212":2,"2213":6,"2220":2,"2333":1,"2397":1,"2440":1,"2442":4,"2445":1,"2643":7,"2645":2,"2767":1}}],["lowercase",{"2":{"137":1,"221":1,"1291":1,"1388":1,"1449":1,"2220":3,"2341":1,"2386":1,"2603":2,"2767":1}}],["low",{"0":{"580":1,"2086":1},"2":{"49":1,"134":1,"145":1,"243":2,"502":2,"509":1,"510":5,"511":1,"580":2,"674":1,"688":3,"696":3,"1169":1,"1171":1,"1261":2,"1262":1,"1279":1,"1366":1,"1436":1,"1494":1,"1495":1,"1528":1,"1608":5,"1611":3,"1614":1,"1615":1,"1671":3,"1753":1,"1755":2,"1841":2,"1842":1,"1952":2,"1963":1,"2075":1,"2162":2,"2163":1,"2382":1,"2383":1,"2384":1,"2385":1,"2387":2,"2440":1,"2445":1,"2558":1,"2562":1,"2563":1,"2565":1,"2603":1,"2668":1,"2694":1,"2703":1,"2728":1,"2767":2}}],["login",{"2":{"2547":1}}],["logically",{"2":{"2098":1}}],["logical",{"2":{"134":1,"236":1,"556":1,"678":1,"679":2,"680":3,"681":2,"1253":1,"1709":2,"2097":1,"2350":2,"2715":1,"2716":1,"2722":2,"2724":1,"2728":1}}],["logic",{"2":{"16":1,"75":1,"94":2,"113":1,"114":2,"133":2,"134":5,"145":3,"160":1,"191":1,"198":1,"199":1,"211":1,"222":2,"249":2,"266":1,"277":6,"534":2,"1171":3,"1262":1,"1381":1,"1489":1,"1534":1,"1766":1,"1868":1,"1987":2,"2152":2,"2200":1,"2530":1,"2603":1}}],["logfile",{"2":{"2300":4}}],["logged",{"2":{"434":1}}],["logger",{"2":{"430":1,"433":1}}],["logging",{"0":{"433":1},"2":{"249":1,"430":1,"470":1,"1289":1,"1290":1}}],["log",{"0":{"433":1},"2":{"114":1,"199":2,"211":1,"349":1,"430":3,"432":2,"433":12,"434":2,"437":1,"441":1,"466":2,"470":2,"529":1,"530":2,"554":1,"2320":1,"2478":1}}],["logo",{"0":{"1852":1,"2176":1},"2":{"31":2,"1852":7,"1854":2,"2176":5,"2178":2}}],["logs",{"2":{"17":1,"2513":1,"2595":1}}],["lots",{"2":{"501":1,"2363":1}}],["lotus58",{"2":{"211":1,"266":1}}],["lot",{"2":{"6":1,"10":2,"114":1,"138":1,"172":1,"175":1,"187":1,"198":2,"201":1,"213":1,"224":1,"233":1,"238":1,"341":1,"435":1,"466":1,"552":1,"560":1,"567":1,"586":1,"606":1,"1295":1,"1369":2,"1373":1,"1474":1,"1552":1,"1565":1,"1566":1,"2152":1,"2199":1,"2311":1,"2313":1,"2319":1,"2323":1,"2365":1,"2450":1,"2456":2,"2463":1,"2464":1,"2508":1,"2594":1,"2599":1,"2605":1,"2606":1,"2640":1,"2749":1,"2750":1,"2752":1,"2764":1,"2782":1}}],["laziness",{"2":{"2603":1}}],["lazydesigners",{"2":{"102":3}}],["lapo",{"2":{"2147":1,"2148":1,"2150":1,"2421":1}}],["laptop",{"2":{"1371":1}}],["lag",{"2":{"1256":1,"1336":1,"2412":1,"2413":1,"2449":1,"2784":1}}],["lags",{"2":{"688":1}}],["lacking",{"2":{"2605":1}}],["lacks",{"2":{"2099":1}}],["lack",{"2":{"1125":1,"1422":1,"1767":1,"1990":1,"2170":1,"2171":1,"2758":1}}],["laid",{"2":{"561":1,"606":1}}],["lambdas",{"0":{"472":1},"2":{"472":1}}],["larr",{"2":{"286":1,"2334":6}}],["largely",{"2":{"244":1,"495":1,"552":1,"2281":1,"2301":2}}],["largest",{"2":{"176":1,"2744":1}}],["larger",{"2":{"138":1,"174":1,"175":1,"176":1,"211":1,"264":1,"274":1,"341":1,"679":2,"680":2,"690":1,"1433":1,"1552":2,"1855":1,"2151":1,"2307":1,"2347":1,"2615":1,"2705":1,"2785":1}}],["large",{"2":{"134":1,"138":1,"163":1,"174":1,"175":1,"176":1,"233":1,"341":1,"352":1,"515":1,"602":1,"606":1,"689":1,"1324":1,"1341":1,"1552":1,"1842":1,"1844":1,"2264":1,"2456":1,"2545":1,"2553":1,"2606":1,"2615":1,"2616":1,"2646":1,"2751":1,"2759":1}}],["la+",{"2":{"211":1}}],["labor",{"2":{"2608":1}}],["labk",{"2":{"2417":1,"2438":1}}],["labeled",{"2":{"703":1,"1214":1,"1235":1,"2489":1}}],["label",{"2":{"341":4,"2654":18,"2655":1,"2725":2}}],["labels",{"2":{"191":1,"2740":1}}],["lab",{"2":{"211":3}}],["latches",{"2":{"1252":1}}],["latter",{"2":{"357":1,"1310":1,"1558":1,"1718":1,"1938":1,"1998":1,"2534":1,"2616":3,"2774":1}}],["lattice60",{"2":{"144":2}}],["latam",{"2":{"249":1}}],["latvian",{"2":{"176":1,"1392":1,"2742":3}}],["latin",{"2":{"1392":2,"2741":1,"2742":6}}],["latinpad",{"2":{"154":2}}],["latinpadble",{"2":{"154":2,"211":1}}],["latin6rgb",{"2":{"154":2}}],["latin64ble",{"2":{"154":2}}],["latin60rgb",{"2":{"154":2}}],["latin47ble",{"2":{"154":2}}],["latincompass",{"2":{"154":7,"160":2}}],["latin17rgb",{"2":{"154":2}}],["late",{"2":{"597":1}}],["late9",{"2":{"241":2,"249":1}}],["latency",{"2":{"94":1,"199":1,"2264":2}}],["later",{"2":{"23":1,"142":1,"352":1,"366":1,"448":1,"468":1,"541":1,"556":1,"685":1,"1340":1,"1417":1,"1868":1,"2080":2,"2199":1,"2315":1,"2348":1,"2382":1,"2444":1,"2507":1,"2511":1,"2609":2}}],["latest",{"2":{"10":1,"24":1,"176":1,"191":1,"211":1,"254":1,"330":1,"2221":1,"2470":1,"2476":1,"2498":1}}],["lanes",{"2":{"2156":1}}],["laneware",{"2":{"241":5,"249":1}}],["landed",{"2":{"131":1}}],["languages",{"2":{"134":1,"1392":1,"2184":1,"2219":1,"2301":1,"2531":1,"2542":1,"2740":1}}],["language",{"0":{"5":1,"2114":1,"2740":1},"1":{"2741":1,"2742":1},"2":{"74":1,"401":1,"479":1,"1392":4,"1925":1,"2184":1,"2394":18,"2430":13,"2549":1,"2551":2,"2668":1,"2696":1,"2705":1,"2740":1,"2742":1}}],["lalt",{"2":{"120":1,"313":1,"530":2,"1306":1,"1336":2,"1337":1,"1339":2,"1372":1,"1391":1,"1394":1,"1398":1,"1412":4,"1440":1,"1561":2,"2150":2,"2207":2,"2208":2,"2394":1,"2406":1,"2409":2,"2412":1,"2413":1,"2429":1,"2435":2,"2444":1,"2446":1,"2449":2}}],["laser",{"2":{"118":1,"191":1,"241":2,"1936":1}}],["lastly",{"2":{"1369":1}}],["last",{"0":{"202":1,"2257":1},"1":{"2258":1},"2":{"23":1,"74":1,"103":1,"105":1,"167":1,"176":2,"184":1,"189":1,"198":1,"201":1,"202":2,"206":1,"211":2,"213":1,"222":1,"224":2,"238":1,"249":1,"275":1,"317":2,"340":1,"343":1,"344":1,"345":1,"350":4,"462":1,"529":1,"581":1,"587":1,"588":2,"679":2,"1381":1,"1397":2,"1449":1,"1467":1,"1475":2,"1479":1,"1488":1,"1620":1,"1711":1,"1819":1,"1822":1,"1907":3,"1909":2,"1910":2,"1911":3,"1912":1,"1914":2,"1915":2,"1916":1,"1917":1,"1918":1,"1919":1,"1920":5,"1921":6,"1969":1,"2064":1,"2067":1,"2082":1,"2166":2,"2168":3,"2185":1,"2187":1,"2199":1,"2200":2,"2207":1,"2221":1,"2257":1,"2316":1,"2388":1,"2420":2,"2454":1,"2461":1,"2478":1,"2528":1,"2530":1,"2547":1,"2569":1,"2613":1,"2615":1,"2616":25,"2630":1,"2786":1,"2787":1}}],["launchpad",{"2":{"154":2,"199":2,"231":1,"1829":1,"2394":2,"2432":2}}],["launch",{"0":{"2537":1},"2":{"114":2,"484":1,"2188":1,"2264":2,"2394":5,"2432":5,"2537":1,"2552":2}}],["layr",{"2":{"2209":3}}],["lays",{"2":{"278":1}}],["layout=ortho",{"2":{"1386":2}}],["layout>",{"2":{"1385":1,"1386":4}}],["layouts+users",{"2":{"191":1}}],["layouts",{"0":{"35":1,"1383":1,"1386":1,"1387":1,"2725":1},"1":{"36":1,"1384":1,"1385":1,"1386":1,"1387":1,"1388":2,"1389":2},"2":{"70":3,"73":1,"74":1,"99":1,"111":1,"114":1,"169":1,"176":1,"191":3,"199":4,"201":3,"211":23,"213":1,"222":3,"236":2,"249":3,"256":2,"370":2,"378":1,"513":2,"538":2,"1305":2,"1372":1,"1376":1,"1383":8,"1384":3,"1386":2,"1415":1,"1562":1,"1995":1,"2341":5,"2480":1,"2484":2,"2592":1,"2598":1,"2605":3,"2654":2,"2656":1,"2696":1,"2725":5,"2740":1,"2741":2,"2785":1}}],["layout",{"0":{"17":1,"89":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"538":1,"546":1,"1384":1,"1392":1,"2160":1,"2463":1,"2598":1,"2785":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"17":1,"36":1,"48":1,"70":2,"76":1,"89":2,"94":1,"111":4,"114":2,"120":2,"145":2,"160":1,"191":4,"199":4,"201":3,"211":248,"213":1,"222":11,"236":9,"238":1,"249":4,"255":3,"256":4,"257":2,"258":2,"259":4,"260":1,"266":10,"277":2,"313":4,"370":1,"388":1,"454":1,"529":2,"530":6,"538":3,"540":4,"623":6,"624":1,"1372":1,"1375":2,"1376":1,"1383":10,"1384":6,"1386":4,"1389":6,"1391":2,"1392":4,"1399":1,"1415":2,"1442":5,"1533":2,"1536":1,"1562":1,"1601":1,"1763":2,"1830":1,"1863":1,"1912":1,"1918":1,"1921":1,"1984":2,"2114":2,"2150":2,"2160":3,"2164":1,"2183":2,"2184":1,"2188":2,"2208":1,"2220":1,"2221":1,"2297":2,"2306":1,"2307":2,"2316":2,"2341":17,"2356":2,"2357":2,"2358":6,"2359":1,"2439":1,"2441":2,"2446":4,"2447":1,"2462":1,"2466":1,"2475":2,"2479":1,"2480":1,"2484":4,"2552":1,"2580":1,"2592":2,"2598":8,"2605":15,"2653":6,"2654":11,"2655":2,"2658":1,"2659":2,"2663":1,"2669":1,"2671":1,"2682":1,"2696":1,"2697":1,"2725":18,"2727":1,"2734":1,"2740":3,"2741":3,"2742":3,"2785":5,"2786":3}}],["layering",{"2":{"2447":1}}],["layer>",{"2":{"1967":3}}],["layer9",{"2":{"1568":1}}],["layer8",{"2":{"1568":1}}],["layer7",{"2":{"1568":1,"1977":2}}],["layer6",{"2":{"1568":1}}],["layer5",{"2":{"1568":1,"1977":2}}],["layer4",{"2":{"1568":1}}],["layer3",{"2":{"1568":1,"2080":2}}],["layer2",{"2":{"1568":1,"2080":2}}],["layer1",{"2":{"1568":1,"2080":2}}],["layer0",{"2":{"1568":3}}],["layers\`",{"2":{"1381":1}}],["layers",{"0":{"166":1,"532":1,"1342":1,"1371":1,"1372":1,"1374":1,"1381":1,"1563":1,"1698":2,"1699":2,"1700":2,"1977":1,"2079":1,"2080":1,"2081":1,"2210":1,"2440":1,"2445":1,"2641":1,"2747":1},"1":{"1372":1,"1373":2,"1374":1,"1375":2,"1376":2,"1377":2,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"2080":1,"2081":1,"2082":1,"2083":1,"2084":1,"2211":1,"2212":1,"2213":1,"2441":1,"2442":1,"2446":1,"2447":1,"2642":1,"2643":1,"2644":1,"2645":1},"2":{"112":4,"114":1,"120":1,"145":1,"166":4,"176":1,"190":1,"191":1,"198":1,"199":3,"211":1,"266":1,"304":1,"313":1,"388":1,"503":1,"506":6,"529":1,"530":2,"532":1,"548":1,"557":2,"1280":1,"1312":1,"1342":1,"1369":1,"1371":1,"1372":12,"1373":2,"1374":1,"1375":6,"1376":3,"1377":5,"1378":12,"1379":1,"1380":1,"1381":3,"1382":1,"1391":1,"1392":1,"1436":1,"1483":1,"1562":3,"1563":2,"1565":1,"1597":1,"1620":1,"1692":1,"1697":1,"1698":2,"1703":6,"1706":1,"1708":2,"1851":1,"1914":1,"1965":1,"1969":1,"1977":2,"2079":3,"2080":21,"2081":1,"2082":9,"2083":3,"2084":3,"2085":1,"2175":1,"2184":1,"2208":1,"2209":1,"2210":1,"2212":1,"2213":2,"2406":1,"2440":6,"2441":2,"2442":5,"2444":1,"2445":5,"2462":1,"2463":2,"2529":2,"2642":1,"2644":2,"2645":1,"2733":2,"2747":5,"2762":1}}],["layer",{"0":{"3":1,"15":1,"246":1,"603":1,"1312":1,"1379":1,"1380":1,"1382":1,"1562":1,"1563":1,"1706":1,"1965":1,"1966":2,"1974":1,"1978":2,"1980":1,"2082":1,"2094":1,"2208":1,"2209":2,"2406":1,"2441":1,"2442":1,"2446":1,"2447":1,"2642":1,"2644":1,"2646":1,"2683":1},"1":{"1380":1,"1381":1,"1382":1,"1563":1,"1711":1,"1712":1,"1713":1,"1966":1,"1967":1,"1968":1,"1969":1,"1970":1,"1971":1,"1972":1,"1973":1,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1,"2643":1,"2645":1},"2":{"31":1,"38":10,"49":2,"73":1,"93":1,"105":4,"114":2,"145":1,"160":1,"166":3,"176":2,"190":1,"191":5,"194":4,"198":1,"199":7,"211":4,"236":4,"246":2,"249":1,"266":2,"313":1,"503":1,"504":3,"505":2,"506":3,"511":2,"529":2,"532":2,"557":4,"587":1,"603":1,"626":1,"695":1,"697":1,"1312":4,"1368":1,"1369":29,"1371":1,"1372":28,"1373":4,"1374":2,"1375":10,"1376":2,"1377":13,"1378":87,"1379":2,"1380":5,"1381":30,"1382":6,"1416":1,"1420":13,"1423":1,"1436":3,"1440":1,"1483":9,"1548":3,"1555":4,"1556":5,"1562":3,"1563":31,"1565":6,"1568":28,"1587":8,"1591":1,"1593":1,"1597":1,"1620":5,"1693":1,"1706":14,"1708":2,"1723":1,"1758":1,"1762":1,"1771":1,"1851":4,"1854":1,"1906":1,"1914":2,"1915":1,"1917":7,"1960":9,"1962":6,"1965":17,"1966":15,"1967":8,"1969":6,"1970":2,"1972":2,"1974":31,"1975":1,"1977":12,"1978":30,"1979":3,"1980":4,"1981":2,"1983":1,"1995":1,"1996":13,"1997":4,"2079":1,"2080":18,"2081":14,"2082":24,"2094":4,"2167":3,"2175":4,"2178":1,"2183":1,"2188":3,"2192":1,"2194":1,"2199":9,"2208":4,"2209":26,"2210":4,"2211":8,"2212":13,"2213":22,"2266":4,"2406":20,"2418":2,"2437":1,"2439":2,"2440":2,"2441":18,"2442":5,"2443":1,"2444":5,"2445":4,"2446":3,"2447":6,"2453":2,"2462":2,"2529":6,"2530":14,"2562":1,"2585":2,"2604":1,"2605":4,"2642":4,"2643":8,"2644":10,"2645":7,"2646":8,"2683":1,"2725":2,"2726":1,"2733":2,"2736":2,"2745":1,"2747":3,"2767":2,"2773":2,"2774":6,"2775":5,"2776":1,"2796":7}}],["lter",{"2":{"1488":1}}],["lto",{"2":{"111":1,"112":2,"114":3,"134":5,"145":1,"160":1,"211":2,"249":1,"266":2,"513":2,"2552":1,"2713":1}}],["lt",{"0":{"15":1,"307":1,"308":1,"309":1,"1403":1,"1404":1,"1405":1,"1406":2,"1407":5,"2340":1,"2341":1},"2":{"4":3,"18":2,"55":1,"70":1,"132":2,"133":1,"134":1,"176":4,"195":1,"199":1,"201":1,"211":1,"249":2,"282":1,"341":1,"345":2,"347":3,"349":8,"370":1,"371":1,"400":1,"417":2,"433":1,"436":4,"462":1,"500":1,"505":1,"510":2,"511":3,"529":2,"534":2,"559":3,"613":1,"614":4,"621":1,"659":1,"680":1,"690":1,"696":1,"701":2,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1185":1,"1275":2,"1276":1,"1306":1,"1327":6,"1337":3,"1349":2,"1350":1,"1372":2,"1373":1,"1383":1,"1384":3,"1388":4,"1389":1,"1403":1,"1404":1,"1405":3,"1406":1,"1413":6,"1414":5,"1416":4,"1418":1,"1420":1,"1422":5,"1441":2,"1454":1,"1456":1,"1465":1,"1533":1,"1536":1,"1546":1,"1547":2,"1548":2,"1587":1,"1598":1,"1620":1,"1708":2,"1715":1,"1723":2,"1843":5,"1965":1,"1966":11,"1967":1,"2164":3,"2208":1,"2297":2,"2299":4,"2300":16,"2301":2,"2303":1,"2318":1,"2335":2,"2338":1,"2341":1,"2342":3,"2386":4,"2388":2,"2392":1,"2394":1,"2406":1,"2417":2,"2427":1,"2438":2,"2453":4,"2454":2,"2474":1,"2480":5,"2484":2,"2507":2,"2513":7,"2526":3,"2551":2,"2552":2,"2562":1,"2563":1,"2603":1,"2605":2,"2644":1,"2653":4,"2710":1,"2725":1,"2766":1,"2767":3,"2773":4,"2774":7,"2775":4,"2777":4}}],["liking",{"0":{"2463":1},"2":{"2070":1}}],["likewise",{"2":{"511":1,"2453":1,"2748":1}}],["likelihood",{"2":{"263":1,"341":1,"679":1,"2603":2}}],["likely",{"2":{"118":1,"132":1,"141":1,"182":1,"213":2,"341":1,"679":1,"685":1,"1324":1,"1571":1,"1901":1,"2076":1,"2282":1,"2390":1,"2470":1,"2489":1,"2503":1,"2563":1,"2572":1,"2588":1,"2603":1,"2612":1,"2620":1,"2746":1}}],["like",{"0":{"1314":1},"2":{"100":1,"114":1,"120":1,"125":3,"137":3,"141":1,"169":2,"175":1,"176":1,"185":3,"189":1,"194":1,"201":1,"230":1,"244":1,"247":1,"263":1,"279":1,"320":1,"367":1,"446":1,"454":1,"482":1,"485":1,"509":2,"510":1,"515":1,"519":1,"551":1,"554":2,"556":2,"588":1,"597":1,"609":1,"628":1,"682":1,"1129":1,"1174":1,"1263":1,"1267":1,"1271":4,"1291":2,"1302":1,"1313":1,"1317":1,"1331":1,"1335":1,"1337":3,"1339":1,"1362":2,"1368":1,"1369":1,"1371":1,"1372":3,"1373":1,"1391":1,"1392":2,"1396":1,"1398":2,"1400":1,"1406":1,"1413":1,"1414":2,"1416":1,"1421":1,"1431":1,"1435":4,"1440":1,"1441":1,"1443":2,"1460":2,"1469":1,"1477":1,"1478":2,"1488":1,"1496":1,"1506":1,"1507":1,"1533":1,"1534":1,"1536":2,"1537":1,"1538":1,"1540":1,"1548":1,"1557":1,"1568":1,"1596":1,"1598":1,"1600":1,"1693":1,"1706":1,"1714":2,"1715":2,"1721":2,"1825":2,"1829":1,"1844":1,"1845":2,"1907":2,"1910":1,"1921":1,"1922":1,"1933":1,"1960":1,"1986":1,"1997":2,"2072":1,"2083":1,"2084":1,"2100":1,"2102":2,"2164":1,"2167":2,"2190":1,"2194":1,"2199":5,"2203":1,"2207":1,"2209":1,"2219":1,"2221":1,"2266":1,"2267":1,"2275":1,"2298":1,"2299":1,"2301":1,"2303":1,"2307":1,"2310":1,"2311":1,"2312":2,"2314":1,"2315":1,"2331":1,"2338":1,"2348":2,"2350":2,"2361":1,"2367":2,"2406":2,"2449":2,"2450":1,"2460":1,"2461":1,"2462":1,"2498":1,"2507":1,"2513":1,"2529":1,"2530":2,"2541":1,"2549":1,"2564":1,"2569":2,"2573":1,"2605":2,"2606":2,"2608":1,"2610":1,"2614":1,"2646":1,"2656":2,"2744":3,"2745":1,"2774":2,"2775":1,"2777":2,"2782":3,"2784":1,"2786":1,"2787":2,"2792":1,"2793":1}}],["lilypadusb",{"2":{"629":1,"2383":1}}],["lily58",{"0":{"30":1,"31":1},"1":{"31":1},"2":{"30":2}}],["live",{"2":{"401":1,"402":1,"2190":1,"2549":1}}],["lives",{"2":{"99":1,"2366":1}}],["licensing",{"2":{"273":1,"352":1,"2588":2}}],["licensed",{"2":{"2349":1}}],["licenses",{"2":{"1417":1,"2603":1,"2609":1}}],["license",{"0":{"2349":1},"2":{"199":1,"276":1,"282":3,"341":1,"1279":1,"1417":5,"2349":2,"2603":7,"2605":2,"2609":5}}],["liatris",{"0":{"1358":1},"2":{"211":1,"1348":2,"1352":4,"1359":4,"2584":1,"2751":1}}],["lights",{"0":{"2205":1},"2":{"589":1,"1380":1,"1415":1,"2100":1,"2101":1}}],["lightcycle",{"2":{"222":1}}],["light",{"0":{"506":1},"2":{"199":1,"222":1,"506":1,"511":1,"588":1,"1495":1,"1935":1,"1947":1,"1949":1,"1986":1,"1987":1,"1989":1,"1997":1,"2072":1,"2073":2,"2074":1,"2076":2,"2079":1,"2080":6,"2101":1,"2169":1,"2172":1,"2205":1,"2327":1,"2536":1,"2605":1,"2617":1,"2685":1,"2704":1,"2733":1,"2750":2}}],["lighting",{"0":{"233":1,"1761":1,"1982":1,"2069":1,"2079":1,"2080":1,"2081":1,"2082":1,"2083":1,"2415":1,"2416":1},"1":{"1762":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":1,"1769":1,"1770":1,"1771":1,"1772":1,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1780":1,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1,"1786":1,"1787":1,"1788":1,"1789":1,"1790":1,"1791":1,"1792":1,"1793":1,"1794":1,"1795":1,"1796":1,"1797":1,"1798":1,"1799":1,"1800":1,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1808":1,"1809":1,"1810":1,"1811":1,"1812":1,"1813":1,"1814":1,"1815":1,"1816":1,"1817":1,"1818":1,"1819":1,"1820":1,"1821":1,"1822":1,"1823":1,"1983":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":1,"2008":1,"2009":1,"2010":1,"2011":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":1,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2033":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":1,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2045":1,"2046":1,"2047":1,"2048":1,"2049":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2058":1,"2059":1,"2060":1,"2061":1,"2062":1,"2063":1,"2064":1,"2065":1,"2066":1,"2067":1,"2068":1,"2070":1,"2071":1,"2072":1,"2073":1,"2074":1,"2075":1,"2076":1,"2077":1,"2078":1,"2079":1,"2080":2,"2081":2,"2082":2,"2083":2,"2084":2,"2085":1,"2086":1,"2087":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":1,"2098":1,"2099":1,"2100":1,"2101":1,"2102":1},"2":{"114":1,"191":1,"221":1,"233":1,"236":3,"244":1,"249":2,"266":1,"404":1,"506":4,"1353":1,"1354":1,"1414":1,"1986":1,"2069":1,"2070":1,"2072":1,"2073":3,"2074":1,"2079":2,"2080":2,"2081":2,"2082":2,"2083":4,"2084":2,"2085":1,"2094":2,"2100":1,"2415":2,"2416":2,"2616":1,"2664":1,"2733":2,"2763":2}}],["little",{"2":{"191":1,"587":1,"628":1,"1324":1,"1449":1,"1453":2,"1469":2,"1473":1,"1488":1,"2199":1,"2200":1,"2206":1,"2214":1,"2303":2,"2312":1,"2494":1,"2624":1,"2631":1}}],["lithuanian",{"2":{"176":2,"1392":2,"2742":6}}],["literal",{"2":{"145":2,"612":1,"1400":1}}],["literals",{"2":{"114":1,"191":1,"2113":1}}],["lite",{"0":{"245":1,"565":1},"2":{"87":3,"88":3,"93":1,"103":4,"104":3,"112":1,"126":5,"127":3,"134":1,"160":2,"245":2,"249":2,"565":1,"2605":2,"2728":2}}],["liftoff",{"2":{"1950":2}}],["lifted",{"2":{"1712":1,"1950":1}}],["lifting",{"2":{"1703":1,"2493":1}}],["lift",{"2":{"175":1,"1950":1,"1952":2}}],["life",{"2":{"123":1,"401":1,"551":1,"1368":1,"2076":1,"2608":1}}],["lime",{"2":{"134":1}}],["limitation",{"2":{"635":1,"1468":1,"2374":1,"2452":1,"2558":1}}],["limitations",{"0":{"516":1,"1449":1,"2554":1},"1":{"2555":1,"2556":1,"2557":1,"2558":1},"2":{"552":1,"1267":1,"2153":1,"2184":1,"2215":1,"2301":1}}],["limits",{"0":{"601":1},"2":{"176":2,"236":1,"516":1,"688":1,"1767":2,"1768":3,"1952":1,"1990":2,"1992":3,"2558":1,"2727":2,"2734":2}}],["limiting",{"2":{"114":1,"370":1,"1768":1,"1992":1,"2343":1,"2563":1,"2564":1}}],["limited",{"0":{"534":1,"2558":1},"2":{"92":1,"130":1,"174":1,"533":1,"556":1,"560":1,"630":1,"688":1,"1282":1,"1308":1,"1368":1,"1373":2,"1478":1,"1528":1,"1592":1,"1704":1,"1912":1,"1997":1,"2140":1,"2168":1,"2219":1,"2281":1,"2353":1,"2358":3,"2359":1,"2450":1,"2526":1,"2608":1,"2743":1,"2758":1}}],["limit",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"63":1,"114":1,"145":2,"176":1,"191":1,"222":1,"236":1,"337":1,"481":1,"570":1,"598":1,"680":1,"688":1,"697":1,"1363":1,"1494":1,"1611":2,"1767":1,"1768":2,"1855":1,"1988":3,"1990":1,"1992":2,"2073":2,"2338":2,"2613":1,"2727":2,"2734":2,"2747":1}}],["linx",{"2":{"2222":1,"2423":1}}],["linworks",{"2":{"191":1,"266":1}}],["lingering",{"2":{"191":3,"199":1}}],["linux1",{"2":{"2394":1}}],["linux",{"0":{"365":1,"1275":1,"1276":1,"1277":1},"1":{"1276":1,"1277":1},"2":{"143":1,"222":1,"1275":1,"1276":1,"1286":1,"1291":2,"1320":1,"1711":1,"1863":1,"1864":1,"1870":1,"1925":1,"2217":1,"2218":1,"2221":3,"2222":2,"2234":1,"2235":1,"2236":1,"2386":1,"2390":1,"2394":1,"2423":2,"2490":1,"2496":1,"2497":1,"2519":1,"2552":2,"2595":1,"2742":2}}],["linting",{"0":{"442":1,"443":1,"447":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1}}],["lint",{"0":{"381":1,"2332":1},"2":{"134":1,"145":1,"191":1,"199":1,"236":1,"249":1,"266":1,"282":3,"341":1,"381":3,"442":1,"447":1,"2332":5}}],["linear",{"2":{"1615":2,"2635":3}}],["linebreak",{"2":{"462":1}}],["lined",{"2":{"292":1,"453":1}}],["lines",{"0":{"280":1},"2":{"64":1,"113":1,"138":1,"211":1,"272":1,"273":1,"277":1,"453":2,"455":2,"462":1,"468":1,"481":1,"556":1,"588":1,"690":1,"1400":1,"1599":2,"1629":3,"1860":5,"1892":1,"2181":4,"2184":1,"2185":1,"2186":1,"2187":1,"2381":1,"2388":1,"2462":2,"2595":1,"2616":1}}],["line",{"0":{"1641":1,"2493":1,"2519":1},"1":{"1642":1},"2":{"45":1,"65":1,"112":1,"114":2,"118":2,"142":1,"199":1,"226":2,"236":1,"249":1,"264":1,"274":1,"277":1,"282":3,"292":2,"363":1,"399":3,"400":1,"414":1,"430":1,"437":1,"453":4,"454":1,"457":1,"459":2,"462":3,"468":3,"473":1,"556":2,"563":1,"1124":1,"1126":1,"1134":1,"1169":1,"1262":1,"1292":1,"1351":1,"1353":1,"1357":2,"1365":1,"1366":1,"1388":1,"1415":1,"1548":3,"1555":1,"1590":2,"1629":2,"1642":2,"1643":1,"1838":1,"1860":5,"1892":1,"1933":1,"2141":1,"2181":3,"2188":1,"2210":1,"2268":1,"2271":1,"2273":2,"2274":1,"2275":1,"2278":1,"2280":1,"2281":1,"2282":1,"2288":1,"2300":1,"2303":2,"2307":1,"2312":1,"2350":2,"2388":2,"2462":3,"2466":1,"2476":1,"2490":2,"2496":1,"2513":2,"2519":1,"2526":2,"2531":1,"2542":1,"2545":1,"2547":1,"2569":1,"2581":1,"2592":1,"2616":7,"2626":1,"2654":1,"2661":1,"2662":1,"2675":1,"2796":2}}],["linkid=830387",{"2":{"2552":1}}],["linking",{"2":{"236":2,"279":1,"513":2,"1324":1,"2342":1,"2464":1,"2508":1}}],["link007",{"2":{"2390":1}}],["linked",{"2":{"236":1,"513":1,"2385":1,"2725":1}}],["linker",{"2":{"114":1}}],["links",{"0":{"2320":1},"2":{"199":1,"279":2,"331":1,"351":1,"602":1,"1299":1,"1341":1,"1488":1,"2314":1,"2321":1,"2336":1,"2367":1,"2393":1,"2605":1}}],["link",{"2":{"10":2,"50":1,"93":1,"94":1,"114":1,"133":1,"134":2,"277":1,"327":2,"349":1,"513":2,"557":1,"621":1,"1273":1,"1304":1,"1488":2,"1489":1,"1899":2,"2279":4,"2303":2,"2308":4,"2389":1,"2390":2,"2391":2,"2392":4,"2536":1,"2545":1,"2603":1,"2605":3,"2713":1,"2744":1}}],["libffi",{"2":{"2503":1}}],["libusbk",{"2":{"629":1}}],["libusb",{"2":{"240":3}}],["liberal",{"2":{"455":1,"471":1}}],["liberally",{"2":{"453":1,"455":1}}],["liber",{"2":{"154":2,"160":1}}],["libc",{"2":{"114":1,"671":1,"2744":1}}],["lib8tion",{"2":{"114":1}}],["libraries",{"2":{"30":1,"33":1,"1925":1,"2759":1}}],["library",{"0":{"1477":1,"1616":1},"1":{"1478":1},"2":{"30":2,"145":1,"414":1,"415":1,"417":1,"423":1,"424":1,"479":1,"513":1,"697":2,"1476":3,"1477":2,"1616":1,"1925":2,"1926":1,"1927":1,"2617":2}}],["lib",{"2":{"6":1,"75":1,"113":1,"114":1,"234":2,"282":3,"349":2,"360":1,"430":2,"446":1,"483":1,"484":1,"485":2,"513":8,"607":3,"613":1,"614":3,"2303":4,"2562":1}}],["lists",{"0":{"282":1,"468":1},"2":{"382":1,"383":1,"395":1,"474":1,"626":1}}],["listings",{"2":{"211":1,"2552":1}}],["listing",{"2":{"160":1,"371":1,"621":1,"1394":1}}],["listed",{"2":{"43":1,"120":1,"204":1,"264":1,"274":1,"364":1,"366":1,"454":1,"509":1,"574":1,"580":1,"685":1,"688":1,"701":1,"1373":1,"1377":1,"1860":1,"2161":1,"2199":1,"2381":1,"2386":1,"2387":1,"2478":1,"2583":1,"2587":1,"2612":1,"2788":1}}],["listening",{"2":{"1289":1,"1291":2,"2109":1}}],["listen",{"0":{"1286":1,"1291":1,"2678":1},"2":{"34":1,"503":1,"1286":1,"1291":4,"1292":1,"2169":1,"2301":2,"2678":1}}],["list",{"0":{"71":1,"382":1,"383":1,"395":1,"629":1,"2305":1,"2358":1,"2640":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1},"2":{"0":1,"19":1,"76":1,"93":1,"114":1,"116":1,"120":1,"124":1,"134":3,"142":1,"160":2,"172":1,"182":1,"186":1,"188":2,"189":1,"191":2,"199":1,"202":1,"204":1,"211":1,"233":2,"234":1,"249":1,"272":1,"292":1,"313":1,"316":3,"317":1,"331":1,"341":1,"374":3,"375":1,"382":1,"383":1,"393":1,"394":1,"395":2,"396":1,"411":5,"457":1,"467":1,"513":3,"537":1,"612":1,"626":2,"629":1,"692":1,"1302":1,"1337":2,"1391":1,"1392":1,"1396":2,"1420":1,"1435":5,"1545":1,"1548":2,"1555":1,"1585":1,"1616":1,"1692":1,"1715":2,"1762":1,"1910":1,"1925":1,"1983":1,"1991":1,"2080":3,"2082":1,"2085":1,"2090":4,"2096":1,"2168":1,"2190":1,"2206":1,"2217":1,"2221":2,"2319":1,"2354":1,"2357":1,"2358":1,"2439":2,"2445":1,"2446":1,"2460":2,"2462":2,"2463":1,"2475":1,"2476":2,"2479":1,"2487":1,"2508":2,"2513":4,"2541":1,"2562":1,"2587":1,"2588":1,"2594":1,"2595":3,"2601":1,"2603":1,"2605":1,"2631":1,"2646":1,"2711":1,"2716":1,"2721":2,"2723":1,"2725":2,"2727":1,"2728":3,"2734":1,"2735":1,"2758":1,"2762":1,"2777":2}}],["svd",{"2":{"2552":5}}],["svdfile",{"2":{"2552":2}}],["svnroot",{"2":{"358":1}}],["svn",{"2":{"114":1,"160":1,"358":8}}],["sz",{"2":{"2221":1}}],["s2",{"2":{"2186":1,"2191":2}}],["s2m",{"2":{"2168":9}}],["s1",{"2":{"2186":1,"2191":2}}],["sg",{"2":{"1337":1}}],["sgui",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["sbin",{"2":{"1276":1}}],["s3",{"2":{"222":1,"303":2,"304":1,"307":1,"519":1,"2191":1}}],["sq",{"2":{"2143":9,"2144":12}}],["sq80",{"2":{"249":1}}],["sqrt",{"2":{"222":1}}],["squash",{"2":{"560":1}}],["square",{"2":{"222":1,"690":1,"1430":2,"1438":1}}],["squiggly",{"2":{"401":1}}],["squigglybob",{"2":{"222":1}}],["squigglies",{"2":{"401":1}}],["squiggle",{"2":{"154":2}}],["squishytkl",{"2":{"197":2}}],["squishy65",{"2":{"197":2}}],["squeeze",{"2":{"145":1,"486":1,"616":1}}],["squeezing",{"0":{"123":1,"2743":1},"1":{"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1,"2750":1},"2":{"134":1,"2757":1,"2763":1}}],["sfbs",{"0":{"1912":1}}],["sf",{"2":{"211":1}}],["sftent",{"2":{"2150":3,"2151":1}}],["sft",{"2":{"195":1,"1548":2,"2413":1,"2449":1,"2766":1,"2767":1,"2773":3,"2776":6}}],["s65",{"2":{"211":1}}],["sram",{"2":{"2392":3}}],["srand",{"2":{"1853":1,"2177":1}}],["sr",{"2":{"2191":3}}],["srst",{"2":{"335":1}}],["srom",{"2":{"273":2,"277":1}}],["sriwedari70",{"2":{"211":1}}],["src",{"2":{"75":1,"114":1,"133":1,"134":1,"160":1,"234":9,"236":1,"401":1,"513":8,"614":2,"655":1,"730":2,"756":2,"785":2,"817":2,"849":2,"884":2,"918":2,"952":2,"986":2,"1020":2,"1054":2,"1088":2,"1144":1,"1170":1,"1181":2,"1367":1,"1414":4,"2338":1,"2474":1,"2792":1}}],["sdio",{"2":{"1935":2,"1947":2,"1949":2,"1952":3}}],["sd",{"2":{"1548":4}}],["sdep",{"2":{"1529":1}}],["sd2",{"2":{"1235":1}}],["sd3",{"2":{"1132":2}}],["sd1",{"2":{"1132":1,"1235":2}}],["sdb",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1182":1}}],["sdk",{"2":{"191":1,"199":1}}],["sdadel",{"2":{"705":1}}],["sda",{"2":{"176":1,"702":2,"703":4,"758":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1146":1,"1183":1,"1612":1,"2158":1,"2580":1}}],["ssh",{"2":{"2471":1,"2477":1}}],["ssion",{"2":{"1921":1}}],["ss8550",{"2":{"1169":1}}],["ss8050",{"2":{"1169":1}}],["ssp",{"2":{"1123":3}}],["ssk",{"2":{"207":3}}],["ss",{"2":{"176":2,"196":2,"1213":5,"1396":1,"1398":24,"1400":1,"1718":2,"1724":4,"2113":4,"2116":1,"2117":2,"2179":1}}],["ssd1351",{"2":{"176":1,"2612":2,"2615":7}}],["ssd1306oled\\t",{"2":{"31":1,"34":1}}],["ssd1306oled",{"2":{"31":2,"34":2,"220":1}}],["ssd1306",{"0":{"1861":1,"2326":1},"2":{"30":1,"33":1,"50":1,"138":1,"176":1,"220":2,"221":2,"248":1,"249":1,"1849":5,"1851":3,"1855":1,"1858":1,"1859":3,"1860":2,"2326":1,"2612":2,"2615":2}}],["snek",{"2":{"2219":3}}],["snes",{"2":{"236":1}}],["sn",{"2":{"2072":1,"2415":1}}],["snippers",{"2":{"2305":1}}],["snippet",{"2":{"1593":1,"1897":1}}],["snip>",{"2":{"317":1}}],["sn32f2xx",{"0":{"1168":1,"1176":1,"1178":1},"1":{"1169":1,"1170":1,"1171":1,"1172":1,"1173":1,"1174":1,"1175":1,"1176":1,"1177":2,"1178":1,"1179":2},"2":{"1168":1,"1170":5,"1171":14,"1983":1}}],["sn32f26x",{"2":{"493":1}}],["sn32f24xb",{"2":{"493":1}}],["sn32f24x",{"2":{"493":1}}],["sn32",{"0":{"493":1,"2288":1},"2":{"1174":5,"2288":4}}],["snled27351",{"0":{"1180":1,"1187":1,"1189":1,"1191":1,"1193":1,"1195":1,"1197":1,"1199":1,"1201":1,"1203":1,"1205":1,"1207":1,"1209":1},"1":{"1181":1,"1182":1,"1183":1,"1184":1,"1185":1,"1186":1,"1187":1,"1188":2,"1189":1,"1190":2,"1191":1,"1192":2,"1193":1,"1194":2,"1195":1,"1196":2,"1197":1,"1198":2,"1199":1,"1200":2,"1201":1,"1202":2,"1203":1,"1204":2,"1205":1,"1206":2,"1207":1,"1208":2,"1209":1,"1210":2},"2":{"236":2,"249":1,"1180":1,"1181":4,"1182":7,"1183":6,"1185":6,"1195":1,"1196":1,"1199":1,"1200":1,"1203":1,"1204":1,"1205":1,"1206":1,"1762":1,"1983":1,"2727":1,"2734":1}}],["snowe",{"2":{"191":1}}],["snprintf",{"2":{"191":1,"2744":3,"2749":1}}],["sn74x138",{"2":{"145":1,"159":1,"160":1}}],["sn74x154",{"2":{"145":1}}],["snappy",{"2":{"1172":1}}],["snapshot",{"2":{"554":1}}],["snap",{"2":{"277":1}}],["snake",{"2":{"145":1,"2072":2,"2074":2,"2075":2,"2076":2,"2078":2,"2101":1,"2415":2,"2733":1,"2750":1}}],["snagpad",{"2":{"43":2}}],["skeleton",{"2":{"2482":1}}],["sketches",{"2":{"2383":1}}],["sketch",{"2":{"2370":1}}],["skewed",{"2":{"1442":1}}],["sk6805",{"2":{"1249":1,"1253":1,"2069":1}}],["sk6812rgbw",{"2":{"1254":1}}],["sk6812mini",{"2":{"1249":1,"2069":1}}],["sk6812",{"2":{"1249":1,"1253":1,"2069":1}}],["skills",{"2":{"557":1,"1721":1,"1922":1}}],["skips",{"2":{"1397":2,"1595":1,"1943":1,"1966":2,"2394":1}}],["skipped",{"2":{"277":1,"2200":1}}],["skipping",{"2":{"240":1,"597":1,"2200":1}}],["skip",{"2":{"49":1,"65":1,"114":1,"160":1,"176":1,"214":1,"571":1,"572":1,"1127":1,"1130":1,"1369":1,"1483":1,"1939":1,"1943":1,"2307":1,"2388":1,"2432":2,"2444":1,"2469":1,"2490":1,"2513":2,"2536":1,"2537":1,"2763":1}}],["skully",{"2":{"424":1}}],["skullydazed",{"2":{"111":1,"2711":1}}],["skyloong",{"2":{"222":1,"236":4}}],["slct",{"2":{"2394":1,"2431":1}}],["sl",{"2":{"2191":2}}],["slep",{"2":{"1310":1,"2394":1,"2432":1}}],["sled1734x",{"0":{"1143":1,"1150":1,"1152":1,"1154":1,"1156":1,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1},"1":{"1151":1,"1153":1,"1155":1,"1157":1,"1159":1,"1161":1,"1163":1,"1165":1,"1167":1},"2":{"1143":1,"1144":3,"1145":7,"1146":6,"1148":3,"1158":1,"1159":1,"1162":1,"1163":1,"1983":1}}],["sleeping",{"2":{"1568":1,"2301":1}}],["sleep",{"0":{"1329":1,"1335":1},"2":{"70":1,"73":1,"93":1,"190":2,"191":1,"222":1,"249":2,"588":1,"1329":1,"1335":1,"1568":1,"1768":1,"1992":1,"2073":2,"2301":1,"2394":2,"2432":2,"2727":2,"2733":2,"2734":2}}],["slovenian",{"2":{"1392":1,"2742":3}}],["slovak",{"2":{"1392":1,"2742":3}}],["slows",{"2":{"1952":1}}],["slowdown",{"2":{"1859":1}}],["slower",{"2":{"1855":1,"1963":1,"2144":1,"2145":1,"2467":1}}],["slowest",{"2":{"1843":1,"1844":1,"1860":1}}],["slowly",{"2":{"1853":1,"2177":1}}],["slow",{"2":{"506":1,"1363":2,"1440":1,"1611":1,"1841":1,"1937":1,"2080":1,"2502":1,"2623":1}}],["slots",{"2":{"218":1}}],["slsh",{"2":{"313":1,"530":2,"2266":1,"2394":1,"2427":1,"2446":1}}],["slash",{"2":{"1568":1,"1622":1,"2333":1,"2394":2,"2427":1,"2433":1}}],["slashes",{"2":{"160":1}}],["slated",{"2":{"678":1}}],["slate",{"2":{"559":1,"2605":1}}],["slavepin",{"0":{"1217":1},"1":{"1218":1,"1219":1},"2":{"1214":1,"1218":1}}],["slave",{"2":{"74":1,"92":1,"93":1,"107":1,"211":1,"509":2,"511":13,"675":2,"694":2,"852":3,"1023":3,"1057":3,"1129":2,"1213":1,"1214":2,"1218":1,"1231":1,"1752":1,"1896":1,"1997":1,"2082":1,"2089":4,"2152":1,"2166":4,"2167":8,"2168":24,"2169":7,"2170":1,"2179":1,"2263":1}}],["slim",{"2":{"1988":1,"2273":1}}],["sliding",{"2":{"1845":1}}],["slicing",{"2":{"1434":1}}],["slightly",{"2":{"560":1,"641":1,"1128":1,"1180":1,"1252":1,"1443":1,"1446":1,"1557":1,"1611":1,"1960":1,"2160":1,"2264":1,"2382":1,"2387":1,"2605":1,"2774":1}}],["slight",{"2":{"160":1,"236":1,"1987":3}}],["slipped",{"2":{"95":1}}],["smith",{"2":{"2592":1}}],["smithrune",{"2":{"211":1}}],["smp",{"2":{"641":1}}],["smpr",{"2":{"641":1}}],["smart",{"2":{"551":1}}],["smallest",{"2":{"2603":1,"2606":1}}],["smaller",{"2":{"134":1,"166":1,"248":1,"249":2,"481":1,"1611":1,"1860":1,"2185":1,"2603":1,"2615":3,"2744":2,"2759":1}}],["smallice",{"2":{"144":2}}],["small",{"0":{"25":1},"2":{"138":1,"174":1,"191":2,"211":1,"277":1,"364":1,"481":1,"513":1,"1249":1,"1467":1,"1475":1,"1476":1,"1565":1,"1609":1,"1841":1,"1844":1,"2069":1,"2171":2,"2278":1,"2305":1,"2308":1,"2311":2,"2313":1,"2347":1,"2463":1,"2527":1,"2789":1}}],["smoke",{"2":{"2312":2}}],["smoothly",{"2":{"2264":1}}],["smoothed",{"2":{"2264":1}}],["smoother",{"2":{"74":1,"505":1,"1841":1,"1842":1}}],["smoothness",{"2":{"1842":1,"2264":1}}],["smooth1",{"2":{"1616":12}}],["smooth2",{"2":{"1616":12}}],["smooth",{"2":{"353":1,"1616":5,"1845":1,"2511":1}}],["smoll",{"2":{"241":4,"249":1}}],["smolka",{"2":{"211":1}}],["syllabus",{"0":{"2761":1},"2":{"2458":1}}],["syllable",{"2":{"2182":2}}],["syrq",{"2":{"2394":1,"2431":1}}],["sysreq",{"2":{"2394":1,"2431":1}}],["sys",{"2":{"1927":2}}],["sysclk",{"2":{"134":1}}],["sysex",{"2":{"114":1,"133":1,"134":1}}],["systemctl",{"2":{"1276":2}}],["systemd",{"2":{"1276":1}}],["systems",{"0":{"367":1},"2":{"134":1,"234":1,"367":1,"592":1,"1310":1,"1422":1,"1825":1,"2215":1,"2220":1,"2300":2,"2359":1,"2624":1,"2631":1,"2744":1}}],["system",{"0":{"151":1,"451":1,"452":1,"1328":1,"2356":1,"2548":1,"2757":1},"2":{"49":2,"75":1,"76":1,"84":1,"93":1,"114":1,"160":1,"176":1,"231":3,"232":1,"234":1,"249":1,"262":2,"272":1,"366":1,"403":1,"413":1,"434":1,"451":1,"457":1,"479":1,"480":1,"515":1,"589":1,"605":1,"614":1,"626":1,"671":1,"677":1,"690":1,"1258":1,"1276":1,"1310":1,"1328":1,"1761":1,"1763":1,"1769":1,"1840":1,"1841":1,"1870":1,"1925":1,"1933":1,"1954":1,"1956":1,"1959":2,"1982":1,"1984":1,"1986":2,"1993":1,"2110":1,"2151":1,"2158":1,"2184":1,"2221":2,"2263":1,"2289":1,"2299":1,"2301":2,"2303":1,"2355":1,"2356":1,"2359":1,"2394":8,"2431":2,"2432":7,"2470":1,"2480":2,"2484":1,"2489":1,"2531":1,"2536":1,"2547":1,"2570":1,"2595":1,"2612":1,"2616":1,"2668":1,"2677":1,"2740":1,"2744":1,"2757":1,"2774":1,"2775":1}}],["systick",{"0":{"11":1},"2":{"11":2}}],["symb",{"2":{"2645":1}}],["symbol",{"2":{"331":1,"1456":1,"2074":2,"2220":2,"2262":1,"2350":1,"2358":1,"2436":1}}],["symbolic",{"2":{"236":1,"1465":1}}],["symbols",{"0":{"1456":1,"1465":1,"2417":1,"2436":1},"1":{"2437":1,"2438":1},"2":{"176":2,"1460":2,"1466":1,"2219":1,"2301":1,"2393":1,"2417":1}}],["symmetric",{"2":{"1363":2,"1912":1}}],["symmetric70",{"2":{"114":1,"134":1}}],["symlink",{"0":{"451":1},"2":{"451":1,"452":1}}],["symlinks",{"2":{"403":1}}],["sym",{"2":{"94":1,"160":1,"199":1,"236":2,"1363":3,"1366":8,"2220":4,"2713":5}}],["synapse",{"2":{"241":2}}],["synth",{"2":{"1430":2}}],["synthesis",{"2":{"1430":1}}],["synthesis60",{"2":{"211":1}}],["syntaxwarning",{"2":{"249":1}}],["syntax",{"2":{"92":1,"176":1,"191":1,"374":1,"1477":1,"2300":1,"2386":1,"2456":1,"2476":1,"2526":1,"2767":2}}],["syncing",{"2":{"1996":1,"2167":4}}],["synchronous",{"2":{"1896":1}}],["synchronizes",{"2":{"2167":1}}],["synchronized",{"2":{"852":1,"1023":1,"1057":1}}],["synchronization",{"0":{"852":1,"1023":1,"1057":1},"2":{"852":1,"1023":1,"1057":1,"2073":1,"2166":1,"2169":1,"2733":1}}],["synchronizing",{"2":{"511":1}}],["synced",{"2":{"1752":1,"1997":1,"2082":1}}],["syncs",{"2":{"511":2}}],["sync",{"0":{"2167":1,"2168":1,"2514":1},"1":{"2515":1,"2516":1},"2":{"74":1,"107":1,"112":2,"114":4,"211":1,"222":1,"236":2,"249":2,"506":1,"511":3,"850":12,"852":5,"1021":12,"1023":5,"1055":12,"1057":5,"1100":2,"1422":1,"1752":1,"1953":1,"1996":1,"1997":1,"2080":1,"2082":1,"2166":3,"2167":1,"2168":16,"2511":1,"2516":1,"2736":1}}],["s7",{"2":{"67":4,"72":1}}],["schottky",{"2":{"2171":2}}],["school",{"2":{"2156":1,"2603":1}}],["scheikled",{"2":{"222":1}}],["schemes",{"2":{"635":1,"2705":2}}],["scheme",{"2":{"182":1,"2352":1,"2626":3,"2635":3}}],["schemas",{"2":{"191":1,"282":1,"607":1,"609":1,"2710":1}}],["schematics",{"2":{"1330":1}}],["schematic",{"0":{"1508":1,"2352":1},"2":{"93":1,"1273":1,"1326":1,"1330":2}}],["schema",{"0":{"609":1,"2639":1},"2":{"76":2,"160":1,"176":3,"199":1,"222":1,"249":1,"266":2,"277":1,"282":1,"607":1,"2605":1,"2710":1}}],["scheduled",{"2":{"339":1,"598":1,"601":1,"2623":1}}],["schedule",{"0":{"88":1,"104":1,"127":1,"170":1},"2":{"184":1}}],["score",{"2":{"2263":1,"2266":1}}],["scope",{"2":{"1870":1,"2140":1,"2784":1,"2785":1}}],["scottoalp",{"2":{"266":1}}],["scottostarter",{"2":{"217":2}}],["scottocmd",{"2":{"217":2}}],["scotto9",{"2":{"217":2}}],["scottokeebs",{"2":{"217":5}}],["scotto36",{"2":{"217":2}}],["scotto40",{"2":{"199":1,"217":2}}],["scmd",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["sck",{"2":{"1213":2,"1214":4,"1263":4,"2557":1,"2580":1,"2615":2}}],["scenario",{"2":{"1289":1,"1290":1,"2190":1,"2350":1,"2442":1}}],["scenarios",{"2":{"263":1,"692":1,"2350":1,"2769":1}}],["scenes",{"2":{"198":1,"201":1,"213":1,"224":1,"238":1,"251":1,"2200":1}}],["science",{"2":{"199":1}}],["sclr",{"2":{"2144":1}}],["sclk",{"2":{"1935":2,"1947":2,"1949":2,"1952":3,"2367":1,"2369":1,"2371":2,"2373":1,"2375":2,"2377":2,"2379":1}}],["scll",{"2":{"705":1}}],["sclh",{"2":{"705":1}}],["scldel",{"2":{"705":1}}],["scln",{"2":{"176":1,"313":1,"530":2,"1536":1,"2206":1,"2394":1,"2427":1,"2446":1}}],["scl",{"2":{"176":1,"502":1,"702":3,"703":4,"758":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1146":1,"1183":1,"1612":1,"2158":1,"2580":1}}],["scythe",{"2":{"154":2}}],["scylla",{"2":{"114":1}}],["scary",{"2":{"2791":1}}],["scarlet",{"2":{"211":1}}],["scarletbandana",{"2":{"154":2}}],["scattered",{"2":{"2789":1}}],["scaling",{"0":{"808":1,"810":1,"814":1,"1011":1,"1013":1,"1017":1,"1045":1,"1047":1,"1051":1,"1079":1,"1081":1,"1085":1,"1113":1,"1115":1,"1119":1},"1":{"809":1,"811":1,"815":1,"1012":1,"1014":1,"1018":1,"1046":1,"1048":1,"1052":1,"1080":1,"1082":1,"1086":1,"1114":1,"1116":1,"1120":1},"2":{"176":1,"249":2,"656":2,"808":2,"809":3,"810":2,"811":1,"814":1,"1011":2,"1012":3,"1013":2,"1014":1,"1017":1,"1045":2,"1046":3,"1047":2,"1048":1,"1051":1,"1079":2,"1080":3,"1081":2,"1082":1,"1085":1,"1113":2,"1114":3,"1115":2,"1116":1,"1119":1,"1442":1,"1899":3,"1943":1}}],["scaled",{"2":{"1671":2,"2716":1,"2727":1,"2733":1,"2734":1}}],["scale",{"2":{"176":1,"191":1,"199":1,"1440":5,"1442":1,"1948":1,"1988":1,"2606":1}}],["scancode",{"0":{"2699":1},"2":{"2354":2,"2355":1}}],["scancodes",{"2":{"1316":1,"2354":2,"2446":1,"2705":1}}],["scans",{"2":{"1363":2,"1377":1}}],["scanned",{"2":{"641":1,"1289":1,"1290":1,"2350":10}}],["scanning",{"0":{"584":1,"2784":1},"1":{"585":1,"586":1,"2785":1,"2786":1,"2787":1,"2788":1},"2":{"49":1,"134":1,"266":1,"515":1,"563":1,"565":2,"566":3,"584":1,"586":1,"688":1,"689":1,"1171":1,"1172":1,"1363":4,"1611":1,"2160":1,"2301":1,"2350":1,"2587":1,"2623":1,"2653":1,"2728":2,"2783":1,"2784":4,"2785":2,"2787":2}}],["scanf",{"2":{"334":1}}],["scan",{"0":{"585":1,"586":1,"1290":1},"2":{"31":1,"65":1,"93":2,"112":1,"113":1,"114":1,"160":2,"176":2,"196":1,"199":2,"214":1,"277":1,"565":1,"566":5,"586":3,"587":2,"588":1,"627":1,"1172":2,"1290":7,"1363":2,"1366":1,"1367":1,"1412":1,"1534":5,"1611":2,"1855":1,"1948":1,"2166":1,"2167":1,"2179":1,"2188":1,"2269":1,"2276":1,"2340":1,"2353":1,"2446":1,"2786":1,"2787":3}}],["sculpt",{"2":{"145":1,"160":1}}],["sc",{"2":{"55":11,"2147":7,"2148":7,"2150":1,"2151":1,"2421":7}}],["scratch",{"2":{"2300":1,"2536":1}}],["scr",{"2":{"1851":1,"2175":1}}],["scrutiny",{"2":{"352":1}}],["scrl",{"2":{"313":1,"530":2,"1313":1,"2394":1,"2428":1,"2447":1}}],["scrollwheel",{"2":{"1899":1}}],["scrolls",{"2":{"1855":1}}],["scroll",{"0":{"1901":1,"1903":1,"1959":2,"1960":1},"2":{"175":1,"176":3,"188":1,"191":1,"199":1,"222":1,"236":2,"511":1,"1623":1,"1752":1,"1753":2,"1755":1,"1836":1,"1840":5,"1841":3,"1843":13,"1844":1,"1851":1,"1854":2,"1855":3,"1860":7,"1899":3,"1901":15,"1903":1,"1940":3,"1943":1,"1945":5,"1946":3,"1952":3,"1958":1,"1959":4,"1960":25,"1963":1,"2175":1,"2178":1,"2394":4,"2428":4,"2724":2,"2783":1}}],["scrolling",{"2":{"48":1,"175":1,"1443":1,"1766":6,"1840":2,"1841":4,"1842":1,"1843":1,"1849":4,"1854":1,"1860":17,"1899":1,"1901":2,"1940":1,"1956":2,"1958":1,"1959":5,"1960":18,"1961":1,"1962":8,"1963":1,"1986":1,"1987":9}}],["screw",{"2":{"114":1}}],["screens",{"2":{"592":1,"1860":1,"2323":1}}],["screen",{"0":{"1703":1},"2":{"34":1,"138":1,"511":1,"1443":1,"1572":1,"1624":1,"1703":1,"1845":1,"1852":1,"1853":1,"1855":3,"1859":2,"1860":12,"1861":1,"2167":2,"2176":1,"2177":1,"2179":1,"2181":11,"2394":2,"2431":2,"2464":1,"2537":1,"2540":1,"2616":11}}],["script",{"2":{"94":1,"114":2,"134":1,"160":3,"191":1,"199":1,"277":1,"335":2,"428":1,"430":2,"451":1,"452":1,"625":1,"1278":1,"2276":1,"2291":1}}],["scripts",{"2":{"10":1,"211":1,"335":2}}],["shyay",{"2":{"2505":1}}],["shsudo",{"2":{"2505":1}}],["shcd",{"2":{"2482":1,"2483":1}}],["shqmk",{"2":{"1349":1,"1477":1,"2460":2,"2461":2,"2464":2,"2484":1,"2486":1,"2493":2,"2507":4,"2508":2}}],["sheer",{"2":{"2758":1}}],["sheet",{"2":{"685":2,"690":2,"1433":1}}],["she",{"2":{"1603":1}}],["shell",{"2":{"116":1,"176":1,"249":1,"373":2,"428":1,"1913":1,"2294":1,"2547":1}}],["shade",{"2":{"2614":4}}],["shades",{"2":{"1988":1}}],["shall",{"2":{"2199":1,"2605":1}}],["shapes",{"2":{"2656":1}}],["shaped",{"2":{"2169":1}}],["shapped",{"2":{"1987":1}}],["sha",{"2":{"529":2}}],["sha1",{"2":{"349":1}}],["shandoncodes",{"2":{"241":5,"249":1}}],["sharp2",{"2":{"1616":12}}],["sharp1",{"2":{"1616":12}}],["sharp",{"2":{"1616":8,"1831":30,"2305":1,"2410":30}}],["sharing",{"0":{"1413":1},"1":{"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1},"2":{"107":1,"1302":1,"1600":1,"2597":1}}],["shares",{"2":{"1535":1}}],["share",{"2":{"63":1,"415":1,"1172":1,"1302":1,"1389":1,"1413":1,"1417":1,"1592":1,"1600":2,"1601":1,"2334":1,"2549":1}}],["shared",{"0":{"1172":1,"2557":1},"2":{"30":1,"33":1,"50":1,"107":1,"112":2,"114":1,"145":1,"149":1,"190":1,"191":1,"262":1,"502":1,"516":2,"633":1,"1171":1,"1414":1,"1422":1,"1769":1,"1847":1,"1955":2,"1986":1,"1993":1,"2555":1,"2557":4,"2569":2,"2738":3}}],["shutdown",{"0":{"229":1,"592":1,"593":1,"594":1,"595":1},"1":{"593":1,"594":1,"595":1},"2":{"229":6,"230":1,"236":2,"249":1,"266":1,"277":1,"592":3,"593":2,"594":1,"595":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1182":1,"1854":1}}],["sh1107",{"2":{"210":1,"1849":4,"1851":1,"1855":1,"1858":1,"1859":3,"1860":1}}],["sh1106",{"2":{"138":1,"232":2,"1849":2,"1851":1,"1855":2,"1859":2,"1860":1,"2612":6,"2615":16}}],["shpkg",{"2":{"2506":1}}],["shpython3",{"2":{"143":1,"2504":1}}],["shpacman",{"2":{"143":1,"2500":1}}],["shbrew",{"2":{"143":1,"2502":1}}],["sh",{"2":{"114":1,"199":1,"360":1,"450":1,"451":3,"452":1,"625":1,"1278":1,"1616":10,"2194":10,"2291":6,"2422":8,"2470":1,"2485":1,"2501":1}}],["shine",{"2":{"2664":1,"2704":1}}],["shiny",{"2":{"2311":1,"2312":1}}],["shipping",{"2":{"2349":2}}],["shipped",{"2":{"625":1,"2382":1,"2605":1}}],["ship",{"2":{"1132":1,"1133":1}}],["shisaku",{"2":{"211":1}}],["shield",{"2":{"113":1,"114":1}}],["shifting",{"2":{"1449":2,"1469":1,"1543":1}}],["shift+option",{"2":{"2394":1}}],["shift+v",{"2":{"1567":1}}],["shift+s",{"2":{"1540":1}}],["shift+a",{"2":{"1540":2}}],["shift+escape",{"2":{"626":1}}],["shift+b",{"2":{"626":1}}],["shift+right",{"2":{"626":3,"1567":2}}],["shift+2",{"2":{"99":1}}],["shifter",{"2":{"580":1}}],["shifted",{"0":{"1467":1,"2417":1,"2436":1},"1":{"2437":1,"2438":1},"2":{"176":1,"188":1,"191":2,"249":1,"266":1,"674":2,"701":1,"1446":1,"1448":3,"1449":3,"1453":3,"1460":5,"1467":12,"1468":3,"1472":1,"1483":1,"1536":2,"1543":2,"1603":1,"1692":1,"1911":2,"1916":1,"1987":1,"2417":1,"2436":1,"2452":1,"2778":1}}],["shifts",{"2":{"134":2,"1340":2,"1536":1,"1537":4,"1538":2,"1825":1,"1987":4,"2719":1}}],["shift",{"0":{"1340":1,"1446":2,"1447":1,"1449":1,"1450":1,"1452":1,"1453":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1465":1,"1466":1,"1468":1,"1469":1,"1470":1,"1540":1,"2397":1,"2700":1,"2778":1},"1":{"1447":2,"1448":2,"1449":2,"1450":2,"1451":2,"1452":2,"1453":3,"1454":3,"1455":3,"1456":3,"1457":3,"1458":3,"1459":3,"1460":3,"1461":3,"1462":3,"1463":3,"1464":3,"1465":3,"1466":3,"1467":2,"1468":2,"1469":3,"1470":2,"1471":3,"1472":3,"1473":3},"2":{"49":1,"63":1,"99":1,"114":1,"134":4,"137":4,"176":1,"188":1,"191":1,"211":3,"222":2,"236":2,"255":1,"257":1,"258":1,"259":2,"291":1,"502":1,"546":1,"626":1,"701":1,"1311":1,"1321":9,"1327":1,"1336":9,"1337":11,"1340":7,"1373":2,"1401":2,"1407":1,"1422":4,"1446":1,"1447":2,"1448":10,"1449":5,"1450":1,"1451":4,"1452":3,"1453":7,"1454":1,"1455":2,"1456":1,"1457":1,"1458":1,"1459":1,"1460":10,"1462":1,"1466":1,"1467":7,"1468":9,"1469":3,"1470":1,"1471":12,"1472":4,"1473":1,"1479":1,"1482":2,"1483":3,"1536":2,"1537":9,"1538":4,"1540":10,"1543":3,"1548":1,"1560":1,"1567":1,"1568":1,"1602":1,"1603":1,"1604":1,"1606":2,"1620":1,"1689":2,"1692":1,"1693":2,"1694":1,"1701":2,"1703":5,"1704":2,"1711":1,"1712":2,"1713":6,"1715":1,"1855":1,"1907":3,"1910":2,"1911":5,"1916":4,"1986":10,"2072":10,"2146":4,"2147":6,"2148":6,"2149":1,"2151":4,"2179":1,"2208":1,"2220":1,"2222":1,"2241":1,"2344":1,"2394":4,"2395":2,"2397":13,"2403":1,"2412":11,"2413":10,"2415":10,"2416":10,"2421":6,"2423":1,"2429":4,"2436":1,"2437":1,"2449":16,"2450":2,"2489":2,"2529":4,"2530":4,"2551":4,"2611":2,"2690":1,"2700":3,"2719":6,"2725":1,"2770":6,"2771":3,"2776":2,"2777":1,"2778":3,"2788":1,"2793":2}}],["shore",{"2":{"2789":1}}],["shorting",{"2":{"2318":1,"2568":1}}],["shorts",{"2":{"2309":1,"2311":1}}],["shortcuts",{"0":{"1913":1},"2":{"1398":1,"1400":1,"1693":1,"1694":1,"1714":2,"1715":1,"1913":1,"1921":1,"2221":1,"2358":1,"2436":1,"2449":1,"2777":1}}],["shortcut",{"2":{"1339":1,"1340":1,"1605":2,"1851":1,"2138":1,"2139":1,"2175":1,"2182":1,"2497":1,"2696":1}}],["shortly",{"2":{"575":1,"1713":1,"2190":1}}],["shortest",{"2":{"1453":1}}],["shorted",{"2":{"510":1,"2568":1}}],["shorter",{"2":{"457":1,"1252":1,"1592":1,"1842":1,"2481":1}}],["shortened",{"2":{"202":1,"2671":1}}],["shorten",{"2":{"160":1,"1368":1}}],["shorthands",{"2":{"1991":1,"2096":1}}],["shorthand",{"2":{"199":1,"2526":1,"2653":1}}],["shortages",{"2":{"172":1}}],["short",{"2":{"114":1,"123":1,"134":1,"266":1,"462":1,"466":1,"468":1,"481":1,"540":1,"554":2,"556":1,"616":1,"623":1,"624":1,"689":2,"707":1,"1272":1,"1294":1,"1362":1,"1448":1,"1537":1,"1552":2,"1616":16,"1713":3,"1722":1,"1863":1,"1908":2,"2156":2,"2209":1,"2268":1,"2271":1,"2273":1,"2274":1,"2276":1,"2278":1,"2280":1,"2288":1,"2309":1,"2313":1,"2314":1,"2317":1,"2318":1,"2489":1,"2529":1,"2568":1,"2569":1,"2665":1,"2715":1}}],["shop",{"2":{"2374":1,"2751":1}}],["shooting",{"2":{"2318":1}}],["shot",{"0":{"1311":1,"1344":1,"2418":1,"2529":1,"2730":1},"1":{"2530":1},"2":{"93":1,"145":2,"188":1,"191":1,"194":1,"199":1,"231":1,"503":1,"505":1,"1311":1,"1337":11,"1344":1,"1372":1,"1483":3,"1537":2,"1540":2,"1692":2,"1965":2,"1966":1,"2194":1,"2288":1,"2406":1,"2418":7,"2422":1,"2529":14,"2530":7,"2730":1,"2776":1}}],["showcasing",{"2":{"2605":1}}],["showed",{"2":{"1473":1}}],["shows",{"2":{"300":1,"315":1,"416":1,"523":1,"524":1,"556":1,"1380":1,"1381":1,"1701":1,"1706":1,"2300":2,"2570":1,"2587":1}}],["shown",{"2":{"134":1,"141":1,"506":1,"635":1,"659":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1185":1,"1305":1,"1635":1,"1639":1,"1643":1,"1696":1,"2083":1,"2185":1,"2186":1,"2307":2,"2529":1,"2634":1,"2767":1,"2774":1}}],["show",{"2":{"83":1,"114":1,"119":1,"176":1,"230":1,"254":1,"375":4,"378":4,"393":1,"394":1,"395":1,"396":2,"402":1,"403":1,"411":1,"433":1,"588":1,"1273":1,"1324":1,"1631":1,"1635":1,"1639":1,"1961":1,"2079":1,"2188":1,"2300":2,"2348":1,"2350":2,"2437":1,"2450":1,"2506":1,"2513":1,"2547":1,"2587":1,"2595":1,"2614":3}}],["showing",{"2":{"70":1,"77":1,"506":1,"1273":1,"1362":1,"2079":1,"2531":1,"2542":1,"2659":1}}],["shouldn",{"2":{"501":1,"575":1,"1324":1,"1349":1,"1476":1,"1862":1,"2166":1,"2312":1,"2605":1}}],["should",{"2":{"3":1,"6":1,"10":2,"11":1,"15":1,"17":1,"49":1,"70":1,"103":1,"125":1,"126":1,"131":2,"141":1,"142":2,"167":1,"182":1,"185":2,"194":1,"198":1,"201":7,"206":1,"234":1,"236":1,"240":1,"245":1,"249":1,"254":1,"268":1,"271":1,"275":1,"278":1,"282":3,"291":1,"302":1,"305":1,"315":3,"319":1,"321":1,"324":1,"332":2,"334":1,"336":1,"341":3,"357":1,"361":1,"407":1,"411":1,"432":2,"434":2,"435":3,"441":1,"447":1,"453":1,"457":2,"460":1,"462":1,"466":2,"468":1,"472":1,"473":1,"476":1,"478":1,"482":1,"498":1,"517":1,"529":6,"530":1,"555":1,"556":3,"559":1,"560":5,"568":1,"571":1,"573":1,"574":1,"580":3,"581":1,"584":1,"585":1,"586":1,"588":1,"597":1,"598":2,"600":1,"609":1,"616":1,"617":2,"622":1,"623":1,"626":1,"627":2,"628":1,"646":1,"663":1,"679":1,"681":1,"689":2,"697":1,"701":1,"726":1,"738":1,"764":1,"796":1,"826":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1121":1,"1128":1,"1132":1,"1133":1,"1152":1,"1189":1,"1214":1,"1273":1,"1274":1,"1275":1,"1279":1,"1280":2,"1295":2,"1303":1,"1308":1,"1321":1,"1329":1,"1351":1,"1363":1,"1369":1,"1376":2,"1383":1,"1385":1,"1388":1,"1396":1,"1416":1,"1417":1,"1422":2,"1430":1,"1433":1,"1441":1,"1453":1,"1460":1,"1472":1,"1477":1,"1482":1,"1483":2,"1494":1,"1506":1,"1536":1,"1538":1,"1543":3,"1555":3,"1556":3,"1586":1,"1589":3,"1591":1,"1592":1,"1597":1,"1599":2,"1634":1,"1671":1,"1708":1,"1753":1,"1761":1,"1855":1,"1926":1,"1951":1,"1953":1,"1974":2,"1975":1,"1978":1,"1981":1,"1982":1,"1986":1,"2070":1,"2072":1,"2075":1,"2103":1,"2109":1,"2156":1,"2158":1,"2166":1,"2168":2,"2187":1,"2188":1,"2190":1,"2200":1,"2207":1,"2281":1,"2300":2,"2312":4,"2315":1,"2316":1,"2318":2,"2334":1,"2335":3,"2336":1,"2338":1,"2341":6,"2344":1,"2345":1,"2348":3,"2350":3,"2369":1,"2371":1,"2373":1,"2386":2,"2388":1,"2392":2,"2448":1,"2461":1,"2464":1,"2466":1,"2480":1,"2489":1,"2496":1,"2499":1,"2503":1,"2505":1,"2508":2,"2516":1,"2526":1,"2545":2,"2547":1,"2552":4,"2556":3,"2558":3,"2565":1,"2569":1,"2589":1,"2590":1,"2592":1,"2595":2,"2596":1,"2600":1,"2603":4,"2604":3,"2605":19,"2606":8,"2609":1,"2613":1,"2615":2,"2616":6,"2631":1,"2635":2,"2637":1,"2639":1,"2644":1,"2718":1,"2725":3,"2738":2,"2744":1,"2762":2,"2764":1,"2767":1,"2791":2,"2794":1,"2796":1}}],["sabayon",{"2":{"2470":1,"2503":1}}],["sasha",{"2":{"2309":1,"2320":1}}],["sag",{"2":{"1337":1}}],["sagr",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["sa",{"2":{"1337":1,"1703":2}}],["salt",{"2":{"2275":1,"2344":1}}],["sall",{"2":{"2144":1}}],["salad",{"2":{"1324":1}}],["salicylic",{"2":{"154":13,"160":2,"211":1}}],["sake",{"2":{"1306":1}}],["sanitisation",{"2":{"1482":1}}],["sanitise",{"2":{"1482":1}}],["sane",{"2":{"688":2}}],["sango",{"2":{"249":1}}],["sacrifices",{"2":{"688":1}}],["says",{"2":{"2303":1,"2489":1,"2791":1}}],["saying",{"2":{"545":1,"2507":1}}],["say",{"2":{"537":1,"1337":1,"1689":1,"2150":1,"2151":1,"2190":1,"2302":1,"2499":1,"2650":1,"2784":1}}],["said",{"2":{"1400":1}}],["sai",{"2":{"530":2,"1986":1,"2416":1}}],["saikoutype",{"2":{"249":1}}],["sadly",{"2":{"2507":1}}],["sad",{"2":{"530":2,"1986":1,"2416":1}}],["sawnsprojects",{"2":{"211":2,"249":1}}],["sauce",{"2":{"211":1}}],["saevus",{"2":{"211":1}}],["safemode",{"2":{"2386":1}}],["safest",{"2":{"1598":1}}],["safety",{"0":{"1324":1,"2204":1},"2":{"2166":1,"2204":1}}],["safe",{"2":{"199":1,"229":2,"534":1,"557":1,"570":3,"1396":3,"1412":1,"1422":5,"1830":1,"1868":1,"1913":1,"1921":1,"1959":1,"1960":1,"1979":1,"2476":2,"2767":1}}],["safely",{"2":{"31":1,"34":1,"240":1,"587":1,"1853":1,"2177":1,"2387":1,"2507":1,"2527":1}}],["saves",{"2":{"1943":1,"1956":1,"2527":2}}],["save",{"0":{"541":1},"2":{"249":1,"440":1,"503":1,"541":1,"589":1,"1369":1,"1421":1,"1443":1,"1488":1,"1552":1,"1693":1,"2077":1,"2166":1,"2316":1,"2388":1,"2468":2,"2475":1,"2476":1,"2496":2,"2513":1,"2515":1,"2527":1,"2545":1,"2550":1,"2744":1,"2749":1}}],["saved",{"2":{"131":1,"393":1,"394":1,"1280":1,"1369":1,"1532":1}}],["saving",{"2":{"131":1,"134":1,"582":3,"606":1,"2654":1}}],["savings",{"2":{"25":1,"2744":1}}],["sata",{"2":{"2156":1}}],["satan",{"2":{"370":2,"401":2,"2492":1}}],["satu",{"2":{"1597":1,"2072":1,"2415":1}}],["saturation",{"2":{"111":1,"114":1,"506":1,"1986":4,"1987":6,"1992":1,"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2033":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2071":2,"2072":6,"2073":2,"2092":8,"2415":6,"2416":4,"2616":2,"2636":1,"2733":3,"2734":2}}],["satd",{"2":{"1597":1,"2072":1,"2415":1}}],["satisfied",{"2":{"541":1,"2767":1,"2768":1}}],["satisfaction75",{"2":{"134":2,"199":1,"249":1}}],["satellite",{"2":{"191":1,"211":1}}],["satt99",{"2":{"160":1}}],["satt",{"2":{"154":1,"160":1,"176":1}}],["sat",{"0":{"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2092":1},"1":{"2033":1},"2":{"49":1,"183":2,"222":3,"292":1,"315":2,"506":1,"1987":12,"1992":1,"2073":2,"2077":1,"2092":4,"2095":2,"2338":2,"2616":11,"2733":1,"2734":2,"2750":3}}],["sampling",{"2":{"160":1,"641":2,"2264":1}}],["sampled",{"2":{"1363":1}}],["samples",{"2":{"688":2,"1430":1,"1438":1,"1671":1}}],["sample",{"2":{"31":1,"176":1,"222":1,"688":6,"689":4,"1218":4,"1430":6,"1438":4,"1452":1,"1476":1,"1684":1,"1896":1,"1899":3,"2264":6,"2356":1}}],["same",{"2":{"27":1,"45":2,"73":1,"142":1,"166":1,"169":1,"222":1,"234":1,"235":1,"279":1,"313":1,"401":1,"453":2,"462":1,"496":1,"511":2,"522":1,"529":2,"540":1,"541":1,"546":1,"597":1,"600":1,"607":1,"628":1,"635":1,"678":1,"681":1,"691":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1129":1,"1185":1,"1252":1,"1297":2,"1312":1,"1320":1,"1321":1,"1337":1,"1349":2,"1363":1,"1375":1,"1378":1,"1389":2,"1392":1,"1413":1,"1414":1,"1415":2,"1416":1,"1420":1,"1451":1,"1483":1,"1488":3,"1496":2,"1538":1,"1548":1,"1551":1,"1554":1,"1555":3,"1562":2,"1565":2,"1589":1,"1592":1,"1600":1,"1714":1,"1721":1,"1761":1,"1763":1,"1766":4,"1840":1,"1841":1,"1845":3,"1846":1,"1859":1,"1900":1,"1904":1,"1912":3,"1925":1,"1950":3,"1966":1,"1982":1,"1984":1,"1986":1,"1987":5,"2072":1,"2082":1,"2097":1,"2149":1,"2152":1,"2169":1,"2184":1,"2193":1,"2200":2,"2207":1,"2220":1,"2269":1,"2276":1,"2281":1,"2289":1,"2291":1,"2300":1,"2308":1,"2311":1,"2312":1,"2328":1,"2334":2,"2338":1,"2342":2,"2348":1,"2383":1,"2444":1,"2479":1,"2480":1,"2484":2,"2489":1,"2499":1,"2512":2,"2513":1,"2516":1,"2525":1,"2564":1,"2587":1,"2589":3,"2591":1,"2603":1,"2605":4,"2613":1,"2614":4,"2615":2,"2629":1,"2644":1,"2654":1,"2702":1,"2725":1,"2745":1,"2774":1,"2783":1,"2792":1}}],["sprintf",{"2":{"2744":2,"2749":2}}],["springgreen",{"2":{"1991":2,"2096":2}}],["spring",{"2":{"1615":1}}],["springs",{"2":{"1615":1}}],["spread",{"2":{"1988":2,"2365":1}}],["spreads",{"2":{"1988":1}}],["spruce",{"2":{"222":1}}],["splash",{"2":{"1766":3,"1987":6,"2750":2}}],["splaytoraid",{"2":{"266":1}}],["splicing",{"2":{"1436":1}}],["splinky",{"2":{"176":1,"2584":1}}],["splitting",{"0":{"354":1}}],["splitty",{"2":{"253":2}}],["splitreus62",{"2":{"154":2}}],["split75",{"2":{"144":2}}],["splitkb",{"2":{"102":1,"114":1,"134":2,"211":1,"222":1,"277":1}}],["split",{"0":{"30":1,"32":1,"35":1,"80":1,"107":1,"149":1,"508":1,"1533":1,"1596":1,"1953":1,"1955":1,"1961":1,"2152":1,"2310":1,"2582":1,"2736":1},"1":{"31":1,"36":1,"509":1,"510":1,"511":1,"1962":1,"1963":1,"2153":1,"2154":1,"2155":1,"2156":1,"2157":1,"2158":1,"2159":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1,"2172":1},"2":{"30":3,"32":2,"45":3,"65":2,"70":28,"74":3,"80":1,"92":2,"93":4,"94":1,"107":7,"111":1,"112":10,"114":13,"134":4,"145":3,"149":1,"154":8,"160":10,"175":1,"176":15,"191":7,"199":3,"211":7,"222":9,"236":5,"249":4,"253":2,"259":5,"260":2,"266":8,"270":2,"277":11,"502":1,"506":6,"508":5,"509":8,"510":7,"511":26,"515":5,"611":2,"1121":2,"1126":2,"1127":1,"1134":1,"1353":1,"1354":1,"1356":2,"1358":1,"1367":1,"1383":1,"1389":3,"1442":1,"1533":3,"1585":1,"1596":3,"1752":2,"1768":3,"1854":2,"1855":1,"1943":1,"1946":1,"1950":1,"1952":1,"1953":1,"1955":1,"1961":1,"1980":1,"1992":3,"1996":2,"1997":2,"2070":2,"2073":2,"2080":4,"2082":2,"2098":1,"2152":4,"2156":2,"2159":1,"2160":2,"2162":1,"2163":3,"2164":10,"2165":1,"2166":5,"2167":21,"2168":4,"2169":14,"2170":3,"2171":2,"2172":2,"2178":2,"2195":1,"2263":1,"2270":3,"2272":3,"2279":3,"2284":2,"2286":2,"2301":9,"2310":2,"2323":1,"2342":1,"2409":2,"2435":2,"2582":1,"2598":1,"2605":1,"2606":1,"2711":1,"2727":2,"2733":4,"2734":2,"2736":5,"2764":1}}],["splits",{"2":{"18":1,"35":1,"114":1}}],["sponge",{"2":{"2311":1}}],["spots",{"2":{"546":1}}],["spot",{"2":{"251":1,"540":2,"592":1,"2447":1}}],["spooky",{"2":{"176":1}}],["sp111",{"2":{"211":1}}],["spc",{"2":{"195":1,"266":1,"313":2,"530":2,"1536":1,"1565":2,"2199":3,"2394":1,"2427":1,"2446":2,"2766":1,"2767":1,"2776":1,"2777":4}}],["spdx",{"2":{"2609":2}}],["spdu",{"2":{"1597":1,"1765":1,"2072":1,"2408":1,"2415":1}}],["spdd",{"2":{"1597":1,"1765":1,"2072":1,"2408":1,"2415":1}}],["spd",{"2":{"183":4,"222":1,"1768":1,"1986":1,"1989":1,"1992":1,"2073":1,"2416":1}}],["spacing",{"2":{"2476":1,"2604":1}}],["space+b",{"2":{"626":1}}],["spaces",{"0":{"546":1},"2":{"292":1,"416":1,"453":2,"455":1,"519":1,"521":1,"527":2,"2169":1,"2597":1,"2604":1,"2752":1,"2785":1}}],["spacebars",{"2":{"259":1}}],["spacebar",{"2":{"259":1,"2344":1,"2394":1,"2427":1,"2489":1}}],["spacey",{"0":{"255":1},"2":{"241":2,"255":1,"266":1}}],["spaceholdings",{"2":{"154":3,"160":2,"253":2,"266":1}}],["space",{"0":{"123":1,"2146":1,"2421":1,"2700":1},"1":{"2147":1,"2148":1,"2149":1,"2150":1,"2151":1},"2":{"49":2,"123":1,"124":3,"134":1,"154":8,"166":1,"176":3,"188":1,"189":1,"191":2,"203":1,"211":2,"249":1,"255":1,"259":1,"260":1,"486":1,"530":1,"546":2,"612":1,"689":1,"1373":1,"1421":1,"1440":1,"1443":1,"1478":1,"1488":1,"1536":1,"1537":1,"1592":1,"1622":1,"1693":1,"2075":1,"2146":1,"2148":7,"2149":1,"2150":3,"2151":3,"2187":1,"2199":2,"2220":1,"2235":1,"2264":1,"2266":1,"2394":1,"2421":8,"2427":1,"2450":1,"2467":1,"2553":1,"2617":1,"2700":1,"2741":1,"2748":2,"2749":2,"2750":1,"2763":1,"2788":1}}],["spaceman",{"2":{"37":4}}],["span",{"2":{"1925":1}}],["spanish",{"2":{"176":1,"249":1,"1392":3,"1536":1,"2742":9}}],["spamming",{"2":{"222":1,"2796":1}}],["spare",{"2":{"218":1,"1423":1}}],["sparkfun",{"0":{"271":1,"1355":1,"2374":1},"1":{"2375":1},"2":{"163":1,"176":1,"271":3,"277":1,"487":1,"674":3,"1348":1,"1352":4,"1528":2,"2368":1,"2370":1,"2374":3,"2383":4,"2580":2,"2751":1}}],["sp",{"2":{"134":1,"211":1}}],["spi0",{"2":{"2576":2}}],["spiral",{"2":{"1766":4,"1987":12,"2750":3}}],["spid0",{"2":{"2576":1,"2580":1}}],["spid2",{"2":{"1214":2}}],["spid1",{"2":{"1214":1,"1263":1,"2576":1}}],["spiderisland",{"2":{"154":1}}],["spidey3",{"2":{"74":1,"176":1,"191":1}}],["spi3",{"2":{"1214":1}}],["spi2",{"2":{"1214":4}}],["spi1",{"2":{"1214":2,"1263":2,"2576":2}}],["spinning",{"2":{"1766":3,"1986":1,"1987":9}}],["spins",{"2":{"1614":1}}],["spin",{"2":{"176":1}}],["spi",{"0":{"675":1,"680":1,"694":1,"1211":1,"1216":1,"1217":1,"1220":2,"1223":2,"1225":2,"1228":2,"1231":1,"1260":1,"1263":1,"1529":1,"1857":1,"2576":1},"1":{"1212":1,"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1218":2,"1219":2,"1220":1,"1221":3,"1222":3,"1223":1,"1224":3,"1225":1,"1226":3,"1227":3,"1228":1,"1229":3,"1230":3,"1231":1,"1264":1,"1265":1},"2":{"93":1,"114":2,"118":2,"134":1,"160":2,"174":1,"176":9,"210":1,"232":1,"234":4,"236":5,"277":2,"654":1,"655":1,"656":4,"658":1,"671":3,"675":9,"678":2,"680":2,"693":1,"694":6,"1211":1,"1212":3,"1213":3,"1214":26,"1216":1,"1217":1,"1218":4,"1219":1,"1220":1,"1222":2,"1223":1,"1224":1,"1225":1,"1227":3,"1228":1,"1230":3,"1231":2,"1255":1,"1260":4,"1263":12,"1264":2,"1265":1,"1528":3,"1529":5,"1849":1,"1851":2,"1857":4,"1936":8,"1942":2,"1943":9,"1950":4,"1986":1,"1989":1,"2174":1,"2179":2,"2315":1,"2416":1,"2557":3,"2567":1,"2570":2,"2573":1,"2576":4,"2580":6,"2583":1,"2603":1,"2612":25,"2615":71,"2722":2,"2739":2}}],["spent",{"2":{"2784":1}}],["spend",{"2":{"173":1,"1475":1,"2608":1}}],["speaks",{"2":{"2184":1}}],["speak",{"2":{"2184":2}}],["speakers",{"2":{"684":1,"685":1,"1434":1,"2340":1}}],["speaker",{"2":{"684":3,"1423":1,"1424":3,"1425":1,"1427":2,"1431":1,"1433":1,"1434":1,"1436":5,"2112":1,"2269":2,"2276":2,"2567":1,"2569":2,"2715":3,"2732":2}}],["spelled",{"2":{"1478":1}}],["spelling",{"2":{"49":1,"92":1,"1398":2,"2182":1}}],["specially",{"2":{"1919":1}}],["specialized",{"2":{"1257":1,"2385":1}}],["special",{"0":{"1314":1,"1328":1,"1454":1,"1466":1,"2434":1},"2":{"222":1,"423":1,"432":1,"505":1,"567":1,"587":1,"625":1,"707":1,"1213":1,"1234":1,"1249":1,"1372":1,"1423":1,"1440":1,"1452":1,"1453":2,"1454":1,"1455":1,"1460":1,"1477":1,"1482":1,"1561":1,"1692":1,"1771":1,"1958":1,"1995":1,"2069":1,"2111":1,"2187":1,"2220":1,"2315":1,"2368":1,"2372":1,"2441":1,"2446":1,"2489":2,"2554":1,"2605":1,"2610":1,"2645":1,"2666":1,"2700":1,"2766":1,"2767":1}}],["specifed",{"2":{"1378":6}}],["specifying",{"2":{"76":1,"87":1,"103":1,"118":1,"126":1,"166":1,"170":2,"211":1,"246":1,"247":1,"279":1,"414":1,"474":1,"679":2,"1373":2,"1406":1,"2291":1,"2493":1,"2614":1}}],["specify",{"2":{"55":1,"87":1,"134":1,"169":1,"184":1,"201":1,"234":1,"313":1,"371":1,"418":1,"430":1,"474":1,"505":1,"511":2,"513":2,"611":1,"1129":1,"1136":1,"1324":1,"1369":1,"1386":1,"1477":1,"1532":2,"1563":1,"1596":1,"1611":1,"1760":1,"1858":1,"1933":1,"1939":2,"2082":1,"2097":1,"2169":3,"2198":1,"2199":1,"2300":1,"2301":1,"2302":1,"2334":1,"2386":1,"2461":1,"2464":1,"2493":1,"2526":1,"2569":1,"2578":1,"2596":2,"2614":7,"2632":1,"2796":1}}],["specifig",{"2":{"1895":1}}],["specifiers",{"2":{"2744":1}}],["specifies",{"2":{"1363":1,"1700":1,"1703":1,"1948":1,"2300":1,"2605":1,"2635":2,"2710":1}}],["specified",{"0":{"152":1},"2":{"49":1,"58":1,"70":14,"109":1,"160":1,"184":1,"371":2,"383":1,"384":1,"400":1,"506":1,"513":2,"596":1,"638":2,"639":3,"674":2,"675":1,"694":5,"1258":1,"1363":1,"1378":6,"1394":1,"1398":1,"1596":1,"1641":1,"1697":1,"1767":1,"1860":1,"1911":1,"1990":1,"2082":2,"2162":1,"2181":1,"2190":1,"2199":2,"2221":1,"2264":2,"2283":1,"2285":1,"2287":1,"2300":6,"2338":1,"2386":1,"2437":1,"2450":2,"2493":2,"2507":1,"2530":1,"2552":2,"2605":1,"2614":7,"2615":3,"2626":1,"2629":1,"2632":1,"2712":2,"2725":1}}],["specifics",{"2":{"683":1,"1264":1,"1280":1}}],["specifications",{"2":{"1939":2}}],["specification",{"0":{"1830":1,"1834":1},"2":{"169":1,"182":1,"184":1,"1309":1,"1829":1,"1925":1,"2354":1,"2610":1}}],["specifically",{"2":{"107":1,"1172":1,"2308":1,"2520":1,"2587":1,"2624":1,"2631":1,"2779":1}}],["specific",{"0":{"1418":1,"2315":1,"2740":1},"1":{"2741":1,"2742":1},"2":{"5":1,"21":1,"49":1,"74":2,"77":1,"94":1,"113":1,"114":2,"118":1,"124":1,"133":3,"134":3,"176":2,"191":2,"199":1,"211":2,"324":1,"370":1,"374":1,"400":1,"457":1,"508":1,"552":1,"609":1,"626":1,"636":1,"641":1,"677":1,"690":1,"697":1,"703":1,"726":1,"1134":1,"1317":1,"1337":2,"1353":1,"1354":1,"1388":1,"1414":1,"1416":1,"1422":3,"1439":1,"1614":1,"1615":2,"1617":1,"1619":1,"1689":1,"1708":1,"1767":1,"1860":2,"1862":2,"1897":1,"1939":1,"1951":1,"1966":1,"1986":1,"1990":1,"1997":1,"2072":1,"2113":1,"2152":1,"2181":1,"2200":1,"2207":1,"2268":1,"2284":1,"2286":1,"2297":2,"2300":1,"2301":1,"2319":1,"2343":1,"2359":1,"2366":1,"2489":1,"2541":1,"2552":1,"2574":1,"2603":1,"2604":3,"2605":4,"2616":2,"2620":1,"2622":1,"2640":1,"2642":1,"2651":1,"2655":2,"2710":3,"2740":1,"2742":1,"2750":1,"2767":1,"2783":1,"2788":1,"2793":1}}],["specs",{"2":{"114":1}}],["spec",{"2":{"114":1,"533":1,"1752":1,"1956":4,"2158":1,"2740":1}}],["speeds",{"2":{"511":1,"1836":1,"1840":2,"1843":3,"1844":2,"1860":1,"2078":1,"2102":1}}],["speedo",{"0":{"56":1},"2":{"56":6}}],["speed",{"0":{"1801":1,"1802":1,"1803":1,"1804":1,"1805":2,"1807":2,"1809":1,"2040":1,"2041":1,"2042":1,"2043":1,"2044":2,"2046":2,"2048":1,"2078":1,"2093":1},"1":{"1806":2,"1808":2,"1810":1,"2045":2,"2047":2,"2049":1},"2":{"49":3,"112":2,"114":1,"198":1,"222":1,"370":1,"502":1,"507":1,"511":4,"704":1,"1136":4,"1218":2,"1260":1,"1363":1,"1422":1,"1437":1,"1440":1,"1765":4,"1766":2,"1768":1,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1806":2,"1807":1,"1808":2,"1809":1,"1810":1,"1831":4,"1840":6,"1841":8,"1842":14,"1843":12,"1844":4,"1845":5,"1855":1,"1860":3,"1900":1,"1936":2,"1937":2,"1943":2,"1950":3,"1960":2,"1986":4,"1987":5,"1989":1,"1992":1,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2045":2,"2046":1,"2047":2,"2048":1,"2049":1,"2072":6,"2073":1,"2093":12,"2095":2,"2100":2,"2101":2,"2102":1,"2143":1,"2166":2,"2167":1,"2353":1,"2387":1,"2394":1,"2408":4,"2410":4,"2415":6,"2416":4,"2727":4,"2729":1,"2733":2,"2734":4,"2736":2}}],["stsw",{"2":{"2390":1}}],["stk500v1",{"2":{"2370":1}}],["stk500",{"2":{"2370":1}}],["st4",{"2":{"2191":1}}],["st3",{"2":{"2191":1}}],["st2",{"2":{"2191":1}}],["st1",{"2":{"2191":1}}],["st110r2",{"2":{"249":1}}],["stn",{"2":{"2190":5,"2191":113}}],["stmc",{"2":{"1356":2}}],["stm",{"2":{"1356":1}}],["stmicroelectronics",{"0":{"489":1},"2":{"331":1}}],["stm32cubemx",{"2":{"1264":1}}],["stm32s",{"2":{"690":1}}],["stm32h733",{"2":{"489":1}}],["stm32h723",{"2":{"222":1,"489":1}}],["stm32duino",{"0":{"2280":1,"2389":1},"1":{"2390":1,"2391":1,"2392":1},"2":{"114":1,"489":1,"629":1,"2278":1,"2280":2,"2389":1}}],["stm32f2",{"2":{"1433":1}}],["stm32f2xx",{"2":{"704":1}}],["stm32f7xx",{"2":{"705":1}}],["stm32f070",{"2":{"682":1}}],["stm32f072xb",{"2":{"671":1}}],["stm32f072",{"0":{"1141":1},"2":{"50":1,"191":1,"682":1}}],["stm32f042",{"2":{"682":1,"2278":1}}],["stm32f0",{"2":{"639":1}}],["stm32f0x2",{"2":{"489":1}}],["stm32f0xx",{"2":{"199":1,"635":1,"678":1,"682":1,"705":1}}],["stm32f1x",{"2":{"2392":2}}],["stm32f1xx",{"2":{"93":1,"635":2,"671":1,"704":1,"1427":1,"1431":1,"1433":1}}],["stm32f103c8",{"2":{"685":1,"690":2,"692":1}}],["stm32f103c6",{"2":{"176":1}}],["stm32f103x",{"2":{"635":1}}],["stm32f103",{"0":{"1142":1},"2":{"199":1,"489":1,"495":1,"1127":1,"1129":1,"1130":1,"1142":1,"2278":1,"2280":1,"2366":1,"2389":1,"2392":1}}],["stm32f3discovery",{"2":{"335":2}}],["stm32f303xc",{"2":{"2308":1,"2566":1,"2587":2}}],["stm32f303xe",{"2":{"145":1}}],["stm32f303",{"0":{"1140":1},"2":{"385":1,"489":1,"495":1,"703":1,"1129":1,"1214":1,"1235":1,"1506":1,"1611":1,"2552":2,"2569":1,"2592":1}}],["stm32f303cct6",{"2":{"692":1,"2567":1}}],["stm32f303cc",{"2":{"331":1}}],["stm32f3",{"2":{"222":1,"331":2,"335":1,"639":1}}],["stm32f3xx",{"2":{"93":1,"635":1,"671":1,"705":1}}],["stm32f4x1",{"0":{"2553":1},"1":{"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1},"2":{"678":1,"682":1}}],["stm32f4xx",{"2":{"93":1,"635":2,"704":1}}],["stm32f411",{"2":{"374":2,"489":1,"682":1}}],["stm32f407",{"2":{"489":1}}],["stm32f407x",{"2":{"114":1}}],["stm32f405vg",{"2":{"692":1}}],["stm32f405",{"2":{"489":1}}],["stm32f405rg",{"2":{"277":1}}],["stm32f401",{"2":{"489":1,"682":1}}],["stm32f446",{"2":{"93":1,"489":1}}],["stm32l1xx",{"2":{"671":1,"704":1}}],["stm32l073rz",{"2":{"2605":1}}],["stm32l072",{"2":{"2589":1}}],["stm32l0",{"2":{"673":1}}],["stm32l0xx",{"2":{"671":1,"704":1}}],["stm32l082kz",{"2":{"2605":1}}],["stm32l082",{"2":{"49":1,"2589":1}}],["stm32l443",{"2":{"489":1}}],["stm32l442",{"2":{"156":1,"160":1,"489":1}}],["stm32l422",{"2":{"489":1}}],["stm32l422xb",{"2":{"114":1}}],["stm32l412",{"2":{"489":1}}],["stm32l412xb",{"2":{"114":1}}],["stm32l4xx",{"2":{"249":1,"705":1}}],["stm32l432",{"2":{"156":1,"160":1,"236":1,"489":1}}],["stm32l433",{"2":{"93":1,"489":1}}],["stm32l4+",{"2":{"49":1}}],["stm32g431",{"2":{"77":1,"489":1}}],["stm32g4xx",{"2":{"74":1,"249":1}}],["stm32g474",{"2":{"49":1,"77":1,"489":1}}],["stm32g4",{"2":{"49":1}}],["stm32",{"0":{"489":1,"635":1,"673":1,"1139":1,"2278":1,"2587":1,"2588":1,"2589":1,"2590":1},"1":{"1140":1,"1141":1,"1142":1,"2279":1},"2":{"49":4,"50":2,"65":1,"114":1,"131":1,"133":1,"134":5,"176":3,"211":1,"222":1,"277":1,"629":2,"673":1,"685":1,"686":10,"687":6,"690":2,"697":1,"703":7,"707":4,"1127":2,"1129":1,"1130":2,"1132":4,"1133":4,"1214":3,"1235":3,"1263":3,"1264":1,"1267":6,"1353":1,"1427":2,"1433":1,"1506":3,"1507":3,"1670":1,"1859":1,"2278":3,"2279":1,"2281":1,"2366":1,"2389":1,"2392":1,"2489":1,"2563":8,"2569":1,"2585":1,"2587":8,"2588":2,"2589":2,"2712":1,"2722":1}}],["stylus",{"2":{"1569":1,"1943":1}}],["styling",{"0":{"287":1},"1":{"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1},"2":{"243":1,"279":1}}],["styled",{"0":{"618":1},"1":{"619":1,"620":1},"2":{"618":1}}],["styles",{"2":{"468":1,"555":1,"560":1,"1271":1,"2789":1}}],["style=file",{"2":{"454":1}}],["style",{"0":{"243":1},"2":{"133":1,"134":1,"176":1,"199":1,"243":1,"265":1,"279":2,"432":1,"433":6,"435":2,"436":2,"438":2,"439":2,"453":9,"455":1,"456":1,"467":1,"470":2,"555":1,"560":2,"615":1,"1946":1,"2210":1,"2383":1,"2545":2}}],["st7789",{"2":{"2612":2,"2615":8}}],["st7735",{"2":{"176":1,"236":1,"2612":2,"2615":8}}],["st7565p",{"2":{"2174":1}}],["st7565r",{"2":{"2174":1}}],["st7565",{"0":{"2173":1},"1":{"2174":1,"2175":1,"2176":1,"2177":1,"2178":1,"2179":1,"2180":1,"2181":1},"2":{"114":5,"191":1,"511":2,"2167":2,"2174":1,"2175":11,"2176":1,"2177":4,"2178":3,"2179":13,"2180":11,"2181":39,"2736":2}}],["std",{"2":{"704":1}}],["stdlayout",{"2":{"358":1}}],["stderr",{"2":{"316":1,"2794":1}}],["stdout",{"2":{"316":1}}],["stdint",{"2":{"176":1}}],["stdbool",{"2":{"73":1}}],["stilgar",{"2":{"2309":1}}],["still",{"2":{"16":1,"124":2,"125":1,"141":1,"170":1,"185":1,"191":2,"203":1,"228":3,"232":1,"241":1,"253":1,"270":1,"273":1,"278":1,"307":1,"361":1,"435":1,"454":1,"467":1,"504":1,"510":1,"674":1,"682":1,"1280":1,"1321":1,"1325":1,"1340":2,"1422":1,"1440":1,"1441":1,"1449":1,"1453":1,"1483":1,"1593":1,"1600":1,"1620":3,"1697":1,"1712":2,"1722":1,"1927":1,"2150":1,"2190":1,"2199":1,"2207":3,"2312":2,"2350":1,"2480":3,"2494":1,"2516":1,"2616":1,"2709":1,"2740":1,"2744":1,"2751":1,"2760":1,"2765":1,"2767":2,"2768":1,"2774":1}}],["sticky",{"2":{"2319":1,"2529":1,"2693":1}}],["stick",{"2":{"1383":1,"1438":1,"1937":1}}],["stickandgum",{"2":{"114":1}}],["steve",{"2":{"2146":1,"2789":1}}],["stef9998",{"2":{"253":2}}],["steadily",{"2":{"251":1}}],["steal",{"2":{"154":2}}],["stello65",{"2":{"211":1}}],["stella",{"2":{"154":2}}],["stemcell",{"0":{"1356":1,"1360":2},"2":{"176":1,"1348":2,"1352":4,"1356":3,"1359":4,"1360":1,"2751":1}}],["stenographers",{"2":{"2182":1}}],["stenography",{"0":{"2182":1,"2189":1,"2737":1},"1":{"2183":1,"2184":1,"2185":1,"2186":1,"2187":1,"2188":1,"2189":1,"2190":1,"2191":1},"2":{"2182":2,"2184":2,"2186":1,"2187":2,"2188":2,"2189":1,"2737":3,"2764":1}}],["stenotype",{"2":{"1921":1,"2188":1}}],["stenothe",{"2":{"197":1}}],["steno",{"0":{"2184":1,"2188":1},"1":{"2185":1,"2186":1,"2187":1},"2":{"114":1,"176":4,"199":1,"231":3,"236":1,"249":1,"2101":1,"2182":2,"2183":1,"2184":5,"2185":4,"2186":2,"2187":10,"2188":4,"2189":1,"2190":13,"2191":2,"2737":1,"2788":1}}],["stepping",{"2":{"194":1,"1443":2}}],["steps",{"0":{"543":1},"2":{"111":3,"191":1,"211":1,"222":2,"231":1,"255":1,"536":1,"574":1,"1124":1,"1127":1,"1130":1,"1132":1,"1133":1,"1347":1,"1367":1,"1443":1,"1841":1,"1843":8,"1850":1,"1865":1,"2073":3,"2076":2,"2078":6,"2101":1,"2141":2,"2142":1,"2143":2,"2144":4,"2145":6,"2175":1,"2460":1,"2476":1,"2477":1,"2494":1,"2516":1,"2536":1,"2727":4,"2733":6,"2734":8,"2757":1,"2792":1}}],["step",{"0":{"536":2,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"1513":1,"1789":1,"1790":1,"1791":1,"1792":1,"2016":1,"2017":1,"2018":1,"2019":1,"2141":1,"2228":1,"2229":1},"1":{"537":2,"538":2,"539":2,"540":2,"541":2,"542":2,"543":2},"2":{"49":1,"63":1,"222":2,"292":2,"313":1,"506":6,"570":1,"606":1,"1127":2,"1130":2,"1472":2,"1493":2,"1611":3,"1767":2,"1840":2,"1841":2,"1842":2,"1846":2,"1988":1,"1990":2,"2073":3,"2076":2,"2077":2,"2090":4,"2140":1,"2142":1,"2144":4,"2145":16,"2209":1,"2303":1,"2307":1,"2320":2,"2338":6,"2380":1,"2388":1,"2399":2,"2447":1,"2461":1,"2463":1,"2466":2,"2469":1,"2475":1,"2476":1,"2478":1,"2516":1,"2528":1,"2536":2,"2587":1,"2744":1,"2788":1}}],["story",{"2":{"453":1,"455":1}}],["stores",{"2":{"678":1,"1340":1,"1363":1,"1488":1,"2787":1}}],["store",{"2":{"436":1,"519":2,"554":1,"588":2,"679":1,"680":1,"681":1,"1340":1,"1368":1,"1369":1,"1475":1,"1591":1,"1868":4,"1960":1,"2150":1,"2467":1,"2480":1,"2484":2,"2485":1,"2583":1,"2796":1}}],["stored",{"0":{"2483":1},"2":{"228":2,"431":1,"510":1,"1307":1,"1337":1,"1368":1,"1476":1,"1483":1,"1488":1,"1568":1,"1632":1,"1832":1,"1859":1,"1868":1,"2187":1,"2219":1,"2342":1,"2440":1,"2467":1,"2480":1,"2491":1,"2613":1}}],["storing",{"2":{"224":1,"1475":1,"1488":1,"2480":1}}],["storage",{"0":{"1769":1,"1993":1,"2649":1},"2":{"93":1,"131":1,"303":1,"676":1,"678":1,"679":2,"680":1,"681":3,"682":1,"2164":1,"2291":1,"2545":1,"2578":1,"2613":1,"2649":1,"2722":1}}],["stone",{"2":{"194":1}}],["stock",{"2":{"114":1,"318":1,"509":1,"510":1,"2164":1,"2604":1,"2751":1}}],["stopped",{"2":{"592":2,"1594":1,"2616":1}}],["stopping",{"2":{"211":1,"515":1,"589":1,"683":1,"1377":1,"1616":1}}],["stops",{"2":{"529":1,"1335":1,"1536":1,"1841":1,"1842":2,"1845":2,"1860":1,"2092":8,"2264":1,"2442":1,"2616":1,"2621":1}}],["stop",{"0":{"1231":1,"2511":1},"2":{"74":1,"134":1,"145":1,"176":1,"222":1,"277":1,"689":1,"1440":2,"1485":1,"1543":1,"1591":2,"1831":1,"1845":1,"1896":1,"2082":1,"2089":2,"2144":1,"2145":1,"2169":1,"2188":1,"2319":1,"2394":6,"2402":1,"2409":1,"2410":1,"2431":2,"2432":4,"2435":1,"2616":6}}],["sturdy",{"2":{"2312":1,"2313":1}}],["stumbled",{"2":{"545":1}}],["stub",{"2":{"236":1}}],["stubs",{"2":{"114":1,"2790":1}}],["stuck",{"0":{"1312":1},"2":{"211":1,"222":1,"263":1,"1312":1,"1441":1,"1974":1}}],["studiokestra",{"2":{"226":2}}],["studios",{"2":{"211":1}}],["studio",{"0":{"2542":1,"2552":1},"2":{"67":3,"132":1,"207":4,"211":16,"249":1,"2542":1,"2545":1,"2552":1}}],["stuff",{"2":{"50":2,"114":1,"231":2,"575":1,"578":1,"1413":2,"1414":2,"1548":1,"2300":1,"2444":1,"2744":1}}],["stlink",{"2":{"49":1,"2279":1,"2390":3,"2392":3}}],["st",{"2":{"49":1,"266":1,"327":2,"1440":2,"1506":1,"2279":6,"2389":1,"2390":3,"2391":2,"2392":7,"2605":1,"2661":1}}],["stapelberg",{"2":{"2541":2}}],["stay",{"2":{"2383":1}}],["staying",{"2":{"2315":1}}],["stays",{"2":{"199":1,"1369":1,"1448":1,"1611":1}}],["staging",{"2":{"2527":2}}],["staggering",{"2":{"1421":1}}],["staggered",{"2":{"211":1,"2313":1}}],["stage2",{"2":{"176":1}}],["stage",{"0":{"2583":1},"2":{"119":1,"141":1,"2552":1,"2562":1,"2565":1,"2583":1}}],["stabilisers",{"2":{"2305":1,"2306":1}}],["stability",{"0":{"1865":1},"2":{"1600":1}}],["stabilizes",{"2":{"1865":1}}],["stabilize",{"2":{"176":1,"191":1}}],["stable",{"2":{"211":1,"350":1,"1865":2}}],["stackexchange",{"2":{"1508":1}}],["stacked",{"2":{"222":1}}],["stacktrace",{"2":{"466":1}}],["stack",{"2":{"199":2,"222":1,"310":2,"487":1,"504":1,"1371":1,"1372":2,"1377":1,"1970":1,"1974":2,"1978":2,"1981":3,"2188":1,"2210":1,"2440":1,"2442":1,"2535":1}}],["stale",{"2":{"191":1}}],["stands",{"2":{"2572":1}}],["stand",{"2":{"1286":1}}],["standpoint",{"2":{"569":1,"1302":2}}],["standalone",{"2":{"643":1,"655":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1170":1,"1181":1,"1212":1,"1233":1,"1250":1}}],["standaside",{"2":{"154":2,"160":1}}],["standards",{"2":{"244":1,"266":1,"1121":1,"1302":1,"1383":1,"2605":1,"2758":1}}],["standardisation",{"2":{"238":1}}],["standardised",{"2":{"198":1,"2612":1}}],["standardise",{"2":{"160":1,"182":1}}],["standardizing",{"2":{"557":1}}],["standardization",{"2":{"236":1,"266":2}}],["standardized",{"2":{"134":1}}],["standard",{"2":{"125":2,"134":1,"163":1,"176":3,"185":2,"191":1,"199":1,"220":2,"266":1,"431":1,"454":1,"457":1,"479":1,"508":1,"515":2,"697":1,"1214":1,"1305":1,"1440":3,"1692":1,"1711":1,"1712":1,"1713":1,"1758":2,"1943":1,"1965":1,"2182":1,"2183":2,"2184":2,"2186":1,"2215":1,"2300":1,"2301":2,"2370":1,"2436":1,"2551":1,"2584":1,"2605":4,"2610":1,"2616":1,"2620":1,"2658":1,"2663":1,"2696":2,"2697":1,"2744":1}}],["standing",{"2":{"139":1}}],["star",{"2":{"629":1,"1724":2,"2271":1,"2383":1}}],["starlight",{"2":{"236":1,"277":1,"1987":9}}],["staryu",{"2":{"102":2}}],["started",{"0":{"1694":1,"2362":1},"2":{"524":1,"557":1,"574":1,"575":1,"578":1,"624":2,"1272":1,"1294":1,"1295":1,"1302":1,"1375":1,"1557":1,"1558":1,"1860":1,"2365":1,"2463":1,"2468":1,"2496":1,"2533":1,"2537":1,"2543":1,"2592":1,"2616":1,"2654":1,"2782":1}}],["start=none",{"2":{"465":1}}],["starting",{"0":{"2306":1},"2":{"119":1,"453":1,"587":1,"683":1,"1434":1,"1443":1,"1475":1,"1488":1,"1722":1,"1855":1,"2080":2,"2163":1,"2179":1,"2207":1,"2312":1,"2331":1,"2392":2,"2533":1,"2543":1,"2592":1,"2616":1,"2626":1,"2633":1,"2738":1,"2745":1}}],["start",{"0":{"1217":1,"1295":1,"1727":1,"1729":1,"2234":1,"2249":1,"2289":1},"1":{"1218":1,"1219":1,"2290":1,"2291":1,"2292":1,"2293":1},"2":{"50":1,"75":1,"132":1,"191":3,"196":1,"198":1,"211":1,"277":1,"291":1,"321":1,"350":5,"389":1,"390":1,"391":1,"430":1,"453":2,"462":1,"465":7,"485":1,"505":1,"517":1,"559":1,"609":1,"616":1,"624":1,"628":1,"1127":1,"1130":1,"1213":1,"1214":2,"1217":1,"1231":1,"1287":1,"1295":1,"1299":1,"1381":3,"1414":1,"1440":1,"1442":1,"1453":1,"1489":1,"1591":5,"1592":1,"1594":2,"1643":1,"1718":2,"1722":1,"1724":4,"1855":1,"1860":7,"1925":1,"1937":1,"1975":1,"2076":2,"2089":4,"2140":1,"2142":1,"2144":1,"2145":1,"2179":1,"2181":5,"2185":1,"2220":1,"2291":1,"2303":1,"2306":1,"2311":1,"2316":1,"2350":1,"2402":4,"2459":1,"2462":1,"2466":1,"2491":1,"2499":1,"2508":1,"2513":2,"2525":1,"2529":1,"2535":1,"2547":1,"2551":2,"2552":1,"2563":1,"2578":1,"2592":1,"2626":1,"2633":1,"2634":1,"2635":1,"2651":1,"2763":1,"2782":1,"2796":1}}],["startup",{"0":{"2782":1},"2":{"49":1,"65":1,"112":1,"114":1,"134":1,"183":8,"191":3,"266":1,"504":1,"515":2,"574":2,"575":1,"1435":3,"1436":4,"1501":1,"1617":1,"1863":1,"2169":1,"2221":1,"2537":1,"2718":1,"2738":2}}],["starts",{"2":{"49":1,"306":1,"402":1,"515":1,"1331":1,"1435":1,"1436":1,"1448":1,"1845":1,"1860":2,"1967":1,"2164":1,"2614":1,"2782":1}}],["stat",{"2":{"1952":1}}],["station",{"2":{"2171":2,"2305":1}}],["stating",{"2":{"352":1}}],["statically",{"2":{"2615":1}}],["static",{"2":{"50":1,"214":1,"292":1,"403":1,"520":1,"588":2,"1340":1,"1477":1,"1672":3,"1756":1,"1766":2,"1767":5,"1852":1,"1853":1,"1854":1,"1921":2,"1962":1,"1986":1,"1987":5,"1990":5,"2072":2,"2073":1,"2074":3,"2075":2,"2077":1,"2078":1,"2168":1,"2176":1,"2177":1,"2178":1,"2207":1,"2208":1,"2209":1,"2415":2,"2531":1,"2615":1,"2616":11,"2626":1,"2627":1,"2632":1,"2633":1,"2635":1,"2637":1,"2733":1,"2750":1}}],["statuses",{"2":{"315":1}}],["status",{"0":{"315":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"726":1,"1220":1,"1223":1,"1225":1,"1228":1,"1486":1,"2083":1,"2441":1},"1":{"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"727":1,"728":1,"1221":1,"1222":1,"1224":1,"1226":1,"1227":1,"1229":1,"1230":1},"2":{"92":1,"160":1,"191":2,"199":2,"303":1,"304":1,"312":1,"315":2,"520":1,"521":1,"522":3,"523":2,"524":2,"525":2,"586":1,"710":3,"713":3,"716":3,"719":3,"722":3,"725":3,"728":3,"1222":2,"1224":1,"1227":3,"1230":3,"1289":1,"1340":3,"1366":2,"1369":2,"1381":1,"1421":1,"1476":1,"1479":1,"1480":1,"1564":2,"1568":2,"1608":4,"1851":2,"1854":1,"1952":1,"1975":1,"1981":1,"1997":1,"2079":1,"2095":1,"2167":6,"2175":2,"2178":1,"2185":1,"2398":1,"2409":1,"2418":1,"2435":1,"2441":1,"2529":1,"2570":1,"2578":1,"2736":2,"2743":1,"2783":2}}],["stats",{"2":{"50":1}}],["stateless",{"2":{"2725":1}}],["stated",{"2":{"2591":1}}],["state|default",{"2":{"1996":1}}],["state++",{"2":{"1767":1,"1990":1}}],["states",{"2":{"247":1,"587":1,"1321":1,"1362":1,"1586":1,"1676":1,"1888":1,"1890":1,"1956":1,"2208":2,"2209":1,"2513":1}}],["statement",{"0":{"231":1},"2":{"194":1,"236":1,"453":2,"459":1,"532":1,"1388":1,"1396":1,"1483":1,"1565":1,"2199":1,"2348":1,"2748":1}}],["statements",{"0":{"459":1},"2":{"145":1,"231":1,"457":1,"459":1,"461":1,"466":1,"469":1,"473":1,"476":1,"607":1,"2796":1}}],["state",{"0":{"14":1,"1337":1,"1380":1,"1382":1,"1495":1,"1544":1,"1552":1,"1757":1,"1759":1,"1812":1,"2057":1,"2644":2,"2787":1},"1":{"1338":1,"1339":1,"1340":1,"1760":1,"1813":1,"2058":1,"2645":2},"2":{"14":2,"31":1,"49":1,"50":1,"62":1,"63":1,"74":1,"93":1,"105":10,"112":1,"114":2,"160":3,"166":2,"176":2,"179":1,"199":2,"211":1,"247":1,"453":1,"502":3,"506":1,"511":7,"554":1,"566":2,"580":4,"597":1,"674":1,"683":1,"685":7,"686":4,"687":1,"691":1,"1134":1,"1258":1,"1315":1,"1321":7,"1337":9,"1340":9,"1362":1,"1363":1,"1366":7,"1369":10,"1375":1,"1378":37,"1380":6,"1381":7,"1382":9,"1401":1,"1420":18,"1435":1,"1436":2,"1445":1,"1446":1,"1448":2,"1449":1,"1453":3,"1468":1,"1471":1,"1489":3,"1494":3,"1495":2,"1508":1,"1520":1,"1525":1,"1540":1,"1544":1,"1552":1,"1556":1,"1563":1,"1564":2,"1572":4,"1574":1,"1575":3,"1587":7,"1611":1,"1675":1,"1676":1,"1680":1,"1682":1,"1708":1,"1752":7,"1753":2,"1754":4,"1755":7,"1756":8,"1757":5,"1758":1,"1759":1,"1764":1,"1767":3,"1768":1,"1774":1,"1776":1,"1778":1,"1779":1,"1787":1,"1790":1,"1792":1,"1796":1,"1798":1,"1802":1,"1804":1,"1807":1,"1812":1,"1813":1,"1847":1,"1851":6,"1853":1,"1854":1,"1875":1,"1877":1,"1879":1,"1881":1,"1883":1,"1917":2,"1921":1,"1956":1,"1960":7,"1962":6,"1974":12,"1975":2,"1977":10,"1978":12,"1985":1,"1990":3,"1992":1,"1996":6,"1997":6,"2001":1,"2003":1,"2005":1,"2006":1,"2014":1,"2017":1,"2019":1,"2023":1,"2025":1,"2029":1,"2031":1,"2035":1,"2037":1,"2041":1,"2043":1,"2046":1,"2052":1,"2057":1,"2058":1,"2079":1,"2081":23,"2082":3,"2091":2,"2094":2,"2104":1,"2105":1,"2107":1,"2167":9,"2175":6,"2177":1,"2178":1,"2199":1,"2200":4,"2204":4,"2205":10,"2206":7,"2207":40,"2208":29,"2209":35,"2241":1,"2340":1,"2396":1,"2397":1,"2409":1,"2435":1,"2441":8,"2513":2,"2528":1,"2529":1,"2530":3,"2558":1,"2616":2,"2644":3,"2645":17,"2713":2,"2715":4,"2716":4,"2719":1,"2724":2,"2727":1,"2728":2,"2733":1,"2734":1,"2735":1,"2736":7,"2747":2,"2784":1,"2785":1,"2787":2,"2796":4}}],["struggle",{"2":{"2694":1}}],["structs",{"2":{"236":1,"249":1,"2624":1,"2631":1}}],["struct",{"0":{"661":1,"736":1,"762":1,"794":1,"824":1,"859":1,"893":1,"927":1,"961":1,"995":1,"1029":1,"1063":1,"1097":1,"1150":1,"1187":1,"1574":1,"1675":1,"1677":1},"1":{"662":1,"737":1,"763":1,"795":1,"825":1,"860":1,"894":1,"928":1,"962":1,"996":1,"1030":1,"1064":1,"1098":1,"1151":1,"1188":1,"1575":1,"1676":1,"1678":1},"2":{"31":1,"236":1,"266":1,"1369":1,"1572":1,"1696":1,"1754":1,"1763":1,"1832":1,"1860":1,"1861":1,"1984":1,"2055":1,"2168":2,"2181":1,"2206":1,"2207":1,"2209":1,"2626":1,"2627":1,"2628":2,"2632":1,"2633":1,"2634":1,"2635":1,"2636":2,"2637":1,"2638":1}}],["structured",{"2":{"568":1,"1954":1,"1955":1}}],["structures",{"2":{"211":1,"499":1}}],["structure",{"0":{"2295":1,"2296":1,"2297":1,"2298":1,"2335":1},"1":{"2296":1,"2297":1,"2298":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2341":1},"2":{"22":1,"125":1,"185":1,"236":1,"481":1,"682":1,"704":1,"705":1,"1369":5,"1413":1,"1475":2,"1545":1,"1853":2,"1925":1,"1954":1,"1955":1,"2177":2,"2200":2,"2209":1,"2297":2,"2439":1,"2462":1,"2480":1,"2624":1,"2631":1,"2792":1}}],["stroke",{"2":{"2185":1,"2190":2}}],["strokes",{"2":{"2182":2,"2185":1,"2186":1,"2188":1}}],["stronger",{"2":{"2320":1}}],["strongly",{"2":{"182":1,"341":1,"1122":1,"1845":1,"2482":1,"2606":1}}],["strong",{"2":{"182":1,"341":2,"472":1,"478":1,"1616":10,"2103":1,"2311":1,"2318":1,"2605":1}}],["stress",{"2":{"1722":1}}],["strength",{"2":{"1610":2,"1618":1,"2558":1}}],["stretching",{"2":{"1447":1}}],["streamed",{"2":{"2616":1}}],["stream2",{"2":{"1267":1}}],["streampad",{"2":{"249":1}}],["stream",{"2":{"50":1,"114":1,"134":1,"1267":2,"1484":1,"1899":2}}],["streamline",{"2":{"50":1,"363":1}}],["streams",{"2":{"49":2}}],["strategies",{"2":{"2784":1}}],["strategy",{"2":{"2476":1}}],["stranded",{"2":{"2313":1}}],["strange",{"2":{"14":1}}],["straight",{"2":{"2291":1,"2311":1,"2316":1}}],["straightforward",{"2":{"355":1,"413":1,"436":1,"623":1,"1323":1,"2367":1,"2494":1}}],["strain",{"2":{"2182":1}}],["strapped",{"2":{"1859":1}}],["stray",{"2":{"199":1,"211":1}}],["str",{"0":{"2239":1},"1":{"2240":1},"2":{"145":1,"191":1,"612":1,"1400":4,"1484":1,"1485":4,"1616":8,"2191":4,"2240":1,"2616":3,"2744":3,"2749":5}}],["strives",{"2":{"2758":1}}],["strike",{"2":{"182":1,"240":1}}],["stringify",{"2":{"1937":1}}],["strings",{"0":{"470":1,"1400":1},"2":{"176":1,"191":1,"374":2,"416":1,"432":1,"467":1,"470":1,"611":1,"612":2,"616":1,"1292":1,"1393":2,"1398":2,"1400":1,"1484":2,"1721":1,"1927":1,"2269":1,"2276":1}}],["string",{"0":{"307":1,"308":1,"309":1,"1396":1,"2110":1,"2119":2,"2121":2,"2123":2,"2125":2,"2138":2,"2139":2,"2239":1},"1":{"1397":1,"1398":1,"1399":1,"1400":1,"2111":1,"2112":1,"2113":1,"2114":1,"2115":1,"2116":1,"2117":1,"2118":1,"2119":1,"2120":3,"2121":1,"2122":3,"2123":1,"2124":3,"2125":1,"2126":3,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2132":1,"2133":1,"2134":1,"2135":1,"2136":1,"2137":1,"2138":1,"2139":1,"2240":1},"2":{"94":1,"114":2,"142":1,"145":3,"160":1,"176":1,"190":1,"191":4,"196":5,"211":1,"249":1,"266":1,"423":1,"432":2,"435":1,"529":3,"534":6,"611":1,"612":1,"1287":8,"1396":9,"1398":21,"1400":7,"1421":2,"1422":3,"1436":1,"1440":2,"1484":1,"1485":5,"1488":4,"1489":1,"1548":1,"1565":2,"1645":1,"1646":1,"1647":1,"1648":1,"1718":5,"1721":1,"1724":2,"1851":1,"1860":6,"1913":2,"1918":2,"1919":3,"1921":10,"2110":1,"2111":2,"2113":5,"2114":1,"2116":1,"2117":2,"2119":3,"2120":2,"2121":1,"2122":2,"2123":3,"2124":2,"2125":3,"2126":2,"2138":4,"2139":4,"2175":1,"2181":6,"2204":1,"2239":1,"2240":1,"2269":1,"2276":1,"2614":1,"2616":2,"2711":4,"2715":1,"2741":4}}],["strictly",{"2":{"1339":1,"1572":1,"2545":1}}],["strict",{"0":{"1554":1,"1558":1,"1723":1},"2":{"75":1,"112":1,"191":1,"381":1,"504":1,"505":2,"1276":1,"1340":1,"1558":1,"1723":1,"1897":1,"2726":1}}],["stripping",{"2":{"2309":2,"2313":1}}],["stripped",{"2":{"2309":1}}],["strippers",{"2":{"2305":1}}],["strip",{"2":{"45":1,"199":1,"211":2,"1414":1,"1421":1,"1422":1,"2070":2,"2076":1,"2099":2,"2172":1,"2309":1,"2311":1,"2339":3}}],["s",{"0":{"567":1,"1280":1,"1645":1,"1647":1,"2050":1,"2052":1,"2525":1,"2781":1},"1":{"568":1,"1646":1,"1648":1,"2053":1,"2526":1,"2527":1,"2528":1,"2782":1,"2783":1,"2784":1,"2785":1,"2786":1,"2787":1,"2788":1},"2":{"14":1,"46":1,"49":1,"69":1,"70":1,"72":1,"82":1,"99":2,"109":1,"114":4,"116":1,"119":2,"125":1,"133":1,"134":1,"138":1,"141":1,"143":1,"160":31,"163":1,"174":1,"176":7,"182":3,"185":1,"191":2,"194":1,"196":5,"202":1,"211":6,"224":1,"243":1,"249":2,"265":1,"266":4,"268":1,"273":1,"276":1,"278":1,"282":6,"286":1,"291":1,"306":2,"313":2,"320":1,"327":2,"331":1,"337":1,"341":2,"349":1,"358":1,"384":1,"386":1,"403":3,"404":1,"414":2,"425":1,"429":1,"430":3,"432":2,"435":3,"436":1,"437":3,"441":2,"451":1,"453":3,"458":1,"470":1,"473":2,"502":2,"509":1,"510":1,"515":2,"526":1,"529":3,"530":3,"532":1,"534":1,"537":1,"551":1,"554":2,"560":1,"563":1,"570":1,"574":2,"575":1,"578":1,"580":2,"587":1,"588":2,"592":1,"597":2,"598":1,"599":1,"600":1,"605":1,"609":1,"610":1,"614":1,"616":1,"623":1,"626":2,"627":2,"638":1,"639":1,"656":2,"662":3,"671":1,"673":1,"675":1,"678":1,"679":3,"680":1,"681":1,"682":1,"690":1,"703":3,"731":1,"732":1,"737":3,"763":3,"795":3,"825":3,"860":3,"894":3,"928":3,"962":3,"996":3,"1030":3,"1064":3,"1098":3,"1126":1,"1128":1,"1133":1,"1151":3,"1188":3,"1214":3,"1218":1,"1235":2,"1251":2,"1260":1,"1261":2,"1287":3,"1291":1,"1295":1,"1297":2,"1301":1,"1302":3,"1306":2,"1315":1,"1323":1,"1324":1,"1336":1,"1337":1,"1339":1,"1340":1,"1349":2,"1351":1,"1368":1,"1369":2,"1372":3,"1374":1,"1375":3,"1377":1,"1383":1,"1384":3,"1389":1,"1392":1,"1397":1,"1398":1,"1404":1,"1407":1,"1414":4,"1415":1,"1417":1,"1419":1,"1420":1,"1435":2,"1442":1,"1443":1,"1449":2,"1450":1,"1467":1,"1468":1,"1478":2,"1482":2,"1485":2,"1489":1,"1496":1,"1508":1,"1529":4,"1533":1,"1536":1,"1540":1,"1548":2,"1552":1,"1555":1,"1560":1,"1561":2,"1563":1,"1566":1,"1568":1,"1586":1,"1591":1,"1595":1,"1597":1,"1615":1,"1629":4,"1646":1,"1648":1,"1668":2,"1689":1,"1692":1,"1704":1,"1713":1,"1715":1,"1718":5,"1721":1,"1761":1,"1763":3,"1769":1,"1834":1,"1838":1,"1841":1,"1842":2,"1843":1,"1844":1,"1845":3,"1858":1,"1860":1,"1901":2,"1911":1,"1920":1,"1921":6,"1925":3,"1946":1,"1951":1,"1958":1,"1959":1,"1982":1,"1984":3,"1987":3,"1988":2,"1993":1,"2051":1,"2053":1,"2079":1,"2089":8,"2092":4,"2110":1,"2144":1,"2146":1,"2149":1,"2152":2,"2156":1,"2160":2,"2162":3,"2164":3,"2167":1,"2168":2,"2169":3,"2172":1,"2179":3,"2181":1,"2186":2,"2190":1,"2191":3,"2192":1,"2195":1,"2198":4,"2200":4,"2202":1,"2209":1,"2216":1,"2220":2,"2221":1,"2261":1,"2268":3,"2275":1,"2276":1,"2278":1,"2282":3,"2291":2,"2293":1,"2295":1,"2297":1,"2300":3,"2301":3,"2302":2,"2303":2,"2309":8,"2312":2,"2313":4,"2314":1,"2315":1,"2318":4,"2320":4,"2323":1,"2327":1,"2334":1,"2335":1,"2336":2,"2341":1,"2343":1,"2348":2,"2352":1,"2366":1,"2367":1,"2369":1,"2371":1,"2373":1,"2376":1,"2385":2,"2386":1,"2390":2,"2394":3,"2395":1,"2406":1,"2412":1,"2413":1,"2425":3,"2440":1,"2444":1,"2446":4,"2449":1,"2456":1,"2460":1,"2463":1,"2468":1,"2470":2,"2480":1,"2489":1,"2493":2,"2494":2,"2496":1,"2500":1,"2503":2,"2505":2,"2507":1,"2508":1,"2511":1,"2512":1,"2513":3,"2514":2,"2516":5,"2518":2,"2526":2,"2527":3,"2530":1,"2545":2,"2547":3,"2548":2,"2549":2,"2552":3,"2562":1,"2563":2,"2564":2,"2565":2,"2572":1,"2580":2,"2587":2,"2588":2,"2591":1,"2596":1,"2598":1,"2603":1,"2605":6,"2606":1,"2607":1,"2608":1,"2611":1,"2613":1,"2614":3,"2615":3,"2616":4,"2617":1,"2623":2,"2624":1,"2625":1,"2626":1,"2629":1,"2630":1,"2631":1,"2634":2,"2635":2,"2636":1,"2638":1,"2646":1,"2651":2,"2653":3,"2654":8,"2655":2,"2659":1,"2671":1,"2678":1,"2696":1,"2711":2,"2715":2,"2723":2,"2732":2,"2736":1,"2740":1,"2743":1,"2746":1,"2750":2,"2758":1,"2767":5,"2774":2,"2777":1,"2779":2,"2783":1,"2784":4,"2785":2,"2787":1,"2789":3,"2790":1,"2791":1,"2792":6,"2795":1,"2796":2}}],["sixty",{"2":{"1443":1}}],["sixtyfive",{"2":{"211":1}}],["sixth",{"2":{"1315":1}}],["six",{"2":{"1258":1,"2143":1,"2186":1}}],["sipeed",{"2":{"495":1}}],["situation",{"2":{"466":1,"1363":1,"1722":1,"1866":1}}],["situations",{"2":{"466":1,"483":1,"567":1,"1262":1,"1325":1,"1396":1,"1415":1,"2507":4,"2701":1,"2744":1}}],["site",{"2":{"403":1,"2790":1}}],["sit",{"2":{"301":1,"616":1}}],["silvery",{"2":{"2311":1}}],["silent=true",{"2":{"2300":1}}],["silent",{"2":{"236":1}}],["silicon",{"2":{"49":1,"2501":1}}],["sizing",{"2":{"211":1,"288":1}}],["size=x",{"2":{"2796":1}}],["sizey",{"2":{"2616":1}}],["sizex",{"2":{"2616":1}}],["sizeof",{"2":{"1858":1,"2168":2,"2180":1,"2626":2,"2627":2,"2632":1,"2633":2,"2634":1,"2635":2,"2636":1,"2637":1,"2744":1,"2796":1}}],["sized",{"0":{"1858":1,"2180":1},"1":{"1859":1},"2":{"2185":1}}],["sizes",{"0":{"1552":1},"2":{"134":1,"160":1,"201":1,"210":1,"679":1,"1552":3,"1849":1,"1858":1,"2168":1,"2615":1,"2632":1,"2653":1}}],["size",{"0":{"689":1},"2":{"3":1,"15":1,"28":1,"69":1,"70":1,"75":1,"113":1,"114":10,"134":4,"138":1,"160":4,"166":1,"176":2,"191":1,"199":1,"201":1,"211":4,"215":1,"222":2,"236":5,"266":2,"496":1,"503":1,"504":1,"506":1,"511":2,"513":1,"560":1,"673":2,"674":4,"675":4,"676":3,"678":2,"679":11,"680":9,"681":11,"688":3,"689":4,"694":10,"1324":4,"1477":2,"1482":1,"1483":4,"1591":1,"1592":3,"1611":3,"1627":1,"1676":1,"1766":1,"1841":2,"1842":2,"1846":2,"1849":1,"1858":6,"1859":3,"1860":7,"1910":1,"1987":2,"1988":1,"2080":1,"2166":1,"2168":6,"2174":1,"2180":6,"2181":2,"2190":2,"2199":1,"2220":1,"2264":2,"2266":1,"2267":2,"2300":2,"2301":2,"2313":1,"2338":1,"2342":1,"2387":1,"2464":2,"2508":2,"2589":1,"2596":2,"2597":2,"2605":1,"2612":1,"2613":1,"2614":7,"2615":3,"2617":1,"2626":4,"2633":4,"2722":4,"2743":2,"2744":2,"2747":1,"2748":1,"2757":2,"2796":2}}],["sion",{"2":{"1921":1}}],["siod0",{"2":{"2577":1,"2580":2}}],["siod3",{"2":{"1133":2}}],["siod1",{"2":{"1133":1,"2577":1}}],["sio",{"0":{"1133":1},"2":{"176":1,"199":1,"249":1,"1127":1,"1130":1,"1133":5,"2570":2,"2577":2,"2580":1,"2582":3}}],["sinusoidal",{"2":{"1614":1}}],["sine",{"2":{"1430":2,"1766":2}}],["sink",{"2":{"1171":1}}],["sinks",{"2":{"1169":1,"1171":1,"2558":1}}],["singa",{"2":{"211":1}}],["single",{"0":{"421":1,"1319":1,"1962":1,"2197":1,"2202":1},"1":{"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"16":1,"94":1,"112":1,"113":1,"114":2,"149":1,"191":1,"211":3,"222":1,"236":1,"262":1,"313":1,"334":1,"407":1,"411":1,"418":1,"424":1,"459":1,"461":1,"468":2,"516":2,"519":1,"606":2,"635":1,"636":1,"647":1,"654":1,"661":1,"665":1,"726":1,"729":1,"730":1,"734":1,"736":1,"737":1,"741":1,"745":2,"747":1,"749":1,"751":2,"755":1,"756":1,"760":1,"762":1,"763":1,"768":1,"772":2,"774":1,"776":1,"778":2,"784":1,"785":1,"792":1,"794":1,"795":1,"800":1,"804":2,"806":1,"808":1,"810":2,"816":1,"817":1,"822":1,"824":1,"825":1,"832":1,"836":2,"838":1,"840":1,"842":2,"848":1,"849":1,"857":1,"859":1,"860":1,"867":1,"871":2,"873":1,"875":1,"877":2,"883":1,"884":1,"891":1,"893":1,"894":1,"901":1,"905":2,"907":1,"909":1,"911":2,"917":1,"918":1,"925":1,"927":1,"928":1,"935":1,"939":2,"941":1,"943":1,"945":2,"951":1,"952":1,"959":1,"961":1,"962":1,"969":1,"973":2,"975":1,"977":1,"979":2,"985":1,"986":1,"993":1,"995":1,"996":1,"1003":1,"1007":2,"1009":1,"1011":1,"1013":2,"1019":1,"1020":1,"1027":1,"1029":1,"1030":1,"1037":1,"1041":2,"1043":1,"1045":1,"1047":2,"1053":1,"1054":1,"1061":1,"1063":1,"1064":1,"1071":1,"1075":2,"1077":1,"1079":1,"1081":2,"1087":1,"1088":1,"1095":1,"1097":1,"1098":1,"1105":1,"1109":2,"1111":1,"1113":1,"1115":2,"1121":2,"1143":1,"1150":1,"1151":1,"1158":1,"1162":1,"1176":1,"1180":1,"1181":1,"1185":1,"1187":1,"1188":1,"1195":1,"1199":2,"1201":1,"1203":1,"1205":2,"1239":1,"1241":1,"1249":2,"1271":6,"1272":1,"1273":1,"1323":1,"1336":1,"1337":1,"1356":1,"1362":1,"1366":1,"1372":1,"1378":1,"1394":3,"1418":1,"1436":1,"1443":1,"1488":3,"1491":2,"1532":1,"1536":1,"1572":1,"1615":1,"1629":1,"1677":1,"1703":1,"1766":6,"1767":1,"1781":1,"1853":2,"1860":2,"1927":1,"1940":2,"1952":2,"1955":1,"1982":1,"1987":18,"1990":1,"2008":1,"2069":1,"2089":2,"2135":1,"2145":1,"2150":1,"2163":1,"2177":2,"2181":2,"2187":1,"2195":1,"2199":2,"2200":1,"2202":1,"2207":17,"2208":12,"2209":11,"2237":1,"2300":1,"2313":2,"2329":1,"2341":1,"2388":1,"2446":1,"2454":1,"2494":1,"2592":1,"2603":1,"2605":1,"2610":1,"2628":1,"2636":1,"2639":1,"2646":1,"2688":1,"2699":1}}],["sinanju",{"2":{"211":1}}],["sinc",{"2":{"191":1}}],["since",{"2":{"113":1,"175":1,"240":1,"463":1,"464":1,"465":1,"513":1,"641":1,"688":1,"689":2,"1369":1,"1375":1,"1420":1,"1421":1,"1434":1,"1438":1,"1464":1,"1475":1,"1508":1,"1538":1,"1571":1,"1615":1,"1712":1,"1715":1,"1946":1,"2080":1,"2140":1,"2156":1,"2160":1,"2166":2,"2200":2,"2221":1,"2264":1,"2281":1,"2313":1,"2331":1,"2350":1,"2386":1,"2437":1,"2513":2,"2545":1,"2615":1,"2644":1,"2654":1,"2773":2,"2777":1,"2791":1}}],["signed",{"2":{"1686":1,"1918":1,"1920":1,"1956":4}}],["sign",{"2":{"417":1,"554":1,"2767":2}}],["significance",{"2":{"2210":1}}],["significantly",{"2":{"196":1,"513":1,"1363":1,"1841":1,"2501":1,"2613":2}}],["significant",{"2":{"107":1,"169":1,"182":1,"215":1,"228":1,"486":1,"560":2,"678":1,"701":1,"1218":1,"1650":1,"1652":1,"1936":1,"1943":1,"2163":1,"2186":1,"2301":1,"2348":1,"2613":2,"2615":1}}],["signifies",{"2":{"341":1,"2563":1,"2635":1}}],["signum",{"2":{"122":2}}],["signature65",{"2":{"211":1}}],["signature",{"0":{"272":1},"2":{"114":1,"272":1,"597":1,"2386":1}}],["signals",{"2":{"2350":1}}],["signalling",{"2":{"125":1,"185":1}}],["signal",{"2":{"92":1,"176":1,"334":4,"1431":1,"1491":1,"1499":1,"1572":1,"1614":1,"1615":1}}],["sided",{"2":{"1955":1,"2319":1}}],["sidebar",{"2":{"621":1,"2463":1,"2552":2}}],["side",{"2":{"74":1,"141":1,"149":1,"160":2,"191":2,"211":1,"331":2,"496":1,"509":6,"511":1,"522":2,"607":1,"1273":1,"1585":1,"1589":3,"1596":2,"1615":2,"1870":1,"1925":1,"1927":1,"1943":1,"1945":3,"1946":2,"1950":1,"1953":2,"1955":3,"1963":5,"1980":1,"2089":4,"2161":1,"2162":1,"2165":3,"2167":12,"2168":6,"2169":7,"2195":1,"2284":1,"2286":1,"2311":1,"2312":1,"2315":1,"2350":1,"2391":1,"2513":1,"2605":1,"2606":1,"2616":5,"2767":1}}],["sides",{"0":{"2168":1},"2":{"31":1,"34":1,"107":2,"134":1,"211":1,"511":2,"1596":1,"1708":1,"1946":1,"1950":1,"1953":1,"2080":2,"2152":1,"2165":2,"2167":1,"2169":1,"2195":1,"2318":2,"2409":6,"2435":6}}],["sidestep",{"2":{"24":1}}],["simulation",{"2":{"1987":1}}],["simulate",{"2":{"1443":1,"1987":1}}],["simultaneously",{"2":{"688":1,"1427":1,"1536":1,"1537":1,"1600":1,"1840":1,"2190":1,"2440":1}}],["simultaneous",{"2":{"563":1,"688":4,"1424":1}}],["simutaneously",{"2":{"1436":1}}],["similiarly",{"2":{"82":1}}],["similarity",{"2":{"2605":1}}],["similary",{"2":{"1913":1}}],["similarly",{"2":{"1337":1,"1425":1,"1428":1,"1571":1,"1918":1}}],["similar",{"2":{"49":2,"99":1,"128":1,"139":1,"203":1,"220":1,"231":1,"371":1,"432":1,"529":1,"569":1,"587":1,"642":1,"1264":1,"1297":1,"1373":1,"1407":1,"1413":1,"1499":1,"1611":1,"1693":1,"1704":1,"1966":1,"1978":1,"1986":1,"2072":1,"2152":1,"2194":1,"2199":1,"2209":3,"2210":1,"2221":1,"2386":1,"2392":1,"2453":1,"2456":1,"2464":1,"2489":1,"2492":1,"2508":1,"2516":1,"2578":1,"2778":1,"2792":1,"2794":1}}],["simplfy",{"2":{"222":1}}],["simplified",{"2":{"2671":1}}],["simplifies",{"2":{"160":1,"198":1}}],["simplifying",{"2":{"164":1}}],["simplify",{"2":{"10":1,"145":1,"176":1,"191":2,"198":1,"222":1,"236":1,"262":1,"363":1,"2592":1,"2606":1}}],["simply",{"0":{"2708":1},"2":{"31":1,"110":1,"194":1,"314":1,"373":1,"428":1,"434":1,"602":1,"609":1,"614":1,"678":1,"683":1,"688":1,"1254":1,"1341":1,"1449":1,"1453":1,"1460":1,"1488":1,"1572":1,"1647":1,"1651":1,"1767":1,"1781":1,"1783":1,"1918":1,"1926":1,"1990":1,"2008":1,"2010":1,"2070":1,"2119":1,"2123":1,"2125":1,"2190":1,"2207":1,"2321":1,"2358":1,"2386":1,"2392":1,"2436":1,"2515":1,"2538":1,"2596":1,"2740":1}}],["simplest",{"2":{"2490":1,"2515":1,"2587":1}}],["simpler",{"2":{"236":1,"341":1,"2545":1,"2779":1}}],["simple",{"0":{"414":1,"463":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1461":1,"1462":1,"1701":1,"1927":1,"2202":1},"2":{"13":1,"94":1,"114":2,"249":1,"305":1,"315":1,"481":1,"567":1,"610":1,"611":1,"1287":3,"1307":1,"1337":1,"1339":1,"1347":1,"1375":1,"1401":1,"1423":1,"1487":1,"1489":1,"1501":1,"1603":1,"1708":2,"1766":3,"1767":1,"1987":3,"1990":1,"2116":1,"2171":1,"2185":1,"2193":1,"2199":1,"2202":1,"2269":1,"2276":1,"2307":1,"2316":1,"2352":1,"2354":1,"2456":1,"2487":1,"2493":1,"2536":1,"2546":1,"2582":1,"2603":1,"2703":1,"2748":1,"2750":1,"2779":1,"2788":1}}],["sea",{"2":{"2584":1}}],["searched",{"2":{"1478":1}}],["searches",{"2":{"384":1,"1383":1,"1478":1}}],["searching",{"2":{"374":1,"1475":1,"2442":1,"2758":1}}],["search",{"2":{"114":1,"191":1,"236":2,"279":1,"374":2,"1475":1,"1489":1,"2394":2,"2432":2,"2442":1,"2605":1,"2796":1}}],["sepr",{"2":{"2394":1,"2431":1}}],["seperate",{"2":{"2319":1}}],["separator",{"2":{"2394":2,"2431":2}}],["separation",{"2":{"236":1,"2333":1}}],["separated",{"2":{"413":1,"462":1,"612":2,"2168":1,"2217":1,"2513":1,"2605":1}}],["separately",{"2":{"228":1,"358":1,"1416":1,"1555":1,"1585":1,"1840":1,"2606":2,"2647":1}}],["separate",{"2":{"18":1,"35":1,"114":1,"134":1,"222":2,"236":1,"266":1,"277":1,"354":1,"454":1,"502":1,"516":1,"556":3,"559":1,"612":1,"683":1,"684":1,"1302":1,"1383":1,"1400":1,"1496":1,"1501":1,"1859":1,"1965":1,"1978":1,"2192":1,"2219":1,"2220":1,"2346":1,"2385":1,"2547":1,"2597":1,"2603":1,"2616":1,"2641":1,"2785":1,"2792":2}}],["seq",{"2":{"1616":3,"1858":3}}],["sequential",{"2":{"191":1,"1853":1,"2108":1,"2177":1}}],["sequence",{"0":{"1731":1,"1732":1,"1735":1,"1737":1,"1740":1,"1743":1,"1746":1,"1749":1,"2104":1},"1":{"1733":1,"1734":1,"1738":1,"1739":1,"1741":1,"1742":1,"1744":1,"1745":1,"1747":1,"1748":1,"1750":1,"1751":1},"2":{"196":4,"468":3,"473":1,"505":1,"1396":1,"1474":1,"1545":1,"1616":4,"1617":4,"1716":1,"1718":6,"1720":1,"1721":2,"1722":7,"1723":2,"1724":5,"1725":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1735":1,"1736":1,"1737":1,"1739":1,"1740":1,"1742":1,"1743":1,"1745":1,"1746":1,"1748":1,"1749":1,"1751":1,"2107":3,"2108":3,"2109":3,"2142":1,"2217":4,"2221":2,"2234":1,"2235":1,"2236":1,"2249":1,"2252":1,"2253":1,"2254":1,"2257":1,"2258":1,"2259":1,"2260":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":1,"2407":1,"2616":1,"2655":1,"2684":1,"2726":1,"2735":3,"2773":6,"2774":7,"2775":2}}],["sequences",{"2":{"134":1,"196":1,"435":2,"1616":2,"2110":1,"2221":1,"2359":1,"2774":1}}],["sequencer",{"0":{"2140":1,"2141":1},"1":{"2141":1,"2142":1,"2143":1,"2144":1,"2145":1},"2":{"63":1,"191":1,"199":1,"231":3,"2140":1,"2141":2,"2142":1,"2143":1,"2144":12,"2145":32,"2788":1,"2792":1}}],["sequencing",{"2":{"49":1,"176":1,"229":1}}],["semi",{"2":{"2207":1}}],["semitone",{"2":{"1831":2,"2410":2}}],["semitones",{"2":{"1831":10,"2410":10}}],["semicolon",{"2":{"1536":1,"1622":1,"1767":1,"1990":1,"2198":2,"2394":1,"2427":1}}],["semantics",{"2":{"199":1,"277":1}}],["seil",{"2":{"1317":2}}],["seigaiha",{"2":{"154":2}}],["self",{"2":{"428":1,"475":6,"609":1,"1563":1,"1565":1,"1767":1,"1990":1}}],["selectable",{"2":{"1363":1}}],["selects",{"2":{"505":1,"1396":1,"2650":1,"2655":1,"2768":3,"2775":1}}],["selectively",{"2":{"2077":1}}],["selecting",{"0":{"1392":1,"2574":1,"2586":1},"1":{"2575":1,"2576":1,"2577":1,"2587":1,"2588":1},"2":{"266":1,"331":1,"671":1,"1273":1,"2188":1,"2450":1,"2541":1}}],["selection",{"0":{"2071":1,"2583":1},"2":{"75":1,"114":1,"188":1,"191":2,"199":1,"211":1,"222":1,"249":1,"630":1,"1255":1,"1497":1,"1529":1,"1563":1,"1843":2,"1910":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2283":1,"2285":1,"2287":1,"2288":1,"2339":1,"2573":1,"2583":1,"2585":1,"2605":1,"2650":1,"2728":1}}],["select",{"0":{"537":1,"538":1,"830":1,"865":1,"899":1,"933":1,"967":1,"1001":1,"1035":1,"1069":1,"1103":1,"1156":1,"1193":1},"1":{"831":1,"866":1,"900":1,"934":1,"968":1,"1002":1,"1036":1,"1070":1,"1104":1,"1157":1,"1194":1},"2":{"222":1,"236":1,"331":16,"335":3,"502":1,"511":1,"537":3,"538":1,"626":2,"627":1,"628":1,"656":2,"664":1,"670":1,"675":2,"694":2,"831":1,"866":1,"900":1,"934":1,"968":1,"1002":1,"1036":1,"1070":1,"1104":1,"1136":1,"1157":1,"1194":1,"1213":1,"1214":6,"1218":1,"1231":1,"1272":1,"1366":1,"1430":1,"1439":1,"1611":2,"1843":3,"1907":1,"1910":1,"1935":1,"1936":1,"1940":1,"1943":1,"1949":1,"1950":4,"2071":1,"2142":1,"2164":1,"2166":1,"2179":1,"2185":1,"2186":1,"2188":1,"2303":2,"2317":1,"2394":3,"2431":2,"2432":1,"2475":2,"2478":2,"2537":3,"2540":2,"2541":1,"2545":2,"2551":2,"2552":1,"2557":1,"2581":1,"2612":1,"2615":11,"2768":1,"2774":2,"2775":2}}],["selector",{"2":{"176":1,"2537":1}}],["selected",{"0":{"1139":1},"1":{"1140":1,"1141":1,"1142":1},"2":{"65":1,"186":1,"540":1,"678":1,"679":1,"690":1,"691":1,"708":1,"711":1,"1127":1,"1129":1,"1130":1,"1132":3,"1133":4,"1174":1,"1220":1,"1223":1,"1225":1,"1228":1,"1260":1,"1425":1,"1430":1,"1431":1,"1432":1,"1435":4,"1436":4,"1531":1,"1613":1,"1617":1,"2078":1,"2217":1,"2218":5,"2221":4,"2222":2,"2234":1,"2235":1,"2236":1,"2423":2,"2580":1,"2583":1,"2758":2,"2759":1,"2768":2}}],["segments",{"2":{"2080":5,"2082":2,"2309":1}}],["segment",{"2":{"236":3,"2080":6,"2082":3}}],["seven",{"2":{"2653":2}}],["seventyfive",{"2":{"211":1}}],["several",{"2":{"204":2,"213":1,"304":1,"316":1,"358":1,"431":1,"449":1,"481":1,"537":1,"551":1,"560":1,"574":1,"1121":1,"1127":1,"1130":1,"1135":1,"1302":1,"1307":1,"1606":1,"1714":1,"1973":1,"2161":1,"2184":1,"2203":1,"2282":1,"2334":1,"2335":1,"2366":1,"2383":1,"2458":1,"2530":1,"2535":1,"2569":1,"2725":1,"2758":1,"2792":1}}],["severely",{"2":{"123":1,"2743":1}}],["sekigon",{"2":{"114":1}}],["serbian",{"2":{"1392":1,"2742":5}}],["servicing",{"2":{"689":1}}],["services",{"2":{"516":1}}],["service",{"0":{"305":1},"1":{"306":1,"307":1,"308":1,"309":1},"2":{"303":2,"305":1,"312":1,"315":1,"623":1,"1276":2,"1949":1,"2298":1,"2593":1,"2605":1}}],["served",{"2":{"520":1,"2342":2}}],["serves",{"2":{"403":1}}],["serve",{"2":{"403":3,"2683":1}}],["servertype",{"2":{"2552":1}}],["server",{"2":{"315":1,"401":1,"402":1,"2365":1,"2549":1,"2551":2,"2584":1,"2753":1}}],["serratus",{"2":{"211":1}}],["serenity",{"2":{"211":1}}],["serpent65",{"2":{"211":1}}],["serious",{"2":{"315":1,"2608":1}}],["series",{"0":{"2330":1},"2":{"160":1,"249":1,"331":2,"495":1,"532":1,"674":1,"675":1,"1168":1,"1427":1,"2288":1,"2374":1,"2789":1}}],["serialport>",{"2":{"2271":1}}],["serialized",{"2":{"1487":1,"1488":3}}],["serial",{"0":{"1121":1,"1132":1,"1277":1,"2157":1},"1":{"1122":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":1,"1128":1,"1129":1,"1130":1,"1131":1,"1132":1,"1133":1,"1134":1,"1135":1,"1136":1,"1137":1,"1138":1,"1139":1,"1140":1,"1141":1,"1142":1},"2":{"30":1,"45":1,"63":2,"65":1,"74":1,"93":1,"94":1,"111":1,"112":2,"114":3,"133":2,"134":2,"160":2,"176":2,"191":5,"199":3,"277":11,"511":7,"625":1,"1121":2,"1122":1,"1123":2,"1124":2,"1126":2,"1127":5,"1129":6,"1130":8,"1132":7,"1133":3,"1134":3,"1136":4,"1137":1,"1138":2,"1235":2,"1277":1,"1568":1,"1935":1,"1947":1,"1949":1,"2152":4,"2153":1,"2157":1,"2166":7,"2184":4,"2187":1,"2188":3,"2263":1,"2271":1,"2368":1,"2370":1,"2372":1,"2378":1,"2383":1,"2386":2,"2392":1,"2552":1,"2570":1,"2580":7,"2582":1,"2707":1,"2736":4}}],["sergiopoverony",{"2":{"114":1}}],["sentence",{"2":{"2207":1}}],["sentences",{"2":{"621":1,"1472":1,"1689":1}}],["sent",{"2":{"211":1,"263":2,"587":1,"1218":1,"1249":1,"1252":1,"1253":1,"1254":1,"1321":1,"1336":2,"1340":1,"1377":1,"1397":2,"1404":1,"1436":1,"1451":1,"1467":1,"1575":1,"1611":1,"1676":1,"1708":1,"1715":1,"1901":2,"1906":1,"1927":1,"1956":3,"1958":1,"1959":1,"2069":1,"2110":2,"2113":1,"2147":1,"2148":1,"2150":2,"2168":1,"2190":5,"2199":1,"2237":1,"2354":1,"2421":1,"2699":1,"2776":4,"2777":1}}],["sensible",{"2":{"1918":1}}],["sensitivity",{"2":{"1900":1,"1943":1,"1950":1}}],["sensitive",{"2":{"454":1,"585":1,"1390":1,"1943":3}}],["sensing",{"2":{"1273":1}}],["sense75",{"2":{"222":1}}],["senselessclay",{"2":{"211":1}}],["sense",{"2":{"123":1,"453":1,"560":1,"1302":1,"1469":1,"1910":1,"2556":1,"2592":1,"2763":1}}],["sensors",{"2":{"145":1,"273":1,"276":1,"1934":1,"1950":5,"1951":1,"1954":2,"2605":1}}],["sensor",{"0":{"276":1,"1934":1,"1935":1,"1936":1,"1947":1,"1949":1,"1950":1},"1":{"1935":1,"1936":1,"1937":1,"1938":1,"1939":1,"1940":1,"1941":1,"1942":1,"1943":1,"1944":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":1,"1951":1},"2":{"114":3,"118":2,"160":4,"175":1,"176":1,"249":2,"273":3,"276":1,"636":2,"1934":2,"1935":5,"1936":5,"1937":1,"1939":2,"1942":1,"1943":7,"1944":4,"1947":4,"1948":2,"1949":5,"1950":15,"1951":2,"1952":7,"1954":3}}],["sends",{"0":{"2354":1},"2":{"202":1,"623":1,"1323":1,"1336":1,"1372":1,"1394":1,"1403":1,"1404":1,"1405":1,"1475":1,"1620":2,"1697":1,"1915":1,"1954":3,"1956":1,"2199":4,"2395":1,"2449":1,"2494":1,"2611":1,"2650":1,"2740":1,"2778":1}}],["sendstring",{"0":{"142":1,"2741":1},"2":{"114":1,"145":1,"188":1,"191":1,"211":1,"1399":1,"1436":1,"2112":1,"2741":3,"2742":53}}],["sending",{"0":{"1287":1,"1829":1,"1925":1},"2":{"176":2,"191":2,"199":1,"502":1,"567":1,"1121":1,"1406":1,"1592":1,"1660":1,"1662":1,"1701":1,"1899":1,"1901":1,"1922":1,"1956":1,"1965":1,"2190":1,"2199":1,"2301":1,"2616":1,"2738":1,"2740":1}}],["sendyyeah",{"2":{"74":1}}],["sendz",{"2":{"74":1}}],["send",{"0":{"1396":1,"1931":1,"2110":1,"2119":1,"2121":1,"2123":1,"2125":1,"2127":1,"2129":1,"2131":1,"2133":1,"2135":1,"2138":1,"2139":1,"2202":1,"2204":1,"2206":1,"2239":1,"2358":1},"1":{"1397":1,"1398":1,"1399":1,"1400":1,"1932":1,"2111":1,"2112":1,"2113":1,"2114":1,"2115":1,"2116":1,"2117":1,"2118":1,"2119":1,"2120":2,"2121":1,"2122":2,"2123":1,"2124":2,"2125":1,"2126":2,"2127":1,"2128":2,"2129":1,"2130":2,"2131":1,"2132":2,"2133":1,"2134":2,"2135":1,"2136":2,"2137":1,"2138":1,"2139":1,"2240":1},"2":{"50":1,"94":1,"114":1,"142":1,"145":1,"160":1,"176":1,"190":1,"191":4,"195":1,"196":3,"222":1,"236":1,"249":1,"266":1,"515":1,"534":6,"571":1,"572":1,"708":1,"1225":1,"1269":1,"1315":1,"1337":2,"1357":1,"1369":1,"1373":1,"1390":2,"1394":2,"1396":8,"1397":2,"1398":5,"1400":6,"1405":1,"1412":1,"1421":2,"1422":3,"1436":1,"1468":1,"1485":5,"1488":1,"1489":1,"1545":1,"1548":2,"1565":1,"1576":1,"1595":1,"1606":4,"1656":1,"1660":1,"1661":1,"1662":1,"1663":1,"1679":1,"1693":1,"1694":3,"1703":7,"1708":1,"1718":3,"1721":1,"1724":2,"1825":1,"1830":2,"1859":1,"1860":4,"1886":1,"1901":3,"1913":2,"1918":2,"1919":3,"1921":10,"1925":2,"1926":3,"1927":3,"1931":1,"1932":1,"1954":1,"1956":5,"1958":1,"1981":1,"2110":1,"2111":1,"2113":7,"2114":1,"2116":1,"2119":1,"2123":1,"2125":1,"2138":2,"2139":2,"2150":9,"2151":5,"2167":1,"2168":3,"2188":1,"2190":2,"2198":2,"2199":1,"2204":1,"2207":8,"2208":1,"2221":1,"2222":3,"2238":1,"2239":1,"2240":1,"2247":1,"2261":1,"2301":5,"2350":2,"2354":2,"2359":1,"2423":3,"2436":1,"2437":1,"2449":1,"2450":1,"2452":2,"2453":4,"2454":2,"2650":1,"2688":1,"2705":1,"2715":1,"2738":2,"2741":3,"2773":2,"2777":2}}],["security",{"2":{"1390":1}}],["secure",{"0":{"2103":1,"2735":1},"1":{"2104":1,"2105":1,"2106":1,"2107":1,"2108":1,"2109":1},"2":{"145":2,"188":2,"191":2,"2103":2,"2105":1,"2107":4,"2108":3,"2109":7,"2319":1,"2545":1,"2650":1,"2735":3,"2788":1}}],["sector",{"2":{"679":3,"681":2,"694":2}}],["sectors",{"2":{"679":3}}],["section>",{"2":{"438":2,"439":2}}],["sections",{"0":{"290":1,"300":1},"2":{"194":1,"279":1,"602":1,"1341":1,"2071":1,"2352":1,"2443":1,"2457":1,"2498":1,"2513":1,"2574":1,"2599":1,"2613":1,"2639":1}}],["section",{"0":{"420":1},"2":{"31":2,"34":1,"124":1,"195":1,"206":1,"236":1,"240":1,"294":1,"320":1,"342":1,"417":1,"418":1,"437":4,"445":1,"453":1,"608":1,"628":1,"629":1,"671":2,"677":1,"693":1,"1127":2,"1129":1,"1130":2,"1272":1,"1377":1,"1487":1,"1710":1,"2069":1,"2172":1,"2190":1,"2203":1,"2278":1,"2301":1,"2307":1,"2321":1,"2335":1,"2366":1,"2386":2,"2387":2,"2437":1,"2450":1,"2459":1,"2478":1,"2490":1,"2493":1,"2511":2,"2529":1,"2533":1,"2573":1,"2575":1,"2576":1,"2587":1,"2596":1,"2604":1,"2616":1,"2618":1,"2620":1,"2653":2,"2762":1,"2763":1,"2783":1,"2786":1}}],["secondary",{"2":{"176":1,"191":1,"685":1,"1425":1,"1427":1,"1569":1,"1943":1,"1946":1,"1987":1,"2736":11}}],["second",{"0":{"2583":1},"2":{"90":2,"142":1,"266":1,"375":1,"506":1,"556":1,"557":2,"584":1,"597":1,"656":1,"673":1,"1340":1,"1396":1,"1398":1,"1424":1,"1428":1,"1436":2,"1453":1,"1475":1,"1598":2,"1741":1,"1744":1,"1747":1,"1750":1,"1763":1,"1842":3,"1845":1,"1918":1,"1950":2,"1984":1,"1987":1,"2152":1,"2163":1,"2169":1,"2199":2,"2200":1,"2311":1,"2348":1,"2387":1,"2489":1,"2513":1,"2552":1,"2583":1,"2732":1,"2776":3,"2784":3,"2785":1}}],["seconds>",{"2":{"375":1}}],["seconds",{"0":{"25":1},"2":{"11":1,"463":1,"464":2,"465":4,"502":1,"522":1,"598":1,"1494":1,"1536":1,"1541":2,"2264":5,"2270":1,"2271":1,"2272":1,"2273":1,"2277":1,"2394":1,"2716":2,"2719":1,"2735":1,"2736":1}}],["setpixel",{"2":{"2616":4}}],["setpinoutputopendrain",{"2":{"243":1}}],["setpinoutputpushpull",{"2":{"243":1}}],["setpinoutput",{"2":{"243":1}}],["setpininputlow",{"2":{"243":1}}],["setpininput",{"2":{"243":1}}],["setpininputhigh",{"2":{"34":2,"243":1}}],["setrgb",{"2":{"1380":5,"1991":1,"2089":5,"2096":3}}],["setings",{"2":{"1369":1}}],["setleds",{"0":{"1269":1},"1":{"1270":1}}],["settling",{"2":{"1363":3}}],["settle",{"2":{"1362":1}}],["settles",{"2":{"1362":1}}],["setter",{"2":{"475":2}}],["setta21",{"2":{"154":2}}],["settable",{"2":{"114":1}}],["setting",{"0":{"415":1,"417":1,"438":1,"509":1,"1264":1,"1759":1,"1971":1,"2088":1,"2161":1,"2387":1,"2481":1,"2495":1,"2531":1,"2542":1,"2646":1},"1":{"510":1,"1760":1,"1972":1,"2162":1,"2163":1,"2164":1,"2165":1,"2496":1,"2497":1,"2498":1,"2499":1,"2500":1,"2501":1,"2502":1,"2503":1,"2504":1,"2505":1,"2506":1,"2507":1,"2508":1},"2":{"87":1,"88":3,"93":1,"104":3,"127":3,"176":2,"191":1,"321":1,"370":1,"415":2,"423":1,"435":1,"497":3,"502":1,"504":1,"505":1,"516":2,"533":1,"556":1,"578":1,"624":1,"641":1,"657":1,"701":1,"703":3,"790":1,"820":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1129":1,"1276":1,"1329":1,"1365":1,"1375":1,"1421":1,"1437":1,"1439":1,"1443":1,"1452":1,"1453":1,"1467":1,"1488":1,"1541":1,"1544":1,"1614":1,"1615":1,"1666":1,"1690":1,"1704":1,"1755":1,"1759":1,"1767":1,"1841":5,"1842":3,"1843":1,"1935":1,"1936":2,"1937":1,"1939":3,"1940":1,"1941":1,"1943":4,"1944":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":2,"1952":1,"1953":1,"1954":1,"1967":3,"1977":1,"1979":1,"1990":1,"2082":1,"2098":1,"2101":1,"2141":1,"2163":1,"2164":2,"2169":2,"2186":2,"2270":1,"2272":1,"2279":1,"2281":1,"2282":1,"2283":1,"2284":1,"2285":1,"2286":1,"2287":1,"2291":1,"2297":1,"2299":6,"2300":1,"2316":1,"2344":1,"2380":1,"2385":1,"2387":1,"2552":1,"2561":1,"2649":1,"2766":3}}],["settings",{"0":{"697":1,"1898":1,"1905":1,"1939":1,"1940":1,"1941":1,"1943":1,"1944":1,"2076":1,"2744":1,"2745":1,"2746":1,"2750":1},"1":{"1899":1,"1900":1,"1901":1,"1902":1,"1903":1,"1904":1,"1905":1,"1906":1},"2":{"69":1,"74":1,"75":1,"114":1,"131":1,"134":1,"291":1,"331":1,"496":1,"498":2,"505":5,"582":1,"688":1,"697":1,"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1129":1,"1280":1,"1329":1,"1368":3,"1369":2,"1416":2,"1422":1,"1436":1,"1532":1,"1535":1,"1548":1,"1550":1,"1608":2,"1611":3,"1714":1,"1841":1,"1842":2,"1843":1,"1844":1,"1845":1,"1846":1,"1899":1,"1939":1,"1943":1,"2102":1,"2169":1,"2188":1,"2213":1,"2299":1,"2301":1,"2338":2,"2339":1,"2487":1,"2529":1,"2547":4,"2552":1,"2592":1,"2595":1,"2605":1,"2646":1,"2649":1,"2740":1,"2747":1,"2767":1,"2774":1,"2775":1,"2776":1}}],["sets",{"2":{"50":1,"502":5,"505":4,"511":1,"576":1,"582":3,"638":1,"641":3,"684":1,"1369":1,"1378":4,"1443":5,"1592":2,"1611":3,"1618":1,"1755":1,"1768":5,"1844":3,"1860":4,"1936":5,"1937":3,"1939":3,"1943":7,"1948":1,"1950":8,"1954":2,"1955":2,"1963":1,"1974":1,"1992":7,"1997":1,"2071":1,"2093":2,"2164":1,"2166":3,"2169":3,"2181":2,"2212":3,"2213":1,"2265":1,"2270":1,"2272":1,"2279":1,"2284":1,"2286":1,"2297":2,"2338":1,"2339":1,"2605":1}}],["sethsv",{"0":{"2050":1,"2052":1},"1":{"2053":1},"2":{"49":1,"582":1,"1369":7,"1991":1,"1998":1,"2089":7,"2092":2,"2096":3}}],["setups",{"2":{"688":1,"691":1,"1868":6,"2447":1}}],["setup",{"0":{"310":1,"449":1,"1124":1,"1127":1,"1130":1,"1335":1,"1470":1,"1471":1,"1613":1,"1695":1,"2469":1,"2482":1,"2483":1,"2507":1,"2547":1},"1":{"450":1,"451":1,"452":1,"1471":1,"1472":1,"1473":1,"1614":1,"1615":1,"2470":1,"2471":1,"2472":1},"2":{"14":1,"23":1,"93":1,"176":1,"310":1,"322":1,"331":1,"332":1,"334":2,"365":1,"366":1,"428":1,"445":1,"449":1,"456":1,"574":1,"624":1,"702":1,"1129":1,"1213":1,"1234":1,"1274":1,"1375":1,"1453":1,"1472":1,"1598":1,"1853":1,"1859":1,"1862":1,"1863":1,"1868":2,"1953":1,"2080":1,"2111":1,"2177":1,"2215":1,"2300":1,"2315":1,"2328":1,"2329":1,"2330":1,"2339":1,"2348":1,"2457":1,"2467":2,"2468":1,"2471":1,"2477":1,"2479":1,"2481":1,"2507":8,"2541":1,"2673":1,"2782":2}}],["set",{"0":{"350":1,"647":1,"649":1,"652":1,"665":1,"667":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1158":1,"1160":1,"1162":1,"1176":1,"1178":1,"1195":1,"1197":1,"1199":1,"1201":1,"1203":1,"1205":1,"1380":1,"1382":1,"1583":1,"1641":1,"1664":1,"1666":1,"1687":1,"1781":1,"1783":1,"1805":1,"1807":1,"1889":1,"1978":1,"2008":1,"2010":1,"2044":1,"2046":1,"2226":1,"2230":1,"2232":1,"2316":1,"2543":1},"1":{"648":1,"650":1,"653":1,"666":1,"668":1,"742":1,"744":1,"746":1,"748":1,"750":1,"752":1,"769":1,"771":1,"773":1,"775":1,"777":1,"779":1,"801":1,"803":1,"805":1,"807":1,"809":1,"811":1,"833":1,"835":1,"837":1,"839":1,"841":1,"843":1,"868":1,"870":1,"872":1,"874":1,"876":1,"878":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"936":1,"938":1,"940":1,"942":1,"944":1,"946":1,"970":1,"972":1,"974":1,"976":1,"978":1,"980":1,"1004":1,"1006":1,"1008":1,"1010":1,"1012":1,"1014":1,"1038":1,"1040":1,"1042":1,"1044":1,"1046":1,"1048":1,"1072":1,"1074":1,"1076":1,"1078":1,"1080":1,"1082":1,"1106":1,"1108":1,"1110":1,"1112":1,"1114":1,"1116":1,"1159":1,"1161":1,"1163":1,"1177":1,"1179":1,"1196":1,"1198":1,"1200":1,"1202":1,"1204":1,"1206":1,"1584":1,"1642":1,"1665":1,"1667":1,"1688":1,"1782":1,"1784":1,"1806":1,"1808":1,"1890":1,"2009":1,"2011":1,"2045":1,"2047":1,"2227":1,"2231":1,"2233":1,"2544":1,"2545":1,"2546":1,"2547":1,"2548":1,"2549":1},"2":{"6":1,"23":1,"25":1,"28":1,"30":1,"33":1,"38":1,"49":1,"50":2,"63":1,"83":1,"90":1,"92":1,"93":1,"114":2,"134":1,"138":2,"152":1,"163":1,"173":2,"191":5,"195":2,"199":3,"209":1,"211":1,"222":2,"228":1,"236":4,"243":6,"266":2,"277":2,"317":1,"360":1,"365":2,"366":2,"367":1,"371":1,"385":1,"396":2,"411":2,"413":1,"414":1,"415":1,"417":1,"430":1,"433":1,"438":1,"446":1,"462":1,"496":1,"497":1,"501":1,"502":1,"505":1,"509":4,"512":1,"520":1,"529":1,"558":1,"574":1,"576":6,"578":1,"580":2,"592":1,"593":2,"594":2,"596":1,"602":1,"607":1,"610":3,"625":1,"641":3,"643":1,"647":1,"648":3,"649":1,"650":3,"652":1,"653":1,"655":1,"665":1,"666":3,"667":1,"668":3,"679":1,"685":1,"691":1,"696":16,"699":1,"703":1,"707":4,"727":1,"730":1,"739":1,"740":1,"741":1,"742":3,"743":1,"744":3,"745":1,"746":1,"747":1,"748":1,"756":1,"758":1,"766":1,"767":1,"768":1,"769":3,"770":1,"771":3,"772":1,"773":1,"774":1,"775":1,"785":1,"787":1,"798":1,"799":1,"800":1,"801":3,"802":1,"803":3,"804":1,"805":1,"806":1,"807":1,"817":1,"819":1,"828":1,"829":1,"832":1,"833":3,"834":1,"835":3,"836":1,"837":1,"838":1,"839":1,"849":1,"851":1,"852":1,"863":1,"864":1,"867":1,"868":3,"869":1,"870":3,"871":1,"872":1,"873":1,"874":1,"884":1,"886":1,"897":1,"898":1,"901":1,"902":3,"903":1,"904":3,"905":1,"906":1,"907":1,"908":1,"918":1,"920":1,"931":1,"932":1,"935":1,"936":3,"937":1,"938":3,"939":1,"940":1,"941":1,"942":1,"952":1,"954":1,"965":1,"966":1,"969":1,"970":3,"971":1,"972":3,"973":1,"974":1,"975":1,"976":1,"986":1,"988":1,"999":1,"1000":1,"1003":1,"1004":3,"1005":1,"1006":3,"1007":1,"1008":1,"1009":1,"1010":1,"1020":1,"1022":1,"1023":1,"1033":1,"1034":1,"1037":1,"1038":3,"1039":1,"1040":3,"1041":1,"1042":1,"1043":1,"1044":1,"1054":1,"1056":1,"1057":1,"1067":1,"1068":1,"1071":1,"1072":3,"1073":1,"1074":3,"1075":1,"1076":1,"1077":1,"1078":1,"1088":1,"1090":1,"1101":1,"1102":1,"1105":1,"1106":3,"1107":1,"1108":3,"1109":1,"1110":1,"1111":1,"1112":1,"1144":1,"1146":1,"1154":1,"1155":1,"1158":1,"1159":3,"1160":1,"1161":3,"1170":1,"1176":1,"1177":3,"1178":1,"1179":3,"1181":1,"1183":1,"1191":1,"1192":1,"1195":1,"1196":3,"1197":1,"1198":3,"1199":1,"1200":1,"1201":1,"1202":1,"1211":1,"1214":1,"1218":1,"1232":1,"1235":1,"1250":1,"1251":1,"1267":1,"1292":1,"1331":1,"1337":4,"1340":1,"1341":1,"1355":1,"1356":1,"1358":1,"1366":4,"1367":1,"1368":1,"1369":9,"1372":1,"1373":1,"1375":1,"1377":1,"1378":8,"1380":2,"1381":1,"1382":2,"1383":1,"1384":1,"1392":1,"1420":6,"1422":2,"1424":1,"1427":2,"1430":1,"1431":1,"1434":2,"1436":1,"1437":4,"1438":1,"1441":1,"1448":1,"1453":1,"1467":1,"1468":2,"1473":1,"1478":1,"1488":1,"1493":1,"1496":1,"1501":1,"1506":1,"1516":1,"1517":1,"1532":1,"1533":1,"1544":2,"1550":1,"1551":2,"1552":1,"1563":4,"1564":1,"1568":3,"1571":1,"1572":1,"1583":1,"1608":1,"1611":3,"1613":1,"1614":2,"1617":3,"1632":1,"1638":1,"1643":1,"1664":1,"1666":1,"1672":4,"1680":1,"1687":1,"1688":2,"1703":1,"1708":6,"1709":4,"1754":1,"1760":3,"1763":1,"1764":2,"1767":2,"1768":5,"1771":4,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1,"1787":1,"1805":1,"1806":1,"1807":1,"1808":1,"1831":49,"1839":3,"1841":1,"1842":1,"1844":1,"1845":5,"1854":1,"1855":6,"1858":1,"1860":5,"1864":4,"1875":1,"1879":1,"1889":1,"1896":1,"1899":6,"1900":1,"1901":1,"1914":1,"1920":4,"1939":1,"1943":1,"1950":3,"1951":1,"1954":2,"1955":3,"1956":2,"1958":2,"1959":4,"1960":13,"1962":4,"1963":4,"1965":2,"1966":1,"1967":5,"1974":13,"1977":3,"1978":8,"1979":2,"1984":1,"1985":2,"1987":3,"1988":1,"1990":2,"1992":8,"1995":4,"1996":4,"1997":3,"2008":1,"2009":3,"2010":1,"2011":3,"2012":1,"2014":1,"2044":1,"2045":1,"2046":1,"2047":1,"2050":1,"2051":3,"2052":1,"2053":3,"2081":6,"2082":1,"2085":1,"2086":3,"2088":2,"2089":10,"2090":2,"2092":2,"2093":2,"2094":1,"2098":4,"2101":1,"2104":1,"2110":1,"2114":1,"2137":1,"2144":2,"2145":12,"2151":1,"2157":1,"2164":1,"2166":3,"2169":5,"2179":2,"2181":1,"2185":2,"2187":1,"2188":3,"2190":3,"2191":1,"2192":1,"2199":2,"2200":1,"2205":1,"2209":6,"2212":1,"2213":4,"2221":2,"2226":1,"2227":1,"2265":1,"2266":1,"2267":1,"2281":1,"2291":1,"2293":1,"2299":1,"2300":2,"2301":2,"2302":1,"2311":1,"2337":1,"2338":1,"2339":2,"2343":1,"2344":1,"2350":1,"2356":1,"2358":1,"2380":1,"2387":1,"2392":1,"2399":1,"2406":1,"2409":2,"2410":49,"2411":3,"2424":1,"2435":2,"2450":1,"2459":1,"2460":4,"2481":1,"2484":1,"2487":1,"2493":1,"2495":1,"2497":1,"2508":1,"2511":1,"2516":1,"2527":4,"2529":3,"2530":1,"2531":2,"2542":1,"2543":2,"2545":1,"2547":2,"2552":2,"2563":1,"2594":1,"2606":1,"2613":2,"2614":5,"2615":2,"2616":10,"2620":1,"2644":1,"2645":2,"2646":4,"2654":1,"2700":1,"2705":1,"2718":1,"2735":2,"2740":1,"2741":2,"2766":1,"2767":1,"2769":1,"2776":4,"2783":1,"2787":1,"2788":1}}],["se",{"2":{"5":1,"176":1,"2107":4}}],["seeks",{"2":{"2394":1}}],["seen",{"2":{"175":1,"232":1,"625":1,"1435":1,"1488":1,"2166":1,"2518":1}}],["seem",{"2":{"119":1,"273":1,"276":2,"1335":1,"1721":1,"2616":1}}],["seems",{"2":{"50":1,"1320":1}}],["sees",{"0":{"1603":1},"2":{"49":1,"215":1,"1708":1}}],["see",{"2":{"2":1,"14":1,"118":1,"132":1,"137":1,"138":1,"149":1,"166":1,"172":1,"174":1,"179":1,"182":2,"186":1,"189":1,"196":1,"228":1,"229":1,"232":1,"240":1,"247":1,"279":1,"313":1,"315":1,"331":2,"341":1,"349":1,"372":1,"408":1,"409":1,"410":1,"429":1,"432":2,"492":1,"496":1,"502":2,"505":4,"511":3,"515":2,"535":1,"540":1,"547":1,"610":2,"624":1,"626":2,"638":1,"639":1,"671":2,"677":1,"680":1,"685":1,"688":3,"690":1,"693":1,"701":1,"704":1,"705":1,"820":1,"1127":4,"1130":4,"1255":1,"1272":1,"1275":2,"1278":1,"1279":1,"1280":1,"1291":1,"1292":5,"1297":1,"1302":1,"1304":1,"1314":1,"1315":1,"1318":1,"1319":1,"1326":1,"1334":1,"1337":1,"1362":2,"1367":1,"1369":1,"1371":1,"1372":2,"1378":1,"1396":1,"1402":1,"1413":1,"1417":2,"1420":1,"1426":1,"1430":1,"1439":1,"1443":1,"1444":1,"1449":1,"1453":1,"1468":1,"1478":1,"1483":1,"1497":1,"1508":1,"1535":2,"1536":2,"1538":1,"1548":1,"1603":1,"1620":2,"1627":1,"1697":1,"1700":1,"1713":3,"1752":1,"1762":1,"1829":1,"1897":1,"1899":2,"1910":1,"1917":1,"1943":2,"1953":1,"1955":1,"1956":1,"1965":2,"1977":1,"1983":1,"1996":1,"1997":1,"2069":1,"2070":1,"2079":1,"2082":1,"2085":1,"2086":1,"2110":1,"2149":1,"2166":1,"2183":1,"2209":1,"2216":1,"2267":1,"2278":1,"2296":1,"2297":2,"2301":6,"2303":2,"2312":1,"2319":1,"2326":1,"2327":1,"2328":1,"2329":1,"2330":1,"2337":1,"2338":1,"2339":1,"2350":2,"2364":1,"2374":1,"2394":1,"2395":1,"2396":1,"2397":1,"2398":1,"2399":1,"2400":1,"2401":1,"2402":1,"2403":1,"2404":1,"2405":1,"2406":2,"2407":1,"2408":1,"2409":1,"2410":1,"2411":1,"2412":1,"2413":1,"2414":1,"2415":1,"2416":1,"2417":1,"2418":1,"2419":1,"2420":1,"2421":1,"2422":1,"2423":1,"2424":1,"2444":1,"2448":1,"2455":1,"2461":1,"2463":1,"2479":1,"2489":1,"2492":1,"2493":2,"2499":1,"2513":1,"2516":1,"2529":2,"2560":1,"2572":1,"2592":2,"2594":1,"2598":1,"2600":1,"2601":1,"2603":1,"2604":1,"2605":4,"2608":1,"2609":2,"2615":2,"2616":2,"2626":3,"2627":1,"2632":1,"2635":3,"2642":1,"2653":1,"2654":1,"2710":1,"2736":4,"2744":1,"2766":1,"2767":1,"2778":1,"2787":1}}],["swy",{"2":{"789":4,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1}}],["sw1",{"2":{"659":6,"792":5,"857":5,"891":5,"925":5,"959":5,"993":5,"1027":5,"1061":5,"1095":5}}],["swo",{"2":{"334":1}}],["swordfish",{"2":{"222":1}}],["swclk",{"2":{"334":2,"2391":1,"2392":1,"2552":1,"2569":1}}],["swdio",{"2":{"334":2,"2391":1,"2392":1,"2552":1,"2569":1}}],["swd",{"2":{"322":1,"328":1,"334":1,"2569":1}}],["swx",{"2":{"236":1,"786":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1024":3,"1055":1,"1058":3,"1089":1,"1092":3}}],["sw",{"2":{"217":1,"786":3,"789":15,"850":1,"854":2,"885":1,"888":2,"919":1,"922":2,"953":1,"956":2,"987":1,"990":2,"1021":2,"1024":6,"1055":2,"1058":6,"1089":2,"1092":6,"1986":1,"2072":1,"2415":1}}],["switzerland",{"2":{"2742":2}}],["switched",{"2":{"1377":1,"1436":1,"2073":1,"2530":1}}],["switches",{"0":{"1585":1,"1830":1,"1866":1,"2721":1},"1":{"1586":1,"1587":1,"1588":1,"1589":1,"1590":1},"2":{"114":1,"199":1,"236":1,"247":1,"249":1,"563":1,"1273":1,"1313":1,"1362":1,"1363":1,"1372":1,"1443":1,"1508":1,"1585":1,"1586":3,"1611":2,"1830":1,"1866":1,"1915":1,"2155":1,"2306":1,"2307":2,"2308":1,"2309":1,"2350":1,"2526":1,"2664":1,"2721":2,"2736":1}}],["switchplate",{"2":{"211":1}}],["switchs",{"2":{"145":1}}],["switching",{"0":{"1372":1,"2187":1,"2406":1},"1":{"1373":1},"2":{"50":1,"114":1,"132":1,"191":1,"516":1,"1312":2,"1332":1,"1372":1,"1374":1,"1491":1,"1531":1,"1692":1,"1854":1,"1866":1,"1867":1,"1922":1,"2178":1,"2183":2,"2199":1,"2387":1,"2406":1}}],["switch",{"0":{"26":1,"105":1,"231":1,"247":1,"1313":1,"1579":1,"1580":1,"1581":1,"1582":1,"1586":1,"1589":2,"1590":2,"2209":1},"2":{"3":1,"15":1,"16":1,"94":1,"105":15,"107":1,"114":8,"191":2,"194":3,"195":2,"231":3,"235":1,"236":5,"247":7,"249":4,"334":1,"502":3,"534":2,"563":1,"572":1,"573":1,"626":1,"1271":1,"1273":3,"1290":1,"1313":1,"1325":1,"1331":1,"1339":2,"1340":1,"1362":5,"1363":1,"1369":2,"1372":2,"1376":3,"1377":1,"1380":1,"1381":1,"1396":3,"1397":2,"1402":1,"1412":1,"1421":1,"1422":1,"1441":1,"1453":3,"1460":2,"1467":3,"1483":2,"1491":1,"1531":1,"1543":1,"1548":1,"1555":5,"1556":1,"1560":2,"1561":5,"1563":1,"1565":1,"1568":3,"1569":2,"1575":2,"1579":1,"1580":1,"1581":1,"1582":1,"1585":8,"1586":7,"1587":7,"1589":1,"1590":1,"1611":6,"1672":1,"1767":1,"1786":1,"1788":1,"1830":1,"1851":1,"1864":1,"1868":1,"1897":1,"1911":2,"1912":1,"1913":2,"1914":2,"1915":1,"1916":1,"1918":1,"1919":2,"1921":4,"1937":1,"1960":1,"1962":1,"1969":1,"1972":1,"1977":1,"1978":2,"1979":1,"1990":1,"1996":1,"1997":1,"2013":1,"2015":1,"2082":2,"2085":1,"2116":1,"2175":1,"2183":2,"2184":2,"2187":3,"2188":1,"2205":1,"2206":1,"2207":2,"2208":2,"2209":7,"2221":1,"2222":6,"2278":1,"2288":1,"2297":1,"2301":1,"2307":2,"2311":1,"2312":5,"2318":1,"2319":2,"2341":2,"2350":3,"2367":1,"2400":1,"2418":1,"2423":6,"2441":2,"2452":1,"2453":1,"2454":1,"2529":1,"2537":1,"2541":1,"2552":1,"2597":2,"2598":1,"2605":2,"2643":1,"2653":4,"2713":2,"2721":1,"2736":1,"2745":1,"2751":1,"2766":3,"2767":2,"2774":2,"2775":2,"2776":1,"2777":1,"2785":3}}],["swillkb",{"2":{"2306":1}}],["swipe",{"2":{"1940":12}}],["swin",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["swirls",{"2":{"2076":1}}],["swirling",{"2":{"2074":1,"2078":1}}],["swirl",{"2":{"292":1,"1986":2,"2072":2,"2074":1,"2075":2,"2076":2,"2077":1,"2078":1,"2100":1,"2101":1,"2415":2,"2750":1}}],["swift65",{"2":{"266":2}}],["swiftrax",{"2":{"191":2,"277":1}}],["swiss",{"2":{"211":1,"2308":1,"2742":4}}],["sweep",{"2":{"191":1,"249":1}}],["swedish",{"2":{"5":2,"1392":1,"2740":1,"2742":11}}],["swapping",{"2":{"194":1,"679":1,"1130":1,"1308":3,"2195":1,"2392":1,"2582":1,"2667":1,"2744":1}}],["swapped",{"0":{"1308":1},"2":{"166":1,"222":1,"671":1,"693":1,"1253":2,"1671":1,"2344":1}}],["swap",{"0":{"2192":1,"2194":1,"2422":1},"1":{"2193":1,"2194":1,"2195":1,"2196":1},"2":{"94":1,"114":1,"142":1,"160":1,"176":2,"191":1,"199":2,"211":2,"231":4,"247":1,"1129":2,"1130":2,"1140":1,"1141":1,"1142":1,"1356":1,"1435":4,"1436":6,"1483":4,"1586":1,"1595":1,"2192":4,"2193":3,"2194":17,"2195":3,"2196":9,"2409":31,"2422":16,"2435":31,"2748":2}}],["sudden",{"2":{"2264":1}}],["sudo",{"2":{"454":1,"1275":8,"1276":6,"1291":1,"2300":1,"2470":7,"2503":7,"2595":1}}],["suffer",{"2":{"680":1,"689":1,"1447":1}}],["sufficient",{"2":{"2187":1,"2606":1,"2784":1}}],["suffices",{"2":{"1708":1}}],["suffice",{"2":{"355":1}}],["suffix",{"2":{"568":4}}],["sunk",{"2":{"657":1,"790":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1}}],["sunsetter",{"2":{"211":1}}],["sugar|",{"2":{"621":1}}],["sugar||order",{"2":{"621":1}}],["sugar",{"2":{"621":1}}],["suggest",{"2":{"2332":1}}],["suggestions",{"2":{"561":1,"2448":1,"2493":1}}],["suggested",{"2":{"199":1,"341":1,"587":1,"1981":1,"2207":1}}],["summary",{"2":{"300":1,"1352":1,"1359":1}}],["sust",{"2":{"1831":1,"2410":1}}],["sustain",{"2":{"249":1,"1831":2,"2410":2}}],["susceptible",{"2":{"341":1,"1362":2,"1366":1}}],["suspense",{"2":{"222":1}}],["suspend",{"0":{"590":2,"591":1,"1812":1,"2057":1},"1":{"1813":1,"2058":1},"2":{"92":3,"93":1,"94":1,"112":1,"114":4,"133":1,"134":1,"160":2,"176":1,"222":3,"249":1,"263":2,"266":1,"277":2,"502":1,"515":1,"588":2,"589":2,"590":2,"591":4,"1812":1,"2057":1,"2163":1,"2612":1,"2616":4,"2738":2}}],["suspended",{"2":{"74":1,"114":2,"134":1,"222":1,"249":2,"590":1,"1608":1,"1615":1,"1768":1,"1813":1,"1992":1,"2058":1}}],["suspending",{"2":{"25":1,"502":1}}],["succeeds",{"2":{"2166":1}}],["succeed",{"2":{"1724":6}}],["success",{"2":{"554":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1222":1,"1227":1,"1230":1,"2492":4}}],["successfully",{"2":{"407":1,"411":1,"552":1,"1418":1,"1724":1,"1860":1,"2163":1,"2181":1,"2392":1,"2478":1,"2583":1}}],["successful",{"2":{"324":1,"1137":1,"1377":1,"2169":1}}],["successive",{"2":{"266":1}}],["succession",{"2":{"191":1}}],["such",{"2":{"55":1,"69":1,"87":1,"103":1,"118":1,"123":1,"124":1,"126":1,"132":1,"138":1,"163":1,"198":1,"229":1,"230":1,"234":1,"240":1,"244":1,"246":1,"263":1,"352":1,"363":1,"371":1,"374":1,"432":1,"457":1,"479":1,"481":1,"505":1,"529":1,"533":1,"575":1,"585":1,"586":1,"592":2,"599":1,"606":1,"625":1,"630":1,"674":1,"675":1,"694":1,"700":1,"1212":1,"1254":1,"1271":1,"1277":1,"1372":1,"1373":1,"1398":1,"1403":1,"1414":1,"1415":1,"1416":2,"1422":1,"1435":1,"1436":1,"1442":1,"1468":1,"1482":2,"1535":1,"1546":1,"1549":1,"1620":1,"1668":1,"1669":1,"1692":1,"1708":1,"1721":1,"1771":1,"1826":2,"1852":1,"1867":1,"1922":2,"1943":2,"1977":1,"1979":1,"1995":2,"2164":1,"2167":1,"2169":1,"2171":1,"2208":2,"2220":2,"2221":2,"2274":1,"2278":1,"2283":1,"2285":1,"2287":1,"2293":1,"2306":1,"2318":1,"2319":1,"2336":1,"2342":2,"2358":2,"2361":1,"2387":1,"2436":1,"2441":1,"2445":1,"2466":1,"2484":1,"2531":3,"2542":3,"2562":2,"2563":1,"2587":1,"2593":1,"2605":4,"2606":3,"2608":1,"2610":1,"2612":2,"2613":1,"2616":1,"2646":1,"2661":1,"2667":1,"2710":1,"2725":1,"2741":1,"2748":2,"2767":1,"2773":1,"2776":1,"2780":1,"2782":1,"2788":1}}],["suits",{"2":{"2526":1}}],["suite",{"2":{"407":2,"411":2}}],["suited",{"2":{"211":1,"355":1}}],["suitable",{"2":{"138":1,"1324":1,"1366":1,"2457":1,"2668":1,"2767":1,"2796":1}}],["suihankey",{"2":{"154":6}}],["surprised",{"2":{"2606":1}}],["surplus",{"2":{"145":1}}],["surrogate",{"2":{"2221":1,"2237":1}}],["surrounding",{"2":{"453":2,"1988":2}}],["surfaces",{"2":{"2311":3,"2615":4}}],["surface",{"2":{"191":1,"1575":1,"1936":1,"1950":1,"2312":1,"2612":2,"2615":29,"2704":1}}],["sure",{"2":{"50":1,"334":1,"360":1,"453":2,"455":1,"508":1,"537":2,"540":1,"548":1,"551":1,"556":7,"557":1,"560":2,"609":1,"613":1,"621":1,"626":1,"627":1,"1277":2,"1279":1,"1297":1,"1320":1,"1323":1,"1369":1,"1372":1,"1373":1,"1412":1,"1467":1,"1552":1,"1558":1,"2149":1,"2156":1,"2169":1,"2183":1,"2207":1,"2209":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2283":1,"2285":1,"2287":1,"2288":1,"2300":1,"2303":1,"2312":1,"2313":1,"2315":1,"2318":1,"2345":1,"2348":1,"2381":1,"2387":1,"2392":1,"2456":1,"2468":1,"2475":1,"2494":1,"2496":1,"2513":1,"2520":1,"2530":1,"2543":1,"2605":1,"2616":1,"2744":1,"2746":1}}],["supremely",{"2":{"1390":1}}],["superfluous",{"2":{"2767":1}}],["supercharged",{"2":{"1689":1}}],["superior",{"2":{"1358":1,"1363":1}}],["super",{"0":{"1412":1},"2":{"616":1,"2273":1,"2546":1}}],["superscripted",{"2":{"293":1}}],["superscript",{"0":{"293":1}}],["supersedes",{"2":{"2480":1}}],["superseded",{"2":{"3":1,"7":1,"15":1,"25":1,"38":1}}],["superseeds",{"2":{"236":1}}],["suppose",{"2":{"2514":1}}],["supposed",{"2":{"2082":1,"2783":1}}],["supposing",{"2":{"1918":1}}],["supports",{"2":{"166":1,"243":1,"248":1,"313":1,"318":1,"411":1,"454":1,"488":1,"499":1,"513":1,"538":1,"560":1,"589":1,"630":1,"635":1,"641":1,"654":1,"671":3,"674":1,"675":1,"693":1,"694":1,"729":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1,"1125":1,"1143":1,"1148":1,"1180":1,"1356":1,"1364":1,"1372":2,"1386":1,"1591":1,"1611":1,"1613":1,"1840":1,"1860":1,"1938":1,"1942":1,"1943":1,"1950":1,"2069":1,"2152":1,"2156":1,"2182":1,"2183":1,"2187":1,"2188":1,"2219":2,"2220":1,"2221":5,"2300":1,"2341":3,"2380":1,"2480":1,"2542":1,"2587":1,"2588":1,"2613":2,"2614":4,"2763":1,"2768":1}}],["supporting",{"0":{"1384":1,"2652":1},"1":{"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1},"2":{"50":1,"318":1,"535":1,"1668":1,"1952":3,"2146":1,"2186":1,"2283":1,"2285":1,"2758":1}}],["supported",{"0":{"1316":1,"1348":1,"1364":1,"1528":1,"1609":1,"1627":1,"1849":1,"2174":1,"2586":1},"1":{"1365":1,"1366":1,"1367":1,"1529":1,"2587":1,"2588":1},"2":{"49":2,"69":1,"118":1,"138":1,"139":2,"148":1,"163":2,"172":1,"213":1,"248":1,"262":1,"266":1,"285":1,"318":1,"371":1,"374":1,"437":1,"455":1,"511":1,"538":1,"560":1,"600":1,"606":1,"624":1,"630":1,"635":1,"671":1,"685":2,"690":1,"692":2,"1128":1,"1132":2,"1133":2,"1134":1,"1171":1,"1264":1,"1267":1,"1302":1,"1310":1,"1316":1,"1352":2,"1353":2,"1354":2,"1359":2,"1373":1,"1394":1,"1396":1,"1431":1,"1494":1,"1500":1,"1503":1,"1504":1,"1528":2,"1529":2,"1530":1,"1546":1,"1585":1,"1595":1,"1627":1,"1670":1,"1762":1,"1851":1,"1858":2,"1899":1,"1900":1,"1901":1,"1934":1,"1942":1,"1943":1,"1945":1,"1947":1,"1950":1,"1951":1,"1952":2,"1954":2,"1955":1,"1983":1,"2110":2,"2113":1,"2184":1,"2199":2,"2221":1,"2283":1,"2285":1,"2291":1,"2301":3,"2389":1,"2460":1,"2480":1,"2493":2,"2508":1,"2562":1,"2582":2,"2585":2,"2587":4,"2591":1,"2604":1,"2606":1,"2612":1,"2613":2,"2617":3,"2662":1,"2725":2,"2744":1}}],["support",{"0":{"14":1,"35":1,"80":1,"81":1,"100":1,"108":1,"118":1,"130":1,"149":1,"156":1,"163":1,"232":1,"533":1,"534":1,"1254":1,"1300":1,"1313":1,"1326":1,"1418":1,"1546":1,"1891":1,"2114":1,"2419":1,"2423":1,"2561":1,"2582":1,"2589":1,"2590":1,"2591":1,"2741":1,"2756":1},"1":{"36":1,"1301":1,"1892":1,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1898":1,"1899":1,"1900":1,"1901":1,"1902":1,"1903":1,"1904":1,"1905":1,"1906":1,"2757":1,"2758":1,"2759":1,"2760":1},"2":{"10":3,"35":1,"46":1,"49":4,"50":2,"63":5,"65":1,"74":3,"75":1,"76":1,"81":1,"86":2,"89":1,"93":12,"107":1,"108":1,"113":1,"114":15,"118":2,"120":1,"130":5,"131":1,"133":1,"134":14,"138":1,"139":1,"141":1,"145":7,"149":1,"156":1,"157":1,"160":9,"163":2,"167":1,"175":4,"176":18,"189":2,"190":1,"191":9,"199":10,"201":1,"210":3,"211":28,"213":1,"218":1,"222":5,"232":2,"234":1,"236":14,"248":2,"249":11,"262":1,"265":1,"266":4,"277":2,"320":2,"370":1,"374":1,"391":1,"403":1,"414":1,"415":1,"417":1,"423":1,"424":1,"432":1,"433":1,"470":1,"492":1,"495":1,"502":2,"505":1,"506":1,"515":2,"534":1,"535":1,"537":2,"606":1,"607":1,"608":1,"609":1,"642":1,"678":1,"683":2,"1121":1,"1168":1,"1232":1,"1249":1,"1251":1,"1277":1,"1301":1,"1302":1,"1313":1,"1315":1,"1356":1,"1358":1,"1360":1,"1361":1,"1363":1,"1367":1,"1384":1,"1389":1,"1414":2,"1420":1,"1421":1,"1436":1,"1448":1,"1491":1,"1492":2,"1528":3,"1530":1,"1531":1,"1587":1,"1600":2,"1669":1,"1766":1,"1837":1,"1849":1,"1859":2,"1870":1,"1925":1,"1952":1,"1986":2,"1987":2,"2101":1,"2102":1,"2140":2,"2151":1,"2166":1,"2167":7,"2170":1,"2183":1,"2191":1,"2192":1,"2210":1,"2221":3,"2267":1,"2276":1,"2291":1,"2297":1,"2301":2,"2316":1,"2323":2,"2325":1,"2326":1,"2327":1,"2328":1,"2329":1,"2330":1,"2343":1,"2364":1,"2374":1,"2416":2,"2423":1,"2456":1,"2457":1,"2480":1,"2513":3,"2536":1,"2545":3,"2552":1,"2561":2,"2562":1,"2570":1,"2574":1,"2585":10,"2587":1,"2588":3,"2589":1,"2592":2,"2604":1,"2605":1,"2606":2,"2612":2,"2615":12,"2652":1,"2656":1,"2713":1,"2740":2,"2743":1,"2745":2,"2753":1,"2757":1,"2758":1,"2792":1}}],["suppression",{"2":{"1715":1,"2777":1}}],["suppress",{"2":{"1708":3}}],["suppressed",{"2":{"1706":1,"1708":2,"1711":1,"1712":1,"1715":2,"1943":1}}],["supplements",{"2":{"572":1}}],["supplement",{"2":{"563":1}}],["supplying",{"2":{"598":1}}],["supply",{"2":{"123":1,"318":1,"370":1,"454":1,"457":1,"1262":1,"1508":1,"2553":1}}],["supplied",{"2":{"118":1,"157":1,"230":1,"304":1,"374":1,"393":2,"394":2,"416":1,"430":3,"1214":1,"1219":1,"1398":1,"2562":1,"2583":1,"2614":1,"2615":1,"2616":14,"2620":1}}],["sublime",{"2":{"2520":1}}],["subfolder",{"2":{"2297":1,"2333":1,"2792":1}}],["subchain",{"2":{"1488":1}}],["subcommands",{"0":{"430":1},"2":{"427":1,"429":1,"430":1,"442":1}}],["subcommand|general|default>",{"2":{"416":1}}],["subcommand",{"2":{"95":1,"114":1,"132":1,"134":1,"160":1,"380":1,"413":1,"428":3,"430":5,"432":1,"433":1,"435":1,"436":3,"441":1}}],["subreddit",{"0":{"2754":1},"2":{"551":1,"2319":1}}],["subprocess",{"2":{"484":1}}],["subjective",{"2":{"2606":1}}],["subject",{"2":{"317":1,"2520":1,"2616":1}}],["subdirectories",{"2":{"236":1,"2297":1}}],["subdirectory",{"2":{"145":1,"176":1}}],["subtracting",{"2":{"1960":1}}],["subtracted",{"2":{"465":1}}],["subtlety",{"2":{"194":1}}],["subtarget",{"2":{"49":1}}],["subs",{"2":{"1565":2}}],["subscripted",{"2":{"293":1}}],["substrings",{"2":{"1478":1}}],["substring",{"2":{"1478":1,"2792":1,"2793":1}}],["substraction",{"2":{"1363":1}}],["substituting",{"2":{"341":1}}],["substitutions",{"2":{"49":1}}],["substantially",{"2":{"109":1}}],["subsequent",{"2":{"341":1,"358":1,"1557":1,"2616":1,"2758":1}}],["subsequently",{"2":{"49":1,"265":1,"340":1,"2487":1,"2606":1,"2620":1}}],["subset",{"2":{"65":1,"671":1,"1860":1,"2359":1,"2788":1,"2792":1}}],["subsystem==",{"2":{"1291":1}}],["subsystems",{"0":{"2219":1},"1":{"2220":1},"2":{"77":2,"163":1,"198":1,"2152":1,"2216":1,"2219":1,"2582":1,"2587":2,"2759":1}}],["subsystem",{"0":{"234":1,"1131":1},"1":{"1132":1,"1133":1,"1134":1},"2":{"11":1,"107":1,"114":2,"138":1,"175":1,"244":1,"317":2,"515":1,"680":1,"1126":1,"1127":2,"1130":2,"1132":1,"1133":2,"1134":1,"1761":1,"1897":1,"1982":1}}],["sub",{"0":{"293":1,"2334":1},"2":{"6":1,"113":1,"114":1,"133":1,"134":1,"160":1,"499":1,"513":1,"1277":1,"2333":1,"2334":7,"2338":21,"2339":21,"2635":1}}],["submission",{"2":{"352":2,"353":1,"355":1,"356":1,"2605":1}}],["submissions",{"2":{"103":1,"126":1,"275":1,"341":1,"1413":1,"2604":1,"2605":1}}],["submits",{"2":{"519":1}}],["submit",{"2":{"303":1,"352":1,"354":2,"447":1,"554":1,"556":2,"559":2,"560":1,"2606":1,"2695":2}}],["submitters",{"2":{"2603":1,"2605":2}}],["submitter",{"2":{"341":1,"2603":1,"2606":1}}],["submitted",{"2":{"116":1,"522":1,"2602":1,"2603":1,"2604":1,"2605":2,"2758":1}}],["submitting",{"0":{"314":1},"2":{"1":1,"306":1,"315":1,"560":1,"622":1,"2303":2,"2605":1}}],["submodules=on",{"2":{"2516":2}}],["submodules",{"0":{"10":1,"360":1},"2":{"10":1,"26":1,"69":1,"266":1,"349":1,"360":1,"2291":2,"2303":2,"2476":1,"2516":2}}],["submodule",{"0":{"6":1,"12":1,"21":1},"2":{"6":1,"10":1,"12":1,"21":1,"24":1,"114":2,"134":1,"145":1,"176":4,"191":1,"199":4,"211":2,"222":1,"249":2,"266":1,"349":2,"2303":4}}],["soi8",{"2":{"2557":1}}],["socket",{"2":{"2155":1,"2314":1}}],["sockets",{"2":{"114":1,"2155":1}}],["sost",{"2":{"1831":1,"2410":1}}],["sostenuto",{"2":{"1831":2,"2410":2}}],["sodium62",{"2":{"249":1}}],["soda",{"2":{"176":1,"226":2,"236":2}}],["sonixflasher",{"2":{"2288":4}}],["sonixqmktoolbox",{"2":{"2288":1}}],["sonix",{"0":{"493":1},"2":{"1143":1,"1168":1,"1180":1,"2288":2}}],["sony",{"2":{"133":1,"134":1}}],["songs",{"0":{"1435":1},"2":{"683":1,"1435":2,"1436":1,"1437":1,"2646":2}}],["song",{"0":{"27":1},"2":{"27":1,"134":1,"572":1,"1369":1,"1435":23,"1436":16,"1485":4,"1587":4,"1724":12,"1756":4,"2112":1,"2218":10,"2646":4}}],["sofle",{"2":{"114":1,"134":1,"249":1}}],["soft",{"2":{"63":1,"112":2,"199":3,"277":4,"453":1,"455":1,"511":2,"592":3,"593":1,"594":1,"1123":1,"1124":1,"1136":1,"1616":4,"1831":3,"2157":1,"2166":2,"2263":1,"2410":3,"2580":1,"2647":1,"2736":1}}],["software",{"0":{"323":1,"691":1,"1431":1,"1500":1,"2380":1,"2390":1,"2651":1},"1":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"1432":1},"2":{"14":2,"215":1,"324":2,"627":1,"685":1,"691":2,"692":1,"1171":1,"1174":1,"1362":2,"1399":1,"1417":2,"1431":2,"1496":1,"1497":1,"1500":1,"1859":1,"1870":1,"1895":1,"2103":1,"2153":1,"2169":1,"2207":1,"2215":1,"2353":1,"2356":1,"2359":2,"2456":2,"2457":1,"2495":1,"2496":1,"2531":1,"2545":2,"2609":2,"2674":1,"2675":1,"2686":1,"2715":1,"2716":2,"2759":1,"2789":1}}],["sought",{"2":{"2590":1}}],["sourcing",{"2":{"2558":1}}],["sources",{"2":{"173":1,"606":1,"2221":1,"2603":1,"2605":2}}],["source",{"0":{"309":1},"2":{"5":1,"36":1,"67":1,"86":1,"102":1,"122":1,"130":1,"132":1,"144":1,"154":1,"168":1,"181":1,"197":1,"199":1,"234":1,"303":1,"304":2,"309":1,"312":1,"316":2,"322":1,"367":1,"380":1,"450":1,"522":2,"525":1,"527":2,"554":1,"564":1,"606":2,"638":1,"674":1,"675":1,"1316":3,"1414":4,"1483":1,"1771":1,"1858":4,"1864":1,"1935":1,"1947":1,"1949":1,"1995":1,"2098":2,"2182":1,"2221":1,"2273":1,"2280":1,"2282":1,"2300":11,"2316":1,"2339":1,"2361":1,"2362":1,"2367":1,"2439":1,"2446":1,"2457":1,"2467":1,"2474":2,"2477":1,"2479":2,"2507":1,"2531":1,"2542":1,"2563":1,"2564":1,"2565":1,"2603":2,"2605":3,"2617":1,"2686":1,"2751":3,"2792":2}}],["south",{"2":{"1904":1}}],["southpad",{"2":{"226":2,"236":1}}],["southpaw75",{"2":{"67":2,"72":1}}],["southpole",{"2":{"144":2}}],["sound",{"2":{"1430":1,"1435":3,"1436":14,"1443":3,"1485":2,"1544":1,"1724":2,"1756":3,"2112":2,"2530":1,"2646":3}}],["soundmonster",{"2":{"92":1}}],["sounds",{"2":{"74":1,"1423":1,"1435":2,"1443":3,"1548":1,"1611":1,"2146":1,"2218":1,"2646":2}}],["solus",{"2":{"2470":1,"2503":1}}],["solutions",{"2":{"1296":1}}],["solution",{"0":{"1715":1},"2":{"1262":1,"1285":1,"1453":1,"1475":1,"1478":1,"1545":1,"1562":1,"1608":1,"2103":1,"2587":1}}],["solve",{"2":{"1373":1,"2450":1,"2513":1}}],["solves",{"2":{"1311":1}}],["solved",{"2":{"613":1}}],["sold",{"2":{"624":1}}],["soldering",{"0":{"2311":1,"2312":1,"2313":1},"1":{"2312":1,"2313":1},"2":{"1529":1,"2099":1,"2305":2,"2309":1,"2311":3,"2312":3,"2313":1,"2315":2}}],["solder",{"2":{"207":2,"211":4,"253":1,"266":1,"2099":1,"2171":2,"2305":1,"2309":1,"2311":12,"2312":6,"2313":3,"2315":2,"2318":4,"2367":1}}],["solderd",{"2":{"176":1}}],["soldered",{"2":{"122":1,"197":1,"199":1,"211":4,"226":1,"241":2,"1627":1,"2309":1,"2312":3,"2318":1}}],["solanis",{"2":{"211":1}}],["solidifies",{"2":{"2312":1}}],["solid",{"0":{"1989":1},"2":{"176":1,"249":1,"266":2,"1369":1,"1766":28,"1768":1,"1987":32,"1989":2,"1998":2,"2074":2,"2078":1,"2312":1,"2727":1,"2734":1,"2750":10}}],["sol3",{"2":{"160":1,"176":1}}],["sol",{"2":{"114":1,"160":1,"176":1}}],["solomon",{"2":{"2309":1,"2320":1}}],["solo",{"2":{"107":1,"114":1}}],["solenoids",{"0":{"1611":1},"2":{"145":1,"1611":2}}],["solenoid",{"2":{"64":1,"114":1,"134":1,"191":1,"221":2,"236":1,"1608":2,"1610":3,"1611":28}}],["solheim68",{"2":{"57":2}}],["sorts",{"2":{"2361":1}}],["sorting",{"2":{"110":1,"211":1}}],["sort",{"2":{"49":1,"209":1,"211":1,"290":1,"592":1,"1315":1,"2155":1,"2312":1}}],["sooner",{"2":{"468":1,"2200":1}}],["soon",{"2":{"49":1,"315":1,"336":1,"505":1,"689":1,"1271":4,"1331":1,"1372":2,"1412":1,"1965":1,"2350":1}}],["somewhat",{"2":{"1310":1,"2219":1,"2303":1,"2562":1}}],["somewhere",{"2":{"350":1,"367":1,"373":1,"1399":1,"1967":1,"1981":1,"2513":1,"2767":1}}],["somebody",{"2":{"1297":1,"2549":3,"2753":1}}],["someone",{"2":{"479":1,"481":1,"551":1,"557":1,"613":1,"2348":1,"2457":1}}],["something",{"2":{"125":1,"148":2,"185":1,"315":1,"352":1,"433":1,"434":1,"529":1,"572":2,"587":1,"597":1,"626":1,"628":1,"1286":1,"1362":1,"1369":2,"1377":1,"1400":1,"1420":1,"1421":1,"1435":1,"1439":1,"1440":1,"1449":1,"1496":1,"1534":1,"1536":1,"1544":2,"1693":1,"1718":1,"1721":1,"1829":1,"1845":1,"1978":1,"1997":1,"2102":1,"2166":1,"2199":1,"2311":1,"2312":1,"2315":2,"2366":1,"2461":1,"2507":1,"2513":1,"2516":1,"2527":1,"2530":1,"2552":1,"2608":1,"2614":1,"2651":2,"2753":1}}],["sometimes",{"2":{"119":1,"415":1,"434":1,"457":1,"481":1,"538":1,"606":1,"626":2,"627":1,"685":1,"1287":1,"1306":1,"1362":1,"1363":1,"1376":1,"1377":1,"1396":1,"1495":1,"1689":1,"1722":1,"1960":1,"2303":1,"2318":1,"2366":1,"2440":1,"2445":1,"2512":1,"2529":1,"2588":1,"2653":1,"2758":1,"2785":1,"2796":1}}],["some",{"0":{"365":1,"1308":1,"2316":1},"2":{"2":1,"12":1,"25":1,"28":1,"50":1,"64":1,"95":1,"113":3,"114":6,"123":3,"124":1,"134":1,"138":1,"142":1,"143":3,"145":4,"160":4,"166":1,"174":2,"176":1,"182":2,"191":5,"196":1,"199":2,"209":1,"211":8,"215":1,"218":1,"222":2,"234":2,"235":1,"236":7,"246":1,"256":1,"266":3,"300":2,"306":1,"312":1,"331":1,"334":1,"335":1,"350":1,"352":3,"380":1,"428":1,"436":1,"441":1,"452":1,"453":1,"454":1,"455":2,"479":1,"481":1,"498":1,"499":1,"505":1,"512":1,"516":1,"538":1,"550":1,"551":1,"556":1,"559":1,"560":2,"578":1,"609":3,"624":1,"626":2,"628":1,"635":3,"674":1,"688":1,"689":1,"698":3,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1129":1,"1130":1,"1227":1,"1230":1,"1252":1,"1253":1,"1254":1,"1299":1,"1306":1,"1324":2,"1325":1,"1332":1,"1335":2,"1337":1,"1340":1,"1362":2,"1374":1,"1377":1,"1388":1,"1400":1,"1401":2,"1403":1,"1415":1,"1422":1,"1423":1,"1440":2,"1452":1,"1453":1,"1472":1,"1529":1,"1532":1,"1534":1,"1535":1,"1552":2,"1556":2,"1565":1,"1566":1,"1592":1,"1594":1,"1608":1,"1611":1,"1708":1,"1714":1,"1716":1,"1759":1,"1767":3,"1826":1,"1853":2,"1863":1,"1866":1,"1867":1,"1899":1,"1914":1,"1922":1,"1925":1,"1965":1,"1974":1,"1990":3,"1992":1,"1995":1,"2069":1,"2082":2,"2098":3,"2099":1,"2142":1,"2152":1,"2161":1,"2163":1,"2164":1,"2169":2,"2177":2,"2183":1,"2188":1,"2199":1,"2207":1,"2215":1,"2220":1,"2221":1,"2264":1,"2266":1,"2268":1,"2271":1,"2274":1,"2278":1,"2282":1,"2288":1,"2299":1,"2300":5,"2306":1,"2309":1,"2311":1,"2312":1,"2313":1,"2314":1,"2315":2,"2331":1,"2346":1,"2359":1,"2367":2,"2383":1,"2385":1,"2386":1,"2387":1,"2392":1,"2432":1,"2440":1,"2444":2,"2446":1,"2447":1,"2449":1,"2462":1,"2467":1,"2489":1,"2495":1,"2505":1,"2511":2,"2519":1,"2546":1,"2549":1,"2552":2,"2568":1,"2589":1,"2599":1,"2604":1,"2615":4,"2616":3,"2624":1,"2631":1,"2654":1,"2701":1,"2744":2,"2745":1,"2747":1,"2750":2,"2757":2,"2762":1,"2763":3,"2765":1,"2791":1,"2792":2,"2796":1}}],["so",{"2":{"0":1,"9":1,"13":2,"19":1,"39":1,"50":1,"52":1,"60":1,"73":1,"99":1,"112":1,"114":1,"118":1,"160":2,"163":2,"174":1,"176":1,"182":2,"191":1,"199":1,"231":1,"232":1,"245":1,"248":1,"273":1,"291":1,"324":1,"329":1,"337":2,"341":1,"350":1,"430":1,"435":1,"446":1,"454":2,"467":1,"481":1,"527":1,"530":1,"551":2,"554":1,"557":1,"560":1,"588":1,"602":1,"606":1,"616":1,"617":1,"625":1,"627":1,"641":1,"673":1,"680":1,"689":1,"702":1,"1132":1,"1133":1,"1137":1,"1214":1,"1232":1,"1273":1,"1274":1,"1287":1,"1302":1,"1307":2,"1309":1,"1310":1,"1315":2,"1321":1,"1324":1,"1327":1,"1337":1,"1340":2,"1341":1,"1369":2,"1373":1,"1375":1,"1381":1,"1383":1,"1390":1,"1392":1,"1396":2,"1397":1,"1420":2,"1422":2,"1433":1,"1440":1,"1442":1,"1443":1,"1475":2,"1476":2,"1479":1,"1488":1,"1501":1,"1508":1,"1530":1,"1532":2,"1534":1,"1565":1,"1568":1,"1591":1,"1595":1,"1600":1,"1605":1,"1614":1,"1632":1,"1668":1,"1715":1,"1761":1,"1829":2,"1832":1,"1845":2,"1847":1,"1859":1,"1868":1,"1912":1,"1914":1,"1916":1,"1918":1,"1950":1,"1951":1,"1954":2,"1955":2,"1958":1,"1960":1,"1962":1,"1982":1,"2079":1,"2082":1,"2089":1,"2111":1,"2140":1,"2151":1,"2168":1,"2171":1,"2184":1,"2185":1,"2187":1,"2191":1,"2199":1,"2206":1,"2207":2,"2209":1,"2219":1,"2293":1,"2300":1,"2302":2,"2307":1,"2312":2,"2318":1,"2321":1,"2346":1,"2348":2,"2350":3,"2358":1,"2366":1,"2380":1,"2392":1,"2443":1,"2449":1,"2450":1,"2464":1,"2468":1,"2484":1,"2496":1,"2505":1,"2515":1,"2527":1,"2530":1,"2534":1,"2535":1,"2547":1,"2551":1,"2552":2,"2555":1,"2564":1,"2568":1,"2572":1,"2596":1,"2605":3,"2606":1,"2608":1,"2615":2,"2616":2,"2644":1,"2646":2,"2647":1,"2649":1,"2655":1,"2658":1,"2693":1,"2740":1,"2741":1,"2743":1,"2744":2,"2750":1,"2767":2,"2777":1,"2779":1,"2780":1,"2785":1,"2789":1,"2792":1,"2793":1,"2796":2}}],["ndel",{"2":{"2654":1}}],["ndash",{"2":{"286":1,"1911":3,"2185":1}}],["n↓",{"2":{"2654":1}}],["n→",{"2":{"2654":1}}],["n←",{"2":{"2654":1}}],["n↑",{"2":{"2654":1}}],["nhome",{"2":{"2654":1}}],["nhd",{"2":{"2174":1}}],["nrf5",{"2":{"2588":1}}],["nrf51822",{"2":{"1528":1,"1529":1}}],["nrst",{"2":{"2283":2,"2285":2,"2392":1,"2552":1,"2555":1}}],["nb",{"2":{"2191":1}}],["n9",{"2":{"2191":1}}],["n8",{"2":{"2191":1}}],["n7",{"2":{"2191":1}}],["n3",{"2":{"1831":1,"2191":1,"2410":1}}],["n4",{"2":{"1831":1,"2191":1,"2410":1}}],["n40",{"2":{"222":1}}],["n5",{"2":{"1831":1,"2191":1,"2410":1}}],["n2",{"2":{"1831":2,"2191":1,"2410":2}}],["nter",{"2":{"1921":1}}],["ntil",{"2":{"1536":1}}],["nt660",{"2":{"57":2}}],["nfer",{"2":{"1317":1}}],["ns",{"2":{"1258":1}}],["n1",{"2":{"349":1,"1831":2,"2191":1,"2410":2}}],["nucleo64",{"2":{"2605":1}}],["nucleo",{"2":{"2605":1}}],["nuanced",{"2":{"1840":1}}],["nubs",{"2":{"313":1,"530":2,"2394":1,"2427":1,"2446":1}}],["nuhs",{"2":{"313":1,"530":2,"2394":1,"2427":1,"2446":1}}],["nullbitsco",{"2":{"277":1}}],["null",{"2":{"222":1,"249":1,"272":2,"315":1,"598":3,"1488":1,"1632":1,"1706":1,"1708":2,"1927":1,"2206":1,"2207":1,"2208":1,"2209":1,"2616":4}}],["nue",{"2":{"211":1}}],["numlock",{"2":{"1271":2}}],["numerous",{"2":{"188":1,"2152":1}}],["numerically",{"2":{"1377":1}}],["numerical",{"2":{"1377":1,"2740":1}}],["numeric",{"0":{"1457":1,"1464":1,"1625":1},"2":{"181":2,"532":1,"1453":1,"1457":1,"1460":2,"1625":1,"2210":1}}],["numpad",{"2":{"134":1,"154":2,"211":1,"236":1,"2221":1,"2234":1,"2430":1,"2653":5,"2654":5,"2784":1,"2785":2}}],["num",{"2":{"70":1,"188":1,"191":2,"199":1,"201":3,"222":2,"247":2,"249":2,"370":3,"371":2,"511":1,"641":1,"1313":1,"1366":1,"1367":1,"1586":2,"1597":2,"1623":1,"1752":1,"1753":2,"1755":1,"1851":2,"1997":1,"2076":1,"2086":1,"2088":1,"2167":1,"2175":2,"2191":12,"2195":1,"2394":5,"2428":5,"2613":2,"2615":13,"2616":2,"2626":1,"2654":3,"2655":2,"2724":2,"2783":1,"2786":1,"2787":1}}],["numbered",{"2":{"282":1,"639":1,"1375":2,"1376":1}}],["numbers",{"0":{"2425":1},"2":{"166":1,"465":2,"570":1,"1390":1,"1829":1,"2074":1,"2160":1,"2266":1,"2333":1,"2354":1,"2444":1,"2513":1,"2572":3,"2610":1,"2699":1}}],["number",{"0":{"532":1,"1269":1,"2129":1,"2131":1,"2133":1,"2135":1,"2433":1},"1":{"1270":1,"2130":1,"2132":1,"2134":1,"2136":1},"2":{"95":1,"114":2,"119":1,"134":1,"163":1,"166":2,"169":1,"174":3,"183":1,"199":1,"201":2,"211":1,"215":1,"233":1,"236":1,"324":1,"363":1,"364":1,"370":2,"396":1,"411":1,"463":1,"464":2,"465":4,"502":4,"506":4,"516":1,"554":1,"560":1,"570":2,"589":1,"597":1,"598":1,"601":1,"606":1,"612":1,"641":1,"674":1,"675":1,"677":1,"678":1,"679":3,"680":3,"681":3,"688":4,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"731":1,"757":1,"786":1,"818":1,"831":1,"850":1,"866":1,"885":1,"900":1,"919":1,"934":1,"953":1,"968":1,"987":1,"1002":1,"1021":1,"1036":1,"1055":1,"1070":1,"1089":1,"1104":1,"1132":1,"1133":1,"1145":1,"1157":1,"1171":3,"1182":1,"1194":1,"1218":1,"1226":1,"1229":1,"1244":1,"1246":1,"1251":1,"1270":1,"1302":1,"1368":1,"1375":1,"1378":2,"1384":1,"1390":1,"1398":1,"1415":1,"1421":1,"1430":1,"1484":1,"1488":2,"1489":1,"1494":1,"1503":1,"1568":1,"1592":1,"1594":1,"1616":1,"1617":2,"1629":2,"1642":2,"1693":1,"1714":1,"1763":4,"1768":3,"1832":1,"1841":1,"1842":3,"1845":1,"1853":1,"1855":1,"1858":4,"1860":2,"1865":1,"1934":1,"1948":2,"1984":4,"1988":2,"1992":3,"2070":3,"2073":3,"2074":4,"2076":5,"2082":1,"2098":1,"2130":1,"2132":1,"2134":1,"2136":1,"2158":1,"2166":4,"2169":4,"2177":1,"2180":1,"2181":2,"2183":1,"2188":1,"2190":2,"2191":12,"2195":1,"2199":1,"2207":1,"2208":1,"2252":1,"2300":2,"2305":1,"2307":3,"2308":2,"2323":1,"2358":1,"2456":1,"2513":5,"2514":1,"2529":1,"2547":1,"2549":1,"2553":1,"2554":2,"2563":1,"2572":3,"2578":1,"2592":1,"2595":1,"2613":3,"2614":2,"2615":11,"2616":5,"2626":1,"2632":1,"2634":1,"2636":1,"2639":1,"2644":1,"2646":1,"2650":1,"2661":1,"2679":1,"2687":1,"2692":1,"2699":1,"2716":1,"2722":2,"2723":1,"2727":4,"2730":1,"2733":5,"2734":6,"2738":3,"2743":1,"2747":1,"2751":1,"2758":1,"2796":2}}],["numbering",{"2":{"50":1,"635":1}}],["numbrero",{"2":{"43":2}}],["nvram",{"2":{"191":1}}],["nvm",{"2":{"131":1,"134":1}}],["nqg",{"2":{"181":2,"191":1}}],["nc",{"2":{"2191":1}}],["ncr80",{"2":{"277":1}}],["ncc1701kb",{"2":{"249":1}}],["nced",{"2":{"176":1}}],["nckiibs",{"2":{"86":8}}],["nnbs",{"2":{"176":1}}],["nkeys",{"2":{"1568":1}}],["nk",{"2":{"211":1,"235":1,"2082":3,"2183":1,"2409":3,"2435":3}}],["nknl7jp",{"2":{"154":2}}],["nknl7en",{"2":{"154":2}}],["nk87b",{"2":{"211":1}}],["nk87",{"2":{"154":2,"211":1}}],["nk65",{"2":{"154":2}}],["nk1",{"2":{"154":2}}],["nkro",{"0":{"235":1,"1325":1,"2692":1},"2":{"50":1,"70":1,"111":1,"112":1,"191":1,"199":2,"211":1,"235":2,"236":3,"277":1,"502":1,"504":3,"515":2,"516":2,"1325":4,"1335":1,"1530":2,"1568":2,"2082":1,"2183":6,"2301":8,"2409":3,"2435":3,"2605":1,"2687":1,"2698":1,"2738":2,"2744":1}}],["nibble",{"0":{"2135":1},"1":{"2136":1}}],["nins",{"2":{"2654":1}}],["nine",{"2":{"1457":1}}],["ninja",{"2":{"191":1,"241":2}}],["nit",{"2":{"455":1}}],["nitty",{"0":{"2448":1},"2":{"302":1}}],["nickname",{"2":{"2526":1}}],["nicinabox",{"2":{"2172":1}}],["nicities",{"2":{"436":1}}],["nicer",{"2":{"2604":1}}],["nicest",{"2":{"2198":1}}],["nice",{"2":{"431":1,"433":1,"1299":1,"2069":1,"2172":1,"2547":1}}],["nightly",{"2":{"211":1,"222":1}}],["niu",{"2":{"154":2,"160":1}}],["nixpkgs",{"2":{"249":1}}],["nix",{"2":{"113":1,"114":1,"176":1,"211":1,"249":1}}],["npgdn",{"2":{"2654":1}}],["npgup",{"2":{"2654":1}}],["npkc",{"2":{"2078":1}}],["npn",{"2":{"1169":2,"1495":1}}],["npm",{"2":{"324":1}}],["npminila",{"2":{"154":2}}],["npspears",{"2":{"160":1}}],["np21",{"2":{"154":2,"160":2}}],["nphhkb",{"2":{"154":2}}],["np64",{"2":{"154":2}}],["n6",{"2":{"114":1,"1831":1,"2191":1,"2410":1}}],["nxp",{"0":{"491":1},"2":{"108":1,"2281":1,"2661":1}}],["nyquist",{"2":{"45":1}}],["na",{"2":{"2191":1}}],["nav",{"0":{"1624":1},"2":{"1563":5,"1565":2,"1624":1}}],["navigate",{"2":{"2317":1,"2386":1,"2491":1,"2587":1}}],["navigation",{"2":{"1910":2,"2441":1,"2531":1,"2542":1}}],["navigating",{"2":{"558":1,"2294":1}}],["navi10",{"2":{"144":2}}],["nack",{"2":{"211":1}}],["nacly",{"2":{"154":2,"160":2,"249":1}}],["nanoseconds",{"2":{"1251":3,"1261":2}}],["nano",{"2":{"191":1,"495":1}}],["naked64",{"2":{"154":2}}],["naked60",{"2":{"154":2}}],["naked48",{"2":{"154":2}}],["naiping",{"2":{"154":6}}],["nafuda",{"2":{"154":2}}],["naming",{"0":{"221":1,"233":1,"460":1,"2333":1},"1":{"461":1},"2":{"134":1,"141":1,"167":1,"182":2,"221":1,"222":6,"224":1,"233":2,"236":9,"238":1,"243":1,"244":1,"249":1,"266":1,"557":1,"570":1,"1330":1,"1363":7,"2219":1,"2491":1,"2592":1,"2603":1,"2604":1}}],["name|description|",{"2":{"621":1}}],["name|short",{"2":{"621":1}}],["named",{"2":{"271":1,"314":1,"389":1,"390":1,"391":1,"430":1,"485":1,"534":1,"1309":1,"1383":2,"1413":2,"1414":1,"1851":1,"2175":1,"2316":1,"2341":2,"2472":1,"2515":1,"2527":1,"2653":1,"2654":1,"2663":1,"2696":1,"2697":1,"2785":1,"2796":1}}],["namely",{"2":{"202":1,"1422":1,"2273":1}}],["namecard2x4",{"2":{"154":2}}],["name>",{"2":{"55":2,"370":6,"371":2,"1417":1,"1422":1,"2461":1,"2491":2}}],["name",{"0":{"57":1,"285":1,"539":1,"2340":1,"2341":1},"2":{"37":2,"43":2,"55":1,"56":2,"57":2,"58":2,"67":2,"70":1,"86":3,"102":2,"111":1,"114":2,"122":2,"134":1,"144":2,"154":2,"160":2,"167":1,"168":2,"169":1,"181":2,"182":2,"184":1,"188":1,"191":1,"197":2,"199":3,"207":2,"217":2,"226":2,"231":1,"236":1,"241":2,"253":2,"266":3,"270":2,"277":1,"279":1,"341":1,"370":1,"374":2,"385":1,"400":3,"405":1,"413":1,"425":2,"426":4,"430":12,"433":1,"436":2,"437":1,"457":1,"460":9,"461":1,"470":2,"502":1,"529":1,"532":1,"539":1,"554":3,"559":2,"609":1,"627":1,"628":3,"629":5,"1273":1,"1337":1,"1366":2,"1384":2,"1389":1,"1413":7,"1414":5,"1415":4,"1416":4,"1417":2,"1418":1,"1420":2,"1421":1,"1422":3,"1434":1,"1473":3,"1555":4,"1565":1,"1609":1,"1616":4,"1617":2,"1766":1,"1767":1,"1927":1,"1933":1,"1987":1,"1990":1,"2212":1,"2213":1,"2221":6,"2291":1,"2300":1,"2318":1,"2325":2,"2333":1,"2335":4,"2338":1,"2341":2,"2342":1,"2348":7,"2357":1,"2386":1,"2390":1,"2444":2,"2460":2,"2461":1,"2475":1,"2476":7,"2477":1,"2484":3,"2493":1,"2513":1,"2526":5,"2527":3,"2540":4,"2552":4,"2592":3,"2595":4,"2598":1,"2605":1,"2609":2,"2646":1,"2654":6,"2710":1,"2711":1,"2712":1,"2725":2,"2792":1,"2796":2}}],["names",{"0":{"461":1,"1306":1},"2":{"36":1,"37":1,"43":1,"92":1,"114":1,"142":1,"182":2,"188":3,"191":3,"222":2,"241":2,"253":2,"270":2,"277":1,"375":1,"448":1,"457":1,"460":2,"461":2,"532":1,"641":1,"1132":1,"1133":1,"1306":2,"1383":1,"1388":2,"1536":1,"2210":1,"2219":2,"2300":2,"2333":3,"2341":1,"2444":2,"2596":1,"2605":3,"2653":1,"2725":2}}],["narrow",{"2":{"119":1,"176":1,"1925":1}}],["nat",{"2":{"2789":1}}],["nature",{"2":{"606":1,"1134":1,"1974":1}}],["naturally",{"2":{"1715":1,"2187":1,"2777":1}}],["natural",{"2":{"119":1,"1442":1,"2766":1}}],["natively",{"2":{"1859":1,"2569":1}}],["native",{"2":{"38":1,"49":1,"248":1,"249":1,"487":1,"529":1,"2501":1,"2613":2,"2614":2,"2615":12,"2616":3,"2793":1}}],["n",{"0":{"2692":1},"2":{"14":1,"196":1,"236":1,"266":2,"313":1,"375":2,"376":2,"396":2,"401":1,"430":1,"462":1,"515":1,"530":2,"556":1,"758":2,"787":2,"819":2,"851":2,"852":2,"886":2,"920":2,"954":2,"988":2,"1022":2,"1023":2,"1056":2,"1057":2,"1090":2,"1132":1,"1133":1,"1142":1,"1146":2,"1183":2,"1234":6,"1289":1,"1292":1,"1325":1,"1363":1,"1396":2,"1485":1,"1495":1,"1508":1,"1530":1,"1568":2,"1631":1,"1643":1,"1718":1,"1724":1,"1760":3,"1764":2,"1851":4,"1858":2,"1910":1,"1912":1,"1985":2,"2113":1,"2116":1,"2144":6,"2168":2,"2175":4,"2183":1,"2188":1,"2190":4,"2218":5,"2220":1,"2385":1,"2394":9,"2409":3,"2425":3,"2435":3,"2446":1,"2614":4,"2628":3,"2634":3,"2636":4,"2638":3}}],["neo2",{"2":{"2742":2}}],["neopad",{"2":{"241":2}}],["nend",{"2":{"2654":1}}],["neat",{"2":{"2309":1,"2746":1}}],["near",{"2":{"1412":1,"1435":1,"1766":2,"1945":1,"1987":2,"2313":1,"2653":1}}],["nearest",{"2":{"1218":1,"2191":1}}],["nearly",{"2":{"496":1,"606":1,"2394":1,"2527":1,"2573":1}}],["nearfield",{"2":{"211":1}}],["neighbour",{"2":{"2311":1}}],["neighboring",{"2":{"1988":1}}],["neither",{"2":{"430":1,"435":1,"626":1,"1448":1,"2165":1,"2282":1,"2642":1,"2649":1}}],["negated",{"2":{"2626":1,"2632":1,"2633":1}}],["negatively",{"2":{"2167":1,"2758":1}}],["negative",{"0":{"1699":1,"1700":1},"2":{"584":1,"685":1,"691":1,"726":1,"1428":1,"1429":1,"1432":1,"1436":1,"1699":1,"1706":1,"1708":2,"1709":2,"1711":2,"1712":1,"1918":1}}],["neg",{"2":{"2626":2,"2627":1,"2628":1,"2632":1,"2633":2,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1}}],["negmods",{"0":{"1699":1,"1700":1},"2":{"1697":1,"1703":5}}],["nexus",{"2":{"1766":3,"1987":3,"2750":1}}],["nexecstart=",{"2":{"1276":2}}],["next",{"0":{"339":1,"350":1,"543":1},"1":{"340":1},"2":{"23":1,"103":1,"104":1,"133":1,"134":1,"141":1,"203":1,"230":1,"236":1,"265":1,"276":1,"331":2,"339":1,"341":1,"346":1,"347":2,"350":1,"453":1,"587":1,"588":1,"616":1,"686":2,"687":2,"688":3,"690":2,"1132":2,"1133":2,"1249":1,"1258":1,"1340":1,"1372":1,"1381":4,"1439":2,"1440":2,"1445":4,"1489":2,"1531":2,"1537":1,"1543":1,"1555":1,"1557":1,"1565":1,"1597":1,"1605":1,"1610":3,"1629":1,"1643":1,"1689":1,"1691":1,"1703":3,"1765":2,"1781":1,"1783":1,"1789":1,"1790":1,"1853":1,"1860":4,"1910":2,"1925":1,"1969":1,"2008":1,"2010":1,"2016":1,"2017":1,"2069":1,"2072":2,"2090":2,"2122":1,"2126":1,"2164":1,"2177":1,"2181":4,"2194":1,"2199":1,"2207":1,"2221":2,"2222":2,"2228":1,"2264":1,"2307":1,"2312":1,"2313":1,"2352":1,"2392":1,"2394":4,"2396":4,"2400":2,"2405":1,"2408":2,"2415":2,"2422":1,"2423":2,"2432":4,"2434":1,"2447":1,"2475":1,"2529":1,"2540":1,"2552":2,"2564":1,"2587":1,"2596":1,"2598":1,"2741":1}}],["networks",{"2":{"1528":1}}],["net",{"2":{"358":1,"1326":1,"1327":1}}],["necessarily",{"2":{"2572":1,"2604":1}}],["necessary",{"0":{"2538":1},"2":{"218":1,"234":1,"313":1,"322":1,"323":1,"324":1,"331":2,"334":1,"335":1,"377":1,"401":1,"515":1,"584":1,"627":1,"690":1,"707":1,"726":1,"1142":1,"1252":1,"1302":1,"1467":1,"1591":1,"1598":1,"1708":2,"1709":1,"1711":5,"1891":1,"1924":1,"2163":1,"2180":1,"2186":1,"2281":1,"2301":1,"2311":1,"2339":1,"2367":1,"2387":1,"2470":1,"2490":1,"2497":1,"2500":1,"2535":1,"2581":1,"2605":3,"2710":1,"2767":1}}],["necessitating",{"2":{"352":1}}],["never",{"0":{"2525":1},"1":{"2526":1,"2527":1,"2528":1},"2":{"229":1,"432":1,"434":1,"460":1,"554":1,"568":1,"593":1,"594":1,"1541":1,"1591":1,"1709":1,"1974":1,"2457":1,"2511":1,"2512":1,"2514":1,"2525":1,"2607":2,"2782":1}}],["neutralized",{"2":{"1715":1,"2777":1}}],["neutralizer",{"2":{"1715":4,"2777":4}}],["neutralize",{"2":{"222":1,"1715":6,"2777":6}}],["nebula68",{"2":{"154":2}}],["nebula68b",{"2":{"154":2,"253":2,"266":1}}],["nebula12b",{"2":{"211":1}}],["nebula12",{"2":{"154":2}}],["nest",{"2":{"2334":1}}],["nesting",{"2":{"1591":1,"1592":1,"2208":1}}],["nested",{"0":{"296":1,"297":1,"2771":1},"2":{"134":1,"282":4,"296":1,"297":1,"299":2,"611":1,"1592":1,"2725":1,"2774":3}}],["neson",{"2":{"114":1}}],["nerdtkl",{"2":{"18":1}}],["nerd60",{"2":{"18":1}}],["nerdd",{"2":{"18":1}}],["nerd",{"0":{"18":1},"2":{"18":3}}],["needle",{"2":{"2305":1,"2312":1}}],["needlessly",{"2":{"1978":1}}],["needless",{"2":{"222":2,"2650":1}}],["needing",{"2":{"125":1,"164":1,"185":1,"228":1,"1689":1,"2184":1,"2318":1}}],["needs",{"0":{"1326":1},"2":{"46":1,"349":1,"352":1,"354":1,"371":1,"399":1,"401":1,"580":1,"597":1,"598":1,"636":1,"671":1,"674":1,"679":1,"680":1,"681":1,"686":1,"687":1,"693":1,"1271":1,"1372":1,"1420":1,"1435":1,"1485":1,"1555":3,"1575":1,"1676":1,"1946":1,"1977":1,"1981":1,"2161":1,"2185":1,"2187":1,"2195":1,"2219":1,"2301":2,"2325":1,"2337":1,"2350":1,"2366":2,"2393":1,"2527":1,"2551":1,"2552":2,"2560":1,"2562":1,"2590":1,"2591":1,"2605":1,"2614":1,"2616":2,"2653":1,"2654":1,"2710":1,"2722":1,"2788":1}}],["needed",{"2":{"21":1,"45":1,"113":1,"134":1,"143":1,"179":1,"196":1,"329":1,"358":1,"453":1,"455":1,"506":2,"580":1,"607":1,"683":1,"1123":1,"1126":2,"1129":1,"1271":1,"1291":1,"1356":2,"1400":1,"1413":1,"1446":1,"1484":1,"1528":1,"1534":1,"1548":1,"1611":1,"1706":1,"1892":1,"1918":1,"1952":1,"1978":1,"1979":1,"1988":1,"2152":1,"2168":1,"2188":1,"2192":1,"2199":2,"2209":1,"2288":1,"2343":1,"2470":1,"2500":1,"2503":1,"2516":1,"2527":1,"2542":1,"2545":2,"2548":1,"2592":1,"2603":1,"2659":2,"2744":1,"2781":1,"2792":1}}],["need",{"0":{"1446":1,"2322":1,"2364":1},"1":{"1447":1,"1448":1,"1449":1,"1450":1,"1451":1,"1452":1,"1453":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1465":1,"1466":1,"1467":1,"1468":1,"1469":1,"1470":1,"1471":1,"1472":1,"1473":1},"2":{"5":1,"7":1,"14":1,"22":1,"31":1,"45":1,"49":1,"50":1,"89":1,"90":1,"107":1,"118":1,"124":1,"143":2,"164":1,"194":1,"199":1,"218":1,"220":1,"222":1,"232":1,"240":1,"241":1,"253":1,"255":1,"256":1,"259":1,"270":1,"272":2,"282":3,"326":1,"331":1,"341":2,"349":1,"352":1,"357":1,"358":1,"364":1,"374":1,"401":1,"434":1,"437":1,"440":1,"450":2,"462":1,"466":2,"471":1,"472":1,"478":1,"482":1,"505":2,"530":1,"532":1,"553":1,"557":1,"560":1,"575":1,"578":1,"580":1,"585":1,"586":1,"606":1,"607":2,"613":1,"614":2,"626":1,"628":1,"630":1,"643":1,"655":1,"658":1,"677":1,"679":2,"689":1,"690":1,"700":1,"701":1,"703":2,"730":1,"733":1,"756":1,"759":1,"785":1,"790":1,"791":1,"817":1,"821":1,"849":1,"855":1,"856":1,"884":1,"889":1,"890":1,"918":1,"923":1,"924":1,"952":1,"957":1,"958":1,"986":1,"991":1,"992":1,"1020":1,"1025":1,"1026":1,"1054":1,"1059":1,"1060":1,"1088":1,"1093":1,"1094":1,"1136":1,"1144":1,"1147":1,"1170":1,"1174":1,"1181":1,"1184":1,"1212":1,"1213":1,"1214":2,"1233":1,"1235":2,"1250":1,"1253":1,"1263":1,"1264":1,"1267":1,"1273":1,"1275":1,"1276":1,"1278":1,"1279":1,"1291":1,"1295":2,"1301":1,"1307":1,"1313":1,"1324":1,"1325":1,"1328":1,"1339":1,"1349":1,"1369":1,"1373":1,"1376":1,"1389":2,"1392":1,"1400":1,"1414":1,"1420":1,"1422":2,"1460":1,"1472":2,"1476":3,"1477":1,"1487":1,"1488":1,"1494":1,"1496":1,"1506":2,"1507":1,"1532":1,"1533":1,"1534":2,"1537":1,"1545":2,"1546":1,"1549":1,"1555":2,"1558":1,"1565":1,"1572":1,"1586":1,"1596":1,"1597":1,"1611":1,"1689":1,"1695":2,"1706":2,"1708":2,"1709":1,"1722":1,"1753":1,"1829":3,"1850":1,"1853":1,"1859":1,"1891":1,"1896":1,"1899":1,"1912":1,"1922":1,"1925":1,"1926":1,"1934":2,"1950":2,"1978":1,"1988":1,"2070":1,"2080":2,"2085":1,"2089":1,"2099":1,"2101":2,"2102":1,"2111":1,"2155":2,"2157":1,"2158":1,"2159":1,"2164":2,"2166":2,"2168":1,"2169":1,"2171":4,"2172":1,"2175":1,"2177":1,"2183":1,"2188":1,"2190":1,"2199":1,"2206":1,"2207":4,"2208":1,"2209":2,"2219":1,"2221":2,"2276":1,"2278":1,"2280":1,"2282":1,"2288":1,"2294":1,"2299":1,"2300":3,"2301":3,"2303":1,"2305":1,"2311":1,"2312":2,"2316":1,"2318":2,"2336":1,"2338":2,"2359":1,"2366":2,"2367":2,"2368":1,"2372":1,"2381":1,"2390":1,"2444":1,"2450":1,"2463":1,"2464":1,"2468":2,"2471":1,"2472":1,"2481":2,"2485":1,"2493":1,"2495":1,"2496":3,"2498":1,"2499":1,"2501":1,"2503":1,"2514":1,"2516":2,"2527":2,"2529":2,"2531":1,"2534":1,"2535":1,"2536":1,"2538":1,"2542":1,"2546":1,"2547":1,"2549":1,"2552":3,"2569":1,"2592":1,"2603":3,"2604":1,"2607":1,"2612":2,"2614":1,"2616":3,"2617":1,"2653":1,"2701":1,"2710":1,"2741":1,"2743":2,"2744":2,"2750":1,"2753":1,"2757":1,"2761":1,"2767":5,"2780":2,"2788":1,"2796":2}}],["newhaven",{"2":{"2174":1}}],["newbs",{"2":{"624":2,"1295":1,"2481":1,"2517":1,"2543":1,"2607":2}}],["newline",{"2":{"1292":1,"1398":2,"1643":1}}],["newlines",{"2":{"282":1,"454":1,"2446":1}}],["newlib",{"2":{"191":1}}],["newly",{"2":{"188":1,"191":1,"266":1,"275":1,"1422":1,"2200":1,"2317":1,"2487":1,"2547":1,"2552":1,"2603":1,"2606":1}}],["newest",{"2":{"163":1,"173":1,"346":1,"349":1,"350":1}}],["newer",{"2":{"10":2,"49":1,"123":1,"133":1,"142":1,"160":1,"236":3,"1910":1,"2268":1,"2743":1}}],["news",{"2":{"133":1,"134":1}}],["new",{"0":{"82":1,"112":1,"130":1,"156":1,"157":1,"385":1,"386":1,"570":1,"1716":1,"2461":1,"2589":1,"2590":1,"2591":1,"2792":1},"1":{"158":1,"159":1,"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1722":1,"1723":1,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1},"2":{"1":1,"22":1,"24":1,"25":1,"36":1,"37":2,"38":1,"43":2,"46":1,"49":1,"56":2,"57":1,"58":1,"67":1,"70":4,"82":1,"86":1,"93":1,"99":2,"102":1,"103":1,"112":2,"113":2,"114":3,"118":3,"122":1,"123":1,"125":1,"126":1,"130":1,"132":1,"133":1,"134":4,"137":1,"138":2,"141":2,"143":1,"144":1,"145":1,"154":1,"160":7,"164":1,"167":1,"168":1,"173":2,"176":2,"181":1,"182":5,"183":3,"185":1,"186":1,"191":1,"194":1,"197":1,"199":3,"202":1,"203":1,"207":1,"211":1,"213":1,"217":1,"218":1,"219":1,"221":6,"224":1,"226":1,"228":3,"229":1,"230":2,"234":1,"236":3,"240":1,"241":1,"243":2,"244":1,"249":2,"253":1,"254":1,"265":1,"266":3,"270":1,"271":1,"273":1,"277":1,"291":2,"303":1,"340":2,"341":2,"343":1,"350":2,"352":1,"360":1,"373":1,"384":1,"385":2,"386":2,"389":1,"390":1,"391":3,"426":2,"427":1,"436":1,"481":1,"483":1,"515":2,"554":2,"559":1,"560":2,"564":2,"569":1,"571":1,"592":1,"607":2,"609":2,"613":2,"614":3,"621":1,"622":1,"624":1,"626":1,"627":1,"628":1,"1291":1,"1297":1,"1302":1,"1309":1,"1369":2,"1381":1,"1383":1,"1396":1,"1422":5,"1450":1,"1471":1,"1472":1,"1485":1,"1501":1,"1565":1,"1763":1,"1767":2,"1774":1,"1776":1,"1778":1,"1787":1,"1790":1,"1792":1,"1796":1,"1798":1,"1802":1,"1804":1,"1806":1,"1807":1,"1808":1,"1846":2,"1853":1,"1854":1,"1860":2,"1861":1,"1951":1,"1954":2,"1956":1,"1965":1,"1984":1,"1990":2,"2001":1,"2003":1,"2005":1,"2014":1,"2017":1,"2019":1,"2023":1,"2025":1,"2029":1,"2031":1,"2035":1,"2037":1,"2041":1,"2043":1,"2045":1,"2046":1,"2047":1,"2052":1,"2150":1,"2177":1,"2181":2,"2185":2,"2188":1,"2193":1,"2200":1,"2231":1,"2233":1,"2272":1,"2283":1,"2285":1,"2287":1,"2289":1,"2301":1,"2303":1,"2312":1,"2316":2,"2343":1,"2344":1,"2384":1,"2386":1,"2388":2,"2460":1,"2461":4,"2465":1,"2480":1,"2484":4,"2487":1,"2498":1,"2499":1,"2516":1,"2517":1,"2518":1,"2525":2,"2527":5,"2540":1,"2547":1,"2569":1,"2585":1,"2589":1,"2590":1,"2591":1,"2592":5,"2603":2,"2605":3,"2606":6,"2654":1,"2695":1,"2749":2,"2767":3,"2789":1,"2792":2}}],["nomenclature",{"0":{"2572":1}}],["nomu30",{"2":{"154":2}}],["nose",{"2":{"2305":1,"2312":1}}],["nose2",{"2":{"442":1,"446":2}}],["nos",{"2":{"1440":1,"2318":1}}],["nobody",{"2":{"454":1}}],["nodes",{"2":{"526":1,"1488":5}}],["node",{"2":{"324":1,"402":1,"403":1,"523":1,"526":1,"1475":1,"1488":23,"1489":8,"1925":2}}],["nop",{"2":{"249":1}}],["nopq",{"2":{"249":1}}],["noop",{"2":{"2394":1,"2434":1,"2444":1}}],["noodlepad",{"2":{"249":1}}],["noon",{"2":{"211":1}}],["noxary",{"2":{"211":2}}],["noevent",{"2":{"199":1}}],["noeeprom",{"0":{"1774":1,"1776":1,"1778":1,"1787":1,"1790":1,"1792":1,"1796":1,"1798":1,"1802":1,"1804":1,"1807":1,"2001":1,"2003":1,"2005":1,"2014":1,"2017":1,"2019":1,"2023":1,"2025":1,"2029":1,"2031":1,"2035":1,"2037":1,"2041":1,"2043":1,"2046":1,"2052":1},"1":{"1788":1,"1808":1,"2015":1,"2047":1,"2053":1},"2":{"49":2,"191":1,"582":3,"1369":14,"1998":2,"2090":3,"2091":3,"2092":7,"2093":3,"2096":1}}],["noci",{"2":{"160":1,"191":1}}],["noconfirm",{"2":{"143":1,"2470":1,"2500":1,"2503":1}}],["norwegian",{"2":{"1392":1,"2742":3}}],["north",{"2":{"1305":1,"1904":1}}],["noroadsleft",{"2":{"266":1}}],["norm",{"2":{"191":1,"247":1,"466":1,"1435":4,"1436":6,"1586":1,"2409":6,"2435":6}}],["norman",{"2":{"176":1,"1392":1,"2742":3}}],["normalized",{"2":{"1571":1}}],["normalise",{"2":{"188":9,"191":10,"199":1,"266":1,"277":1}}],["normal",{"2":{"128":1,"137":1,"139":1,"224":1,"278":1,"288":1,"435":1,"511":1,"571":1,"679":1,"682":2,"1280":2,"1308":1,"1337":2,"1366":1,"1369":2,"1375":1,"1396":1,"1397":2,"1448":3,"1453":1,"1468":1,"1472":1,"1485":1,"1553":1,"1586":1,"1597":2,"1711":1,"1712":1,"1713":1,"1714":1,"1904":1,"2146":1,"2156":1,"2164":1,"2166":1,"2167":1,"2168":1,"2264":1,"2300":1,"2453":3,"2480":1,"2484":1,"2516":1,"2529":1,"2552":2,"2565":1,"2582":1,"2605":1,"2612":1,"2615":1,"2616":2,"2759":1,"2779":1,"2791":1}}],["normally",{"2":{"99":1,"164":1,"436":1,"437":1,"510":1,"572":1,"623":1,"1369":1,"1381":1,"1397":1,"1464":1,"1557":1,"1708":2,"1918":1,"1919":1,"2083":1,"2097":1,"2163":1,"2208":1,"2406":1,"2536":1,"2774":1,"2775":1,"2788":1}}],["nor",{"2":{"174":1,"435":1,"578":1,"671":1,"678":1,"680":2,"693":1,"694":2,"1485":1,"2278":1,"2288":1,"2585":1,"2608":1}}],["nordic",{"2":{"5":1,"1529":2}}],["novices",{"2":{"2511":1}}],["novice",{"2":{"2344":1}}],["novelpad",{"2":{"154":2}}],["novelkeys",{"2":{"154":4,"160":1,"211":2}}],["november",{"0":{"115":1,"177":1,"223":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1},"2":{"339":1}}],["nov",{"0":{"52":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1},"2":{"55":1,"88":1,"104":1,"127":1,"170":1,"340":5,"351":4}}],["nonus",{"2":{"2394":2,"2427":2}}],["nonactuated",{"2":{"1611":2}}],["nonex",{"2":{"2339":1}}],["none",{"2":{"266":1,"325":1,"335":1,"414":2,"415":2,"417":1,"423":2,"424":2,"425":3,"426":5,"428":1,"475":1,"629":2,"674":1,"675":1,"694":1,"789":2,"850":4,"852":1,"854":2,"888":2,"922":2,"956":2,"990":2,"1021":4,"1023":1,"1024":2,"1055":4,"1057":1,"1058":2,"1092":2,"1121":1,"1214":1,"1278":1,"1472":1,"1501":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1764":1,"1766":1,"1768":5,"1927":2,"1969":1,"1974":7,"1975":3,"1985":1,"1987":1,"1992":7,"2074":4,"2188":1,"2207":3,"2208":1,"2209":3,"2339":1,"2563":1,"2592":1,"2612":1}}],["non",{"0":{"2346":1,"2588":1,"2658":1},"2":{"28":1,"49":1,"51":1,"70":1,"94":1,"133":1,"134":2,"145":2,"176":2,"199":1,"213":1,"222":1,"249":1,"455":1,"522":1,"682":1,"688":1,"1248":1,"1369":1,"1378":2,"1389":1,"1392":1,"1467":1,"1477":1,"1478":1,"1596":1,"1611":2,"1622":2,"1708":2,"1711":1,"1712":2,"1714":2,"1914":2,"1965":1,"1966":1,"1969":1,"1975":1,"1980":1,"2160":1,"2167":1,"2186":1,"2187":1,"2207":1,"2209":1,"2221":1,"2274":1,"2318":1,"2319":1,"2344":1,"2394":3,"2427":2,"2434":1,"2442":2,"2582":1,"2588":2,"2602":1,"2603":1,"2605":1,"2639":1,"2656":1,"2751":1}}],["noise",{"2":{"17":1,"1362":4,"1363":6,"1366":2,"1906":1,"2269":1,"2276":1}}],["now",{"0":{"90":1,"105":1,"148":1,"273":1},"2":{"10":3,"11":2,"16":1,"18":2,"25":1,"45":1,"49":5,"50":2,"58":1,"69":2,"70":2,"73":1,"74":1,"76":1,"80":1,"83":1,"94":1,"98":1,"99":2,"103":1,"104":1,"105":1,"107":1,"114":1,"118":2,"119":1,"120":2,"124":2,"125":1,"126":2,"127":1,"130":1,"131":1,"134":1,"138":1,"148":1,"149":1,"152":1,"157":1,"172":1,"173":1,"174":1,"182":2,"185":1,"194":1,"195":1,"196":1,"201":3,"206":2,"209":1,"211":1,"214":1,"224":1,"234":2,"235":1,"245":1,"246":1,"248":1,"262":2,"263":1,"273":1,"275":2,"327":1,"330":1,"331":3,"341":1,"343":1,"344":1,"345":1,"346":2,"349":4,"401":1,"414":2,"453":1,"480":1,"481":1,"530":1,"606":1,"690":1,"1271":1,"1321":4,"1335":1,"1369":3,"1398":1,"1422":1,"1473":4,"1535":1,"1547":1,"1558":1,"1603":2,"1689":1,"1713":1,"1721":1,"1722":1,"2080":1,"2081":1,"2140":1,"2146":1,"2150":1,"2151":1,"2168":1,"2188":1,"2192":1,"2200":1,"2205":1,"2207":1,"2209":1,"2303":2,"2314":1,"2350":2,"2382":1,"2386":1,"2392":1,"2444":1,"2459":1,"2460":1,"2480":2,"2485":1,"2488":1,"2508":1,"2509":1,"2513":2,"2514":1,"2515":1,"2516":3,"2526":3,"2527":1,"2540":1,"2541":1,"2547":1,"2551":1,"2562":1,"2592":1,"2606":2,"2750":1,"2767":1}}],["no",{"0":{"152":1,"533":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1462":1,"1559":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"2780":1},"2":{"2":2,"5":1,"6":1,"48":1,"50":1,"74":1,"88":2,"92":1,"103":2,"104":2,"112":1,"114":1,"118":1,"124":1,"126":1,"127":2,"130":1,"134":1,"139":1,"152":1,"160":3,"176":1,"189":1,"191":1,"196":1,"199":2,"201":1,"211":2,"213":1,"218":1,"224":1,"231":1,"233":1,"240":1,"245":1,"249":1,"255":1,"262":1,"265":1,"266":4,"268":1,"273":3,"276":1,"286":1,"340":1,"347":1,"349":1,"350":1,"360":1,"375":1,"380":1,"396":1,"400":1,"416":2,"481":1,"503":5,"505":2,"511":1,"515":1,"516":1,"530":1,"537":1,"548":1,"554":1,"556":3,"559":1,"580":2,"616":1,"625":1,"627":1,"675":1,"677":1,"692":1,"702":1,"703":1,"852":1,"1023":1,"1057":1,"1142":1,"1174":2,"1213":1,"1214":3,"1234":1,"1242":1,"1279":1,"1280":1,"1320":1,"1331":1,"1339":1,"1351":1,"1363":1,"1366":7,"1368":1,"1374":1,"1381":1,"1412":1,"1413":1,"1431":1,"1440":1,"1441":1,"1446":1,"1448":3,"1450":1,"1452":2,"1453":1,"1460":5,"1467":1,"1468":1,"1472":2,"1478":4,"1483":2,"1484":1,"1530":1,"1533":6,"1538":1,"1541":1,"1548":1,"1552":1,"1559":1,"1561":2,"1563":1,"1565":2,"1571":1,"1591":1,"1592":2,"1594":1,"1598":1,"1600":1,"1601":2,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1671":1,"1703":5,"1706":3,"1708":5,"1709":2,"1712":2,"1713":1,"1715":3,"1722":1,"1724":1,"1732":1,"1735":1,"1763":10,"1764":1,"1766":1,"1831":1,"1843":2,"1844":1,"1849":4,"1870":2,"1910":1,"1911":1,"1927":1,"1940":1,"1984":10,"1985":1,"1986":1,"1987":1,"1996":1,"2072":1,"2082":2,"2089":1,"2101":2,"2111":1,"2149":1,"2150":3,"2151":1,"2166":2,"2169":2,"2188":3,"2200":1,"2206":1,"2207":1,"2215":1,"2273":1,"2300":1,"2301":5,"2302":1,"2309":4,"2317":1,"2334":1,"2340":1,"2342":1,"2344":1,"2350":3,"2362":1,"2388":1,"2394":1,"2410":1,"2415":1,"2424":1,"2434":1,"2444":2,"2447":1,"2453":1,"2454":2,"2489":1,"2495":1,"2515":1,"2531":1,"2535":1,"2542":1,"2548":1,"2552":1,"2563":1,"2597":3,"2603":1,"2604":1,"2605":15,"2612":1,"2614":8,"2616":3,"2626":1,"2632":1,"2635":5,"2653":8,"2713":1,"2725":1,"2727":1,"2728":1,"2734":1,"2738":1,"2741":2,"2744":7,"2745":2,"2746":2,"2747":1,"2767":1,"2777":3,"2780":1,"2782":1,"2784":1,"2785":5}}],["noto11",{"2":{"2614":4,"2616":3}}],["notosans",{"2":{"2614":1}}],["notset",{"2":{"433":1}}],["nothing",{"0":{"1280":1},"2":{"373":1,"607":1,"675":1,"1321":3,"1381":2,"1568":1,"1713":1,"1911":1,"1979":1,"2151":1,"2300":1,"2564":1,"2565":1,"2762":1,"2767":1,"2777":2}}],["noting",{"2":{"1548":1,"2199":1}}],["notion",{"2":{"1484":1}}],["notification",{"2":{"290":1,"300":1}}],["noticeably",{"2":{"1859":1}}],["noticeable",{"2":{"513":1,"2774":1}}],["noticed",{"2":{"1601":1,"1859":1}}],["notices",{"0":{"264":1,"274":1},"1":{"265":1,"275":1,"276":1},"2":{"264":1,"274":1}}],["notice",{"0":{"2759":1},"2":{"263":1,"264":1,"274":1,"276":1,"349":1,"1397":2,"1398":1,"2759":1,"2779":1,"2785":2,"2786":1}}],["notably",{"2":{"143":1,"1302":1}}],["notable",{"0":{"79":1,"97":1,"106":1,"117":1,"129":1,"136":1,"147":1,"155":1,"162":1,"171":1,"178":1,"187":1,"198":1,"201":1,"208":1,"213":1,"224":1,"227":1,"238":1,"242":1,"251":1,"261":1,"268":1},"1":{"80":1,"81":1,"82":1,"83":1,"84":1,"98":1,"99":1,"100":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"118":1,"119":1,"120":1,"130":1,"131":1,"132":1,"133":1,"137":1,"138":1,"139":1,"148":1,"149":1,"156":1,"157":1,"158":1,"159":1,"163":1,"164":1,"172":1,"173":1,"174":1,"175":1,"179":1,"188":1,"189":1,"190":1,"202":1,"203":1,"204":1,"209":1,"210":1,"214":1,"215":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"262":1,"263":1},"2":{"224":1,"625":1,"1427":1}}],["notation",{"0":{"111":1},"2":{"111":1,"611":1,"2350":1}}],["noted",{"2":{"103":1,"126":1,"276":1,"1422":1,"1987":1,"2466":1}}],["note",{"0":{"27":1,"2310":1},"2":{"27":1,"132":1,"199":1,"201":1,"213":1,"222":5,"241":1,"253":1,"270":1,"272":1,"273":1,"334":1,"335":1,"361":1,"371":1,"373":1,"380":1,"429":1,"479":1,"506":1,"534":2,"556":1,"597":1,"628":1,"629":1,"635":2,"639":2,"686":1,"698":1,"820":1,"1121":1,"1126":1,"1129":1,"1172":1,"1256":1,"1275":1,"1276":1,"1324":1,"1330":1,"1372":2,"1388":1,"1390":1,"1398":1,"1413":1,"1421":1,"1427":1,"1431":1,"1437":1,"1438":1,"1443":3,"1453":1,"1464":1,"1468":1,"1472":1,"1501":1,"1504":1,"1528":1,"1540":1,"1594":1,"1670":1,"1713":1,"1714":1,"1715":1,"1763":1,"1767":1,"1825":3,"1831":72,"1832":1,"1860":2,"1863":1,"1893":1,"1900":1,"1934":1,"1950":1,"1952":1,"1967":1,"1975":1,"1978":2,"1980":1,"1984":1,"1988":1,"1990":1,"2074":1,"2079":1,"2080":3,"2082":1,"2089":1,"2112":1,"2157":1,"2158":1,"2163":1,"2184":1,"2191":1,"2193":1,"2209":2,"2210":1,"2213":1,"2221":1,"2291":2,"2300":2,"2301":1,"2309":1,"2314":2,"2315":1,"2318":1,"2369":1,"2371":1,"2373":1,"2380":1,"2382":1,"2385":1,"2386":1,"2390":1,"2410":72,"2442":2,"2444":1,"2446":1,"2447":1,"2466":1,"2476":1,"2499":1,"2502":1,"2505":1,"2506":1,"2507":1,"2531":1,"2538":1,"2551":1,"2572":1,"2588":1,"2603":1,"2604":1,"2611":1,"2613":1,"2616":1,"2741":1,"2744":1,"2762":1,"2767":2,"2768":1,"2769":1,"2777":1,"2791":2,"2792":3,"2793":1}}],["notes",{"0":{"689":1,"692":1,"2607":1},"2":{"10":1,"215":1,"347":1,"683":1,"689":1,"1171":1,"1351":1,"1353":1,"1354":1,"1426":1,"1435":2,"1440":1,"1441":1,"1443":1,"1627":1,"1831":2,"1849":1,"1974":1,"1977":1,"2153":1,"2174":1,"2410":2,"2569":1,"2746":1}}],["not",{"0":{"545":1,"1277":1,"1308":1},"2":{"0":1,"5":1,"9":1,"14":1,"19":1,"23":3,"25":1,"28":1,"31":1,"34":1,"39":1,"49":1,"50":1,"52":1,"73":1,"90":1,"92":2,"114":2,"125":1,"134":3,"138":2,"139":1,"145":2,"160":1,"166":1,"176":1,"182":1,"185":1,"194":1,"198":1,"199":4,"201":2,"209":1,"211":1,"214":1,"221":1,"222":1,"232":1,"236":2,"240":2,"241":1,"249":2,"251":1,"253":1,"266":2,"268":1,"270":1,"273":1,"276":1,"277":2,"282":6,"285":2,"302":1,"307":1,"318":1,"334":2,"337":1,"341":3,"352":1,"357":1,"366":1,"374":1,"380":3,"385":2,"405":1,"430":1,"433":1,"435":1,"436":1,"437":1,"440":2,"441":1,"446":2,"452":1,"453":6,"455":3,"457":1,"459":1,"460":2,"465":2,"466":1,"467":1,"469":1,"471":1,"472":1,"473":1,"474":2,"476":1,"479":1,"480":1,"481":1,"483":1,"485":1,"486":1,"487":1,"496":1,"497":1,"502":1,"505":3,"509":1,"510":2,"513":1,"515":1,"516":1,"523":1,"529":1,"533":1,"537":2,"538":1,"540":1,"541":1,"545":2,"551":1,"552":1,"554":1,"555":1,"556":5,"559":2,"560":2,"567":1,"574":1,"580":2,"584":1,"588":2,"592":1,"594":1,"597":1,"598":2,"600":1,"609":2,"613":2,"623":1,"625":1,"626":2,"627":1,"628":1,"629":1,"633":2,"635":2,"644":2,"647":1,"656":3,"665":1,"673":1,"674":1,"678":1,"679":4,"680":1,"683":3,"688":1,"692":3,"697":1,"698":1,"702":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":2,"731":1,"741":1,"745":1,"749":1,"751":1,"757":5,"768":1,"772":1,"776":1,"778":1,"786":5,"800":1,"804":1,"808":1,"810":1,"818":6,"832":1,"836":1,"840":1,"842":1,"850":5,"867":1,"871":1,"875":1,"877":1,"885":5,"901":1,"905":1,"909":1,"911":1,"919":5,"935":1,"939":1,"943":1,"945":1,"953":5,"969":1,"973":1,"977":1,"979":1,"987":5,"1003":1,"1007":1,"1011":1,"1013":1,"1021":5,"1037":1,"1041":1,"1045":1,"1047":1,"1055":5,"1071":1,"1075":1,"1079":1,"1081":1,"1089":5,"1105":1,"1109":1,"1113":1,"1115":1,"1122":1,"1128":1,"1132":2,"1133":3,"1134":1,"1145":5,"1158":1,"1162":1,"1169":1,"1171":2,"1182":5,"1195":1,"1199":1,"1203":1,"1205":1,"1213":1,"1214":2,"1226":1,"1229":1,"1232":1,"1244":1,"1246":1,"1251":3,"1258":1,"1260":1,"1262":1,"1263":2,"1266":1,"1267":3,"1275":2,"1276":2,"1291":1,"1297":1,"1305":1,"1307":2,"1308":1,"1315":1,"1317":1,"1320":2,"1321":2,"1324":2,"1330":1,"1335":1,"1337":1,"1339":1,"1340":1,"1349":1,"1353":2,"1354":2,"1356":2,"1362":4,"1363":2,"1368":1,"1372":3,"1375":1,"1377":2,"1381":1,"1388":1,"1394":1,"1396":2,"1398":3,"1414":1,"1417":1,"1421":1,"1422":2,"1435":1,"1436":8,"1441":1,"1448":1,"1449":6,"1451":1,"1453":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1460":1,"1467":2,"1468":3,"1469":1,"1483":1,"1484":1,"1485":1,"1488":1,"1492":1,"1494":4,"1500":1,"1506":2,"1508":2,"1528":2,"1530":1,"1533":1,"1536":4,"1538":1,"1548":1,"1552":1,"1558":1,"1560":1,"1563":4,"1569":1,"1572":1,"1589":1,"1592":3,"1596":1,"1598":2,"1605":1,"1608":4,"1610":1,"1611":6,"1617":1,"1620":1,"1627":1,"1629":5,"1632":1,"1669":1,"1671":1,"1692":2,"1697":1,"1699":1,"1703":2,"1704":1,"1706":1,"1708":5,"1709":2,"1711":2,"1712":1,"1713":2,"1714":1,"1715":3,"1722":1,"1753":6,"1754":1,"1763":2,"1767":1,"1774":1,"1776":1,"1778":1,"1787":1,"1790":1,"1792":1,"1796":1,"1798":1,"1802":1,"1804":1,"1807":1,"1825":1,"1826":1,"1829":1,"1832":1,"1840":1,"1841":1,"1843":2,"1845":1,"1846":1,"1855":2,"1857":3,"1858":9,"1859":4,"1860":7,"1862":1,"1863":1,"1865":1,"1866":2,"1868":1,"1891":1,"1893":1,"1900":1,"1901":1,"1911":1,"1912":2,"1916":1,"1925":1,"1937":6,"1939":4,"1941":3,"1943":3,"1944":1,"1945":1,"1946":3,"1950":1,"1952":14,"1953":8,"1956":4,"1960":2,"1965":1,"1967":2,"1969":1,"1980":1,"1984":2,"1986":5,"1990":1,"1992":2,"1998":1,"2001":1,"2003":1,"2005":1,"2014":1,"2017":1,"2019":1,"2023":1,"2025":1,"2029":1,"2031":1,"2035":1,"2037":1,"2041":1,"2043":1,"2046":1,"2052":1,"2070":1,"2072":1,"2073":3,"2074":1,"2075":12,"2076":1,"2079":1,"2083":1,"2089":9,"2090":3,"2091":3,"2092":7,"2093":3,"2101":1,"2103":2,"2110":1,"2112":1,"2150":1,"2151":2,"2152":2,"2156":2,"2161":1,"2163":1,"2164":2,"2166":2,"2169":2,"2170":2,"2179":3,"2181":4,"2184":3,"2190":4,"2191":2,"2199":2,"2200":4,"2207":12,"2208":1,"2209":1,"2210":1,"2213":1,"2215":1,"2219":2,"2221":5,"2222":1,"2258":1,"2264":3,"2266":1,"2269":1,"2276":1,"2278":1,"2280":1,"2281":1,"2291":1,"2293":1,"2294":1,"2297":2,"2298":1,"2300":2,"2301":3,"2302":1,"2307":2,"2309":1,"2311":2,"2312":2,"2313":2,"2315":1,"2316":1,"2318":3,"2333":2,"2334":1,"2338":1,"2344":1,"2348":1,"2350":1,"2354":1,"2355":1,"2358":2,"2359":1,"2366":2,"2367":1,"2369":1,"2371":1,"2373":1,"2374":1,"2381":1,"2382":1,"2383":1,"2384":1,"2385":1,"2386":2,"2387":3,"2389":1,"2390":2,"2392":1,"2394":1,"2395":1,"2416":2,"2423":1,"2432":1,"2436":2,"2446":1,"2447":2,"2449":1,"2450":1,"2456":1,"2461":1,"2462":2,"2464":1,"2466":3,"2468":1,"2470":1,"2471":1,"2472":1,"2475":1,"2489":3,"2490":1,"2493":5,"2494":2,"2496":1,"2498":1,"2499":1,"2501":1,"2502":1,"2503":1,"2505":2,"2507":1,"2512":1,"2513":1,"2514":1,"2516":2,"2520":1,"2526":1,"2527":1,"2529":1,"2537":2,"2538":1,"2540":1,"2545":1,"2552":1,"2553":1,"2555":3,"2556":1,"2558":2,"2563":2,"2564":1,"2565":1,"2568":1,"2569":2,"2571":1,"2572":1,"2581":1,"2582":1,"2583":1,"2585":3,"2587":1,"2588":2,"2592":1,"2595":2,"2603":8,"2604":2,"2605":17,"2606":3,"2608":2,"2609":1,"2611":1,"2612":1,"2613":1,"2614":1,"2615":1,"2616":8,"2626":1,"2628":1,"2635":1,"2640":1,"2642":1,"2644":1,"2650":1,"2654":2,"2655":1,"2656":2,"2659":1,"2664":1,"2706":1,"2710":1,"2712":2,"2725":4,"2726":1,"2738":1,"2740":1,"2741":2,"2742":2,"2744":4,"2745":1,"2746":1,"2747":1,"2748":2,"2749":1,"2757":1,"2758":3,"2765":1,"2767":2,"2768":2,"2773":2,"2774":4,"2775":2,"2777":3,"2779":1,"2781":1,"2785":1,"2791":1,"2795":2,"2796":1}}],["y1",{"2":{"2616":1}}],["y0",{"2":{"2616":1}}],["y+",{"2":{"1940":1}}],["yyyy",{"2":{"349":2,"358":3,"359":3,"360":2,"361":2}}],["yyyyqn",{"2":{"341":1}}],["yynmt",{"2":{"154":2,"160":2}}],["yz",{"2":{"266":1}}],["y",{"0":{"1583":1,"2642":1,"2644":1},"1":{"1584":1,"2643":1,"2645":1},"2":{"249":1,"313":1,"376":2,"530":2,"1378":4,"1571":2,"1575":2,"1583":1,"1584":2,"1670":1,"1671":1,"1672":2,"1693":1,"1763":7,"1768":2,"1840":1,"1860":2,"1900":1,"1903":2,"1911":5,"1937":2,"1939":3,"1940":2,"1943":2,"1944":4,"1950":4,"1952":5,"1953":5,"1956":3,"1959":2,"1960":3,"1962":2,"1963":2,"1980":1,"1984":7,"1992":2,"2181":2,"2356":2,"2394":3,"2425":3,"2446":1,"2470":4,"2503":4,"2507":4,"2598":16,"2615":3,"2616":14,"2642":3,"2644":3,"2654":19,"2659":1,"2725":3,"2727":2,"2734":2}}],["ymlname",{"2":{"2476":1}}],["yml",{"2":{"2474":1,"2476":2,"2477":1,"2478":1,"2479":1}}],["ym68",{"2":{"211":1}}],["ymd96",{"2":{"154":2,"160":1}}],["ymd75",{"2":{"154":2,"160":1,"222":1}}],["ymdk",{"2":{"144":1,"145":1,"154":5,"160":5,"211":5,"222":1,"226":2,"236":1}}],["yttyx",{"2":{"211":1}}],["yum",{"2":{"2470":1,"2503":1}}],["yugo",{"2":{"207":2,"211":1}}],["yurei",{"2":{"154":2}}],["yosino58",{"2":{"176":1}}],["youtube",{"2":{"2078":2}}],["yourgithub",{"2":{"2609":2}}],["yours",{"0":{"2363":1},"2":{"613":1}}],["yourself",{"2":{"336":1,"356":1,"454":1,"483":1,"1330":1,"1374":1,"1565":1,"1689":1,"2099":1,"2188":1,"2385":1,"2443":1,"2456":1}}],["yourkeyboard",{"2":{"201":1}}],["yourkeymap",{"2":{"132":1}}],["yourkb",{"2":{"132":1}}],["your",{"0":{"354":1,"355":1,"450":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"567":1,"1287":1,"1367":1,"1392":1,"1603":1,"1837":1,"2318":1,"2333":1,"2459":1,"2460":1,"2462":1,"2463":1,"2464":1,"2465":1,"2479":1,"2488":1,"2489":1,"2490":1,"2492":1,"2493":1,"2495":1,"2497":1,"2508":1,"2509":1,"2513":1,"2515":1,"2516":1,"2525":1,"2526":1,"2528":1,"2541":1,"2592":1,"2640":1,"2652":1},"1":{"568":1,"1838":1,"1839":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2489":1,"2490":1,"2491":2,"2492":2,"2493":1,"2494":1,"2496":1,"2497":1,"2498":2,"2499":2,"2500":2,"2501":2,"2502":2,"2503":2,"2504":2,"2505":2,"2506":2,"2507":1,"2508":1,"2526":1,"2527":1,"2528":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2600":1,"2601":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1},"2":{"1":1,"14":1,"18":4,"23":1,"25":1,"31":1,"34":1,"36":1,"37":1,"43":1,"45":2,"49":3,"82":1,"87":1,"89":1,"90":1,"107":2,"110":3,"116":1,"119":4,"120":1,"124":3,"132":1,"196":1,"201":1,"202":2,"218":1,"228":1,"233":2,"235":1,"240":1,"241":2,"253":2,"255":2,"256":1,"257":1,"258":1,"259":2,"270":2,"272":2,"273":3,"276":1,"282":3,"291":1,"302":1,"312":1,"314":2,"315":1,"316":1,"319":1,"320":1,"322":1,"324":1,"327":2,"331":3,"334":1,"335":2,"336":2,"341":4,"352":2,"353":1,"354":2,"355":2,"356":2,"358":1,"365":1,"366":2,"367":2,"373":1,"375":1,"376":4,"380":1,"389":1,"390":1,"391":1,"397":1,"399":1,"401":3,"404":1,"417":1,"430":2,"431":1,"432":3,"435":2,"436":1,"446":5,"447":1,"450":1,"453":2,"454":1,"456":1,"460":1,"462":1,"466":2,"478":1,"481":3,"482":1,"502":7,"504":1,"508":1,"515":2,"534":3,"535":3,"536":1,"537":3,"538":1,"540":4,"541":3,"548":1,"550":1,"551":2,"554":9,"556":3,"557":1,"558":1,"559":3,"560":11,"563":1,"564":2,"565":2,"566":2,"567":2,"568":1,"570":4,"573":1,"584":3,"587":1,"588":2,"589":1,"601":1,"607":2,"609":2,"612":1,"613":3,"614":4,"616":2,"617":1,"621":3,"623":2,"624":1,"625":1,"626":3,"627":3,"629":1,"631":2,"638":1,"639":1,"641":4,"643":2,"644":1,"655":1,"656":1,"657":1,"659":1,"671":1,"674":2,"675":1,"678":1,"679":2,"680":1,"681":1,"682":1,"689":2,"690":1,"694":1,"700":2,"701":2,"702":1,"703":3,"707":1,"726":1,"730":1,"731":1,"734":1,"756":1,"757":1,"758":1,"760":1,"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"792":1,"817":1,"818":1,"819":1,"820":1,"822":1,"849":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"857":1,"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"891":1,"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"925":1,"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"959":1,"986":1,"987":1,"988":1,"989":1,"990":1,"991":1,"993":1,"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1027":1,"1054":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1061":1,"1088":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1095":1,"1124":2,"1127":4,"1129":1,"1130":4,"1132":5,"1133":6,"1135":1,"1137":1,"1138":1,"1142":1,"1144":1,"1145":1,"1146":1,"1148":1,"1170":2,"1171":1,"1181":1,"1182":1,"1183":1,"1185":1,"1212":2,"1213":1,"1214":3,"1233":2,"1234":1,"1235":2,"1250":2,"1251":1,"1252":1,"1253":2,"1254":1,"1260":1,"1262":1,"1264":2,"1265":1,"1267":1,"1271":1,"1272":1,"1273":2,"1275":2,"1277":3,"1280":2,"1282":4,"1283":1,"1284":1,"1285":1,"1287":2,"1289":1,"1290":1,"1291":2,"1292":1,"1301":1,"1306":1,"1307":2,"1308":1,"1313":2,"1318":1,"1323":2,"1324":3,"1327":1,"1329":1,"1331":1,"1349":2,"1350":1,"1351":1,"1353":1,"1357":1,"1363":2,"1367":2,"1368":3,"1369":2,"1372":3,"1373":2,"1374":1,"1375":4,"1376":2,"1377":3,"1381":1,"1389":1,"1390":1,"1392":2,"1393":2,"1398":1,"1399":2,"1401":1,"1413":3,"1414":5,"1415":2,"1416":1,"1417":4,"1418":1,"1420":9,"1421":6,"1422":7,"1423":2,"1430":4,"1435":5,"1438":3,"1440":6,"1441":3,"1442":4,"1443":1,"1447":1,"1448":1,"1450":2,"1451":1,"1452":1,"1453":3,"1468":1,"1470":1,"1471":3,"1472":5,"1473":1,"1474":1,"1476":1,"1477":1,"1483":1,"1492":1,"1494":2,"1495":1,"1496":1,"1501":1,"1506":2,"1530":1,"1532":2,"1533":1,"1534":2,"1535":1,"1537":3,"1544":1,"1545":2,"1546":1,"1548":2,"1549":1,"1550":1,"1555":1,"1556":1,"1560":1,"1561":1,"1562":1,"1565":4,"1566":2,"1568":1,"1570":1,"1585":2,"1586":3,"1587":1,"1591":3,"1592":1,"1593":2,"1595":4,"1596":1,"1597":4,"1598":2,"1600":1,"1602":1,"1606":1,"1613":1,"1614":2,"1615":2,"1628":1,"1629":1,"1631":1,"1643":1,"1668":1,"1669":2,"1670":1,"1671":2,"1690":2,"1692":1,"1693":3,"1695":2,"1696":1,"1706":1,"1711":1,"1713":1,"1715":2,"1717":2,"1718":1,"1720":1,"1721":2,"1722":13,"1723":1,"1753":2,"1758":1,"1762":1,"1763":3,"1766":1,"1767":3,"1825":1,"1827":1,"1828":1,"1829":1,"1836":1,"1837":1,"1838":1,"1839":1,"1840":1,"1841":2,"1842":1,"1843":1,"1844":4,"1845":4,"1850":2,"1851":3,"1858":1,"1863":1,"1865":1,"1866":1,"1868":4,"1871":1,"1891":1,"1893":1,"1894":1,"1895":1,"1896":1,"1899":1,"1901":1,"1906":1,"1908":2,"1912":1,"1914":1,"1921":1,"1923":1,"1924":1,"1925":5,"1926":1,"1933":1,"1935":1,"1936":1,"1937":1,"1938":1,"1942":1,"1947":1,"1948":1,"1949":1,"1950":2,"1951":1,"1953":1,"1956":1,"1964":1,"1967":1,"1983":1,"1984":3,"1986":1,"1987":2,"1988":1,"1990":2,"2069":2,"2070":6,"2072":1,"2073":2,"2074":1,"2079":2,"2082":1,"2083":1,"2084":1,"2085":1,"2097":1,"2099":2,"2100":1,"2101":3,"2106":1,"2111":1,"2112":1,"2114":1,"2116":1,"2140":1,"2141":2,"2147":2,"2149":1,"2150":2,"2159":1,"2160":1,"2162":1,"2163":4,"2164":1,"2165":2,"2166":1,"2167":1,"2169":1,"2175":5,"2183":3,"2184":2,"2185":1,"2186":1,"2187":5,"2188":7,"2190":1,"2191":1,"2192":2,"2195":1,"2198":1,"2199":3,"2200":1,"2202":4,"2207":6,"2208":4,"2209":5,"2210":1,"2212":2,"2214":2,"2216":1,"2217":1,"2218":2,"2219":6,"2220":5,"2221":4,"2263":1,"2266":1,"2267":2,"2268":1,"2269":1,"2271":1,"2273":1,"2274":1,"2275":2,"2276":2,"2278":1,"2280":1,"2282":1,"2283":1,"2285":1,"2287":1,"2288":1,"2289":2,"2298":3,"2300":1,"2301":17,"2302":4,"2303":13,"2305":1,"2307":3,"2309":3,"2311":3,"2312":4,"2313":2,"2314":2,"2316":5,"2317":3,"2318":3,"2331":1,"2332":2,"2335":2,"2337":1,"2338":2,"2339":2,"2340":3,"2341":6,"2343":3,"2344":4,"2345":4,"2347":1,"2348":7,"2351":1,"2353":1,"2356":1,"2357":1,"2363":1,"2365":1,"2378":1,"2381":1,"2386":1,"2390":2,"2392":1,"2397":1,"2435":2,"2445":1,"2448":1,"2449":1,"2450":1,"2456":7,"2457":2,"2459":5,"2460":4,"2461":4,"2462":5,"2464":3,"2465":2,"2467":3,"2468":2,"2470":1,"2471":1,"2472":1,"2474":1,"2475":4,"2476":1,"2477":2,"2478":2,"2479":2,"2480":4,"2481":1,"2482":5,"2484":4,"2485":5,"2486":2,"2487":4,"2488":1,"2489":10,"2490":2,"2491":4,"2493":6,"2494":4,"2495":1,"2496":1,"2497":1,"2499":1,"2502":1,"2507":4,"2508":2,"2509":2,"2511":3,"2512":3,"2513":5,"2514":5,"2515":3,"2516":14,"2525":4,"2526":8,"2527":10,"2528":3,"2529":2,"2530":2,"2536":2,"2537":2,"2541":1,"2547":2,"2549":1,"2551":1,"2552":5,"2554":1,"2562":2,"2563":2,"2564":2,"2565":2,"2572":2,"2578":1,"2579":1,"2580":3,"2581":1,"2583":1,"2585":1,"2587":1,"2591":1,"2592":10,"2593":3,"2594":1,"2595":2,"2596":3,"2603":8,"2605":3,"2606":2,"2607":10,"2608":2,"2609":3,"2610":3,"2611":1,"2612":1,"2613":1,"2615":11,"2616":6,"2617":1,"2618":1,"2620":1,"2622":1,"2623":3,"2646":3,"2647":1,"2649":1,"2666":1,"2670":1,"2674":1,"2678":1,"2686":1,"2689":1,"2691":2,"2708":2,"2709":1,"2710":3,"2740":3,"2741":2,"2743":1,"2744":3,"2745":3,"2746":2,"2747":1,"2748":2,"2750":3,"2751":1,"2755":1,"2761":1,"2762":2,"2764":1,"2766":3,"2767":9,"2774":2,"2775":2,"2776":3,"2777":5,"2779":2,"2784":2,"2787":1,"2790":1,"2791":1,"2792":1,"2793":2,"2796":1}}],["you",{"0":{"1694":1,"2353":1,"2358":1,"2709":1},"2":{"1":2,"7":2,"16":1,"23":3,"31":5,"34":2,"37":1,"43":1,"45":2,"49":2,"70":1,"82":1,"83":2,"89":1,"90":3,"107":2,"110":2,"112":2,"119":6,"120":2,"124":3,"137":3,"142":2,"143":3,"182":1,"190":1,"194":2,"202":2,"206":3,"218":2,"228":2,"232":3,"233":2,"240":7,"241":2,"245":1,"248":2,"253":2,"254":2,"255":2,"256":2,"259":2,"270":2,"272":2,"291":1,"302":3,"305":1,"311":2,"312":2,"313":2,"315":3,"316":1,"317":1,"319":2,"320":1,"321":2,"322":1,"326":2,"327":2,"331":4,"332":2,"334":1,"336":2,"341":3,"352":1,"353":1,"354":3,"356":2,"358":1,"364":2,"365":2,"366":2,"367":2,"370":3,"371":1,"372":1,"373":1,"374":1,"375":1,"376":2,"377":1,"378":2,"381":1,"383":1,"386":1,"388":1,"393":1,"394":1,"395":2,"396":2,"397":4,"399":2,"401":5,"402":1,"403":1,"405":1,"407":2,"411":2,"415":2,"417":1,"418":2,"423":1,"424":1,"429":4,"430":1,"431":1,"432":4,"433":1,"434":3,"435":4,"436":3,"437":2,"438":1,"439":1,"440":1,"441":1,"442":1,"445":1,"446":5,"447":3,"448":3,"449":1,"450":2,"451":2,"452":2,"453":6,"454":4,"455":2,"456":1,"457":3,"461":1,"462":1,"466":5,"467":1,"468":1,"469":1,"471":1,"474":4,"476":1,"478":2,"479":1,"481":3,"483":1,"485":2,"488":1,"500":3,"502":3,"503":2,"504":2,"505":8,"506":1,"508":1,"509":1,"510":4,"511":4,"513":1,"515":2,"517":2,"520":1,"521":3,"522":1,"532":1,"537":4,"538":1,"539":2,"540":4,"541":4,"542":1,"545":2,"546":1,"551":3,"552":2,"553":2,"554":13,"555":2,"556":6,"557":4,"558":2,"559":4,"560":13,"561":1,"562":3,"566":1,"567":3,"568":1,"570":3,"571":3,"573":1,"574":6,"575":2,"578":1,"581":1,"584":1,"585":2,"586":4,"587":2,"588":1,"601":1,"607":3,"609":4,"610":1,"611":2,"612":1,"613":4,"614":4,"616":1,"618":1,"621":3,"622":1,"623":2,"624":1,"625":3,"626":7,"627":6,"628":2,"629":1,"630":1,"633":1,"641":3,"643":4,"647":1,"655":3,"658":1,"665":1,"674":3,"675":1,"679":1,"686":2,"687":1,"688":2,"689":2,"690":2,"691":1,"694":1,"698":3,"700":3,"701":1,"703":3,"730":3,"733":1,"741":1,"745":1,"749":1,"751":1,"756":3,"759":1,"768":1,"772":1,"776":1,"778":1,"785":3,"790":1,"791":1,"800":1,"804":1,"808":1,"810":1,"817":3,"821":1,"832":1,"836":1,"840":1,"842":1,"849":3,"855":1,"856":1,"867":1,"871":1,"875":1,"877":1,"884":3,"889":1,"890":1,"901":1,"905":1,"909":1,"911":1,"918":3,"923":1,"924":1,"935":1,"939":1,"943":1,"945":1,"952":3,"957":1,"958":1,"969":1,"973":1,"977":1,"979":1,"986":3,"991":1,"992":1,"1003":1,"1007":1,"1011":1,"1013":1,"1020":3,"1025":1,"1026":1,"1037":1,"1041":1,"1045":1,"1047":1,"1054":3,"1059":1,"1060":1,"1071":1,"1075":1,"1079":1,"1081":1,"1088":3,"1093":1,"1094":1,"1105":1,"1109":1,"1113":1,"1115":1,"1124":1,"1127":1,"1129":2,"1130":1,"1132":4,"1133":3,"1136":5,"1137":2,"1138":3,"1144":3,"1147":1,"1158":1,"1162":1,"1170":4,"1174":1,"1181":3,"1184":1,"1195":1,"1199":1,"1203":1,"1205":1,"1212":3,"1213":2,"1214":4,"1233":3,"1235":3,"1238":1,"1249":1,"1250":4,"1253":2,"1263":1,"1264":1,"1265":1,"1267":1,"1271":4,"1272":1,"1273":4,"1274":2,"1275":4,"1276":2,"1278":2,"1279":6,"1280":1,"1282":2,"1287":1,"1291":5,"1295":3,"1296":1,"1297":1,"1298":1,"1299":1,"1301":3,"1302":1,"1303":2,"1304":1,"1306":1,"1307":2,"1308":1,"1312":1,"1313":2,"1316":1,"1317":1,"1318":1,"1321":1,"1323":2,"1324":8,"1325":4,"1326":1,"1327":2,"1328":1,"1331":1,"1336":2,"1337":8,"1338":1,"1339":1,"1349":4,"1350":1,"1353":1,"1357":2,"1362":6,"1363":5,"1367":2,"1368":9,"1369":15,"1370":1,"1371":1,"1372":7,"1373":2,"1375":3,"1376":4,"1377":8,"1378":7,"1381":1,"1385":1,"1388":3,"1389":2,"1390":4,"1391":2,"1392":4,"1393":1,"1396":4,"1397":1,"1398":5,"1399":1,"1400":4,"1401":6,"1404":1,"1405":2,"1407":2,"1412":1,"1413":3,"1414":8,"1415":4,"1416":1,"1417":5,"1418":2,"1420":14,"1421":10,"1422":15,"1423":3,"1430":1,"1432":1,"1433":2,"1435":11,"1436":5,"1438":4,"1440":5,"1441":4,"1442":5,"1443":4,"1446":2,"1448":5,"1449":3,"1450":1,"1451":2,"1452":1,"1453":9,"1460":1,"1467":2,"1470":1,"1472":8,"1473":2,"1476":5,"1477":3,"1479":2,"1482":1,"1483":1,"1484":1,"1485":2,"1487":1,"1491":1,"1492":2,"1494":2,"1495":1,"1496":3,"1501":4,"1506":3,"1507":1,"1529":1,"1532":6,"1533":2,"1534":4,"1535":2,"1536":2,"1537":3,"1538":1,"1543":1,"1545":5,"1546":2,"1548":3,"1549":2,"1551":1,"1552":8,"1553":1,"1555":11,"1556":2,"1558":2,"1560":3,"1561":2,"1562":2,"1564":1,"1565":6,"1566":1,"1567":1,"1568":1,"1571":1,"1572":2,"1585":1,"1591":5,"1593":1,"1594":4,"1595":2,"1596":5,"1597":1,"1598":3,"1600":2,"1601":3,"1606":1,"1610":1,"1611":3,"1613":1,"1669":2,"1670":1,"1671":1,"1689":6,"1692":1,"1693":5,"1695":2,"1696":1,"1700":2,"1704":3,"1706":3,"1708":2,"1709":2,"1712":1,"1713":7,"1714":1,"1715":5,"1716":3,"1718":1,"1720":2,"1721":3,"1722":8,"1723":2,"1724":2,"1753":2,"1757":1,"1761":4,"1763":2,"1766":1,"1768":1,"1771":2,"1825":2,"1829":6,"1836":2,"1837":1,"1839":1,"1841":5,"1842":1,"1843":6,"1844":2,"1850":1,"1853":1,"1854":1,"1858":2,"1859":1,"1860":1,"1862":1,"1863":1,"1864":2,"1866":1,"1868":4,"1891":1,"1893":1,"1894":1,"1896":2,"1897":1,"1899":1,"1900":1,"1901":6,"1902":1,"1903":2,"1912":1,"1918":1,"1922":2,"1925":6,"1926":2,"1933":3,"1934":2,"1937":2,"1939":1,"1943":2,"1950":3,"1951":1,"1952":1,"1953":1,"1956":2,"1959":1,"1960":2,"1964":2,"1977":1,"1982":4,"1984":2,"1986":3,"1987":1,"1988":1,"1990":1,"1992":1,"1995":2,"1997":4,"1998":2,"2069":1,"2070":6,"2072":3,"2073":1,"2074":2,"2075":2,"2078":1,"2079":2,"2080":3,"2082":3,"2083":1,"2084":1,"2085":3,"2097":3,"2098":4,"2099":2,"2100":2,"2101":2,"2102":3,"2114":2,"2140":1,"2141":1,"2142":2,"2146":3,"2150":3,"2151":5,"2154":1,"2155":4,"2156":3,"2158":1,"2159":2,"2162":2,"2163":4,"2164":5,"2165":1,"2166":7,"2169":7,"2171":7,"2172":1,"2175":1,"2177":1,"2178":1,"2181":1,"2183":4,"2184":2,"2187":4,"2188":8,"2190":5,"2191":1,"2192":1,"2195":1,"2199":9,"2200":4,"2207":11,"2208":3,"2209":1,"2212":3,"2218":2,"2219":4,"2220":4,"2221":3,"2264":2,"2266":5,"2267":1,"2271":2,"2273":1,"2276":1,"2278":1,"2279":2,"2280":1,"2282":1,"2288":1,"2289":5,"2291":7,"2294":3,"2297":2,"2299":4,"2300":10,"2301":17,"2302":3,"2303":16,"2305":1,"2306":2,"2307":5,"2309":1,"2310":1,"2311":4,"2312":5,"2313":12,"2314":3,"2315":8,"2316":5,"2318":9,"2319":6,"2325":2,"2331":2,"2332":1,"2334":3,"2337":1,"2338":4,"2339":1,"2340":2,"2341":10,"2344":6,"2345":3,"2348":8,"2349":4,"2350":2,"2351":3,"2352":1,"2353":1,"2354":1,"2357":2,"2358":6,"2359":1,"2361":1,"2364":1,"2365":1,"2366":3,"2367":4,"2368":1,"2372":1,"2374":2,"2380":1,"2381":3,"2385":1,"2386":6,"2387":6,"2388":2,"2390":4,"2392":5,"2393":1,"2435":2,"2437":1,"2439":1,"2440":1,"2441":3,"2443":3,"2444":6,"2445":5,"2447":3,"2448":2,"2449":4,"2450":3,"2456":6,"2457":4,"2458":2,"2459":3,"2460":5,"2461":7,"2462":5,"2463":6,"2464":6,"2466":1,"2468":4,"2469":2,"2470":1,"2471":1,"2472":1,"2475":1,"2477":2,"2479":1,"2480":6,"2481":4,"2482":3,"2483":2,"2484":5,"2485":4,"2486":3,"2487":3,"2488":2,"2489":7,"2490":1,"2491":4,"2492":1,"2493":8,"2494":4,"2495":3,"2496":8,"2497":2,"2498":3,"2499":1,"2501":2,"2502":1,"2503":2,"2505":3,"2507":9,"2508":6,"2509":1,"2511":3,"2512":3,"2513":4,"2514":5,"2515":3,"2516":6,"2525":1,"2526":4,"2527":12,"2529":12,"2530":8,"2533":2,"2534":3,"2535":1,"2536":6,"2537":3,"2538":1,"2540":1,"2543":3,"2545":1,"2547":5,"2549":4,"2550":1,"2551":1,"2552":8,"2563":1,"2564":1,"2568":1,"2569":3,"2572":3,"2579":1,"2580":1,"2587":1,"2591":1,"2592":4,"2593":2,"2594":1,"2595":5,"2596":2,"2598":1,"2600":1,"2602":1,"2603":5,"2605":2,"2606":1,"2607":4,"2609":2,"2610":2,"2612":1,"2613":1,"2615":3,"2616":10,"2617":1,"2622":1,"2623":1,"2640":1,"2641":2,"2642":1,"2644":6,"2645":3,"2646":9,"2647":3,"2649":3,"2650":2,"2678":1,"2684":1,"2686":1,"2688":1,"2691":1,"2693":1,"2700":1,"2701":1,"2702":2,"2710":2,"2725":2,"2740":1,"2741":6,"2742":1,"2743":1,"2744":8,"2745":9,"2746":3,"2747":5,"2748":2,"2749":2,"2750":4,"2751":1,"2753":1,"2755":1,"2761":3,"2762":4,"2763":2,"2764":1,"2765":1,"2766":5,"2767":29,"2774":6,"2775":4,"2776":2,"2777":7,"2779":2,"2781":2,"2782":3,"2783":1,"2784":1,"2785":3,"2789":4,"2791":6,"2792":5,"2793":1,"2794":2,"2795":3,"2796":17}}],["yiancar",{"2":{"160":1}}],["yiancardesigns",{"2":{"154":3,"160":1}}],["yd68",{"2":{"154":2}}],["yd60mq",{"2":{"154":2,"160":1}}],["ydkb",{"2":{"154":3,"160":1,"211":2}}],["yapf",{"0":{"456":1},"2":{"442":1,"445":3,"456":1,"468":3}}],["yarn",{"2":{"402":1,"403":1}}],["yakiimo",{"2":{"211":1}}],["yandrstudio",{"2":{"199":1}}],["yangdigi",{"2":{"160":1}}],["yanghu",{"2":{"134":1}}],["yasui",{"2":{"154":2}}],["yaml",{"2":{"114":1}}],["yellow",{"2":{"331":1,"433":1,"435":1,"1991":2,"1996":1,"2096":2,"2489":1}}],["yet",{"2":{"139":1,"160":1,"209":1,"236":1,"496":1,"523":1,"537":1,"538":1,"574":1,"683":1,"1274":1,"1528":1,"1986":2,"2101":1,"2190":2,"2301":1,"2359":1,"2416":2,"2472":1,"2507":1,"2537":1,"2564":1,"2565":1,"2587":1,"2592":1,"2595":1,"2599":1,"2626":1,"2635":1,"2769":1,"2795":1}}],["yes",{"2":{"10":1,"28":1,"49":1,"74":1,"87":1,"88":3,"103":4,"104":3,"118":1,"119":1,"126":3,"127":3,"202":1,"232":1,"234":7,"235":1,"266":1,"292":1,"508":1,"516":1,"533":1,"566":1,"596":1,"631":1,"643":1,"655":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1181":1,"1212":1,"1233":1,"1250":1,"1282":1,"1328":1,"1396":1,"1414":1,"1421":2,"1422":2,"1423":1,"1449":1,"1450":1,"1476":1,"1492":1,"1530":1,"1532":1,"1537":1,"1545":1,"1566":1,"1570":1,"1585":1,"1586":1,"1591":1,"1595":1,"1597":1,"1598":1,"1608":1,"1628":1,"1669":1,"1690":1,"1695":1,"1717":1,"1767":2,"1825":1,"1838":1,"1850":1,"1863":1,"1868":1,"1871":1,"1893":2,"1894":2,"1895":2,"1896":2,"1908":1,"1923":1,"1933":1,"1990":2,"2070":2,"2082":2,"2101":2,"2106":1,"2111":1,"2141":1,"2146":1,"2159":1,"2175":1,"2183":2,"2184":1,"2185":1,"2186":1,"2187":1,"2188":1,"2192":1,"2193":1,"2199":1,"2202":1,"2210":1,"2216":1,"2219":2,"2220":1,"2263":1,"2301":1,"2302":1,"2339":2,"2552":1,"2612":1,"2615":11,"2618":2,"2744":2,"2767":1}}],["year>",{"2":{"1417":1}}],["years",{"2":{"6":1,"10":1,"213":1,"2348":1}}],["year",{"2":{"0":2,"9":2,"19":2,"39":2,"52":2,"173":1,"1417":1,"2348":3}}],["r=4",{"2":{"2616":1}}],["rbt",{"2":{"2395":1,"2611":1,"2647":1}}],["rbrc",{"2":{"313":1,"530":2,"1910":1,"2394":1,"2427":1,"2446":1}}],["rr",{"2":{"2191":3}}],["rle",{"0":{"2639":1},"2":{"2614":4,"2624":1,"2631":1,"2635":1,"2639":1}}],["rl",{"2":{"2191":3}}],["rj",{"2":{"2156":2}}],["rz",{"2":{"1670":1}}],["ry",{"2":{"1670":1,"2725":1}}],["ryanbaekr",{"2":{"222":1}}],["r|64",{"2":{"1488":1}}],["rw",{"2":{"1629":2}}],["rwin",{"2":{"1398":1,"2394":1,"2412":1,"2413":1,"2429":1,"2449":1}}],["rwx",{"2":{"236":3}}],["rnrm",{"2":{"2409":2,"2435":2}}],["rn",{"0":{"1318":1},"2":{"1318":1,"1528":5}}],["rn42",{"2":{"134":1,"160":1,"191":1,"211":1,"221":2,"515":1,"1528":1,"1530":1,"2717":1}}],["rts",{"2":{"1232":1,"1234":1,"1235":4}}],["rtc",{"2":{"236":1}}],["r09",{"2":{"1533":2}}],["r08",{"2":{"1533":2}}],["r07",{"2":{"1533":2}}],["r06",{"2":{"1533":2}}],["r05",{"2":{"1533":4}}],["r04",{"2":{"1533":2}}],["r03",{"2":{"1533":2}}],["r02",{"2":{"1533":2}}],["r01",{"2":{"1533":2}}],["r0",{"2":{"1171":1}}],["rm",{"2":{"2513":1}}],["rmod",{"2":{"1986":1,"2416":1}}],["rms",{"2":{"1615":1}}],["rm24c512c",{"2":{"674":2}}],["rmi",{"2":{"197":13,"199":1}}],["rgui",{"2":{"530":2,"1309":1,"1336":1,"1337":1,"1398":1,"1706":5,"2394":1,"2409":4,"2412":1,"2413":1,"2429":1,"2435":4,"2444":1,"2449":2}}],["rght",{"2":{"313":1,"530":2,"1839":1,"1910":2,"2394":1,"2409":1,"2411":1,"2431":1,"2435":1,"2446":1,"2773":4,"2774":3,"2775":2}}],["rgbtest",{"2":{"2072":1,"2415":1}}],["rgb888",{"2":{"199":1,"2614":2,"2615":2}}],["rgbmatrix",{"2":{"191":1}}],["rgb565",{"2":{"191":1,"199":1,"2614":3,"2615":11,"2616":1}}],["rgb+via",{"2":{"176":1}}],["rgb64",{"2":{"154":2}}],["rgbw",{"0":{"1254":1},"2":{"112":1,"134":1,"266":2,"506":2,"1251":2,"1254":2,"2739":2}}],["rgbkb",{"2":{"93":1,"114":2,"160":1,"176":2,"191":1,"211":1,"266":1}}],["rgblight=true",{"2":{"374":1}}],["rgblight",{"0":{"2733":1},"2":{"49":3,"65":1,"70":3,"74":2,"75":1,"111":6,"112":5,"113":1,"114":6,"145":2,"176":2,"191":10,"199":2,"211":3,"221":3,"222":6,"236":5,"249":4,"266":6,"277":1,"292":6,"404":2,"506":10,"515":1,"582":4,"588":11,"609":1,"611":2,"643":1,"1250":1,"1251":1,"1369":16,"1380":5,"1414":2,"1982":2,"1986":1,"2070":2,"2073":15,"2074":14,"2075":12,"2076":12,"2077":6,"2079":1,"2080":18,"2081":4,"2082":16,"2083":1,"2084":2,"2085":1,"2086":2,"2088":1,"2089":16,"2090":7,"2091":6,"2092":14,"2093":6,"2094":2,"2095":6,"2096":3,"2097":4,"2098":6,"2169":2,"2338":9,"2339":3,"2713":1,"2733":3,"2750":11}}],["rgbleds",{"2":{"191":1}}],["rgbled",{"2":{"45":2,"70":1,"191":1,"222":2,"249":2,"506":2,"511":1,"2070":1,"2078":7,"2169":1,"2339":6}}],["rgb",{"0":{"25":1,"45":1,"80":1,"124":1,"214":1,"233":1,"404":1,"506":1,"1269":1,"1982":1,"1987":1,"1988":1,"1989":1,"1990":1,"1998":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2008":1,"2010":1,"2012":1,"2014":1,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2046":1,"2048":1,"2050":1,"2052":1,"2054":1,"2056":1,"2057":1,"2059":1,"2061":1,"2063":1,"2066":1,"2069":1,"2083":1,"2415":1,"2416":1,"2734":1,"2750":1},"1":{"1270":1,"1983":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":2,"1989":2,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":2,"2008":1,"2009":2,"2010":1,"2011":2,"2012":1,"2013":2,"2014":1,"2015":2,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":2,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":2,"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2033":2,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":2,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2045":2,"2046":1,"2047":2,"2048":1,"2049":2,"2050":1,"2051":1,"2052":1,"2053":2,"2054":1,"2055":2,"2056":1,"2057":1,"2058":2,"2059":1,"2060":2,"2061":1,"2062":2,"2063":1,"2064":1,"2065":1,"2066":1,"2067":1,"2068":1,"2070":1,"2071":1,"2072":1,"2073":1,"2074":1,"2075":1,"2076":1,"2077":1,"2078":1,"2079":1,"2080":1,"2081":1,"2082":1,"2083":1,"2084":1,"2085":1,"2086":1,"2087":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":1,"2098":1,"2099":1,"2100":1,"2101":1,"2102":1},"2":{"25":7,"32":3,"45":2,"49":4,"63":1,"65":3,"70":1,"73":1,"80":1,"93":5,"94":1,"112":1,"114":27,"124":3,"133":1,"134":9,"138":2,"145":1,"154":4,"160":6,"176":3,"183":14,"185":7,"191":15,"199":2,"201":1,"211":7,"214":2,"221":3,"222":11,"229":1,"231":3,"233":1,"236":13,"238":1,"244":1,"249":31,"266":8,"277":9,"374":3,"404":2,"506":5,"511":1,"530":16,"574":1,"582":2,"588":20,"589":1,"592":1,"593":5,"594":5,"642":1,"643":1,"654":1,"655":1,"661":1,"729":1,"730":2,"736":1,"737":3,"741":1,"743":1,"749":1,"755":1,"756":2,"762":1,"763":3,"768":1,"770":1,"776":1,"784":1,"785":2,"794":1,"795":3,"800":1,"802":1,"808":1,"816":1,"817":2,"824":1,"825":3,"832":1,"834":1,"840":1,"848":1,"849":2,"859":1,"860":3,"867":1,"869":1,"875":1,"883":1,"884":2,"893":1,"894":3,"901":1,"903":1,"909":1,"917":1,"918":2,"927":1,"928":3,"935":1,"937":1,"943":1,"951":1,"952":2,"961":1,"962":3,"969":1,"971":1,"977":1,"985":1,"986":2,"995":1,"996":3,"1003":1,"1005":1,"1011":1,"1019":1,"1020":2,"1029":1,"1030":3,"1037":1,"1039":1,"1045":1,"1053":1,"1054":2,"1063":1,"1064":3,"1071":1,"1073":1,"1079":1,"1087":1,"1088":2,"1097":1,"1098":3,"1105":1,"1107":1,"1113":1,"1143":1,"1144":2,"1150":1,"1151":3,"1158":1,"1160":1,"1162":1,"1168":1,"1169":2,"1170":1,"1171":11,"1176":1,"1178":1,"1180":1,"1181":2,"1187":1,"1188":3,"1195":1,"1197":1,"1203":1,"1249":1,"1250":1,"1251":2,"1252":1,"1253":1,"1254":3,"1269":1,"1270":1,"1353":1,"1354":1,"1368":1,"1369":25,"1380":1,"1413":2,"1414":8,"1415":1,"1491":2,"1560":1,"1598":4,"1761":2,"1769":1,"1864":8,"1948":1,"1982":1,"1983":2,"1984":1,"1986":36,"1987":149,"1988":7,"1989":4,"1990":21,"1991":22,"1992":24,"1995":8,"1996":11,"1997":15,"1998":6,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":1,"2009":1,"2057":1,"2058":1,"2069":3,"2070":3,"2071":1,"2072":24,"2073":4,"2074":2,"2075":2,"2079":3,"2080":2,"2082":2,"2083":3,"2085":1,"2089":5,"2090":10,"2096":24,"2099":1,"2101":6,"2167":1,"2169":2,"2172":2,"2319":2,"2327":1,"2328":2,"2329":2,"2415":22,"2416":15,"2605":5,"2606":2,"2612":8,"2614":2,"2616":5,"2649":1,"2711":1,"2713":1,"2714":1,"2733":2,"2734":3,"2745":1,"2750":51,"2763":2,"2788":1}}],["rq",{"0":{"526":1},"2":{"303":2,"304":2,"526":2}}],["rswp",{"2":{"2409":2,"2435":2}}],["rspc",{"2":{"2147":1,"2148":1,"2150":5,"2151":3,"2421":1}}],["rsi",{"2":{"1447":1}}],["rstp",{"2":{"1591":2,"1593":2,"2402":1}}],["rst",{"2":{"1443":1,"1445":1,"1529":1,"1610":1,"1611":1,"1617":2,"1857":3,"2179":1,"2268":1,"2271":1,"2273":1,"2274":1,"2276":1,"2315":1,"2375":1,"2377":1,"2379":1,"2396":1,"2612":11,"2615":4}}],["rsa",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["rsg",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["rs232",{"2":{"1121":1}}],["rs485",{"2":{"1121":1}}],["rs40",{"2":{"211":1}}],["rsft",{"2":{"313":1,"530":2,"1336":1,"1398":1,"1483":4,"1537":1,"1540":1,"2150":9,"2151":1,"2266":1,"2394":1,"2412":1,"2413":1,"2429":1,"2444":1,"2446":1,"2449":2}}],["rs",{"2":{"249":1,"1629":2}}],["rshift",{"2":{"211":1,"260":1,"1337":1}}],["r17",{"2":{"1533":2}}],["r16",{"2":{"1533":2}}],["r15",{"2":{"1533":2}}],["r14",{"2":{"1533":2}}],["r13",{"2":{"1533":2}}],["r12",{"2":{"1533":2}}],["r11",{"2":{"1533":2}}],["r10",{"2":{"1533":2}}],["r1",{"2":{"211":1,"1171":1}}],["r2",{"2":{"207":1,"211":2,"277":1,"1171":1}}],["rxc1",{"2":{"1896":1}}],["rxcie1",{"2":{"1896":1}}],["rxen1",{"2":{"1896":3}}],["rxled",{"2":{"1353":2,"1357":2}}],["rx",{"2":{"191":1,"1127":1,"1129":8,"1130":5,"1134":1,"1140":11,"1141":9,"1142":8,"1234":2,"1235":4,"1351":1,"1670":1,"1896":6,"2569":2,"2580":2,"2582":2,"2725":1}}],["rp",{"2":{"2575":2,"2576":2,"2577":2,"2581":1}}],["rp2",{"2":{"2489":1}}],["rp2040",{"0":{"163":1,"271":1,"636":1,"681":1,"1355":1,"1358":1,"1361":1,"1897":1,"2287":1,"2570":1,"2579":1,"2580":1,"2581":1,"2583":1,"2584":1},"1":{"2571":1,"2572":1,"2573":1,"2574":1,"2575":1,"2576":1,"2577":1,"2578":1,"2579":1,"2580":2,"2581":2,"2582":1,"2583":1,"2584":1},"2":{"163":5,"174":1,"176":11,"191":9,"199":5,"211":3,"236":3,"266":1,"271":6,"277":1,"492":3,"636":2,"678":2,"681":3,"692":1,"1126":1,"1127":2,"1130":2,"1134":2,"1258":1,"1348":2,"1352":3,"1354":1,"1359":2,"1361":1,"1897":1,"2164":1,"2287":4,"2466":1,"2490":1,"2570":1,"2571":1,"2572":3,"2573":2,"2574":1,"2575":1,"2576":1,"2577":1,"2578":5,"2579":1,"2580":3,"2581":3,"2582":1,"2583":6,"2584":1,"2722":1,"2751":1}}],["rprn",{"2":{"2417":1,"2438":1}}],["rpi",{"2":{"2287":1}}],["rpt",{"2":{"1471":1,"1472":2,"1473":1,"2397":1}}],["rpc",{"2":{"176":2,"2168":7}}],["rdesc",{"2":{"134":1}}],["rot",{"2":{"2758":1}}],["rotary",{"2":{"236":1,"630":1,"1271":1,"2723":1,"2736":1}}],["rotates",{"2":{"1859":1,"1952":3,"1953":3}}],["rotate",{"0":{"1904":1},"2":{"1859":1,"1904":4}}],["rotated",{"2":{"31":1,"34":1,"1366":1,"1859":2,"1950":1}}],["rotating",{"2":{"1600":3,"1614":1,"1860":1,"2181":1}}],["rotations",{"2":{"1954":1,"1955":1,"2623":1,"2725":1}}],["rotational",{"2":{"160":1,"1950":2}}],["rotation",{"0":{"1859":1,"1941":1},"2":{"31":5,"34":5,"199":1,"1598":2,"1854":5,"1859":10,"1860":19,"1904":1,"1941":6,"1952":3,"1953":4,"2178":5,"2181":12,"2615":1,"2616":13,"2620":1,"2656":1,"2725":3}}],["road",{"2":{"2347":1}}],["roadmap",{"2":{"88":1,"104":1}}],["roastpotatoes",{"2":{"2307":1,"2320":1}}],["rosin",{"2":{"2305":1,"2312":2}}],["rosaline",{"2":{"211":1}}],["rofl",{"2":{"2220":3}}],["roving",{"2":{"1528":1}}],["robot",{"2":{"701":1}}],["robustness",{"2":{"211":1}}],["robust",{"2":{"76":1}}],["ro",{"2":{"372":1}}],["rooms",{"2":{"2365":1}}],["room",{"2":{"1763":1,"1860":1,"1984":1,"2181":1,"2329":1}}],["root",{"2":{"279":1,"454":1,"513":1,"556":1,"1291":1,"1335":1,"1375":1,"1488":3,"1489":1,"1767":1,"1990":1,"2300":3,"2485":1,"2486":1,"2491":1,"2552":1,"2792":1}}],["rookiebwoy",{"2":{"241":2,"249":2}}],["rogue87",{"2":{"211":1}}],["ropt",{"2":{"176":1,"1336":1,"1398":1,"2394":1,"2412":1,"2413":1,"2429":1,"2449":1}}],["rocketboard",{"2":{"160":1}}],["rollover",{"0":{"2692":1,"2698":1},"2":{"515":2,"1530":1,"1568":1,"2183":1,"2409":3,"2435":3}}],["roll",{"2":{"347":1,"1724":2,"1907":1}}],["rollback",{"2":{"191":1}}],["rolling",{"0":{"2772":1},"2":{"134":1,"2263":1,"2774":3}}],["roles",{"2":{"2199":1,"2736":1}}],["role",{"2":{"114":1,"160":1,"194":1,"505":3,"2456":1,"2767":2,"2768":8,"2774":8,"2775":5,"2776":1}}],["roughly",{"2":{"1845":1}}],["rouge87",{"2":{"211":1}}],["routing",{"2":{"685":1,"2315":1}}],["routine",{"2":{"49":1,"515":2,"563":1,"565":1,"566":5,"1377":1,"1611":1,"2301":2,"2529":1}}],["routines",{"2":{"49":1,"125":1,"185":1,"508":1,"1172":1,"2565":1}}],["route",{"0":{"306":1,"307":1,"308":1,"309":1},"2":{"2313":1}}],["rounded",{"2":{"1218":1,"1258":1}}],["round",{"2":{"133":1,"134":1,"341":1,"537":1,"1428":1}}],["row1",{"2":{"2350":11}}],["row0",{"2":{"2350":12}}],["row2col",{"2":{"111":1,"502":1,"563":1,"580":3,"2596":2,"2728":1}}],["row",{"2":{"92":2,"114":1,"199":1,"222":1,"255":3,"502":1,"511":5,"565":1,"566":4,"573":1,"580":13,"1169":1,"1171":4,"1289":8,"1351":1,"1360":1,"1361":1,"1363":4,"1366":8,"1440":3,"1442":1,"1532":2,"1533":2,"1534":2,"1556":1,"1568":1,"1585":1,"1590":1,"1601":1,"1650":2,"1652":2,"1722":2,"1763":3,"1766":4,"1984":3,"1987":4,"1996":4,"2160":1,"2163":1,"2169":2,"2193":5,"2269":1,"2276":1,"2307":1,"2312":2,"2313":2,"2315":4,"2318":1,"2350":8,"2440":1,"2558":2,"2597":1,"2605":1,"2614":2,"2653":1,"2656":1,"2725":1,"2728":2,"2732":1,"2767":1,"2779":4,"2784":1}}],["rows",{"2":{"63":1,"111":1,"114":1,"211":2,"502":6,"530":1,"566":2,"580":1,"1169":1,"1171":4,"1366":1,"1367":2,"1396":2,"1440":1,"1442":1,"1763":2,"1830":1,"1860":2,"1984":2,"1996":1,"2160":3,"2163":1,"2169":2,"2193":1,"2202":1,"2307":3,"2309":1,"2315":1,"2350":5,"2440":1,"2445":3,"2462":1,"2596":4,"2597":2,"2605":1,"2653":1,"2687":1,"2728":3,"2786":1}}],["romanian",{"2":{"1392":1,"2742":3}}],["rominronin",{"2":{"381":1,"2332":1}}],["roms",{"2":{"273":1}}],["rom",{"0":{"276":1},"2":{"49":1,"273":1,"1643":1,"2366":1,"2389":1,"2796":1}}],["rcag",{"2":{"2413":1,"2449":1}}],["rcpc",{"2":{"2147":1,"2148":1,"2150":1,"2421":1}}],["rcbr",{"2":{"1910":1,"2417":1,"2438":1}}],["rctrl",{"2":{"1337":1}}],["rctl",{"2":{"313":1,"530":2,"1309":1,"1336":1,"1398":1,"1706":3,"2150":2,"2266":1,"2394":1,"2409":2,"2412":1,"2413":1,"2429":1,"2435":2,"2446":1,"2449":2}}],["rcs",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["rcmd",{"2":{"1336":1,"1398":1,"2394":1,"2412":1,"2413":1,"2429":1,"2449":1}}],["rc",{"2":{"49":3,"1362":1,"2563":1}}],["radius",{"2":{"2616":1}}],["rabk",{"2":{"2417":1,"2438":1}}],["rabbit",{"2":{"154":2}}],["rapc",{"2":{"2147":1,"2148":1,"2150":1,"2421":1}}],["rapidly",{"2":{"1443":1,"1491":1,"2198":1}}],["rag",{"2":{"1336":1,"2412":1,"2413":1,"2449":1}}],["rarely",{"2":{"2221":1}}],["rare",{"2":{"337":1,"584":1}}],["rart",{"2":{"211":1}}],["rartlice",{"2":{"211":1}}],["rartand",{"2":{"211":1}}],["rart80",{"2":{"211":2}}],["rart75m",{"2":{"211":1}}],["rart75",{"2":{"211":2}}],["rart67m",{"2":{"211":1}}],["rart67",{"2":{"211":1}}],["rart60",{"2":{"211":1}}],["rart45",{"2":{"211":1}}],["ralt|mod",{"2":{"1373":1}}],["ralt",{"2":{"313":1,"530":2,"1336":1,"1337":1,"1398":1,"1706":2,"1715":1,"1916":1,"2150":2,"2394":1,"2409":2,"2412":1,"2413":1,"2429":1,"2435":2,"2444":1,"2446":1,"2449":2,"2777":1}}],["rastersoft",{"2":{"222":1}}],["raspberry",{"0":{"163":1,"492":1,"2287":1,"2570":1},"1":{"2571":1,"2572":1,"2573":1,"2574":1,"2575":1,"2576":1,"2577":1,"2578":1,"2579":1,"2580":1,"2581":1,"2582":1,"2583":1,"2584":1},"2":{"163":1,"176":1,"1127":1,"1130":1,"1134":1,"1897":1,"2572":1,"2573":1}}],["rand",{"2":{"1853":1,"2177":1}}],["randomly",{"2":{"1987":3}}],["randomness",{"2":{"1443":3}}],["random",{"0":{"2137":1,"2650":1},"2":{"263":1,"548":1,"1362":1,"1611":2,"1853":2,"1987":5,"2177":2,"2616":1,"2650":3}}],["random8",{"2":{"199":2}}],["ran",{"2":{"581":1}}],["ranges",{"0":{"231":1},"2":{"191":1,"199":2,"231":2,"236":1,"317":1,"1483":1,"1852":1,"1937":1,"2078":1,"2080":1,"2176":1}}],["range",{"0":{"1577":1,"1578":1,"2088":1,"2098":1},"2":{"160":1,"176":2,"191":1,"199":3,"231":22,"534":1,"557":1,"570":4,"1381":2,"1396":4,"1412":1,"1422":5,"1572":3,"1575":2,"1577":1,"1578":1,"1615":1,"1671":1,"1763":3,"1830":1,"1868":1,"1913":1,"1921":1,"1935":1,"1936":1,"1937":2,"1947":1,"1949":1,"1950":2,"1959":1,"1960":1,"1969":1,"1979":1,"1984":3,"2076":2,"2086":3,"2088":2,"2089":5,"2091":6,"2092":14,"2096":1,"2098":5,"2110":1,"2113":1,"2151":1,"2424":1,"2434":1,"2610":1,"2613":1,"2616":3,"2665":1,"2740":1,"2767":1}}],["raison",{"2":{"559":1}}],["raises",{"2":{"462":1,"465":1,"1841":1}}],["raised",{"2":{"341":1,"343":1,"350":2,"1843":2,"2606":2}}],["raise",{"2":{"198":1,"265":1,"465":1,"689":1,"1369":1,"1372":1,"1380":1,"1441":1,"1471":1,"1962":2,"2397":1,"2643":7,"2645":3}}],["rainbow",{"2":{"292":1,"1986":2,"1987":9,"2072":2,"2074":4,"2075":4,"2076":2,"2077":1,"2078":4,"2100":1,"2101":2,"2415":2,"2616":3,"2733":1,"2750":5}}],["raindrop",{"2":{"241":2}}],["raindrops",{"2":{"114":1,"222":1,"1987":6,"2750":2}}],["rainkeeb",{"2":{"154":2}}],["rainkeebs",{"2":{"154":3,"160":2}}],["rain",{"2":{"134":1,"145":1,"199":1,"222":2,"1987":6,"2750":2}}],["rampdown",{"2":{"1616":24}}],["rampup",{"2":{"1616":24}}],["ramlord",{"2":{"211":1}}],["rama",{"2":{"199":1,"211":4}}],["ram",{"2":{"176":1,"191":1,"236":1,"671":1,"678":2,"688":1,"689":1,"1363":1,"1591":1,"1632":1,"1922":1,"2563":2,"2564":1,"2567":1,"2589":1,"2613":5,"2615":2,"2757":1}}],["ramonimbao",{"2":{"102":3,"197":13,"199":1}}],["ratio",{"2":{"1491":1,"1855":1}}],["ratio65",{"2":{"211":2}}],["rationale",{"2":{"49":1}}],["rated",{"2":{"1614":1,"1615":1}}],["rates",{"2":{"642":1}}],["rate",{"0":{"148":1},"2":{"65":1,"114":1,"148":1,"154":3,"160":4,"222":1,"236":1,"502":2,"641":2,"688":4,"1238":1,"1290":1,"1363":1,"1366":1,"1434":4,"1841":1,"1845":1,"1855":1,"1899":3,"1943":1,"2102":1,"2179":1,"2188":1,"2263":1,"2623":3,"2784":1}}],["rather",{"2":{"49":1,"50":1,"124":1,"201":1,"230":1,"234":1,"415":1,"453":1,"468":1,"476":1,"502":1,"505":1,"557":1,"560":1,"570":1,"571":1,"596":1,"1121":1,"1368":1,"1405":1,"1430":1,"1721":1,"1723":1,"1975":1,"2071":1,"2279":2,"2281":1,"2325":1,"2499":1,"2513":1,"2590":1,"2603":1,"2605":2,"2616":1,"2647":1,"2693":1,"2776":1}}],["raw",{"0":{"1922":1,"1929":1,"1931":1},"1":{"1923":1,"1924":1,"1925":1,"1926":1,"1927":1,"1928":1,"1929":1,"1930":2,"1931":1,"1932":2},"2":{"17":1,"50":1,"62":1,"114":1,"145":1,"191":1,"222":1,"266":1,"405":1,"516":1,"566":1,"610":1,"612":1,"1367":1,"1369":7,"1853":3,"1860":6,"1905":1,"1922":1,"1924":5,"1925":2,"1926":2,"1927":8,"1929":1,"1954":1,"1955":1,"2177":3,"2181":4,"2568":2,"2569":1,"2614":4,"2616":3,"2654":3,"2725":1}}],["ribbon",{"2":{"2315":1}}],["river",{"2":{"1987":1}}],["riverflow",{"2":{"277":1,"1987":3}}],["rick",{"2":{"1724":2}}],["richly",{"2":{"2604":1}}],["rich",{"2":{"114":1,"248":1}}],["rigid",{"2":{"2309":1}}],["rigor",{"2":{"556":1}}],["right=11",{"2":{"2616":1}}],["righthand",{"2":{"509":1,"510":1}}],["rightmost",{"2":{"55":1,"1571":1,"1650":1,"1652":1}}],["righty",{"2":{"43":2}}],["right",{"2":{"31":1,"34":1,"100":2,"114":2,"119":2,"137":1,"145":1,"160":2,"176":1,"199":2,"202":1,"203":1,"231":2,"249":1,"255":1,"289":1,"291":1,"313":1,"331":3,"335":1,"453":1,"484":1,"502":2,"506":2,"509":7,"510":5,"511":10,"537":1,"592":1,"627":1,"1123":1,"1126":1,"1129":1,"1336":12,"1337":1,"1373":5,"1433":1,"1442":1,"1453":1,"1473":3,"1476":1,"1533":6,"1537":2,"1538":4,"1585":2,"1596":10,"1597":1,"1622":1,"1624":1,"1706":2,"1708":2,"1715":4,"1722":1,"1760":4,"1763":1,"1766":9,"1768":1,"1839":4,"1855":3,"1860":4,"1901":1,"1902":1,"1907":1,"1910":6,"1940":1,"1946":3,"1950":8,"1953":11,"1955":7,"1956":2,"1962":1,"1963":3,"1972":1,"1984":1,"1986":2,"1987":15,"1992":2,"2098":1,"2146":1,"2147":7,"2148":8,"2151":1,"2160":2,"2162":1,"2163":1,"2164":7,"2165":2,"2169":10,"2179":1,"2181":2,"2191":2,"2195":1,"2200":1,"2205":12,"2217":1,"2267":1,"2270":1,"2272":1,"2279":1,"2284":1,"2286":1,"2303":1,"2309":1,"2312":2,"2313":1,"2394":12,"2409":6,"2411":4,"2412":12,"2413":11,"2417":3,"2421":8,"2427":1,"2429":8,"2431":2,"2433":1,"2435":6,"2438":3,"2449":15,"2450":6,"2475":1,"2513":2,"2537":1,"2547":1,"2569":3,"2585":1,"2597":1,"2616":6,"2637":2,"2658":2,"2700":1,"2727":1,"2734":1,"2736":3,"2750":2,"2777":4}}],["rising",{"2":{"1218":2}}],["risky",{"2":{"1324":1}}],["risk",{"2":{"352":1,"515":1,"682":1,"1324":1,"2311":1,"2759":1}}],["risc",{"0":{"494":1},"1":{"495":1},"2":{"130":2,"134":2,"138":1}}],["riot",{"2":{"222":1,"241":2,"266":1}}],["rionlion100",{"2":{"37":1}}],["rider",{"2":{"2072":1,"2415":1}}],["rid",{"2":{"222":4}}],["ringing",{"2":{"1508":1}}],["ring",{"2":{"199":1,"515":1,"1945":1}}],["rip",{"2":{"160":1}}],["ruin",{"2":{"2313":1}}],["russian",{"2":{"236":1,"2741":1,"2742":2}}],["ruled",{"2":{"2710":1}}],["rule",{"2":{"160":1,"199":1,"457":1,"607":1,"614":1}}],["ruler",{"2":{"154":2,"2311":1}}],["rules",{"0":{"512":1,"1276":1,"1414":1,"1530":1,"1608":1,"2301":1,"2339":1,"2744":1},"1":{"513":1,"514":1,"515":1,"516":1,"1415":1},"2":{"32":1,"49":1,"50":2,"70":29,"74":1,"75":1,"76":3,"87":1,"94":1,"103":1,"114":2,"118":2,"119":1,"133":2,"134":5,"152":1,"160":1,"172":1,"176":2,"191":2,"199":1,"202":1,"211":5,"235":1,"262":1,"266":11,"282":1,"286":1,"374":1,"457":1,"496":2,"499":1,"508":1,"564":1,"565":1,"566":1,"596":1,"606":3,"607":1,"608":1,"610":3,"613":2,"614":6,"631":1,"643":1,"655":1,"671":1,"678":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1124":1,"1127":2,"1130":2,"1144":1,"1170":1,"1181":1,"1212":1,"1233":1,"1250":1,"1255":1,"1275":1,"1276":2,"1282":1,"1291":2,"1328":1,"1349":1,"1351":1,"1352":1,"1359":1,"1366":1,"1367":2,"1377":1,"1383":1,"1384":2,"1413":2,"1414":7,"1415":1,"1421":2,"1422":2,"1423":1,"1427":1,"1430":1,"1431":1,"1433":1,"1450":2,"1476":1,"1492":1,"1497":1,"1528":1,"1530":2,"1532":1,"1537":1,"1538":1,"1545":1,"1565":1,"1566":1,"1570":1,"1585":1,"1586":1,"1591":1,"1595":1,"1597":1,"1608":1,"1628":1,"1669":1,"1690":1,"1695":1,"1717":1,"1762":1,"1767":2,"1825":1,"1838":1,"1850":1,"1863":1,"1868":1,"1871":1,"1893":1,"1894":1,"1895":1,"1896":1,"1908":1,"1923":1,"1933":1,"1935":1,"1936":1,"1937":1,"1938":1,"1942":1,"1947":1,"1948":1,"1949":1,"1950":2,"1951":1,"1983":1,"1990":2,"2070":2,"2101":1,"2106":1,"2111":1,"2141":1,"2149":1,"2159":1,"2175":1,"2183":1,"2184":1,"2185":1,"2186":1,"2187":1,"2188":1,"2192":1,"2199":1,"2202":1,"2210":1,"2216":1,"2219":2,"2220":1,"2263":1,"2267":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2283":2,"2285":2,"2287":2,"2288":1,"2297":2,"2298":1,"2300":2,"2302":4,"2334":4,"2335":1,"2339":19,"2381":1,"2456":1,"2474":1,"2477":1,"2521":1,"2552":1,"2569":1,"2580":1,"2581":1,"2601":1,"2603":1,"2605":3,"2612":2,"2615":11,"2616":2,"2618":1,"2710":1,"2744":1,"2746":1,"2764":1,"2767":2,"2788":1,"2792":3,"2794":1}}],["runoff",{"2":{"1763":1,"1984":1}}],["rundown",{"2":{"554":1}}],["runners",{"2":{"2501":1}}],["runner3680",{"2":{"154":20}}],["running",{"0":{"336":1,"524":1,"2793":1},"2":{"11":1,"50":1,"69":2,"108":1,"132":1,"160":1,"249":1,"315":3,"342":1,"522":1,"527":1,"529":3,"539":1,"558":1,"574":1,"582":1,"628":1,"1134":1,"1218":1,"1275":1,"1278":1,"1476":1,"1500":1,"1501":1,"1529":1,"1556":1,"1568":1,"1781":1,"1783":1,"1785":1,"1787":1,"1793":1,"1794":1,"1817":1,"1823":1,"2008":1,"2010":1,"2012":1,"2014":1,"2020":1,"2021":1,"2062":1,"2068":1,"2075":1,"2267":1,"2293":1,"2300":1,"2303":1,"2366":1,"2392":1,"2474":1,"2493":1,"2500":1,"2502":1,"2504":1,"2506":1,"2516":2,"2526":1,"2623":1,"2706":1}}],["run",{"0":{"1473":1,"2507":1},"2":{"51":1,"90":1,"114":1,"143":2,"176":2,"199":1,"254":1,"263":1,"328":1,"396":2,"400":3,"407":3,"411":4,"414":1,"416":1,"426":1,"428":1,"442":1,"446":1,"447":1,"454":2,"483":1,"484":1,"505":1,"515":1,"521":1,"530":1,"586":1,"590":2,"628":2,"1276":1,"1278":2,"1291":3,"1307":1,"1323":1,"1381":1,"1418":1,"1477":1,"1478":1,"1548":1,"1552":1,"1560":1,"1561":1,"1598":1,"1627":1,"1694":1,"1708":1,"1754":1,"1767":3,"1768":1,"1781":1,"1783":1,"1863":1,"1868":1,"1950":1,"1960":1,"1990":3,"1992":1,"2008":1,"2010":1,"2164":2,"2184":1,"2200":1,"2221":2,"2274":1,"2275":1,"2291":1,"2300":3,"2316":1,"2345":1,"2386":2,"2392":3,"2437":1,"2450":1,"2456":2,"2464":1,"2474":1,"2476":2,"2477":1,"2478":1,"2484":1,"2493":2,"2494":1,"2507":6,"2513":6,"2516":3,"2526":2,"2534":1,"2545":1,"2546":1,"2548":1,"2551":1,"2585":1,"2587":1,"2589":1,"2592":1,"2605":1,"2620":1,"2644":1,"2649":1,"2670":1,"2676":1,"2686":1,"2727":1,"2734":1,"2788":1,"2792":1,"2793":5,"2794":2,"2796":1}}],["runtime=",{"2":{"2291":1}}],["runtime",{"0":{"1591":1},"1":{"1592":1,"1593":1,"1594":1},"2":{"24":1,"679":1,"689":1,"1307":1,"1967":1,"1968":1,"2291":2,"2767":2}}],["runs",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"324":1,"407":2,"411":2,"433":1,"486":1,"575":1,"588":3,"1379":1,"1397":1,"1438":1,"1501":3,"1922":1,"1936":1,"1943":1,"1950":1,"2383":1,"2385":1,"2456":1,"2476":1,"2489":1,"2782":1,"2784":3}}],["r",{"0":{"2008":1,"2010":1},"1":{"2009":1,"2011":1},"2":{"32":1,"191":1,"266":2,"313":1,"429":1,"530":2,"659":1,"662":1,"734":1,"737":1,"760":1,"763":1,"792":1,"795":1,"822":1,"825":1,"857":1,"860":1,"891":1,"894":1,"925":1,"928":1,"959":1,"962":1,"993":1,"996":1,"1027":1,"1030":1,"1061":1,"1064":1,"1095":1,"1098":1,"1126":2,"1148":1,"1151":1,"1169":1,"1171":2,"1185":1,"1188":1,"1254":2,"1337":27,"1488":2,"1724":1,"1986":1,"1995":1,"1997":1,"2009":1,"2011":1,"2072":1,"2089":10,"2144":1,"2186":2,"2191":2,"2275":1,"2333":1,"2365":1,"2394":3,"2415":1,"2425":3,"2446":1,"2605":1,"2614":4,"2725":1,"2738":1,"2754":1}}],["req",{"2":{"2107":1}}],["requried",{"2":{"249":1}}],["requesting",{"2":{"331":1}}],["requested",{"2":{"99":1,"164":1,"527":1,"566":1,"726":1,"1860":1,"2181":1}}],["request",{"0":{"352":1,"2695":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"45":1,"50":1,"87":1,"103":1,"126":1,"317":1,"352":3,"355":1,"356":1,"537":1,"550":2,"554":9,"558":1,"560":1,"623":1,"726":1,"1298":1,"1300":1,"1367":1,"1418":1,"1927":8,"2107":2,"2109":1,"2303":3,"2365":1,"2394":1,"2431":1,"2512":1,"2514":1,"2552":1,"2608":1,"2695":1,"2709":1,"2796":1}}],["requests",{"2":{"38":1,"69":1,"199":1,"355":1,"519":2,"549":1,"1302":1,"2525":1,"2606":1,"2607":1,"2695":1,"2758":1}}],["requirement",{"2":{"236":1,"685":1,"1619":1,"2590":1,"2603":1}}],["requirements",{"0":{"364":1,"2290":1,"2603":1},"2":{"145":1,"176":1,"364":2,"429":2,"674":1,"1252":1,"1256":1,"1897":1,"2606":1}}],["requires",{"2":{"143":1,"335":1,"364":1,"402":1,"403":2,"504":1,"625":1,"674":1,"675":1,"678":1,"680":1,"682":1,"694":1,"700":1,"1212":1,"1233":1,"1315":1,"1324":1,"1372":1,"1485":1,"1529":1,"1826":1,"1858":1,"1926":1,"1935":1,"1947":1,"1949":1,"1963":1,"1965":1,"2169":1,"2174":1,"2220":1,"2221":1,"2273":1,"2279":2,"2293":2,"2406":1,"2467":1,"2476":1,"2552":1,"2565":1,"2605":2,"2606":1,"2611":1,"2613":2,"2614":4,"2616":3,"2620":1,"2764":1}}],["require",{"0":{"124":1},"2":{"58":1,"132":1,"134":1,"232":1,"318":1,"341":1,"352":1,"355":2,"371":1,"455":1,"516":1,"529":1,"533":1,"587":1,"625":1,"626":1,"678":1,"679":2,"682":1,"688":1,"1277":1,"1468":1,"1611":1,"1708":1,"1714":1,"1752":1,"1943":1,"1951":1,"1996":1,"1997":1,"2082":1,"2167":1,"2208":1,"2215":1,"2271":1,"2310":1,"2350":1,"2383":1,"2479":1,"2589":1,"2605":1,"2606":1,"2613":1,"2615":3,"2616":1,"2747":1,"2750":1,"2755":1,"2762":1}}],["required",{"0":{"23":1,"2155":1},"1":{"2156":1},"2":{"10":2,"24":1,"50":1,"69":1,"70":1,"107":1,"118":1,"211":1,"228":1,"234":9,"262":1,"292":1,"511":1,"516":1,"552":1,"556":1,"566":1,"571":1,"597":1,"598":1,"610":1,"631":1,"643":1,"655":1,"673":1,"683":1,"700":1,"702":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1126":1,"1134":1,"1144":1,"1181":1,"1212":1,"1213":1,"1214":1,"1233":1,"1234":1,"1250":1,"1263":2,"1267":1,"1394":1,"1453":1,"1467":2,"1482":1,"1572":2,"1619":1,"1629":4,"1708":1,"1709":1,"1857":2,"1859":1,"1863":1,"1922":1,"1935":3,"1936":1,"1937":2,"1939":3,"1943":2,"1947":2,"1948":1,"1949":3,"1950":1,"1953":3,"1967":3,"1969":2,"2103":1,"2167":1,"2168":1,"2179":3,"2210":1,"2237":1,"2264":1,"2298":2,"2309":2,"2311":1,"2314":1,"2362":1,"2367":1,"2389":1,"2468":2,"2470":1,"2475":1,"2554":1,"2562":1,"2603":1,"2605":2,"2606":1,"2615":4,"2616":6,"2711":4,"2712":2,"2714":2,"2715":2,"2716":1,"2723":3,"2724":1,"2725":3,"2727":5,"2732":2,"2733":1,"2734":5,"2738":3,"2739":1,"2791":1,"2792":1}}],["requiring",{"0":{"40":1,"53":1,"67":1,"72":1,"85":1,"101":1,"121":1,"140":1,"150":1,"165":1,"180":1,"193":1,"205":1,"216":1,"225":1,"239":1,"252":1,"269":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"86":1,"87":1,"88":1,"89":1,"90":1,"102":1,"103":1,"104":1,"105":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"141":1,"142":1,"143":1,"144":1,"151":1,"152":1,"153":1,"154":1,"166":1,"167":1,"168":1,"169":1,"170":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"194":1,"195":1,"196":1,"197":1,"206":1,"207":1,"217":1,"218":1,"219":1,"220":1,"221":1,"226":1,"240":1,"241":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"270":1,"271":1,"272":1,"273":1},"2":{"173":1,"234":1,"276":1,"352":2,"556":1,"679":1,"1534":1,"1536":1,"2192":1}}],["reregister",{"2":{"1703":5,"1709":1,"1712":1}}],["reinstall",{"2":{"2536":1}}],["reinstalling",{"2":{"1278":1}}],["reintroduced",{"2":{"2507":1}}],["reinitializes",{"2":{"2395":1,"2611":1}}],["reinitilization",{"2":{"1867":1}}],["reimplementing",{"2":{"388":1}}],["reimplements",{"2":{"134":1}}],["reimplemented",{"2":{"118":1}}],["reusing",{"2":{"600":1}}],["reused",{"2":{"2303":3,"2725":1}}],["reuse",{"2":{"134":1}}],["rekt1800",{"2":{"211":1}}],["reject",{"2":{"191":1,"266":1}}],["rebase",{"2":{"2513":10}}],["rebasing",{"0":{"2513":1}}],["rebuilding",{"2":{"1327":1}}],["rebooted",{"2":{"1591":1,"2672":1}}],["rebooting",{"2":{"592":1,"1854":1}}],["reboots",{"2":{"504":1,"2187":1}}],["reboot",{"0":{"592":1,"595":1},"1":{"593":1,"594":1,"595":1},"2":{"145":1,"176":1,"191":1,"229":1,"511":1,"592":1,"627":1,"2169":1,"2221":1,"2395":1,"2569":1,"2611":1,"2647":1,"2736":1}}],["rebranded",{"2":{"57":1}}],["recalculations",{"2":{"2623":1}}],["recall",{"2":{"1958":1}}],["rect",{"2":{"2616":5}}],["rectangle",{"2":{"2616":1}}],["rectangles",{"2":{"138":1,"2616":2}}],["rectangular",{"0":{"2658":1},"2":{"1442":1,"2656":1,"2658":1}}],["recreate",{"2":{"2316":2}}],["recreated",{"2":{"160":1}}],["recutting",{"2":{"2315":1}}],["recurse",{"2":{"2291":1,"2303":2,"2516":4}}],["recursive",{"2":{"160":1,"1591":1,"2476":1}}],["recv",{"2":{"2168":1}}],["rec2",{"2":{"1591":3,"2402":1}}],["rec1",{"2":{"1591":3,"2402":1}}],["receiving",{"0":{"1926":1},"2":{"1123":1,"1126":1,"1129":2,"2301":1,"2303":1,"2678":1}}],["receives",{"2":{"1754":1,"2350":2,"2653":1}}],["received",{"2":{"526":1,"703":1,"1417":1,"1925":1,"1926":1,"1927":1,"1929":1,"1930":1,"2185":1,"2609":1}}],["receive",{"0":{"711":1,"1228":1,"1245":1,"1929":1},"1":{"712":1,"713":1,"1229":1,"1230":1,"1246":1,"1930":1},"2":{"191":1,"711":1,"1228":1,"1238":1,"1241":1,"1242":1,"1245":1,"1247":1,"1248":1,"1870":1,"1925":1,"1927":1,"2200":1,"2355":1,"2392":1,"2736":1}}],["reception",{"2":{"1121":3}}],["recently",{"2":{"236":1,"1988":1}}],["recent",{"2":{"114":1,"134":2,"145":1,"160":1,"191":1,"199":1,"222":1,"1475":1,"1528":1,"2534":1}}],["recolored",{"2":{"2616":3}}],["recolor",{"2":{"2616":9}}],["recognised",{"2":{"2354":1}}],["recognises",{"2":{"1605":1}}],["recognise",{"2":{"1396":1,"2221":1}}],["recognizes",{"2":{"1320":1,"2394":1}}],["recognized",{"2":{"1310":1,"1315":1,"1317":1,"1475":1,"1551":1}}],["recognize",{"0":{"1291":1},"2":{"176":1,"481":1,"626":1,"2394":1,"2720":1}}],["reconstruct",{"2":{"2513":1}}],["reconfigured",{"2":{"1866":1}}],["reconfigure",{"2":{"1537":1}}],["reconfiguration",{"2":{"682":1}}],["reconnect",{"2":{"62":1}}],["recopy",{"2":{"452":1}}],["recovering",{"0":{"627":1},"2":{"240":1}}],["recover",{"2":{"228":1}}],["recompilation",{"2":{"2359":1}}],["recompile",{"2":{"124":1,"154":4,"160":1,"2187":1}}],["recommeded",{"2":{"2617":1}}],["recommends",{"2":{"554":1}}],["recommendations",{"2":{"2343":1,"2457":1,"2602":1,"2789":1}}],["recommendation",{"2":{"341":1}}],["recommend",{"2":{"145":1,"625":1,"674":1,"1977":1,"2269":1,"2276":1,"2343":1,"2344":2,"2507":1,"2545":1,"2607":1,"2789":1,"2792":1,"2796":1}}],["recommended",{"2":{"3":1,"4":1,"15":1,"292":2,"564":1,"674":1,"1122":1,"1276":1,"1310":1,"1363":7,"1396":1,"1413":1,"1414":2,"1696":1,"1715":1,"1721":1,"1763":2,"1845":3,"1861":1,"1891":1,"1893":1,"1974":1,"1984":2,"2156":1,"2168":1,"2221":2,"2268":2,"2271":2,"2273":2,"2274":2,"2275":2,"2278":2,"2280":2,"2281":2,"2282":2,"2288":2,"2293":1,"2306":1,"2313":2,"2380":1,"2384":1,"2482":1,"2498":1,"2525":1,"2526":1,"2527":2,"2588":1,"2603":1,"2606":1,"2607":1,"2777":1}}],["recommanded",{"2":{"1615":1}}],["records",{"2":{"1975":1,"1979":1}}],["recorded",{"2":{"1591":1,"2402":1,"2513":1,"2672":1}}],["recording",{"2":{"222":1,"1440":4,"1591":6,"1592":1,"1593":1,"1594":3,"2402":2}}],["record",{"0":{"203":1,"572":1,"573":1,"1396":1,"1402":1,"1591":1,"2779":1,"2788":1},"1":{"1397":1,"1398":1,"1399":1,"1400":1,"1592":1,"1593":1,"1594":1},"2":{"3":1,"7":1,"15":1,"22":2,"176":1,"194":2,"195":2,"203":7,"211":3,"534":14,"571":2,"572":4,"573":6,"584":1,"588":3,"1289":8,"1339":3,"1340":3,"1369":8,"1372":1,"1381":3,"1396":10,"1397":9,"1402":1,"1412":3,"1421":5,"1422":9,"1453":1,"1460":3,"1467":3,"1482":1,"1483":3,"1487":1,"1548":1,"1556":2,"1591":3,"1593":3,"1594":4,"1597":1,"1619":1,"1672":7,"1829":1,"1830":3,"1868":4,"1913":2,"1915":1,"1916":1,"1917":1,"1918":5,"1919":5,"1921":5,"1958":1,"1959":3,"1960":4,"1970":1,"1971":4,"1972":4,"1975":2,"1979":3,"1981":2,"1986":1,"2072":1,"2082":5,"2116":3,"2190":3,"2200":4,"2206":4,"2209":1,"2340":2,"2345":1,"2402":3,"2452":5,"2453":8,"2454":5,"2479":1,"2605":1,"2643":4,"2766":1,"2767":8,"2774":1,"2775":1,"2776":1,"2777":1,"2779":2,"2787":1,"2788":59}}],["reordering",{"2":{"182":1,"191":1}}],["reorderable",{"2":{"176":1}}],["reordered",{"2":{"98":1}}],["reorg",{"2":{"114":1}}],["regress",{"2":{"2266":2}}],["regression",{"2":{"134":1,"160":2,"211":1,"2264":2,"2266":1}}],["regulated",{"2":{"2568":1}}],["regulator",{"2":{"1937":1,"2171":1}}],["regularly",{"2":{"586":1}}],["regular",{"2":{"89":1,"114":1,"625":1,"1142":1,"1407":1,"1540":2,"1611":1,"1714":1,"2190":1,"2220":1,"2307":1,"2449":1,"2529":1,"2769":1}}],["regex",{"2":{"1384":1}}],["regen",{"2":{"199":4}}],["regenerate",{"2":{"198":1,"199":1,"249":2}}],["region",{"2":{"2392":1,"2615":5}}],["regions",{"2":{"1305":1}}],["registry",{"2":{"2587":1,"2589":1}}],["registrations",{"2":{"601":1}}],["registration",{"0":{"598":1},"2":{"63":1}}],["registered",{"0":{"2351":1},"1":{"2352":1,"2353":1,"2354":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1},"2":{"1340":6,"1703":1,"1708":2,"1709":1,"1711":1,"1940":8,"2168":1,"2199":1,"2774":3,"2775":2}}],["registering",{"2":{"505":1,"1340":1,"1405":1,"1407":2,"1712":1,"1859":1}}],["register16",{"0":{"717":1,"723":1},"1":{"718":1,"719":1,"724":1,"725":1},"2":{"244":2}}],["registers",{"0":{"754":1,"782":1,"814":1,"846":1,"881":1,"915":1,"949":1,"983":1,"1017":1,"1051":1,"1085":1,"1119":1,"1166":1,"1209":1},"1":{"783":1,"815":1,"847":1,"882":1,"916":1,"950":1,"984":1,"1018":1,"1052":1,"1086":1,"1120":1,"1167":1,"1210":1},"2":{"134":1,"749":2,"751":2,"776":2,"778":2,"808":2,"810":2,"840":2,"842":2,"875":2,"877":2,"909":2,"911":2,"943":2,"945":2,"977":2,"979":2,"1011":2,"1013":1,"1045":2,"1047":1,"1079":2,"1081":1,"1113":2,"1115":1,"1142":1,"1162":2,"1203":2,"1205":2,"1561":1,"1595":1,"1943":1,"2350":1,"2563":2}}],["register",{"0":{"714":1,"720":1,"739":1,"749":1,"751":1,"766":1,"776":1,"778":1,"798":1,"808":1,"810":1,"828":1,"840":1,"842":1,"863":1,"875":1,"877":1,"897":1,"909":1,"911":1,"931":1,"943":1,"945":1,"965":1,"977":1,"979":1,"999":1,"1011":1,"1013":1,"1033":1,"1045":1,"1047":1,"1067":1,"1079":1,"1081":1,"1101":1,"1113":1,"1115":1,"1154":1,"1162":1,"1191":1,"1203":1,"1205":1,"1280":1,"1403":1,"1407":1,"1680":1,"1879":1,"2237":1,"2247":1,"2261":1},"1":{"715":1,"716":1,"721":1,"722":1,"740":1,"750":1,"752":1,"767":1,"777":1,"779":1,"799":1,"809":1,"811":1,"829":1,"841":1,"843":1,"864":1,"876":1,"878":1,"898":1,"910":1,"912":1,"932":1,"944":1,"946":1,"966":1,"978":1,"980":1,"1000":1,"1012":1,"1014":1,"1034":1,"1046":1,"1048":1,"1068":1,"1080":1,"1082":1,"1102":1,"1114":1,"1116":1,"1155":1,"1163":1,"1192":1,"1204":1,"1206":1,"1681":1,"1880":1,"2238":1,"2248":1,"2262":1},"2":{"114":1,"134":1,"160":1,"190":1,"191":2,"236":3,"244":2,"249":5,"505":1,"661":1,"662":3,"714":1,"715":1,"717":1,"718":1,"720":1,"721":1,"723":1,"724":1,"726":2,"736":1,"737":4,"739":1,"740":1,"754":1,"762":1,"763":4,"766":1,"767":1,"782":1,"792":1,"794":1,"795":4,"798":1,"799":1,"814":1,"822":1,"824":1,"825":4,"828":1,"829":1,"846":1,"857":1,"859":1,"860":4,"863":1,"864":1,"881":1,"891":1,"893":1,"894":4,"897":1,"898":1,"915":1,"925":1,"927":1,"928":4,"931":1,"932":1,"949":1,"953":1,"959":1,"961":1,"962":4,"965":1,"966":1,"983":1,"987":1,"993":1,"995":1,"996":4,"999":1,"1000":1,"1013":1,"1017":1,"1021":1,"1027":1,"1029":1,"1030":4,"1033":1,"1034":1,"1047":1,"1051":1,"1055":1,"1061":1,"1063":1,"1064":4,"1067":1,"1068":1,"1081":1,"1085":1,"1089":1,"1095":1,"1097":1,"1098":4,"1101":1,"1102":1,"1115":1,"1119":1,"1148":1,"1150":1,"1151":4,"1154":1,"1155":1,"1166":1,"1185":1,"1187":1,"1188":4,"1191":1,"1192":1,"1209":1,"1337":1,"1339":2,"1340":1,"1397":2,"1404":1,"1405":1,"1407":1,"1412":3,"1467":3,"1561":1,"1708":2,"1715":1,"1859":1,"1952":1,"2168":1,"2200":1,"2206":2,"2207":5,"2208":3,"2318":1,"2353":2,"2552":1,"2564":1,"2723":1,"2777":1}}],["reg",{"0":{"739":1,"766":1,"798":1,"828":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1,"1191":1},"1":{"740":1,"767":1,"799":1,"829":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1,"1192":1},"2":{"740":1,"767":1,"799":1,"829":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1,"1192":1,"2221":2}}],["regaddr",{"0":{"714":1,"717":1,"720":1,"723":1},"1":{"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1},"2":{"715":1,"718":1,"721":1,"724":1}}],["regards",{"2":{"1468":1,"1714":1,"1943":1,"2207":1,"2554":1}}],["regard",{"2":{"698":1}}],["regardless",{"2":{"49":1,"504":1,"562":1,"1340":1,"1925":1,"2101":1,"2158":1,"2525":1,"2607":1}}],["regarding",{"0":{"27":1},"2":{"92":1,"176":1,"191":1,"213":1,"697":1,"1275":1}}],["retirement",{"2":{"2758":1}}],["retn",{"2":{"2394":1,"2431":1}}],["ret",{"2":{"2222":1,"2423":1}}],["retries",{"2":{"2168":1}}],["retrieves",{"2":{"2526":2}}],["retrieve",{"2":{"317":1,"2616":1}}],["retrieved",{"2":{"317":1}}],["retrieval",{"2":{"191":1,"211":1,"580":1}}],["retry",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1182":1,"1324":1}}],["retro",{"0":{"1468":1,"1469":1,"2777":1,"2778":1},"1":{"1469":1,"2778":1},"2":{"63":1,"112":2,"134":2,"222":1,"236":1,"505":4,"1449":1,"1467":5,"1468":11,"1469":3,"2713":2,"2777":7,"2778":3,"2793":2}}],["retaining",{"2":{"1420":1,"2629":1}}],["retained",{"2":{"1368":1,"2164":1,"2479":1,"2646":1}}],["retain",{"0":{"2084":1},"2":{"114":1,"191":1,"199":1,"2084":2}}],["returned",{"2":{"597":1,"598":1,"599":1,"600":1,"630":1,"1537":1,"1659":1,"1757":1,"1911":1,"2084":1,"2615":11,"2784":1}}],["returncode",{"2":{"428":1,"484":1}}],["returns",{"2":{"428":1,"453":1,"462":1,"464":1,"465":2,"597":1,"638":1,"639":1,"696":1,"1486":1,"1542":1,"1563":2,"1564":1,"1598":1,"1697":1,"1756":1,"1843":1,"1860":12,"1863":1,"1918":1,"1937":1,"1954":5,"1955":3,"1956":1,"1974":1,"1980":1,"2094":1,"2181":8,"2196":1,"2209":1,"2265":1,"2345":1,"2513":2,"2616":2}}],["returning",{"2":{"90":1,"105":2,"203":1,"469":1,"592":1,"597":1,"1543":2,"1560":1,"1598":1,"1754":2,"1915":1,"2108":1,"2269":1,"2276":1,"2735":1}}],["return",{"0":{"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1219":1,"1222":1,"1224":1,"1227":1,"1230":1,"1242":1,"1248":1,"1519":1,"1521":1,"1526":1,"1654":1,"1659":1,"1686":1,"1734":1,"1739":1,"1742":1,"1745":1,"1748":1,"1751":1,"1780":1,"1794":1,"1800":1,"1810":1,"1813":1,"1815":1,"1817":1,"1820":1,"1823":1,"1885":1,"1888":1,"2007":1,"2021":1,"2027":1,"2033":1,"2039":1,"2049":1,"2055":1,"2058":1,"2060":1,"2062":1,"2065":1,"2068":1,"2225":1,"2243":1,"2246":1,"2251":1,"2253":1,"2256":1,"2258":1},"2":{"31":2,"34":2,"50":1,"90":4,"105":7,"125":3,"134":3,"185":3,"191":2,"194":5,"195":4,"199":1,"249":3,"292":1,"324":1,"453":4,"463":2,"464":2,"465":3,"469":1,"475":1,"529":1,"534":8,"556":3,"565":1,"566":2,"571":2,"572":3,"593":2,"594":1,"597":2,"598":1,"1247":2,"1289":1,"1308":1,"1312":1,"1339":3,"1340":4,"1369":6,"1370":1,"1380":1,"1381":4,"1396":3,"1397":2,"1412":1,"1420":2,"1421":1,"1422":2,"1441":3,"1453":3,"1460":4,"1467":2,"1483":12,"1485":5,"1543":3,"1555":12,"1556":2,"1560":2,"1561":3,"1563":4,"1587":6,"1598":4,"1672":6,"1706":1,"1708":2,"1755":1,"1756":1,"1767":3,"1771":3,"1830":2,"1851":1,"1852":1,"1853":1,"1854":4,"1860":1,"1864":2,"1868":2,"1911":7,"1912":6,"1913":4,"1915":2,"1916":1,"1917":2,"1918":2,"1919":4,"1921":5,"1927":2,"1950":1,"1951":2,"1959":2,"1960":3,"1962":2,"1963":1,"1972":4,"1974":7,"1975":2,"1977":1,"1978":1,"1979":1,"1980":2,"1981":1,"1990":3,"1995":3,"1996":3,"1997":2,"2081":3,"2116":2,"2145":5,"2177":1,"2178":3,"2181":1,"2190":3,"2193":1,"2206":1,"2207":11,"2208":6,"2209":6,"2266":5,"2345":1,"2394":3,"2427":1,"2431":2,"2452":3,"2453":10,"2454":2,"2512":1,"2514":1,"2516":1,"2526":1,"2606":1,"2616":1,"2643":3,"2645":3,"2748":3,"2766":3,"2767":4,"2774":2,"2775":2,"2776":2,"2777":2,"2788":1}}],["rewinding",{"2":{"2513":1}}],["rewind",{"2":{"1910":1,"2394":2,"2432":2}}],["rework",{"0":{"196":2},"2":{"114":1,"134":1,"145":2,"176":1,"191":1,"199":1,"222":1,"236":1,"249":1,"277":1,"560":1,"2463":1}}],["reworked",{"2":{"60":1,"86":1,"118":1,"188":1,"191":1}}],["rewritten",{"2":{"107":1,"1307":1,"2749":1}}],["rewrite",{"2":{"31":1,"75":1,"176":2,"191":1,"1324":2}}],["re",{"0":{"2709":1},"2":{"51":1,"107":1,"119":3,"124":1,"132":1,"134":1,"142":1,"160":1,"176":2,"182":1,"188":1,"198":1,"211":1,"224":1,"228":1,"232":1,"240":1,"241":1,"248":1,"253":1,"268":1,"270":1,"272":1,"273":1,"307":2,"317":1,"344":1,"345":1,"453":1,"455":1,"505":2,"540":1,"541":1,"546":1,"551":1,"554":2,"556":1,"559":1,"574":1,"599":1,"602":1,"627":1,"1136":1,"1138":1,"1271":1,"1278":1,"1337":1,"1341":1,"1369":5,"1400":1,"1440":1,"1451":1,"1536":1,"1551":1,"1552":2,"1555":1,"1601":1,"1619":1,"1712":3,"1715":1,"1716":1,"1829":1,"1901":1,"1962":1,"1986":1,"2154":1,"2159":1,"2164":2,"2166":2,"2220":1,"2221":1,"2264":1,"2303":3,"2313":8,"2315":2,"2318":1,"2321":1,"2342":1,"2344":3,"2346":1,"2348":1,"2381":1,"2392":1,"2460":1,"2480":1,"2485":1,"2490":1,"2493":1,"2494":1,"2508":1,"2513":1,"2525":1,"2529":1,"2530":1,"2549":1,"2551":1,"2552":1,"2555":1,"2589":1,"2591":1,"2593":1,"2602":1,"2603":2,"2605":1,"2607":1,"2615":2,"2641":1,"2649":1,"2653":2,"2654":1,"2745":1,"2746":2,"2747":2,"2750":1,"2767":1,"2777":1}}],["rear",{"2":{"2654":1}}],["reasons",{"2":{"563":1,"1351":1}}],["reasonable",{"2":{"560":1,"1963":1,"2765":1}}],["reason",{"2":{"354":1,"466":1,"560":1,"1309":1,"1337":1,"1373":1,"1400":1,"1416":1,"2156":1,"2595":1,"2603":1,"2616":1,"2767":1,"2780":1,"2792":1}}],["reapply",{"2":{"2513":1}}],["reapplying",{"2":{"1340":1}}],["reap",{"2":{"350":1}}],["reacting",{"2":{"2167":1}}],["reactive",{"0":{"1989":1},"2":{"93":1,"124":1,"176":1,"199":1,"249":1,"266":1,"1766":22,"1768":2,"1987":25,"1989":3,"1992":2,"2750":8}}],["react",{"2":{"2167":1,"2727":2,"2734":2}}],["reached",{"2":{"1735":1,"1841":2,"1845":1}}],["reaches",{"2":{"1377":1,"1840":3,"2356":1,"2513":1}}],["reach",{"2":{"356":1,"557":1,"1475":1,"1722":2,"1845":1,"2182":1,"2603":1}}],["reachable",{"2":{"249":1,"1944":5}}],["reaching",{"2":{"188":1,"1447":1,"2264":1,"2783":1}}],["realtime",{"0":{"2753":1}}],["realpath",{"2":{"2482":1,"2483":1}}],["realized",{"2":{"1701":1}}],["realign",{"2":{"211":1}}],["realloc",{"2":{"236":1}}],["reallocate",{"2":{"199":2}}],["really",{"2":{"138":1,"1279":1,"1366":1,"1449":1,"1451":1,"1467":1,"1536":1,"1706":1,"1709":1,"1714":1,"2309":1,"2548":1,"2779":1}}],["real",{"0":{"1321":1},"2":{"49":1,"245":1,"1288":1,"1315":1,"1321":7,"1362":1,"1467":1,"2182":2,"2592":1}}],["reader",{"2":{"1555":1,"1853":7,"1860":1,"2177":7,"2181":1}}],["readers",{"2":{"460":1}}],["readable",{"2":{"1306":1,"2654":1,"2670":1}}],["readability",{"2":{"453":1,"468":1,"479":1,"530":1,"1306":1,"2444":1}}],["read32",{"2":{"588":1,"2168":1,"2603":1,"2616":6}}],["reads",{"2":{"502":2,"509":1,"510":1,"511":1,"580":3,"638":2,"639":3,"675":1,"720":1,"723":1,"1927":1,"1937":1,"2291":1,"2653":1}}],["readily",{"2":{"479":1,"2389":1}}],["readings",{"2":{"234":1}}],["reading",{"0":{"418":1,"437":1,"535":1},"1":{"419":1,"420":1,"421":1,"422":1},"2":{"114":1,"134":1,"145":1,"160":1,"176":1,"441":1,"502":2,"560":1,"567":1,"671":1,"726":1,"1369":1,"1671":1,"1757":1,"2325":1,"2339":1,"2350":1,"2386":4,"2387":1,"2492":1,"2728":1,"2762":1}}],["ready",{"2":{"282":3,"341":1,"1291":1,"1412":1,"1433":1,"1565":1,"1863":1,"1896":1,"2188":1,"2269":1,"2276":1,"2301":1,"2386":1,"2392":1,"2459":1,"2489":1,"2493":1,"2494":1,"2509":1,"2551":1}}],["readreg",{"2":{"244":1}}],["readreg16",{"2":{"134":1,"244":1}}],["readpin",{"2":{"243":1}}],["readport",{"2":{"114":1}}],["readonly",{"2":{"236":1}}],["readd",{"2":{"199":1}}],["readmes",{"2":{"266":1}}],["readme",{"0":{"623":1,"624":1,"1417":2,"2336":1,"2593":1},"2":{"114":3,"134":1,"145":1,"191":1,"211":1,"222":2,"347":1,"349":1,"559":2,"626":1,"1383":3,"1413":1,"2275":1,"2297":1,"2298":1,"2300":1,"2332":1,"2335":1,"2336":1,"2342":1,"2385":1,"2593":3,"2605":1}}],["read",{"0":{"551":1,"720":1,"723":1,"1223":1,"1241":1,"1327":1,"1657":1,"1684":1,"1853":1,"2177":1},"1":{"721":1,"722":1,"724":1,"725":1,"1224":1,"1242":1,"1658":1,"1659":1,"1685":1,"1686":1},"2":{"2":1,"31":3,"49":1,"114":2,"145":2,"194":1,"195":1,"199":1,"206":1,"243":1,"244":2,"249":1,"284":1,"302":2,"414":1,"418":1,"424":1,"481":1,"530":1,"550":1,"580":3,"633":1,"638":1,"639":2,"696":1,"701":1,"712":2,"721":2,"724":2,"726":1,"727":1,"1121":1,"1223":1,"1224":1,"1229":2,"1242":2,"1246":2,"1247":1,"1274":1,"1303":1,"1327":1,"1338":1,"1362":1,"1368":3,"1369":5,"1370":3,"1378":1,"1412":1,"1489":1,"1555":1,"1591":1,"1592":1,"1657":1,"1658":1,"1668":2,"1671":2,"1678":1,"1685":1,"1700":1,"1752":1,"1841":1,"1853":6,"1860":1,"1927":1,"1937":1,"1948":1,"1950":2,"1952":1,"2162":2,"2163":1,"2177":6,"2181":1,"2200":1,"2301":1,"2338":1,"2350":2,"2387":1,"2462":1,"2512":1,"2514":1,"2575":1,"2576":1,"2592":1,"2603":1,"2618":1,"2620":1,"2639":3,"2651":2,"2653":1,"2654":1,"2752":1,"2762":2,"2763":1,"2791":1}}],["reddit",{"2":{"2754":1}}],["redetect",{"2":{"1866":1}}],["redesigning",{"2":{"1327":1}}],["redefined",{"2":{"2605":1}}],["redefine",{"2":{"500":1,"1357":1,"1422":1,"2150":2}}],["redirect",{"2":{"527":1,"602":1,"1341":1,"2321":1,"2516":1}}],["redirected",{"2":{"268":1}}],["redistribution",{"2":{"2588":1,"2603":1}}],["redistributed",{"2":{"2588":1}}],["redistribute",{"2":{"1417":1,"2609":1}}],["redis",{"0":{"526":1},"2":{"303":1,"307":1}}],["redox",{"2":{"241":2,"249":3}}],["redoing",{"2":{"191":1}}],["redo",{"2":{"145":1}}],["red",{"0":{"647":1,"649":1,"665":1,"667":1,"741":1,"743":1,"749":1,"768":1,"770":1,"776":1,"800":1,"802":1,"808":1,"832":1,"834":1,"840":1,"867":1,"869":1,"875":1,"901":1,"903":1,"909":1,"935":1,"937":1,"943":1,"969":1,"971":1,"977":1,"1003":1,"1005":1,"1011":1,"1037":1,"1039":1,"1045":1,"1071":1,"1073":1,"1079":1,"1105":1,"1107":1,"1113":1,"1158":1,"1160":1,"1162":1,"1176":1,"1178":1,"1195":1,"1197":1,"1203":1},"1":{"648":1,"650":1,"666":1,"668":1,"742":1,"744":1,"750":1,"769":1,"771":1,"777":1,"801":1,"803":1,"809":1,"833":1,"835":1,"841":1,"868":1,"870":1,"876":1,"902":1,"904":1,"910":1,"936":1,"938":1,"944":1,"970":1,"972":1,"978":1,"1004":1,"1006":1,"1012":1,"1038":1,"1040":1,"1046":1,"1072":1,"1074":1,"1080":1,"1106":1,"1108":1,"1114":1,"1159":1,"1161":1,"1163":1,"1177":1,"1179":1,"1196":1,"1198":1,"1204":1},"2":{"49":1,"282":3,"341":1,"401":1,"433":2,"435":1,"593":1,"594":2,"648":2,"650":2,"659":1,"662":1,"666":2,"668":2,"734":1,"737":1,"742":2,"744":2,"750":2,"760":1,"763":1,"769":2,"771":2,"777":2,"792":1,"795":1,"801":2,"803":2,"809":2,"822":1,"825":1,"833":2,"835":2,"841":2,"857":1,"860":1,"868":2,"870":2,"876":2,"891":1,"894":1,"902":2,"904":2,"910":2,"925":1,"928":1,"936":2,"938":2,"944":2,"959":1,"962":1,"970":2,"972":2,"978":2,"993":1,"996":1,"1004":2,"1006":2,"1012":2,"1027":1,"1030":1,"1038":2,"1040":2,"1046":2,"1061":1,"1064":1,"1072":2,"1074":2,"1080":2,"1095":1,"1098":1,"1106":2,"1108":2,"1114":2,"1148":1,"1151":1,"1159":2,"1161":2,"1163":2,"1171":1,"1177":2,"1179":2,"1185":1,"1188":1,"1196":2,"1198":2,"1204":2,"1253":1,"1254":1,"1369":1,"1425":1,"1428":3,"1432":2,"1864":1,"1991":2,"1995":2,"1996":1,"2009":1,"2011":1,"2072":1,"2073":1,"2076":1,"2080":3,"2082":1,"2089":1,"2096":2,"2415":1,"2470":1,"2503":1}}],["reducing",{"2":{"69":1,"565":1,"2264":1}}],["reduces",{"2":{"215":1,"265":1,"560":1,"2264":1}}],["reduced",{"2":{"195":1,"1125":1,"1128":1}}],["reduce",{"0":{"55":1,"2077":1},"2":{"17":1,"94":1,"114":2,"134":1,"145":1,"160":1,"191":6,"199":2,"211":4,"213":1,"222":3,"236":1,"266":1,"513":1,"1474":1,"1855":2,"1910":1,"2179":1,"2300":1,"2301":2,"2525":1,"2605":1,"2743":1,"2747":1,"2748":1}}],["reduction",{"2":{"3":1,"15":1,"160":1}}],["redundant",{"2":{"8":1,"94":1,"114":1,"211":1,"249":5,"266":3,"1562":1}}],["renaming",{"0":{"243":1,"245":1},"2":{"182":1,"194":1,"2606":1}}],["renamed",{"0":{"271":1},"2":{"37":1,"50":1,"153":1,"183":1,"186":1,"219":1,"271":1}}],["rename",{"0":{"153":1,"219":1},"2":{"25":1,"65":1,"94":1,"133":1,"134":3,"145":2,"160":4,"176":4,"191":1,"199":1,"211":13,"222":3,"236":4,"243":1,"249":6,"266":3,"277":4,"1302":1}}],["renderers",{"2":{"2725":1}}],["rendered",{"2":{"1424":1,"1814":1,"1816":1,"1818":1,"1821":1,"1859":1,"1860":1,"2059":1,"2061":1,"2063":1,"2066":1,"2181":1,"2615":2,"2616":1,"2658":1,"2659":1}}],["rendering",{"2":{"1254":1,"1263":1,"1771":1,"1858":5,"1859":2,"1860":1,"1995":1,"2180":3,"2181":1,"2635":1}}],["renders",{"2":{"619":1,"620":1,"1854":2,"1859":1,"1860":1,"2178":2,"2181":1}}],["render",{"2":{"31":1,"191":2,"222":1,"230":1,"1434":1,"1852":3,"1854":8,"1855":1,"1860":5,"1861":3,"2176":2,"2178":4,"2181":2,"2387":1,"2617":1}}],["remembered",{"0":{"1916":1},"2":{"1914":1,"1915":2,"1916":5,"1917":1,"1921":1}}],["remembers",{"2":{"1907":1}}],["remembering",{"2":{"504":1}}],["remember",{"2":{"435":2,"454":1,"509":1,"1369":1,"1914":1,"1915":2,"1916":1,"1917":1,"1921":1,"1925":1,"2187":1,"2188":1,"2190":1,"2221":1,"2350":2,"2506":1,"2791":1,"2796":1}}],["remotes",{"2":{"2516":2}}],["remote",{"2":{"222":1,"236":1,"358":1,"359":1,"1899":3,"2168":1,"2303":5,"2437":3,"2450":3,"2477":2,"2516":9,"2526":9,"2529":2}}],["removal",{"0":{"89":1,"103":1,"126":1,"276":1,"2758":1},"1":{"104":1,"127":1,"2759":1,"2760":1},"2":{"114":1,"124":1,"126":1,"134":1,"240":1,"249":6,"678":1,"1966":2,"2758":2,"2759":2}}],["removes",{"2":{"27":1,"49":1,"50":1,"176":1,"394":1,"1339":1,"1369":1,"2300":1}}],["removed",{"0":{"151":1},"2":{"6":1,"8":1,"36":1,"50":6,"67":1,"86":2,"89":1,"128":1,"141":1,"142":1,"151":1,"194":2,"201":1,"206":1,"211":1,"213":1,"218":1,"228":1,"245":1,"249":1,"254":1,"255":1,"256":1,"262":1,"273":1,"276":1,"394":1,"1711":2,"1712":1,"1861":2,"1974":2,"1977":1,"2507":1,"2605":4,"2759":3}}],["remove",{"0":{"8":1,"128":1,"218":1,"220":1,"254":1,"394":1,"1877":1,"2257":1},"1":{"1878":1,"2258":1},"2":{"4":1,"5":1,"31":3,"32":1,"34":3,"36":1,"38":1,"50":1,"64":1,"65":1,"70":1,"72":1,"75":9,"76":1,"86":1,"94":4,"114":17,"133":8,"134":15,"145":5,"160":10,"176":9,"188":15,"191":42,"199":33,"211":23,"222":19,"236":17,"249":22,"255":1,"257":1,"258":1,"259":2,"265":1,"266":22,"275":1,"277":16,"347":1,"354":1,"394":2,"396":2,"411":1,"529":1,"628":1,"1321":1,"1472":1,"1722":1,"1974":3,"1977":3,"1978":2,"1988":1,"2075":1,"2188":1,"2207":1,"2257":1,"2388":1,"2462":1,"2463":1,"2492":1,"2569":1,"2585":1,"2603":2,"2605":1,"2654":1,"2747":1,"2776":1}}],["removing",{"2":{"3":1,"15":1,"50":1,"134":1,"182":1,"259":1,"272":1,"273":1,"1372":1,"1485":1,"1693":1}}],["remnants",{"2":{"211":1}}],["remainder",{"2":{"1860":2,"2181":2}}],["remainders",{"2":{"236":1}}],["remains",{"2":{"1413":1,"1541":1,"1843":1,"1969":1}}],["remain",{"2":{"480":1,"2109":1,"2529":1,"2613":2}}],["remaining",{"2":{"22":1,"87":1,"103":1,"114":2,"126":1,"191":1,"199":2,"211":2,"249":1,"1249":1,"1479":1,"1853":3,"1860":1,"2069":1,"2177":3,"2181":1,"2185":1,"2186":1,"2762":1}}],["remapped",{"2":{"1142":1,"1860":2,"2181":2}}],["remapping",{"2":{"1142":1,"1536":1}}],["remap",{"2":{"182":1,"1127":2,"1130":2,"1142":5,"1442":1,"1859":2,"2733":1}}],["reflashing",{"2":{"1529":1,"2366":1}}],["reflash",{"2":{"1307":1,"1596":1}}],["reflected",{"2":{"1307":1,"2516":1}}],["reflection",{"2":{"479":1}}],["reflects",{"2":{"182":1,"2530":1}}],["reflect",{"2":{"90":1,"114":1,"182":1,"199":1,"262":1,"1340":1,"1608":1,"1752":1,"2348":1,"2595":1,"2605":1}}],["refills",{"2":{"689":4}}],["refill",{"2":{"688":1}}],["refine",{"2":{"74":1,"1868":1}}],["ref",{"2":{"638":3,"1563":11,"1565":2}}],["refreshed",{"2":{"2105":1}}],["refreshes",{"2":{"588":1}}],["refreshing",{"2":{"1366":1}}],["refresh",{"2":{"331":1,"588":5,"642":1,"1841":1,"1845":1,"1859":1,"2394":2,"2432":2}}],["refers",{"2":{"1337":1,"2701":1}}],["referencing",{"2":{"1453":1,"1469":1}}],["referenced",{"0":{"532":1},"2":{"1767":1,"1990":1,"2442":1,"2516":1}}],["reference",{"0":{"1563":1,"1708":1,"1709":1,"2191":1,"2710":1},"1":{"2711":1,"2712":1,"2713":1,"2714":1,"2715":1,"2716":1,"2717":1,"2718":1,"2719":1,"2720":1,"2721":1,"2722":1,"2723":1,"2724":1,"2725":1,"2726":1,"2727":1,"2728":1,"2729":1,"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1,"2737":1,"2738":1,"2739":1},"2":{"95":1,"182":1,"191":2,"199":1,"222":1,"453":1,"540":2,"547":2,"638":1,"1264":1,"1340":1,"1369":1,"1375":1,"1383":1,"1483":1,"1563":8,"1565":4,"1696":1,"1708":1,"1829":1,"1834":1,"2337":1,"2363":1,"2393":1,"2607":1,"2655":1,"2764":1}}],["references",{"0":{"1833":1},"1":{"1834":1,"1835":1},"2":{"27":2,"38":1,"64":1,"95":1,"114":1,"133":1,"134":1,"191":4,"211":2,"222":2,"245":1,"266":1,"1861":2,"2516":1}}],["refereed",{"2":{"1129":2}}],["referring",{"2":{"546":1,"682":1}}],["referred",{"2":{"201":1,"1123":1,"1126":1,"2440":1,"2441":1,"2445":1,"2526":1}}],["refer",{"2":{"233":1,"245":1,"446":1,"543":1,"611":1,"626":1,"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1129":1,"1138":1,"1213":1,"1288":1,"1308":1,"1321":1,"1358":1,"1506":1,"1614":1,"1615":2,"1643":1,"1660":1,"1891":1,"1925":1,"1964":1,"2160":1,"2190":1,"2220":1,"2367":1,"2444":1,"2466":1,"2572":1,"2573":1,"2574":1,"2758":1,"2790":1}}],["refs",{"2":{"114":2,"160":1,"2513":1,"2526":2}}],["refactoring",{"0":{"125":1,"169":1,"182":1,"183":1,"184":1,"185":1,"186":1,"188":1,"561":1},"1":{"170":1},"2":{"187":1,"188":1,"191":3,"198":1,"199":1,"222":1,"235":1,"236":1,"244":1,"249":1,"266":1,"341":1,"561":1,"2531":1,"2542":1,"2606":1}}],["refactored",{"2":{"49":1}}],["refactor",{"0":{"17":1,"18":1,"32":1,"33":1,"60":1,"87":1,"263":1},"1":{"34":1,"88":1},"2":{"17":1,"32":1,"49":1,"51":1,"72":1,"75":3,"86":1,"93":1,"94":2,"114":4,"134":2,"145":5,"160":4,"176":4,"190":1,"191":6,"199":5,"211":4,"222":10,"236":3,"249":19,"266":8,"277":8,"2603":1}}],["refactors",{"0":{"29":1,"58":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1},"2":{"16":1,"561":1,"2605":1}}],["reformat",{"2":{"1":1,"114":1}}],["res2",{"2":{"2186":1,"2191":1}}],["res1",{"2":{"2186":1,"2191":1}}],["resd",{"2":{"2144":1}}],["resistant",{"2":{"1362":1,"1363":4,"1366":1}}],["resistance",{"2":{"789":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1092":2,"1363":1,"2158":1}}],["resistors",{"2":{"1273":1,"1508":1,"2155":1,"2158":2}}],["resistor",{"2":{"236":1,"696":2,"786":2,"789":2,"850":2,"854":2,"885":2,"888":2,"919":2,"922":2,"953":2,"956":2,"987":2,"990":2,"1021":2,"1024":2,"1055":2,"1058":2,"1089":2,"1092":2,"1126":3,"1134":1,"1262":2,"1508":2,"2556":3,"2560":1}}],["res",{"2":{"641":2,"1755":3,"2143":9}}],["reschedules",{"2":{"597":1}}],["resynchronize",{"2":{"2516":3,"2607":1}}],["resynchronizing",{"0":{"2514":1,"2516":1},"1":{"2515":1,"2516":1},"2":{"2511":1}}],["resync",{"2":{"502":1,"1313":1,"2713":1,"2745":1}}],["resembles",{"2":{"2653":1}}],["reserves",{"2":{"2585":1}}],["reserved",{"2":{"461":1,"1632":1,"1852":1,"2176":1,"2333":1,"2387":1,"2434":1,"2610":1}}],["reset6",{"2":{"2569":1}}],["resets",{"2":{"505":1,"1443":1,"1445":1,"1479":1,"1860":1,"2181":1,"2199":1,"2395":1,"2396":1,"2569":1,"2611":1,"2615":2}}],["resetting",{"0":{"2647":1},"2":{"230":1,"673":1,"1280":1,"1534":1,"1729":1,"2563":1}}],["reset",{"0":{"141":1,"167":1,"1326":1,"1736":1,"2578":1,"2648":1},"2":{"49":2,"114":2,"141":3,"160":1,"167":2,"176":2,"188":1,"191":4,"199":2,"222":1,"334":2,"335":3,"336":1,"349":1,"361":2,"433":6,"435":3,"592":6,"593":1,"594":1,"624":2,"625":1,"626":2,"1174":2,"1231":1,"1251":1,"1252":1,"1275":1,"1280":3,"1324":1,"1326":1,"1337":2,"1369":3,"1401":2,"1443":1,"1445":1,"1483":1,"1532":2,"1557":1,"1610":2,"1632":1,"1682":1,"1732":1,"1736":1,"1763":1,"1846":5,"1866":2,"1867":2,"1877":1,"1881":1,"1965":1,"1972":1,"1974":1,"1975":2,"1984":1,"2164":4,"2179":1,"2191":2,"2199":2,"2200":5,"2204":1,"2205":3,"2206":2,"2207":3,"2208":3,"2209":4,"2213":1,"2268":3,"2271":3,"2273":2,"2274":2,"2275":1,"2276":2,"2278":5,"2280":5,"2281":2,"2282":2,"2287":3,"2288":4,"2301":1,"2317":2,"2367":1,"2369":4,"2371":5,"2373":4,"2375":1,"2377":1,"2379":1,"2383":1,"2392":3,"2396":1,"2489":2,"2492":1,"2516":1,"2529":1,"2567":1,"2569":2,"2578":5,"2580":1,"2605":1,"2615":11,"2647":2,"2648":2,"2649":3,"2711":1,"2726":1}}],["responds",{"2":{"1927":1}}],["responding",{"2":{"675":1}}],["respond",{"2":{"551":1,"726":1,"1501":1,"1768":1,"1992":1}}],["response",{"2":{"703":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":1,"727":1,"1366":3,"1927":10,"2353":1}}],["responses",{"2":{"522":1,"2589":1}}],["responsiveness",{"2":{"1366":1,"1768":2,"1952":1,"1992":2,"2200":1,"2623":1,"2727":1,"2734":1}}],["responsive",{"2":{"355":1,"587":1,"1992":1}}],["responsibility",{"2":{"341":1}}],["responsible",{"2":{"304":1,"559":1,"562":1,"1262":1,"2200":1,"2456":1,"2562":1,"2623":1,"2783":3}}],["respected",{"2":{"2616":1}}],["respecting",{"2":{"2241":1}}],["respectively",{"2":{"589":1,"610":1,"625":1,"734":1,"760":1,"789":1,"792":1,"822":1,"854":1,"857":1,"888":1,"891":1,"922":1,"925":1,"956":1,"959":1,"990":1,"993":1,"1024":1,"1027":1,"1058":1,"1061":1,"1092":1,"1095":1,"1148":1,"1185":1,"1448":1,"1569":1,"1671":1,"1841":1,"2158":1,"2220":1,"2221":1,"2444":1,"2557":1,"2654":1,"2792":1}}],["respective",{"2":{"50":1,"222":1,"233":1,"234":1,"510":1,"701":1,"1127":1,"1130":1,"1264":1,"1398":1,"1762":1,"1843":3,"1983":1,"2113":1,"2221":1,"2440":1,"2505":1,"2613":1,"2616":1,"2632":1,"2640":1}}],["respect",{"2":{"14":1,"98":1,"176":1,"211":1,"222":1,"562":1,"2588":1,"2615":1,"2637":1}}],["resu",{"2":{"2144":1}}],["resume",{"0":{"1335":1},"2":{"222":1,"263":2,"1335":1}}],["results",{"0":{"316":1},"2":{"99":1,"103":1,"126":1,"236":1,"263":1,"303":2,"315":1,"317":1,"374":1,"457":1,"519":1,"1472":1,"1865":1,"2264":1,"2778":1,"2787":2}}],["resulting",{"2":{"25":1,"119":1,"312":1,"521":1,"527":1,"530":1,"1545":1,"1565":1,"1597":1,"2291":1,"2486":1}}],["result",{"2":{"3":2,"8":1,"15":2,"87":1,"141":1,"166":1,"182":1,"315":2,"316":1,"481":1,"598":1,"641":4,"675":1,"680":2,"726":2,"1172":1,"1326":1,"1377":1,"1416":1,"1442":1,"1443":1,"1449":1,"1468":1,"1469":1,"1555":1,"1565":1,"1611":1,"1865":1,"1946":1,"2199":1,"2207":1,"2487":1,"2615":2,"2616":2,"2620":1,"2758":1,"2777":2}}],["resort",{"2":{"1865":1,"2221":1}}],["resonance",{"2":{"1615":2}}],["resonant",{"2":{"1615":1}}],["resources",{"0":{"2172":1,"2455":1,"2458":1,"2517":1,"2518":1,"2519":1,"2520":1,"2521":1},"1":{"2518":1,"2519":1,"2520":1,"2521":1},"2":{"1363":1,"2189":1,"2437":1,"2448":1,"2450":1,"2458":2,"2496":1,"2517":1,"2529":1,"2582":1,"2585":1,"2616":2,"2621":1,"2752":1,"2789":1}}],["resource",{"2":{"123":1,"516":1,"689":1,"1592":1,"2582":1,"2624":1,"2631":1,"2743":1}}],["resolving",{"0":{"2512":1},"1":{"2513":1},"2":{"203":1,"2303":2,"2511":1,"2603":2}}],["resolved",{"2":{"2513":1}}],["resolves",{"2":{"1553":1,"1560":1}}],["resolve",{"2":{"95":1,"191":3,"236":2,"511":1,"554":1,"2513":1}}],["resolution",{"2":{"134":1,"183":2,"211":2,"641":3,"1258":1,"1595":2,"1596":2,"1670":3,"1671":1,"1845":1,"1899":3,"1900":1,"1939":8,"2143":2,"2144":5,"2145":12,"2723":1}}],["resolutions",{"0":{"2143":1},"2":{"63":1,"1595":1,"1596":4,"1939":1,"2615":1}}],["rests",{"2":{"2704":1}}],["resting",{"2":{"1671":1,"1678":1,"1686":1,"2312":1}}],["restricted",{"2":{"2573":1}}],["restriction",{"2":{"2565":1}}],["restrictions",{"2":{"2564":1,"2588":1}}],["restrictive",{"2":{"1478":1}}],["restructuring",{"2":{"133":1,"560":1}}],["restructure",{"0":{"113":1,"133":1},"2":{"113":1,"176":2,"466":1}}],["rest",{"2":{"243":1,"462":1,"679":1,"680":1,"681":1,"1671":2,"1722":3,"1986":1,"2298":1,"2308":1,"2312":1,"2316":1,"2366":1,"2432":1,"2497":1,"2527":1,"2540":1,"2722":1,"2791":2}}],["restarted",{"2":{"1860":1}}],["restart",{"2":{"199":2,"626":1,"1276":1,"1441":1,"2538":2,"2549":1,"2551":1}}],["restarting",{"2":{"191":1}}],["restoration",{"2":{"160":1}}],["restored",{"2":{"2273":1}}],["restore",{"2":{"62":1,"199":1,"211":2,"222":3,"352":1,"1280":1,"1340":1}}],["rev7",{"2":{"277":1}}],["rev6",{"0":{"1280":1},"2":{"211":1,"331":2,"370":2,"393":2,"394":2,"395":1,"396":1,"1280":1,"1442":1,"1477":1,"2291":2}}],["reva",{"2":{"154":2}}],["revamp",{"2":{"74":1,"222":1}}],["reviewing",{"2":{"554":1,"2602":1,"2608":1}}],["reviewed",{"2":{"554":1}}],["reviewer",{"2":{"554":1}}],["reviews",{"2":{"341":1,"2605":1,"2608":2}}],["review",{"0":{"2478":1,"2608":1},"2":{"341":2,"355":1,"1300":1,"2478":2,"2603":1,"2605":1,"2606":1}}],["revisit",{"2":{"480":1,"482":1}}],["revision",{"2":{"10":2,"17":1,"60":1,"86":1,"114":1,"236":3,"383":1,"568":3,"573":1,"577":1,"579":1,"583":1,"586":1,"587":1,"591":1,"595":1,"1370":1,"1382":1,"1388":1,"1754":1,"2300":2,"2334":1}}],["revisions",{"2":{"10":1,"58":1,"114":1,"145":1,"249":1,"262":1,"277":1,"349":1,"498":1,"502":1,"560":2,"678":1,"2334":2,"2562":1}}],["revised",{"2":{"236":1}}],["reviung61",{"2":{"154":2}}],["reviung5",{"2":{"154":2}}],["reviung53",{"2":{"154":2}}],["reviung41",{"2":{"154":2}}],["reviung39",{"2":{"154":2}}],["reviung34",{"2":{"154":2}}],["reviung33",{"2":{"154":2}}],["reviung",{"2":{"154":7,"160":2}}],["rev0",{"2":{"154":2}}],["rev",{"2":{"114":1,"134":3,"211":6,"226":2,"249":1,"253":1,"1925":1,"2513":4}}],["rev5",{"2":{"114":1,"211":1,"378":1,"2464":4,"2491":2}}],["rev4",{"2":{"114":1,"134":1,"222":1,"226":1,"370":2,"414":3,"415":2,"425":1,"426":2,"624":3,"1324":3,"1388":2,"2269":2,"2276":2,"2300":5,"2460":3}}],["reversed",{"2":{"2193":1}}],["reverses",{"2":{"1911":2}}],["reverse",{"0":{"1791":1,"1792":1,"2018":1,"2019":1,"2229":1},"2":{"191":1,"1339":1,"1439":1,"1445":1,"1475":1,"1765":1,"1903":1,"1910":1,"1911":2,"1912":1,"1986":3,"2072":2,"2090":2,"2097":1,"2222":1,"2396":1,"2408":1,"2415":2,"2416":3,"2423":1}}],["reversing",{"2":{"13":1,"2513":1}}],["reverted",{"2":{"176":1}}],["revert",{"2":{"114":2,"134":2,"145":1,"160":1,"176":2,"191":2,"199":5,"206":1,"211":1,"222":3,"236":1,"2104":1,"2105":1,"2107":1,"2767":1}}],["rev3",{"2":{"57":2,"86":4,"102":1,"134":1,"154":2,"191":1,"241":4,"253":1,"266":1,"375":2,"395":1,"396":1,"624":1,"1280":1,"2300":1,"2332":2,"2333":1,"2334":3,"2461":1,"2508":6}}],["rev1+rev2",{"2":{"72":1}}],["rev1",{"2":{"45":1,"55":4,"58":2,"67":3,"86":5,"102":5,"122":3,"144":2,"154":34,"160":1,"191":1,"207":2,"211":5,"222":1,"226":2,"236":2,"241":12,"249":1,"253":14,"266":2,"624":1,"1349":1,"2164":3,"2334":2}}],["revs",{"2":{"45":3}}],["rev2",{"2":{"45":1,"55":29,"57":2,"67":3,"70":24,"72":1,"86":2,"102":6,"114":3,"145":1,"154":12,"176":3,"211":2,"222":1,"226":1,"236":3,"241":6,"277":1,"313":1,"381":1,"624":1,"2332":1,"2334":2}}],["revx",{"2":{"32":1}}],["reliability",{"2":{"2221":1}}],["reliably",{"2":{"2209":1,"2221":1}}],["relies",{"2":{"2479":1}}],["relieves",{"2":{"2190":1}}],["relied",{"2":{"1862":1}}],["relying",{"2":{"1721":1,"1767":1,"1990":1}}],["rely",{"2":{"222":1,"467":1,"2480":1,"2493":1,"2623":1}}],["relay",{"2":{"1611":2}}],["relaxed",{"2":{"505":1,"1557":1,"1558":1,"2603":2}}],["relax",{"2":{"199":1}}],["relates",{"2":{"2705":1}}],["related",{"2":{"2":1,"16":1,"124":1,"131":1,"163":1,"175":1,"187":1,"188":1,"191":2,"199":1,"236":1,"265":2,"282":3,"341":1,"397":1,"578":1,"609":1,"1299":1,"1335":1,"1377":1,"1378":1,"2200":1,"2344":1,"2387":1,"2481":1,"2527":1,"2549":1,"2595":1,"2605":3,"2616":2,"2621":1,"2744":1}}],["relation",{"2":{"2725":1}}],["relating",{"2":{"215":1,"559":1}}],["relatively",{"2":{"305":1,"1478":1,"2389":1,"2525":1}}],["relative",{"0":{"1946":1},"2":{"160":1,"176":1,"1437":1,"1488":1,"1569":1,"1943":2,"2386":1,"2460":1,"2485":1,"2508":1,"2634":1}}],["relatives",{"2":{"142":1}}],["reload",{"0":{"1811":1,"2056":1},"2":{"160":1,"402":1,"1276":2,"1811":1,"2056":1,"2090":2}}],["relocalize",{"2":{"114":1}}],["relocations",{"2":{"238":1}}],["relocating",{"0":{"43":1},"2":{"236":1}}],["relocate",{"2":{"113":1,"114":2,"133":3,"134":3,"160":2,"188":1,"191":1,"199":1,"211":1,"222":1,"236":1,"277":5}}],["relocated",{"0":{"41":1,"54":1},"1":{"42":1,"43":1,"55":1,"56":1,"57":1,"58":1},"2":{"213":1}}],["releasing",{"2":{"505":1,"707":1,"1468":1,"1561":1,"1713":1,"1845":1,"2117":1,"2489":1,"2529":2,"2605":1,"2701":1,"2774":1,"2777":3}}],["releases",{"0":{"1560":1},"2":{"689":1,"1381":1,"1398":2,"1560":1,"2206":1,"2312":1,"2616":2,"2621":1,"2682":1}}],["released",{"2":{"43":1,"57":1,"515":1,"571":1,"1396":4,"1397":2,"1402":1,"1448":2,"1560":1,"1561":1,"1620":2,"1689":1,"1709":1,"1711":1,"1829":1,"1845":1,"1901":1,"1958":1,"1960":1,"2191":1,"2199":3,"2200":1,"2209":2,"2353":1,"2529":5,"2680":1,"2681":1,"2693":1,"2730":1,"2768":3,"2769":1,"2773":1,"2774":2,"2776":1,"2787":1}}],["release",{"2":{"23":1,"56":1,"111":1,"191":1,"213":1,"222":1,"238":1,"249":1,"251":1,"266":1,"268":1,"277":1,"330":1,"340":1,"504":2,"505":1,"572":2,"707":1,"1133":1,"1312":1,"1321":2,"1336":1,"1340":3,"1356":1,"1369":2,"1397":1,"1398":2,"1405":1,"1467":2,"1468":3,"1479":1,"1537":1,"1559":1,"1560":6,"1610":1,"1683":1,"1712":1,"1713":1,"1840":1,"1878":1,"1882":1,"1965":1,"2150":1,"2190":1,"2199":4,"2221":1,"2235":2,"2236":2,"2470":1,"2487":1,"2498":1,"2507":1,"2774":2,"2775":1,"2776":1}}],["relevant",{"2":{"7":1,"31":1,"132":1,"580":1,"621":1,"1844":1,"2311":1,"2562":1,"2563":4,"2603":1,"2606":1,"2613":1,"2792":1}}],["repairing",{"2":{"2312":1}}],["reparenting",{"2":{"479":1}}],["repurposing",{"2":{"1758":1}}],["repetition",{"2":{"1918":1}}],["repetitively",{"2":{"1447":1}}],["repetitive",{"2":{"1390":1}}],["repeating",{"0":{"1910":1},"2":{"1713":1,"1907":1,"1912":1,"1914":2,"1915":1,"1916":1,"1918":1,"1919":5,"1920":3,"2631":1,"2639":1}}],["repeat",{"0":{"202":1,"1461":1,"1462":1,"1713":1,"1907":1,"1908":1,"2420":1},"1":{"1908":1,"1909":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1,"1918":1,"1919":1,"1920":1,"1921":1},"2":{"195":3,"202":6,"211":3,"231":1,"331":1,"505":3,"597":2,"627":1,"1448":9,"1713":6,"1845":1,"1907":7,"1908":2,"1909":3,"1910":9,"1911":3,"1912":4,"1913":4,"1915":2,"1918":8,"1919":8,"1920":2,"1921":1,"2082":3,"2420":4,"2776":5}}],["repeatedly",{"2":{"1324":1,"1372":1,"2089":1,"2194":1}}],["repeated",{"0":{"1918":1,"1919":1},"2":{"64":1,"93":1,"191":1,"597":2,"628":1,"1362":1,"1713":1,"1914":2,"1915":1,"1917":1,"1918":4,"1919":1,"1920":4,"1921":1,"2639":2,"2776":1}}],["repeats",{"2":{"63":1,"202":1}}],["replays",{"2":{"1591":1}}],["replay",{"0":{"1591":1},"1":{"1592":1,"1593":1,"1594":1},"2":{"1591":5,"2402":2,"2513":1}}],["replacing",{"0":{"27":1},"2":{"508":1,"515":2,"571":1,"2220":1,"2477":1}}],["replacement",{"0":{"566":1,"1697":1,"1698":1,"1699":1,"1700":1},"2":{"172":1,"189":1,"204":1,"240":1,"1347":1,"1484":1,"1488":1,"1697":1,"1703":1,"1706":1,"1708":5,"1711":2,"1712":1,"2103":1,"2447":1,"2563":1,"2564":1,"2565":1,"2566":1,"2584":1}}],["replacements",{"2":{"172":1,"2751":1}}],["replaced",{"2":{"7":1,"8":1,"27":1,"169":1,"184":1,"195":3,"254":1,"485":1,"627":1,"1340":1,"1420":1,"1954":1,"2318":1,"2605":1,"2759":1}}],["replace",{"2":{"5":1,"7":1,"31":4,"34":1,"50":1,"172":1,"176":1,"191":1,"199":2,"211":1,"240":4,"266":1,"331":1,"510":1,"563":1,"1291":1,"1337":1,"1372":2,"1396":1,"1417":1,"1422":2,"1484":2,"1488":1,"1534":2,"1602":1,"1693":1,"1955":1,"2147":4,"2301":2,"2476":1,"2477":1,"2767":2}}],["replicate",{"2":{"1986":1,"2072":1}}],["replicates",{"2":{"1586":1,"1597":1}}],["replied",{"2":{"352":1}}],["replugging",{"2":{"1440":1,"2288":1}}],["replug",{"2":{"626":1,"1307":1}}],["reply",{"2":{"324":1}}],["repress",{"0":{"1561":1},"2":{"1561":4}}],["representing",{"0":{"1544":1},"2":{"1463":1,"1464":1,"1465":1,"1477":1,"1956":4,"2341":1,"2357":1,"2445":1,"2705":1}}],["represented",{"2":{"701":1,"2616":1,"2725":1}}],["represents",{"2":{"262":1,"538":1,"1473":1,"1489":1,"1763":5,"1916":1,"1956":1,"1984":5,"2185":1,"2190":1,"2300":1,"2350":2,"2513":1,"2654":1,"2679":1,"2699":1,"2796":1}}],["representation",{"2":{"199":1,"519":1,"1337":1,"1340":1,"2337":1,"2655":1,"2710":1,"2784":1}}],["represent",{"2":{"145":1,"436":1,"1475":1,"1544":1,"1956":1,"2350":2,"2387":1,"2513":1,"2654":1}}],["reproducing",{"2":{"1427":1}}],["reproduce",{"2":{"263":1}}],["reprimanded",{"2":{"562":1}}],["rep",{"2":{"202":1,"211":1,"1908":1,"1909":1,"2420":1}}],["reposition",{"2":{"1722":1}}],["repositories",{"2":{"26":1,"1383":2,"2505":1,"2603":1}}],["repository",{"0":{"2472":1,"2482":1},"2":{"21":1,"126":1,"163":1,"182":2,"224":1,"228":3,"233":1,"241":1,"253":1,"265":4,"268":3,"270":1,"275":1,"337":1,"347":1,"349":2,"352":1,"399":1,"517":1,"529":3,"533":1,"535":1,"554":5,"1302":1,"1413":1,"2291":1,"2385":1,"2467":2,"2468":1,"2472":1,"2476":1,"2478":1,"2479":1,"2480":3,"2482":2,"2484":4,"2485":1,"2487":2,"2502":1,"2511":1,"2514":1,"2516":5,"2526":3,"2540":1,"2552":3,"2595":1,"2603":1,"2604":1,"2605":4,"2608":1,"2758":2,"2759":2}}],["reported",{"2":{"1335":1,"1363":1,"1472":1,"1670":1,"2191":1,"2392":1,"2595":1,"2796":1}}],["reporting",{"2":{"505":1,"1363":1,"1899":2,"2692":1}}],["reports",{"0":{"1956":1},"1":{"1957":1,"1958":1,"1959":1,"1960":1,"1961":1,"1962":1,"1963":1},"2":{"160":1,"175":2,"176":2,"222":1,"505":2,"549":1,"587":1,"627":1,"1905":1,"1925":4,"1943":2,"1948":1,"1952":2,"1955":2,"1956":2,"1960":1,"1963":1,"2182":1,"2688":1,"2738":3}}],["report",{"0":{"1887":1,"1889":2},"1":{"1888":1,"1890":2},"2":{"50":4,"74":1,"114":2,"145":3,"190":1,"191":6,"199":3,"211":1,"236":3,"304":1,"376":1,"505":1,"515":1,"1315":2,"1321":2,"1337":2,"1470":1,"1471":2,"1572":1,"1576":1,"1577":1,"1578":1,"1579":1,"1580":1,"1581":1,"1582":1,"1583":1,"1679":1,"1680":1,"1682":1,"1693":1,"1711":3,"1712":3,"1757":1,"1874":1,"1879":1,"1881":1,"1886":1,"1887":1,"1889":1,"1890":1,"1906":2,"1925":2,"1926":1,"1927":13,"1929":1,"1931":1,"1950":15,"1951":5,"1952":4,"1953":2,"1954":18,"1955":18,"1956":16,"1958":5,"1959":11,"1960":12,"1961":1,"1962":10,"1963":13,"1980":4,"1981":4,"2163":1,"2365":1,"2397":2,"2505":1,"2699":1}}],["repo",{"0":{"6":1},"2":{"6":1,"22":1,"77":1,"360":1,"370":1,"389":1,"390":1,"539":1,"556":1,"1383":1,"1435":1,"2152":1,"2164":1,"2276":1,"2342":2,"2513":2,"2526":6,"2527":1,"2605":1}}],["q=is",{"2":{"2605":1}}],["ql",{"2":{"2209":14}}],["qn",{"2":{"358":3,"359":3,"360":2,"361":2}}],["qc60",{"2":{"253":2}}],["q9",{"2":{"249":1}}],["q8",{"2":{"249":1}}],["q7",{"2":{"249":1}}],["q4z",{"2":{"241":2}}],["q4",{"2":{"226":2,"236":1}}],["q0",{"2":{"211":2,"226":4,"236":1}}],["qol",{"2":{"211":1}}],["q5",{"2":{"191":1,"249":1}}],["q6",{"2":{"191":1}}],["q3",{"2":{"191":1,"236":1}}],["qff",{"0":{"2639":1},"2":{"191":1,"266":1,"409":1,"410":1,"2614":6,"2616":6,"2624":2,"2626":8,"2627":12,"2628":2,"2629":1,"2630":1,"2639":1}}],["qgfimagefile",{"2":{"249":1}}],["qgf",{"0":{"2639":1},"2":{"191":1,"266":1,"408":1,"2614":4,"2616":6,"2625":1,"2626":4,"2627":2,"2628":1,"2629":1,"2630":1,"2631":2,"2632":5,"2633":10,"2634":3,"2635":7,"2636":3,"2637":6,"2638":3,"2639":1}}],["q2m3ueu",{"2":{"624":1}}],["q2",{"2":{"176":1,"236":1}}],["q",{"2":{"160":1,"191":1,"266":1,"277":2,"313":1,"380":1,"404":1,"530":2,"1392":1,"1548":1,"1565":1,"2207":1,"2394":3,"2425":3,"2440":1,"2446":1,"2552":1,"2742":3}}],["qaz",{"2":{"154":2}}],["qpocket",{"2":{"160":2}}],["qpockets",{"2":{"154":4}}],["qp",{"2":{"145":1,"176":1,"191":2,"199":1,"211":1,"222":1,"236":4,"249":2,"2615":32,"2616":104,"2620":6,"2621":2,"2623":1}}],["qk100",{"2":{"266":1}}],["qk21",{"2":{"236":1}}],["qk",{"0":{"141":1,"167":1},"2":{"120":8,"141":2,"167":2,"176":3,"188":4,"189":1,"191":8,"194":2,"199":5,"202":6,"231":26,"266":1,"277":1,"313":1,"317":3,"504":1,"530":2,"534":1,"592":2,"626":1,"1307":1,"1324":1,"1381":1,"1391":4,"1392":1,"1435":4,"1436":1,"1439":2,"1440":4,"1443":6,"1445":15,"1471":6,"1480":3,"1483":22,"1493":7,"1531":3,"1537":1,"1549":3,"1555":8,"1591":5,"1602":1,"1603":2,"1604":2,"1610":13,"1673":32,"1689":1,"1690":1,"1691":1,"1707":3,"1717":1,"1724":1,"1725":2,"1765":9,"1831":144,"1839":19,"1872":32,"1908":4,"1909":4,"2072":11,"2082":2,"2107":4,"2144":9,"2148":7,"2187":3,"2190":2,"2194":7,"2206":1,"2209":2,"2211":2,"2222":8,"2266":16,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":1,"2395":7,"2396":15,"2397":6,"2398":3,"2399":7,"2400":3,"2401":1,"2402":5,"2403":2,"2404":32,"2405":1,"2407":1,"2408":9,"2409":35,"2410":144,"2411":19,"2414":3,"2415":11,"2418":3,"2419":32,"2420":4,"2421":7,"2422":7,"2423":8,"2435":35,"2563":1,"2604":1,"2611":8,"2647":2,"2648":2,"2767":3}}],["q11",{"2":{"249":1}}],["q1v1",{"2":{"226":4,"236":1,"266":1}}],["q1",{"2":{"114":1,"191":1,"226":4}}],["qw",{"2":{"1548":4,"1565":1}}],["qwertz",{"0":{"2697":1}}],["qwertlekeys",{"2":{"211":1}}],["qwertyydox",{"2":{"253":2}}],["qwerty",{"0":{"2183":1,"2696":1},"2":{"92":1,"176":2,"257":1,"258":1,"259":2,"572":1,"1369":1,"1372":1,"1375":1,"1376":1,"1392":2,"1399":1,"1435":1,"1562":1,"1563":3,"1565":2,"1851":2,"1912":1,"2175":2,"2183":1,"2192":1,"2356":1,"2357":1,"2358":4,"2441":1,"2445":1,"2646":2,"2742":4}}],["qwiic",{"0":{"128":1},"2":{"74":2,"128":2,"134":6}}],["quokka",{"2":{"249":1}}],["quote",{"2":{"1622":1,"2394":1,"2417":1,"2427":1,"2438":1}}],["quoted",{"2":{"145":1,"612":1}}],["quot",{"0":{"1321":4,"1495":2,"1543":2,"1921":2,"2204":2,"2388":2,"2511":2},"2":{"5":2,"14":2,"75":2,"92":2,"110":8,"114":4,"119":10,"134":4,"137":2,"145":6,"174":2,"175":2,"176":5,"182":4,"187":2,"189":2,"190":2,"191":8,"194":2,"199":6,"201":16,"202":2,"210":2,"211":14,"215":2,"218":2,"222":6,"230":2,"234":2,"236":8,"245":4,"249":10,"263":6,"266":6,"277":2,"282":6,"313":1,"317":4,"341":2,"350":4,"352":2,"374":2,"429":2,"430":2,"457":2,"462":6,"466":2,"502":6,"505":2,"523":2,"524":2,"530":2,"554":6,"557":2,"574":2,"589":2,"597":2,"598":2,"611":4,"612":2,"617":2,"638":2,"639":2,"671":2,"678":2,"679":2,"680":2,"681":2,"683":2,"688":2,"726":2,"852":4,"1023":4,"1057":4,"1127":4,"1129":2,"1130":4,"1180":2,"1249":2,"1251":4,"1252":8,"1256":2,"1261":4,"1287":8,"1291":2,"1307":2,"1309":4,"1310":2,"1321":2,"1324":2,"1362":2,"1366":4,"1368":2,"1369":4,"1375":4,"1377":2,"1383":2,"1388":2,"1394":66,"1396":2,"1398":14,"1405":2,"1421":4,"1422":4,"1428":2,"1434":2,"1436":6,"1439":2,"1453":2,"1454":1,"1456":1,"1465":1,"1484":2,"1485":2,"1494":4,"1495":2,"1500":2,"1532":2,"1536":4,"1538":2,"1540":8,"1543":6,"1545":2,"1548":2,"1559":2,"1572":2,"1577":2,"1578":2,"1597":4,"1605":2,"1611":6,"1648":2,"1723":2,"1724":6,"1753":2,"1855":2,"1868":2,"1901":2,"1907":4,"1910":6,"1911":2,"1912":4,"1913":14,"1914":2,"1916":4,"1919":2,"1921":2,"1927":6,"1946":4,"1956":2,"1988":2,"1995":2,"2069":2,"2072":2,"2076":12,"2116":2,"2152":2,"2164":2,"2169":2,"2179":2,"2192":2,"2207":2,"2209":5,"2210":14,"2211":12,"2212":8,"2213":18,"2215":4,"2220":6,"2221":2,"2269":2,"2276":2,"2297":2,"2303":10,"2307":2,"2311":2,"2317":6,"2320":8,"2365":2,"2370":2,"2378":2,"2386":2,"2388":2,"2394":2,"2415":2,"2417":1,"2427":2,"2436":2,"2437":6,"2438":1,"2445":8,"2446":5,"2450":6,"2452":3,"2463":2,"2478":6,"2491":4,"2499":4,"2506":2,"2507":2,"2515":2,"2526":4,"2527":2,"2529":8,"2552":14,"2582":2,"2584":2,"2589":2,"2598":2,"2603":6,"2604":2,"2605":15,"2606":2,"2614":2,"2615":2,"2616":4,"2620":2,"2624":2,"2631":4,"2639":2,"2645":2,"2654":6,"2656":2,"2711":16,"2712":4,"2716":2,"2722":2,"2725":18,"2727":10,"2728":18,"2731":2,"2732":4,"2733":6,"2734":12,"2735":2,"2736":6,"2737":2,"2738":10,"2739":4,"2766":2,"2769":4,"2779":2,"2783":2,"2789":4,"2790":2,"2791":2,"2792":1,"2796":2}}],["quirky",{"2":{"2615":1}}],["quit",{"2":{"1381":1}}],["quite",{"2":{"119":1,"401":1,"1302":1,"1473":1,"1693":1,"1863":1,"2146":1,"2207":1,"2267":1,"2742":1,"2789":1,"2791":2,"2796":1}}],["quickly",{"2":{"1620":2,"1842":1,"1845":1,"2076":1,"2207":2,"2268":1,"2271":1,"2273":1,"2274":1,"2276":1,"2311":2,"2312":2,"2383":1,"2541":1,"2766":1}}],["quicker",{"2":{"1453":1,"2312":1,"2603":2}}],["quickest",{"2":{"124":1}}],["quickstart",{"0":{"1272":1}}],["quick",{"0":{"195":1,"2289":1,"2776":1},"1":{"2290":1,"2291":1,"2292":1,"2293":1},"2":{"112":1,"114":1,"195":8,"199":3,"505":4,"554":1,"1453":1,"2078":1,"2209":1,"2318":1,"2574":1,"2753":1,"2776":13}}],["quad",{"0":{"2207":1},"2":{"2207":1}}],["quadratic",{"2":{"1840":1,"1842":1,"1845":1}}],["quality",{"2":{"688":7,"1302":1,"2758":1}}],["quark",{"2":{"154":2}}],["quarter",{"2":{"133":1,"189":1}}],["quackfire",{"2":{"57":2}}],["quantum",{"0":{"138":1,"232":1,"248":1,"254":1,"560":1,"2360":1,"2395":1,"2610":1,"2612":1,"2613":1,"2614":1,"2615":1,"2616":1,"2617":1,"2619":1,"2620":1,"2621":1},"1":{"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2611":1,"2613":1,"2614":1,"2615":1,"2616":1,"2618":1,"2619":1,"2620":2,"2621":2,"2622":1,"2623":1},"2":{"1":1,"74":1,"75":2,"94":1,"113":2,"114":7,"133":1,"134":1,"138":5,"143":1,"145":3,"160":3,"176":2,"191":2,"199":7,"203":2,"211":3,"222":9,"231":1,"232":5,"234":2,"236":1,"248":3,"249":1,"266":4,"404":1,"408":1,"409":1,"410":1,"515":1,"568":1,"1294":1,"1304":1,"1367":1,"1369":1,"1420":2,"1422":1,"1435":7,"1436":2,"1439":1,"1443":1,"1482":2,"1483":1,"1767":1,"1835":7,"1950":1,"1951":1,"1990":1,"2074":1,"2200":2,"2295":1,"2301":3,"2361":1,"2395":1,"2445":1,"2463":1,"2540":1,"2605":2,"2610":3,"2612":20,"2613":12,"2614":4,"2615":27,"2616":4,"2617":2,"2618":4,"2620":1,"2624":1,"2631":1,"2646":1,"2647":1,"2679":1,"2684":1,"2742":1,"2780":1,"2782":1,"2783":1,"2788":4,"2792":1}}],["queried",{"2":{"1475":1}}],["query",{"0":{"2095":1},"2":{"132":1,"134":1,"290":1}}],["queued",{"0":{"523":1},"2":{"263":1,"315":1,"522":1}}],["queue",{"2":{"191":1,"303":1,"315":1,"526":1,"2616":1}}],["ques",{"2":{"134":1,"191":1,"2417":1,"2438":1}}],["questioned",{"2":{"2605":1}}],["questions",{"0":{"1274":1,"1293":1},"1":{"1275":1,"1276":1,"1277":1,"1278":1,"1279":1,"1280":1,"1294":1,"1295":1,"1296":1,"1297":1,"1298":1,"1299":1,"1300":1,"1301":1,"1302":1},"2":{"355":1,"551":4,"554":1,"559":1,"1274":1,"1281":1,"1301":1,"1303":1}}],["question",{"0":{"551":1},"2":{"48":1,"191":1,"529":1,"551":2,"559":1,"1508":1,"2417":1,"2438":1,"2709":2}}],["quefrency",{"2":{"45":1,"114":1,"2169":1}}],["qmkuser",{"2":{"2516":2}}],["qmkurl",{"2":{"1396":4,"2605":1}}],["qmklayer",{"2":{"1483":2}}],["qmkbest",{"2":{"1396":9,"1483":2,"2605":1}}],["qmk+current",{"2":{"49":1}}],["qmk",{"0":{"0":1,"9":1,"19":1,"26":1,"39":1,"51":1,"52":1,"65":1,"66":1,"70":1,"76":1,"78":1,"82":1,"83":1,"95":1,"96":1,"115":1,"135":1,"146":1,"161":1,"164":1,"177":1,"192":1,"200":1,"212":1,"223":1,"237":1,"250":1,"267":1,"302":1,"311":1,"318":1,"362":1,"368":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"416":1,"427":1,"448":1,"496":1,"497":1,"517":1,"522":1,"527":1,"528":1,"536":1,"1284":1,"1285":1,"1294":1,"1301":1,"1302":1,"1835":1,"2182":1,"2188":1,"2269":1,"2276":1,"2295":1,"2303":1,"2323":1,"2331":1,"2332":1,"2361":1,"2456":1,"2466":1,"2467":1,"2480":1,"2481":1,"2490":1,"2491":1,"2495":1,"2507":1,"2510":1,"2518":1,"2531":1,"2539":1,"2542":1,"2550":1,"2592":1,"2611":1,"2624":1,"2631":1,"2639":1,"2652":1,"2660":1,"2732":1,"2761":1,"2781":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"319":1,"320":1,"321":1,"363":1,"364":1,"365":1,"366":1,"367":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"449":1,"450":1,"451":1,"452":1,"497":1,"498":1,"499":1,"500":1,"523":1,"524":1,"525":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"2183":1,"2184":1,"2185":1,"2186":1,"2187":1,"2188":1,"2189":1,"2190":1,"2191":1,"2296":1,"2297":1,"2298":1,"2332":1,"2333":1,"2334":1,"2335":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2341":1,"2342":1,"2343":1,"2344":1,"2345":1,"2346":1,"2347":1,"2348":1,"2349":1,"2457":1,"2458":1,"2468":1,"2469":1,"2470":1,"2471":1,"2472":1,"2473":1,"2474":1,"2475":1,"2476":1,"2477":1,"2478":1,"2479":1,"2481":1,"2482":1,"2483":1,"2484":1,"2485":1,"2486":1,"2487":1,"2491":1,"2492":1,"2496":1,"2497":1,"2498":1,"2499":1,"2500":1,"2501":1,"2502":1,"2503":1,"2504":1,"2505":1,"2506":1,"2507":1,"2508":1,"2511":1,"2540":1,"2541":1,"2551":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2600":1,"2601":1,"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1,"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1,"2670":1,"2671":1,"2672":1,"2673":1,"2674":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":1,"2691":1,"2692":1,"2693":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2699":1,"2700":1,"2701":1,"2702":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2708":1,"2782":1,"2783":1,"2784":1,"2785":1,"2786":1,"2787":1,"2788":1},"2":{"0":3,"1":1,"2":2,"6":1,"9":3,"10":2,"11":1,"12":1,"19":3,"21":4,"23":2,"24":3,"26":1,"38":2,"39":3,"49":2,"50":2,"51":1,"52":3,"65":1,"67":1,"69":2,"70":9,"75":2,"76":1,"82":2,"83":2,"86":2,"87":1,"93":1,"94":2,"95":4,"99":1,"100":1,"102":1,"103":1,"109":1,"110":1,"111":2,"112":3,"113":1,"114":5,"116":4,"118":1,"119":2,"120":3,"122":1,"124":1,"126":1,"128":2,"130":2,"131":2,"132":2,"133":2,"134":5,"137":2,"138":2,"139":1,"141":2,"143":7,"144":1,"145":2,"154":1,"156":1,"157":1,"163":5,"164":4,"166":1,"167":1,"168":1,"169":1,"172":3,"173":9,"174":2,"176":3,"179":1,"181":1,"182":2,"184":1,"189":3,"195":1,"196":1,"197":1,"199":6,"201":3,"202":1,"209":1,"211":10,"213":3,"224":3,"228":4,"230":1,"236":6,"238":1,"240":6,"243":3,"244":1,"249":6,"251":2,"254":1,"262":1,"263":3,"265":5,"266":3,"268":4,"273":3,"275":3,"276":3,"278":1,"279":1,"282":3,"291":1,"292":3,"302":1,"303":1,"304":2,"310":1,"311":2,"313":1,"314":1,"315":1,"317":5,"318":3,"320":1,"331":5,"335":1,"337":5,"341":4,"343":2,"344":2,"345":2,"346":1,"347":3,"349":8,"350":2,"351":1,"352":9,"356":1,"358":4,"359":1,"360":3,"361":4,"363":3,"364":2,"365":8,"366":7,"367":3,"370":18,"371":6,"372":3,"373":3,"374":4,"375":7,"376":4,"377":1,"378":5,"379":2,"380":3,"381":2,"382":2,"383":1,"384":1,"385":1,"386":1,"387":2,"388":4,"389":3,"390":3,"391":4,"393":4,"394":4,"395":2,"396":2,"397":7,"399":1,"400":4,"401":7,"402":1,"403":2,"404":1,"405":4,"406":2,"407":9,"408":1,"411":5,"412":1,"413":1,"414":5,"415":3,"416":1,"417":3,"419":1,"420":1,"421":1,"422":1,"423":3,"424":3,"427":1,"428":2,"429":2,"430":8,"431":1,"433":1,"436":2,"437":1,"440":1,"441":1,"443":1,"444":1,"446":1,"447":1,"448":2,"450":3,"451":4,"452":1,"454":1,"458":5,"483":3,"484":1,"485":2,"486":3,"489":1,"492":1,"496":4,"497":1,"499":1,"511":7,"513":1,"514":1,"516":1,"517":3,"519":4,"520":3,"521":4,"522":5,"523":1,"526":3,"527":3,"528":1,"529":6,"530":4,"532":1,"533":1,"534":1,"535":3,"536":1,"537":1,"539":1,"541":3,"545":2,"549":1,"550":1,"551":3,"552":2,"554":3,"556":2,"557":3,"558":2,"559":1,"560":5,"561":2,"563":1,"567":3,"568":1,"570":1,"571":3,"572":1,"580":2,"585":1,"587":2,"588":1,"596":1,"605":2,"606":6,"607":3,"609":1,"613":2,"614":3,"615":2,"621":1,"622":1,"624":3,"625":2,"626":1,"629":4,"630":1,"636":1,"674":1,"675":1,"678":1,"679":1,"680":2,"681":1,"685":1,"694":1,"695":1,"699":1,"1138":1,"1142":1,"1211":1,"1218":1,"1232":1,"1254":1,"1271":2,"1272":1,"1273":1,"1274":1,"1278":5,"1279":1,"1284":1,"1285":1,"1288":1,"1292":1,"1294":2,"1295":1,"1301":2,"1302":7,"1307":1,"1308":1,"1310":1,"1315":2,"1323":2,"1328":1,"1339":2,"1340":1,"1352":1,"1359":1,"1362":1,"1364":1,"1369":1,"1371":1,"1373":1,"1375":1,"1377":1,"1381":1,"1383":1,"1388":1,"1390":1,"1391":1,"1394":1,"1396":6,"1413":2,"1414":1,"1420":1,"1422":2,"1478":1,"1482":1,"1491":1,"1528":1,"1529":1,"1536":1,"1552":1,"1567":2,"1568":1,"1591":1,"1597":1,"1600":1,"1632":2,"1692":1,"1718":1,"1752":1,"1767":1,"1825":1,"1830":1,"1835":1,"1852":3,"1868":1,"1870":1,"1922":1,"1933":1,"1964":1,"1990":1,"2069":2,"2071":1,"2085":1,"2110":1,"2140":1,"2152":3,"2160":1,"2163":2,"2164":6,"2168":1,"2172":1,"2176":3,"2183":1,"2184":3,"2187":1,"2191":1,"2207":1,"2221":1,"2267":4,"2268":4,"2269":7,"2271":2,"2273":2,"2274":2,"2275":2,"2276":11,"2277":1,"2278":2,"2280":2,"2281":2,"2282":4,"2283":2,"2285":2,"2287":3,"2288":2,"2289":1,"2291":5,"2293":1,"2294":1,"2295":2,"2297":3,"2298":1,"2301":1,"2303":8,"2305":2,"2308":1,"2310":1,"2316":7,"2317":2,"2318":1,"2319":2,"2323":1,"2331":1,"2332":3,"2334":4,"2335":1,"2337":2,"2342":3,"2343":1,"2346":1,"2349":1,"2350":1,"2361":5,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2380":2,"2381":1,"2385":1,"2386":1,"2387":1,"2388":5,"2392":1,"2393":1,"2395":2,"2439":1,"2440":1,"2444":1,"2445":2,"2449":1,"2450":1,"2456":4,"2458":1,"2460":5,"2461":2,"2463":2,"2464":1,"2466":6,"2467":2,"2468":1,"2470":2,"2472":2,"2474":8,"2475":2,"2476":9,"2477":6,"2478":3,"2479":2,"2480":7,"2481":3,"2482":3,"2483":4,"2484":8,"2485":4,"2486":1,"2489":2,"2490":2,"2491":4,"2492":2,"2493":2,"2494":2,"2496":1,"2497":4,"2498":1,"2500":3,"2502":5,"2504":2,"2505":3,"2506":3,"2507":8,"2508":4,"2511":4,"2513":3,"2514":4,"2516":19,"2517":1,"2518":2,"2525":1,"2526":14,"2531":1,"2533":1,"2537":1,"2540":2,"2542":1,"2543":1,"2545":1,"2547":3,"2549":2,"2550":1,"2551":2,"2552":10,"2562":4,"2563":1,"2569":1,"2572":1,"2574":1,"2578":1,"2579":1,"2585":5,"2587":3,"2588":2,"2590":2,"2591":2,"2592":9,"2602":2,"2603":4,"2604":2,"2605":18,"2606":3,"2607":2,"2608":1,"2610":1,"2611":2,"2612":1,"2614":20,"2615":1,"2616":3,"2623":2,"2624":1,"2631":1,"2635":1,"2636":1,"2640":1,"2652":1,"2653":5,"2654":3,"2658":2,"2668":1,"2676":2,"2678":1,"2695":1,"2705":1,"2706":1,"2710":5,"2711":2,"2713":1,"2722":1,"2725":3,"2732":1,"2740":1,"2743":1,"2752":1,"2754":1,"2758":8,"2759":3,"2761":2,"2762":1,"2763":1,"2764":2,"2781":1,"2782":3,"2783":1,"2785":1,"2787":1,"2788":1,"2791":1}}],["fwlink",{"2":{"2552":1}}],["fknraiden",{"2":{"2309":1}}],["fkeys",{"2":{"1568":1}}],["fps",{"2":{"1845":5}}],["f♯",{"2":{"1831":6,"2410":6}}],["fb",{"2":{"1614":3,"1615":3}}],["fdbk",{"2":{"1610":1}}],["f+g",{"2":{"1561":1}}],["f9²",{"2":{"635":1}}],["f9¹",{"2":{"635":1}}],["f9",{"2":{"313":1,"530":2,"2394":2,"2426":2,"2447":1}}],["f8²",{"2":{"635":1}}],["f8¹",{"2":{"635":1}}],["f8",{"2":{"313":1,"530":2,"2394":2,"2426":2,"2447":1}}],["f24",{"2":{"2394":2,"2426":2}}],["f23",{"2":{"1397":2,"2394":2,"2426":2}}],["f21",{"2":{"1397":2,"2394":2,"2426":2}}],["f22",{"2":{"1397":11,"2394":2,"2426":2}}],["f20",{"2":{"1320":1,"2394":2,"2426":2}}],["f2",{"2":{"313":1,"530":2,"633":1,"635":2,"1831":1,"2394":2,"2410":1,"2426":2,"2440":1,"2447":1}}],["fm",{"2":{"279":1,"314":1,"315":1,"317":4,"370":1,"520":1,"521":1,"522":1,"557":1,"624":2,"1272":1,"1273":1,"1396":1,"2319":1,"2342":3,"2361":1,"2592":2,"2711":1}}],["fme",{"2":{"211":1}}],["fg",{"2":{"266":1,"433":5,"435":1,"2616":9}}],["fs5",{"2":{"1831":1,"2410":1}}],["fs4",{"2":{"1831":1,"2410":1}}],["fs3",{"2":{"1831":1,"2410":1}}],["fs2",{"2":{"1831":1,"2410":1}}],["fs1",{"2":{"1831":1,"2410":1}}],["fs",{"2":{"249":1,"1831":1,"2410":1}}],["fc980c",{"2":{"236":1}}],["fc660c",{"2":{"236":1}}],["fx",{"2":{"211":1}}],["fjlabs",{"2":{"211":6,"222":1}}],["ffff",{"2":{"2131":1}}],["ffffffff",{"2":{"2129":1}}],["ff",{"2":{"197":6,"347":3,"349":3,"359":1,"360":1,"2133":1,"2386":1}}],["ffkeebs",{"2":{"134":1}}],["f3²",{"2":{"635":1}}],["f3",{"2":{"191":1,"313":1,"530":2,"633":1,"635":3,"1831":1,"2392":1,"2394":2,"2410":1,"2426":2,"2440":1,"2447":1}}],["f303",{"2":{"49":1,"50":1,"199":1,"2283":1}}],["f5²",{"2":{"635":1}}],["f5f9b992",{"2":{"315":1}}],["f5",{"2":{"111":1,"313":1,"502":2,"511":1,"530":2,"633":2,"1496":1,"1831":1,"2169":1,"2394":2,"2410":1,"2426":2,"2447":1,"2569":1,"2597":1}}],["f4²",{"2":{"635":1}}],["f4xx",{"2":{"176":1}}],["f4x1",{"2":{"145":1,"176":1,"211":1,"2553":1}}],["f466",{"2":{"176":1}}],["f401",{"2":{"253":1,"2283":1,"2553":1}}],["f401xe",{"2":{"131":1,"134":1}}],["f405",{"2":{"130":1,"134":1}}],["f4",{"2":{"111":1,"131":1,"134":1,"191":1,"313":1,"502":2,"511":1,"530":2,"633":2,"635":2,"1831":1,"2169":1,"2394":2,"2410":1,"2426":2,"2447":1,"2569":1}}],["f411",{"2":{"93":1,"2283":2,"2553":2,"2712":1,"2751":1}}],["f072",{"2":{"1263":2}}],["f0",{"2":{"111":1,"502":2,"511":1,"633":2,"635":3,"2169":1,"2392":1,"2597":1}}],["f7²",{"2":{"635":1}}],["f7¹",{"2":{"635":1}}],["f7",{"2":{"111":1,"313":1,"502":2,"511":1,"530":2,"633":2,"1327":1,"2169":1,"2394":2,"2426":2,"2447":1,"2569":1,"2597":1}}],["f6²",{"2":{"635":1}}],["f6¹",{"2":{"635":1}}],["f6",{"2":{"111":1,"313":1,"502":2,"511":1,"530":2,"633":2,"635":1,"638":1,"2169":1,"2394":2,"2426":2,"2447":1,"2569":1,"2597":1}}],["f19",{"2":{"2394":2,"2426":2}}],["f17",{"2":{"2394":2,"2426":2}}],["f16",{"2":{"2394":2,"2426":2}}],["f15",{"2":{"2394":3,"2426":2}}],["f14",{"2":{"2394":2,"2426":2}}],["f14629ed1cd7c7ec9089604d64f29a99981558e8",{"2":{"529":2}}],["f1xx",{"2":{"2392":2}}],["f18",{"2":{"1715":1,"2394":2,"2426":2,"2777":1}}],["f12",{"2":{"313":1,"530":2,"2394":2,"2426":2,"2441":1,"2447":1}}],["f11",{"2":{"313":1,"530":2,"2394":2,"2426":2,"2447":1}}],["f10²",{"2":{"635":1}}],["f10¹",{"2":{"635":1}}],["f10",{"2":{"313":1,"530":2,"635":2,"2394":2,"2426":2,"2447":1}}],["f103",{"2":{"690":1,"2285":1}}],["f103c6",{"2":{"211":1}}],["f103xb",{"2":{"114":1}}],["f13",{"2":{"211":1,"1394":1,"2394":3,"2426":2}}],["f1",{"2":{"111":1,"120":1,"191":1,"313":1,"502":2,"511":1,"530":2,"633":2,"1391":1,"1546":1,"1831":1,"2163":1,"2169":1,"2269":1,"2276":1,"2392":1,"2394":2,"2410":1,"2426":2,"2440":1,"2441":1,"2447":1,"2597":1}}],["f",{"0":{"2426":1},"2":{"111":2,"134":1,"160":1,"191":1,"196":2,"211":1,"266":2,"313":1,"335":1,"374":6,"377":1,"378":1,"384":1,"405":5,"502":1,"514":3,"530":2,"702":1,"1392":1,"1488":3,"1540":1,"1561":3,"1601":1,"1615":1,"1718":2,"1831":19,"1910":1,"1927":2,"2129":1,"2131":1,"2133":1,"2135":2,"2186":1,"2191":1,"2288":3,"2392":2,"2394":3,"2410":19,"2425":3,"2446":3,"2614":8,"2742":3}}],["fantastic",{"2":{"2765":1}}],["fan",{"2":{"2305":1}}],["fancy",{"2":{"479":1,"1414":2}}],["faith",{"2":{"2605":1}}],["fairly",{"2":{"1401":1,"1487":1,"1489":1,"2307":1,"2367":1}}],["fails",{"2":{"1724":1,"2300":1}}],["failed",{"2":{"315":1,"1136":1,"1138":1,"2166":1,"2168":1,"2332":1,"2513":3}}],["failing",{"2":{"190":1,"191":1,"266":1,"556":1,"1324":1,"2332":1}}],["failures",{"2":{"134":1,"160":3,"191":1,"198":1,"199":3,"236":1,"556":1,"689":1,"2168":1}}],["failure",{"2":{"92":1,"160":1,"222":1,"236":3,"263":1,"277":1,"598":2}}],["fail",{"2":{"88":2,"104":2,"126":1,"127":2,"170":1,"206":1,"331":1,"601":1,"626":1,"1482":1,"1724":2,"2475":1,"2476":1}}],["faqs",{"2":{"551":1}}],["faq",{"0":{"1281":1,"1303":1,"1322":1,"2292":1},"1":{"1282":1,"1283":1,"1284":1,"1285":1,"1286":1,"1287":1,"1288":1,"1289":1,"1290":1,"1291":1,"1292":1,"1304":1,"1305":1,"1306":1,"1307":1,"1308":1,"1309":1,"1310":1,"1311":1,"1312":1,"1313":1,"1314":1,"1315":1,"1316":1,"1317":1,"1318":1,"1319":1,"1320":1,"1321":1,"1323":1,"1324":1,"1325":1,"1326":1,"1327":1,"1328":1,"1329":1,"1330":1,"1331":1,"1332":1,"1333":1,"1334":1,"1335":1,"2293":1},"2":{"515":1,"1296":1,"2374":1,"2448":1,"2494":1,"2781":1}}],["famous",{"2":{"428":1,"1987":1}}],["familiarity",{"2":{"2467":1,"2781":1}}],["familiarize",{"2":{"483":1}}],["familiar",{"2":{"470":1,"552":1,"555":1,"1275":1,"2294":2,"2303":1,"2457":1,"2469":1,"2512":1,"2514":1,"2725":1,"2764":1}}],["families",{"0":{"2587":1,"2588":1},"2":{"49":1,"130":1,"678":1,"682":1,"2585":1,"2587":1}}],["family",{"0":{"2589":1,"2590":1,"2591":1},"2":{"191":1,"277":1,"679":1,"2152":1,"2587":1,"2589":4,"2590":1,"2591":1,"2605":1,"2608":1}}],["facing",{"2":{"502":1,"1904":4,"2312":2,"2350":1,"2654":1}}],["face",{"2":{"277":2,"597":1,"2307":1,"2312":2}}],["factor",{"2":{"1171":3,"1443":3,"2654":1,"2712":1}}],["factory",{"2":{"176":3,"1331":1,"2278":1,"2288":1,"2382":1}}],["fact",{"2":{"45":1,"1279":1,"1301":1,"1315":1,"1369":1,"2069":1}}],["fading",{"2":{"249":1,"1766":1,"1987":2}}],["fader",{"2":{"1829":1}}],["fade",{"2":{"93":1,"1853":3,"1855":4,"2177":3}}],["fades",{"2":{"49":1,"1766":11,"1987":16}}],["fault",{"2":{"191":1}}],["fauxclicky",{"2":{"75":1,"188":1,"191":1,"2605":1}}],["fauxpark",{"2":{"38":1,"182":1}}],["fave",{"2":{"266":1}}],["fave84",{"2":{"199":1}}],["fave84h",{"2":{"191":1}}],["favorite",{"0":{"2462":1},"2":{"2476":1}}],["favorites",{"2":{"2394":2,"2432":2}}],["favor",{"0":{"8":1},"2":{"50":1,"94":1,"446":1}}],["favour",{"2":{"3":1,"15":1,"103":1,"169":1,"184":1,"199":1}}],["fake",{"2":{"191":1,"671":1}}],["fastest",{"2":{"641":1,"1843":1,"1860":1}}],["faster",{"2":{"341":1,"479":1,"1907":1,"1937":1,"2100":2,"2144":1,"2145":1,"2264":1,"2450":1}}],["fast",{"2":{"175":1,"457":1,"582":1,"1125":1,"1128":1,"1363":1,"1558":1,"1611":1,"1722":2,"1841":1,"1842":1,"1910":1,"1960":1,"2207":2,"2394":1,"2432":2,"2437":1,"2476":1,"2578":1,"2605":1,"2623":1,"2774":1,"2775":1}}],["fashion",{"2":{"169":1,"2796":1}}],["farther",{"2":{"2462":1}}],["farsi",{"2":{"277":1,"2742":2}}],["far",{"2":{"99":1,"188":1,"263":3,"273":1,"341":1,"569":1,"1722":1,"1945":1,"2140":1,"2182":1,"2344":1,"2568":1}}],["falls",{"2":{"1592":1}}],["fall",{"2":{"430":1,"471":1,"1433":1,"1939":1,"2442":1,"2493":1}}],["fallback",{"0":{"209":1},"2":{"211":2,"1453":1}}],["falling",{"2":{"50":1,"1218":2,"1896":1,"2513":1}}],["falsely",{"2":{"1478":2,"1715":2,"2777":2}}],["false",{"0":{"476":1,"1478":1},"2":{"31":2,"90":2,"105":4,"111":5,"125":3,"185":2,"194":4,"195":2,"199":1,"203":1,"249":1,"453":2,"476":2,"534":6,"565":1,"566":1,"571":1,"572":1,"588":2,"592":2,"593":1,"594":2,"610":3,"641":1,"726":1,"1219":1,"1339":1,"1340":4,"1369":3,"1381":3,"1397":1,"1412":2,"1441":2,"1453":1,"1460":1,"1467":1,"1478":1,"1483":10,"1485":4,"1494":1,"1543":2,"1555":5,"1556":1,"1560":2,"1561":1,"1564":1,"1568":1,"1587":2,"1593":1,"1598":4,"1632":2,"1672":6,"1706":1,"1708":2,"1724":1,"1734":1,"1754":1,"1771":2,"1851":9,"1852":2,"1854":3,"1860":3,"1864":1,"1868":2,"1915":2,"1917":1,"1918":1,"1919":1,"1921":3,"1936":1,"1940":4,"1943":1,"1955":1,"1959":1,"1960":2,"1962":2,"1963":1,"1972":1,"1974":4,"1975":1,"1977":2,"1978":1,"1979":1,"1995":2,"1996":3,"1997":2,"2116":1,"2175":8,"2176":1,"2181":1,"2190":1,"2221":1,"2266":2,"2452":2,"2453":3,"2454":1,"2476":1,"2552":1,"2563":2,"2613":3,"2616":2,"2643":2,"2713":11,"2715":2,"2716":3,"2718":1,"2719":4,"2721":1,"2726":2,"2727":4,"2728":3,"2729":1,"2731":2,"2733":6,"2734":4,"2735":1,"2736":12,"2737":1,"2738":4,"2739":1,"2749":5,"2774":1,"2775":1,"2777":1,"2788":1}}],["flsh",{"2":{"2203":1,"2205":8}}],["fl",{"2":{"1306":1,"2444":2,"2446":3,"2447":2}}],["flick",{"2":{"1952":1}}],["flicker",{"2":{"1500":1}}],["flickering",{"2":{"1265":1}}],["flight",{"2":{"598":1,"2521":1}}],["flipping",{"2":{"1950":1}}],["flipped",{"2":{"145":1,"1595":1,"1854":1,"2082":1,"2162":1,"2178":1,"2278":1,"2288":1}}],["flips",{"2":{"13":1,"31":1,"34":1,"1854":1,"2178":1}}],["flip",{"0":{"13":1},"2":{"13":1,"211":1,"1595":1,"2318":1,"2767":1}}],["flypage",{"2":{"1279":1}}],["flypage=shop",{"2":{"1279":1}}],["fly",{"0":{"2187":1},"2":{"479":1,"515":1,"1308":1,"1430":1,"1438":1,"1549":1,"1591":1,"1922":1,"2187":1,"2667":1,"2767":3}}],["flygone60",{"2":{"241":2}}],["float",{"0":{"1583":2},"1":{"1584":2},"2":{"215":2,"1485":1,"1575":2,"1584":2,"1724":3,"1756":2,"1960":4}}],["floating",{"2":{"215":2,"1262":1}}],["flowing",{"2":{"1987":1}}],["flows",{"2":{"1302":1}}],["flower",{"2":{"236":1,"1987":3,"2750":1}}],["flow",{"2":{"160":1,"322":1,"466":1,"560":1,"1232":1,"1987":4,"2188":1,"2311":1,"2312":1,"2750":1}}],["flux",{"2":{"2311":2}}],["flushed",{"2":{"1814":1,"1816":1,"1818":1,"1821":1,"2059":1,"2061":1,"2063":1,"2066":1}}],["flushes",{"2":{"114":1}}],["flush",{"0":{"230":1,"651":1,"1576":1,"1679":1,"1886":1},"2":{"211":1,"236":2,"647":1,"651":1,"669":1,"753":1,"754":1,"780":1,"782":1,"812":1,"814":1,"844":1,"846":1,"879":1,"881":1,"913":1,"915":1,"947":1,"949":1,"981":1,"983":1,"1015":1,"1017":1,"1049":1,"1051":1,"1083":1,"1085":1,"1117":1,"1119":1,"1164":1,"1166":1,"1207":1,"1209":1,"1572":1,"1577":1,"1578":1,"1579":1,"1580":1,"1581":1,"1582":1,"1583":1,"1680":1,"1682":1,"1768":1,"1861":1,"1879":1,"1881":1,"1992":1,"2086":1,"2613":1,"2615":2,"2616":10,"2727":1,"2734":1}}],["flushing",{"2":{"191":1,"593":1,"594":1,"2613":1}}],["flurry",{"2":{"163":1}}],["flavours",{"2":{"2535":1}}],["flat",{"2":{"1488":1}}],["flatbread60",{"2":{"86":2}}],["flake8",{"2":{"442":1,"447":2}}],["flask",{"2":{"305":1}}],["flasher",{"2":{"2276":1,"2288":1,"2367":1,"2368":1,"2372":1,"2386":2,"2678":1}}],["flashers",{"2":{"371":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":1,"2285":1,"2287":1,"2288":1}}],["flashes",{"2":{"2164":1,"2270":2,"2272":3,"2277":1,"2279":2,"2284":1,"2286":1}}],["flashed",{"0":{"1280":1},"2":{"510":1,"519":1,"623":1,"1528":1,"2080":1,"2164":1,"2188":1,"2267":1,"2272":1,"2287":1,"2316":1,"2318":1,"2366":1,"2374":1,"2386":1,"2757":1}}],["flashable",{"2":{"316":1}}],["flashing",{"0":{"543":1,"1715":1,"2267":1,"2317":1,"2366":1,"2386":1,"2389":1,"2392":1,"2488":1,"2490":1},"1":{"2268":1,"2269":1,"2270":1,"2271":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":1,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1,"2282":1,"2283":1,"2284":1,"2285":1,"2286":1,"2287":1,"2288":1,"2367":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2385":1,"2386":1,"2387":2,"2388":1,"2389":1,"2390":2,"2391":2,"2392":2,"2489":1,"2490":1,"2491":2,"2492":2,"2493":1,"2494":1},"2":{"49":1,"134":2,"191":1,"222":2,"240":3,"371":2,"543":1,"624":1,"629":1,"1276":1,"1278":1,"1280":1,"1296":1,"1422":1,"1528":1,"1611":1,"2164":1,"2267":2,"2268":1,"2269":1,"2271":1,"2272":1,"2273":2,"2274":1,"2275":1,"2276":3,"2278":1,"2280":1,"2281":1,"2282":2,"2283":2,"2285":2,"2287":2,"2288":2,"2291":1,"2300":1,"2318":1,"2367":1,"2368":1,"2370":1,"2372":1,"2378":1,"2380":2,"2381":1,"2388":1,"2395":1,"2457":1,"2464":1,"2465":1,"2489":2,"2490":1,"2493":1,"2508":1,"2530":1,"2556":1,"2561":1,"2611":1,"2694":1,"2703":1,"2711":1}}],["flash",{"0":{"164":1,"371":1,"679":1,"680":1,"693":1,"694":1,"1296":1,"1307":1,"2293":1,"2465":1,"2492":1,"2493":1},"1":{"694":1},"2":{"49":3,"107":1,"113":1,"114":5,"124":1,"134":1,"145":1,"160":1,"164":3,"174":5,"176":4,"199":2,"222":1,"236":1,"240":1,"277":1,"352":1,"371":6,"376":1,"486":1,"488":1,"509":2,"522":1,"592":1,"624":1,"625":1,"626":1,"671":3,"677":1,"678":6,"679":12,"680":9,"681":6,"682":5,"688":1,"689":1,"693":3,"694":15,"1275":2,"1280":1,"1307":2,"1324":2,"1349":2,"1422":8,"1566":1,"1594":1,"1943":1,"2075":1,"2080":1,"2164":7,"2165":2,"2205":2,"2267":3,"2268":3,"2271":3,"2272":1,"2273":2,"2274":2,"2275":1,"2276":1,"2278":1,"2279":4,"2280":1,"2281":1,"2282":2,"2283":2,"2285":2,"2287":2,"2288":5,"2291":3,"2300":3,"2301":1,"2303":1,"2317":1,"2366":4,"2374":1,"2386":8,"2387":1,"2388":1,"2392":18,"2395":1,"2478":1,"2487":1,"2488":1,"2489":1,"2490":3,"2492":4,"2493":8,"2552":2,"2557":1,"2567":1,"2569":1,"2583":10,"2589":1,"2605":3,"2611":1,"2613":1,"2616":2,"2617":1,"2722":4,"2732":1,"2743":1,"2757":1,"2762":1,"2767":1}}],["flagged",{"0":{"352":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"199":1,"201":1,"282":3,"341":1,"352":1,"356":1,"1996":1,"2166":1}}],["flag",{"2":{"176":1,"191":1,"249":1,"370":1,"403":1,"405":1,"430":1,"505":3,"628":1,"679":1,"1350":1,"1555":1,"1659":1,"1660":1,"1662":1,"1708":1,"1763":2,"1764":5,"1768":1,"1966":1,"1984":2,"1985":6,"1992":1,"1996":1,"1997":1,"2082":1,"2109":1,"2164":1,"2605":1,"2626":1,"2631":1}}],["flags",{"0":{"1764":1,"1985":1},"2":{"176":1,"191":1,"209":1,"277":1,"448":1,"1356":2,"1764":8,"1768":2,"1859":1,"1860":1,"1985":8,"1992":2,"1996":1,"1997":2,"2181":1,"2455":1,"2569":1,"2626":3,"2635":5,"2727":3,"2734":3}}],["flesh",{"2":{"2762":1}}],["flexible",{"0":{"1704":1},"2":{"479":1,"1129":1,"1134":1,"2573":2,"2582":1}}],["flexibility",{"2":{"6":1,"138":1,"496":1,"630":1,"1754":1,"2151":1,"2219":1,"2767":1}}],["flehrad",{"0":{"43":2},"2":{"43":6,"266":1}}],["frr",{"2":{"2191":1}}],["friction",{"2":{"1845":2,"1952":1}}],["friendly",{"0":{"1704":1},"2":{"377":1,"430":1,"2183":1,"2362":1}}],["friend",{"0":{"1529":1},"2":{"336":1,"1528":3,"1529":4}}],["friends",{"2":{"226":1,"236":1,"2365":1}}],["frustrating",{"2":{"2207":1}}],["frustration",{"2":{"173":1}}],["fruit",{"2":{"1324":1}}],["frood",{"2":{"2584":1}}],["front",{"2":{"1421":1,"2341":1,"2542":1}}],["frontend",{"0":{"520":1},"2":{"520":1,"671":1}}],["fronzlebop",{"2":{"556":2}}],["frob",{"2":{"482":1}}],["from=",{"2":{"176":1}}],["from",{"0":{"5":1,"24":1,"166":1,"441":1,"627":1,"1329":1,"1811":1,"1926":1,"2056":1,"2493":1},"2":{"3":1,"6":2,"12":1,"15":1,"31":2,"34":1,"49":3,"50":1,"62":1,"63":1,"69":1,"70":1,"73":2,"74":1,"75":2,"76":1,"88":3,"90":1,"92":1,"94":1,"104":3,"113":2,"114":8,"116":1,"119":1,"127":3,"128":1,"132":2,"133":1,"134":10,"160":5,"163":1,"170":2,"172":1,"173":2,"174":1,"176":8,"191":9,"199":13,"201":1,"206":1,"211":8,"222":7,"224":1,"228":3,"230":1,"236":4,"240":1,"249":9,"263":1,"266":19,"272":1,"273":1,"275":1,"276":1,"277":5,"303":1,"304":1,"307":1,"323":1,"324":1,"327":1,"328":1,"329":1,"331":1,"345":1,"346":1,"347":1,"351":1,"370":2,"375":2,"379":1,"380":1,"388":2,"394":2,"401":1,"405":1,"411":1,"414":1,"430":3,"437":2,"441":2,"452":1,"453":1,"454":1,"457":3,"458":4,"466":1,"496":1,"502":3,"504":1,"511":3,"519":1,"522":1,"526":1,"529":2,"533":1,"541":1,"556":1,"558":1,"560":2,"569":1,"588":1,"597":1,"606":1,"610":2,"613":1,"616":1,"617":1,"626":1,"628":2,"638":2,"639":4,"644":1,"653":1,"657":1,"662":1,"678":1,"679":2,"689":1,"691":2,"709":1,"711":1,"712":1,"715":1,"718":1,"720":1,"721":2,"723":1,"724":2,"726":1,"727":1,"763":1,"790":1,"795":1,"825":1,"855":1,"860":1,"889":1,"894":1,"923":1,"928":1,"957":1,"962":1,"991":1,"996":1,"1025":1,"1030":1,"1059":1,"1064":1,"1093":1,"1098":1,"1151":1,"1188":1,"1223":1,"1224":1,"1226":1,"1228":1,"1242":1,"1244":1,"1258":1,"1259":1,"1260":1,"1264":1,"1272":1,"1273":1,"1278":1,"1284":1,"1285":1,"1287":1,"1302":3,"1307":2,"1316":1,"1318":1,"1330":1,"1331":1,"1332":1,"1337":1,"1348":1,"1369":1,"1370":1,"1372":1,"1375":3,"1377":1,"1378":1,"1414":1,"1416":1,"1431":1,"1434":1,"1437":1,"1443":1,"1447":1,"1453":1,"1475":1,"1478":1,"1483":2,"1491":1,"1496":1,"1508":1,"1517":1,"1519":1,"1537":1,"1548":1,"1553":1,"1555":1,"1560":1,"1562":4,"1563":7,"1584":2,"1591":1,"1592":1,"1615":1,"1616":1,"1642":1,"1647":1,"1650":1,"1651":1,"1652":1,"1657":1,"1665":1,"1667":1,"1668":1,"1671":2,"1678":1,"1681":1,"1683":1,"1693":1,"1711":2,"1712":1,"1713":2,"1714":1,"1722":1,"1757":2,"1758":1,"1763":1,"1766":4,"1767":1,"1781":1,"1782":1,"1783":1,"1800":1,"1806":1,"1808":1,"1810":1,"1811":1,"1829":2,"1842":2,"1843":1,"1845":1,"1853":2,"1854":1,"1855":2,"1859":1,"1869":1,"1876":1,"1878":1,"1880":1,"1882":1,"1884":1,"1891":1,"1899":1,"1907":1,"1911":1,"1921":1,"1927":1,"1929":1,"1933":1,"1937":1,"1943":1,"1948":1,"1950":4,"1952":2,"1954":1,"1956":5,"1965":1,"1969":1,"1978":1,"1984":1,"1987":4,"1988":1,"1990":1,"2008":1,"2009":1,"2010":1,"2027":1,"2033":1,"2039":1,"2045":1,"2047":1,"2049":1,"2051":3,"2053":3,"2056":1,"2073":1,"2075":1,"2076":1,"2082":2,"2090":2,"2097":1,"2099":1,"2105":1,"2130":1,"2132":1,"2134":1,"2136":1,"2137":1,"2143":1,"2150":1,"2151":1,"2155":1,"2156":1,"2166":2,"2168":2,"2169":1,"2171":2,"2177":2,"2178":1,"2179":1,"2184":1,"2188":1,"2193":1,"2200":1,"2205":2,"2209":1,"2210":1,"2214":1,"2221":2,"2257":1,"2269":1,"2276":2,"2279":1,"2282":1,"2283":1,"2285":1,"2287":1,"2291":1,"2299":1,"2300":2,"2301":1,"2303":1,"2307":5,"2311":1,"2312":3,"2313":1,"2314":1,"2315":1,"2316":2,"2318":1,"2331":1,"2334":1,"2342":1,"2348":1,"2350":5,"2351":1,"2354":1,"2374":1,"2383":1,"2386":1,"2387":2,"2390":1,"2392":2,"2442":1,"2445":1,"2447":2,"2460":1,"2461":1,"2462":1,"2466":1,"2475":1,"2476":1,"2478":1,"2490":2,"2492":2,"2499":1,"2505":2,"2507":1,"2513":3,"2516":1,"2518":1,"2521":1,"2525":1,"2526":2,"2527":1,"2535":1,"2536":1,"2541":2,"2545":1,"2547":1,"2549":1,"2550":1,"2552":1,"2556":1,"2561":1,"2568":1,"2572":1,"2579":1,"2580":1,"2583":1,"2584":1,"2597":1,"2598":1,"2603":2,"2605":5,"2607":2,"2612":2,"2615":12,"2616":5,"2644":2,"2649":1,"2653":4,"2654":4,"2656":1,"2678":1,"2691":1,"2704":1,"2714":1,"2716":2,"2725":1,"2726":1,"2727":3,"2733":2,"2734":3,"2736":2,"2738":1,"2741":1,"2744":2,"2758":2,"2760":1,"2763":1,"2766":3,"2767":2,"2781":1,"2782":1,"2785":1,"2786":2,"2787":3,"2792":2,"2795":1}}],["fr",{"2":{"211":1,"1392":2,"2191":3,"2742":4}}],["frl",{"2":{"211":2}}],["français",{"2":{"2663":1}}],["fram",{"2":{"674":1,"675":1}}],["frames",{"2":{"1845":1,"2614":1,"2631":2,"2634":1}}],["frame",{"0":{"2634":1,"2635":1,"2636":1,"2637":1,"2638":1},"2":{"1252":1,"1781":1,"1783":1,"1814":1,"1816":1,"1818":1,"1821":1,"1845":2,"1860":1,"2008":1,"2010":1,"2059":1,"2061":1,"2063":1,"2066":1,"2616":3,"2624":1,"2626":3,"2629":1,"2630":1,"2631":6,"2633":2,"2634":8,"2635":28,"2636":2,"2637":1,"2638":2}}],["frameworking",{"2":{"145":1}}],["framework",{"2":{"134":1,"302":1,"430":1,"2206":1,"2301":1,"2706":1,"2790":1}}],["framebuffer",{"2":{"93":1,"114":1,"236":1,"1987":1,"2615":3}}],["fragments",{"2":{"262":1}}],["fractal",{"2":{"134":2,"176":1,"222":1,"277":1,"1987":4,"2750":1}}],["fraanrosi",{"2":{"114":1}}],["fr4boards",{"2":{"67":1,"211":1}}],["fr4",{"2":{"67":1,"72":1}}],["freq",{"2":{"1443":5,"1615":1}}],["frequencies",{"2":{"1443":1}}],["frequency",{"0":{"788":1,"853":1,"887":1,"921":1,"955":1,"989":1,"1091":1,"2623":1},"2":{"11":1,"134":1,"145":1,"214":1,"222":2,"236":2,"511":1,"675":1,"694":1,"702":1,"786":3,"788":12,"850":3,"853":9,"885":3,"887":9,"919":3,"921":9,"953":3,"955":8,"987":3,"989":8,"1089":3,"1091":11,"1290":7,"1443":7,"1445":3,"1615":3,"1855":1,"1952":1,"2169":1,"2396":3,"2736":1,"2738":1}}],["frequent",{"2":{"1422":1}}],["frequently",{"0":{"1274":1,"1293":1},"1":{"1275":1,"1276":1,"1277":1,"1278":1,"1279":1,"1280":1,"1294":1,"1295":1,"1296":1,"1297":1,"1298":1,"1299":1,"1300":1,"1301":1,"1302":1},"2":{"307":1,"1768":1,"1992":1,"2150":1,"2207":2,"2332":1,"2603":1,"2727":1,"2734":1,"2757":1,"2767":1}}],["fresh",{"2":{"304":1,"616":1}}],["french",{"2":{"249":1,"1392":3,"2663":1,"2742":16}}],["freyr",{"2":{"154":2}}],["freeman",{"2":{"2789":1}}],["freebsd",{"2":{"2506":1}}],["freely",{"2":{"1302":1}}],["freezing",{"2":{"689":1}}],["freezes",{"2":{"688":1,"689":1}}],["freeze",{"2":{"688":1,"689":1}}],["freeform",{"2":{"606":1}}],["frees",{"2":{"516":1}}],["free",{"2":{"110":1,"123":1,"124":1,"322":1,"401":1,"483":1,"1417":2,"1435":1,"1859":1,"1991":1,"2096":1,"2221":1,"2464":1,"2508":1,"2607":1,"2608":1,"2609":2,"2711":2,"2789":1}}],["freed",{"2":{"45":1,"166":1,"188":1,"191":1}}],["female",{"2":{"2314":1}}],["fe1",{"2":{"1896":1}}],["feather",{"2":{"487":1,"629":1,"1529":2,"2383":1}}],["featuring",{"2":{"236":1}}],["featured",{"2":{"2542":1,"2604":1,"2744":1}}],["features",{"0":{"97":1,"117":1,"136":1,"147":1,"162":1,"178":1,"224":1,"238":1,"251":1,"268":1,"479":1,"503":1,"504":1,"621":1,"1421":1,"1899":1,"2567":1,"2622":1,"2792":1},"1":{"98":1,"99":1,"100":1,"118":1,"119":1,"120":1,"137":1,"138":1,"139":1,"148":1,"149":1,"163":1,"164":1,"179":1},"2":{"3":1,"7":1,"15":1,"25":1,"49":1,"94":1,"111":13,"133":4,"134":5,"173":1,"175":1,"176":2,"191":1,"213":1,"236":2,"249":2,"266":12,"268":1,"336":1,"352":1,"374":3,"430":1,"479":2,"486":2,"503":1,"512":1,"515":1,"516":3,"533":1,"552":1,"556":1,"559":1,"574":1,"578":1,"581":1,"602":1,"606":1,"621":1,"1302":2,"1308":1,"1341":1,"1353":1,"1354":1,"1368":1,"1371":1,"1414":3,"1415":1,"1421":1,"1435":1,"1491":1,"1534":1,"1555":1,"1829":1,"1943":2,"1986":1,"2072":1,"2167":1,"2187":1,"2198":1,"2268":1,"2269":1,"2276":1,"2298":2,"2319":1,"2339":6,"2343":2,"2344":1,"2363":2,"2441":1,"2463":2,"2549":1,"2573":1,"2592":1,"2599":1,"2605":4,"2606":1,"2610":1,"2622":1,"2640":1,"2676":1,"2684":1,"2695":1,"2713":2,"2744":2,"2745":1,"2757":1,"2758":1,"2759":5,"2760":1,"2763":2,"2764":2,"2766":1,"2791":1,"2793":1}}],["feature",{"0":{"28":1,"515":1,"2756":1},"1":{"2757":1,"2758":1,"2759":1,"2760":1},"2":{"3":1,"15":1,"28":1,"32":1,"46":1,"49":3,"63":1,"70":13,"74":1,"75":1,"87":1,"93":1,"99":3,"103":1,"114":3,"118":1,"126":1,"133":2,"134":5,"137":1,"145":3,"160":1,"172":1,"176":4,"179":2,"186":1,"189":1,"190":2,"191":7,"195":1,"196":1,"199":2,"211":1,"222":2,"224":1,"228":2,"236":1,"248":1,"249":2,"266":1,"352":1,"354":1,"404":1,"453":1,"455":1,"482":1,"495":1,"503":1,"504":1,"515":2,"554":3,"556":1,"559":1,"560":7,"563":1,"609":1,"613":1,"614":1,"616":2,"621":8,"643":1,"655":1,"683":1,"700":1,"730":1,"756":1,"785":1,"817":1,"820":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1121":1,"1124":1,"1144":1,"1170":1,"1181":1,"1212":1,"1233":1,"1250":1,"1282":1,"1313":3,"1314":1,"1315":1,"1319":1,"1353":1,"1354":1,"1355":1,"1356":1,"1358":1,"1365":1,"1368":1,"1413":1,"1414":1,"1415":1,"1421":2,"1423":1,"1430":1,"1434":2,"1435":2,"1439":1,"1442":1,"1443":1,"1445":2,"1453":1,"1471":1,"1474":1,"1475":1,"1480":3,"1491":1,"1496":1,"1504":1,"1532":1,"1535":2,"1538":1,"1545":2,"1549":4,"1564":4,"1566":1,"1569":2,"1594":2,"1601":1,"1668":1,"1695":1,"1704":1,"1713":1,"1761":1,"1769":1,"1836":1,"1841":1,"1846":1,"1850":1,"1858":1,"1859":2,"1862":1,"1901":2,"1922":2,"1933":1,"1952":2,"1965":1,"1967":3,"1968":1,"1969":1,"1973":1,"1977":3,"1979":2,"1982":1,"1986":2,"1992":1,"1993":1,"2072":2,"2073":1,"2079":1,"2100":1,"2101":1,"2103":1,"2110":1,"2112":1,"2140":1,"2149":1,"2159":1,"2167":8,"2174":1,"2175":1,"2180":1,"2198":2,"2199":1,"2207":1,"2215":1,"2218":1,"2263":1,"2264":1,"2296":1,"2301":2,"2319":1,"2326":1,"2344":2,"2386":1,"2396":2,"2397":1,"2398":3,"2435":1,"2441":1,"2479":1,"2480":1,"2578":1,"2582":1,"2594":1,"2603":1,"2605":4,"2640":1,"2667":1,"2684":1,"2688":1,"2691":1,"2702":1,"2715":1,"2716":1,"2717":1,"2718":2,"2719":2,"2720":1,"2721":2,"2723":1,"2724":1,"2726":1,"2727":1,"2729":2,"2731":2,"2733":1,"2734":1,"2735":2,"2736":2,"2737":2,"2745":1,"2746":2,"2748":1,"2757":1,"2758":3,"2766":1,"2767":3,"2774":1,"2775":1,"2776":1,"2777":1,"2792":2,"2793":1,"2796":2}}],["feat",{"2":{"222":2,"236":2}}],["fedora",{"2":{"191":1,"2470":1,"2503":1}}],["feker",{"2":{"176":1}}],["felix",{"2":{"154":2}}],["few",{"0":{"1694":1},"2":{"131":1,"189":1,"213":1,"222":1,"224":1,"238":1,"303":1,"305":1,"353":1,"481":1,"509":1,"556":1,"621":1,"641":1,"678":1,"679":1,"688":1,"1287":1,"1302":1,"1347":1,"1434":1,"1473":2,"1540":1,"1564":1,"1689":1,"1693":1,"1968":1,"2171":1,"2207":1,"2267":1,"2342":1,"2456":1,"2463":1,"2474":1,"2496":2,"2511":1,"2703":1,"2742":1,"2767":2,"2796":1}}],["fewer",{"2":{"24":1,"45":1,"123":1,"2182":1,"2309":1,"2687":1}}],["feed",{"2":{"2654":1}}],["feeding",{"2":{"2313":1}}],["feedback",{"0":{"1607":1,"1608":1,"1613":1,"2218":1},"1":{"1608":1,"1609":1,"1610":1,"1611":1,"1612":1,"1613":1,"1614":2,"1615":2,"1616":1,"1617":1,"1618":1,"1619":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"2220":1},"2":{"114":1,"145":1,"188":1,"191":1,"199":1,"228":1,"556":1,"1435":1,"1594":1,"1608":4,"1610":6,"1613":1,"1617":1,"1618":1,"1620":4,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"2167":1,"2736":1}}],["feeling",{"2":{"1555":1}}],["feels",{"2":{"119":1}}],["feel",{"2":{"119":1,"1377":1,"1435":1,"1937":1,"1991":1,"1992":1,"2096":1,"2221":1,"2463":1,"2766":1,"2767":1}}],["ferris",{"2":{"114":1,"249":1}}],["fetch",{"2":{"51":1,"303":1,"349":1,"358":1,"359":1,"360":2,"1853":2,"2177":2,"2513":2,"2516":4,"2526":5}}],["february",{"0":{"66":1,"146":1,"192":1,"237":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1}}],["feb",{"0":{"9":1,"1280":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"338":1,"351":5}}],["fumes",{"2":{"2313":1}}],["furthest",{"2":{"2307":1}}],["further",{"0":{"1917":1},"2":{"131":1,"134":1,"149":1,"191":1,"199":1,"203":1,"222":1,"352":1,"374":1,"572":1,"641":1,"702":1,"1339":1,"1363":1,"1366":3,"1369":1,"1381":1,"1598":2,"1700":1,"1917":1,"1956":1,"1979":1,"2301":2,"2310":1,"2350":1,"2452":1,"2516":1,"2530":1,"2788":1,"2796":1}}],["fuzz",{"2":{"1616":1}}],["fulfill",{"2":{"1337":1}}],["fullfilling",{"2":{"2319":1}}],["fullremap",{"2":{"1142":2}}],["fullsize",{"2":{"191":1,"211":1,"236":1,"2307":2}}],["full",{"0":{"103":1,"104":1,"114":1,"126":1,"127":1,"134":1,"145":1,"160":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"249":1,"266":1,"277":1,"566":1,"1128":1,"2795":1},"1":{"104":1,"127":1,"1129":1,"1130":1},"2":{"87":3,"88":2,"93":1,"103":2,"104":2,"107":2,"114":2,"124":1,"126":2,"127":2,"131":1,"134":1,"160":1,"172":1,"173":1,"176":1,"182":1,"189":1,"202":1,"211":1,"234":1,"236":1,"241":2,"245":1,"316":1,"334":1,"372":1,"417":1,"454":1,"566":1,"606":1,"627":1,"1121":1,"1122":1,"1125":1,"1128":2,"1129":1,"1130":3,"1134":1,"1136":1,"1337":1,"1435":1,"1484":1,"1494":1,"1535":1,"1546":1,"1558":1,"1561":1,"1643":1,"1696":1,"1710":1,"1734":1,"1766":4,"1845":1,"1986":2,"1987":15,"2085":1,"2110":1,"2191":1,"2300":1,"2319":1,"2357":1,"2460":1,"2463":1,"2508":1,"2542":1,"2552":1,"2582":2,"2605":2,"2614":3,"2762":1,"2795":1}}],["fully",{"0":{"263":1},"2":{"23":1,"266":1,"1134":1,"1254":1,"1340":1,"1866":1,"1988":1,"2207":1,"2318":1,"2582":1,"2744":1}}],["fuses",{"0":{"2387":1},"2":{"2381":1,"2386":1,"2387":2}}],["fuse",{"2":{"1331":1,"2380":1,"2387":5}}],["funky",{"2":{"1423":1}}],["fundamentals",{"2":{"2306":1}}],["fundamentally",{"2":{"1363":1}}],["fundamental",{"2":{"567":1}}],["func",{"2":{"94":1,"474":2}}],["function96",{"2":{"86":4}}],["functionally",{"2":{"1589":1}}],["functionallity",{"2":{"1369":1}}],["functionalities",{"2":{"1559":1}}],["functionality",{"0":{"46":1,"209":1,"1444":1},"2":{"3":1,"7":1,"15":1,"24":1,"30":1,"33":1,"87":1,"93":2,"98":1,"99":2,"114":2,"123":1,"124":1,"126":1,"128":1,"133":1,"134":1,"137":1,"139":1,"164":1,"191":2,"206":1,"209":2,"266":2,"282":3,"318":1,"341":1,"350":4,"505":1,"515":1,"516":2,"530":1,"567":1,"571":1,"586":1,"596":1,"597":2,"690":1,"702":1,"1369":1,"1372":1,"1396":2,"1401":2,"1420":2,"1421":1,"1435":1,"1460":1,"1484":1,"1535":1,"1548":1,"1565":1,"1566":1,"1586":1,"1594":1,"1597":1,"1704":1,"1716":1,"1718":1,"1862":1,"1933":1,"1952":1,"1961":1,"1986":1,"2072":1,"2073":1,"2149":2,"2168":1,"2200":1,"2209":2,"2210":1,"2316":1,"2343":1,"2344":2,"2345":1,"2387":1,"2393":1,"2435":1,"2480":1,"2558":1,"2564":1,"2565":1,"2605":3,"2606":2,"2640":1,"2642":1,"2649":1,"2654":1,"2744":1,"2747":1,"2757":1,"2758":2,"2782":1,"2783":1,"2788":1}}],["functional",{"2":{"28":1,"222":1,"276":1,"343":1,"344":1,"345":1,"350":2,"627":1,"682":1,"1413":1,"2505":1}}],["function",{"0":{"151":1,"465":1,"481":1,"573":1,"577":1,"579":1,"580":1,"583":1,"586":1,"591":1,"595":1,"1370":1,"1382":1,"1754":1,"1972":1,"2207":1,"2447":1,"2452":1,"2453":1},"1":{"1755":1,"1756":1},"2":{"22":2,"27":1,"34":1,"46":3,"49":2,"74":1,"90":3,"92":1,"93":2,"114":1,"125":1,"132":1,"133":1,"134":3,"143":1,"145":1,"160":4,"170":1,"176":5,"191":1,"194":1,"195":2,"199":2,"203":1,"222":2,"229":1,"230":2,"236":1,"249":2,"266":1,"273":1,"278":1,"336":1,"374":2,"430":3,"433":1,"457":1,"460":3,"462":2,"463":1,"464":2,"465":2,"473":1,"481":5,"505":2,"568":1,"571":1,"574":2,"580":2,"586":2,"587":2,"588":1,"592":4,"597":2,"598":1,"613":2,"614":2,"636":2,"638":1,"639":3,"646":1,"647":1,"663":1,"665":1,"690":4,"692":1,"698":1,"703":2,"707":4,"726":1,"738":1,"741":1,"745":1,"749":1,"751":1,"764":1,"768":1,"772":1,"776":1,"778":1,"796":1,"800":1,"804":1,"808":1,"810":1,"826":1,"832":1,"836":1,"840":1,"842":1,"861":1,"867":1,"871":1,"875":1,"877":1,"895":1,"901":1,"905":1,"909":1,"911":1,"929":1,"935":1,"939":1,"943":1,"945":1,"963":1,"969":1,"973":1,"977":1,"979":1,"997":1,"1003":1,"1007":1,"1011":1,"1013":1,"1031":1,"1037":1,"1041":1,"1045":1,"1047":1,"1065":1,"1071":1,"1075":1,"1079":1,"1081":1,"1099":1,"1105":1,"1109":1,"1113":1,"1115":1,"1123":1,"1126":1,"1127":1,"1129":1,"1130":1,"1140":1,"1141":1,"1142":3,"1152":1,"1158":1,"1162":1,"1189":1,"1195":1,"1199":1,"1203":1,"1205":1,"1214":3,"1216":1,"1235":4,"1237":1,"1242":1,"1247":1,"1263":2,"1267":1,"1292":2,"1368":1,"1369":4,"1370":1,"1371":1,"1372":2,"1373":1,"1378":3,"1388":1,"1396":2,"1397":2,"1401":1,"1404":1,"1405":1,"1420":3,"1421":1,"1433":1,"1453":1,"1460":1,"1468":1,"1471":2,"1482":4,"1483":1,"1485":1,"1486":1,"1488":1,"1506":1,"1534":2,"1542":1,"1548":1,"1555":1,"1556":1,"1560":2,"1563":3,"1564":1,"1565":3,"1568":1,"1593":1,"1598":4,"1634":1,"1636":1,"1637":1,"1638":1,"1647":1,"1651":1,"1660":1,"1662":1,"1664":1,"1666":1,"1692":1,"1708":3,"1752":1,"1754":1,"1755":1,"1756":1,"1757":1,"1758":1,"1771":2,"1781":1,"1783":1,"1853":2,"1860":2,"1864":2,"1891":1,"1906":1,"1911":1,"1918":1,"1920":1,"1925":1,"1926":1,"1954":3,"1955":2,"1956":2,"1958":1,"1960":3,"1965":1,"1974":1,"1975":1,"1977":1,"1980":5,"1981":2,"1992":1,"1995":2,"1998":1,"2008":1,"2010":1,"2086":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2098":1,"2105":1,"2109":1,"2119":1,"2123":1,"2125":1,"2145":1,"2146":1,"2164":1,"2168":2,"2177":2,"2181":4,"2190":3,"2191":1,"2196":1,"2199":5,"2200":3,"2207":3,"2208":1,"2209":3,"2210":2,"2213":1,"2220":1,"2234":1,"2235":1,"2236":1,"2265":1,"2266":1,"2345":2,"2397":2,"2441":1,"2444":2,"2445":1,"2446":1,"2447":1,"2450":1,"2452":1,"2453":5,"2454":3,"2480":1,"2529":1,"2563":7,"2564":5,"2565":4,"2573":1,"2611":1,"2615":10,"2616":18,"2620":1,"2621":1,"2642":3,"2644":2,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2749":1,"2766":1,"2767":4,"2774":1,"2775":1,"2776":6,"2777":2,"2780":1,"2782":4,"2784":2,"2788":2}}],["functions",{"0":{"22":1,"243":1,"637":1,"1139":1,"1378":1,"1401":1,"1420":1,"1481":1,"1542":1,"1920":1,"1954":1,"1955":1,"1974":1,"1975":1,"2085":1,"2086":1,"2087":1,"2093":1,"2094":1,"2109":1,"2145":1,"2196":1,"2213":1,"2265":1,"2573":1,"2640":1,"2748":1,"2779":1,"2780":1},"1":{"638":1,"639":1,"1140":1,"1141":1,"1142":1,"1402":1,"1403":1,"1404":1,"1405":1,"1406":1,"1407":1,"1408":1,"1409":1,"1410":1,"1482":1,"1483":1,"1484":1,"1485":1,"1486":1,"2086":1,"2087":1,"2088":2,"2089":2,"2090":2,"2091":2,"2092":2,"2093":2,"2094":2,"2095":2,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1},"2":{"16":1,"22":1,"31":1,"49":3,"50":1,"62":1,"93":2,"114":2,"125":1,"134":2,"145":1,"160":2,"176":1,"185":1,"190":1,"191":3,"199":4,"203":2,"211":4,"236":2,"240":1,"243":1,"249":2,"266":1,"273":1,"374":1,"446":1,"455":1,"470":1,"475":1,"481":4,"485":1,"533":1,"565":2,"566":1,"568":2,"571":3,"574":1,"580":2,"584":1,"587":1,"588":2,"589":2,"635":1,"685":1,"690":1,"697":1,"698":2,"699":1,"701":2,"707":1,"1127":1,"1129":2,"1130":1,"1211":1,"1216":1,"1232":1,"1237":1,"1287":1,"1337":3,"1338":1,"1369":1,"1372":1,"1377":1,"1378":9,"1381":1,"1401":2,"1407":1,"1414":2,"1420":3,"1422":2,"1434":1,"1437":1,"1448":1,"1460":1,"1467":1,"1482":1,"1486":1,"1542":1,"1555":1,"1564":1,"1587":2,"1598":1,"1634":1,"1692":1,"1709":1,"1752":1,"1754":1,"1771":1,"1844":1,"1860":1,"1863":1,"1899":1,"1917":1,"1951":2,"1955":1,"1956":1,"1968":1,"1973":1,"1974":3,"1975":1,"1977":1,"1981":1,"1986":2,"1991":2,"1992":1,"1995":1,"2072":2,"2073":1,"2085":2,"2089":1,"2096":2,"2113":1,"2181":1,"2190":1,"2196":1,"2199":2,"2200":2,"2207":1,"2208":4,"2209":3,"2301":1,"2340":1,"2345":1,"2449":1,"2479":1,"2530":1,"2573":1,"2603":1,"2605":3,"2610":1,"2615":1,"2616":5,"2640":2,"2641":1,"2644":1,"2744":5,"2748":2,"2763":1,"2779":1,"2780":2,"2783":1,"2787":1,"2788":2}}],["fudge",{"2":{"249":1}}],["future",{"0":{"541":1,"2146":1},"1":{"2147":1,"2148":1,"2149":1,"2150":1,"2151":1},"2":{"6":1,"10":1,"110":1,"141":1,"145":1,"153":1,"182":1,"194":1,"198":1,"213":1,"262":2,"278":1,"352":1,"480":1,"538":1,"541":1,"599":1,"600":1,"1232":1,"1351":1,"1363":1,"2346":1,"2605":1,"2606":1,"2607":1,"2758":1}}],["fn+f",{"2":{"1320":1}}],["fnv",{"2":{"176":1}}],["fn",{"0":{"3":1,"7":1,"15":1,"1315":1},"2":{"3":2,"7":4,"15":2,"16":1,"31":1,"38":1,"49":1,"114":2,"134":1,"532":2,"1306":2,"1315":2,"1420":1,"1693":2,"1706":6,"1851":3,"2081":1,"2175":3,"2186":1,"2191":1,"2199":14,"2200":10,"2204":1,"2205":2,"2206":1,"2207":1,"2208":2,"2209":1,"2446":1}}],["fischl",{"2":{"2376":1}}],["fish",{"2":{"448":1}}],["fiddle",{"2":{"2199":1}}],["fiddling",{"2":{"335":1}}],["fifth",{"2":{"1750":1,"2193":1,"2199":1}}],["fifo",{"2":{"191":1}}],["five",{"0":{"1749":1},"1":{"1750":1,"1751":1},"2":{"1716":1,"2186":1,"2190":1,"2199":1,"2529":1,"2623":1,"2653":1,"2735":1}}],["figuring",{"2":{"1280":1}}],["figure",{"2":{"401":1,"659":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1363":1,"1488":2,"2207":1,"2462":1,"2494":1}}],["fiuxup",{"2":{"249":1}}],["filthier",{"2":{"1478":1}}],["filterpaper",{"2":{"1490":1}}],["filter=ez",{"2":{"1272":1,"1273":1}}],["filtered",{"2":{"374":1}}],["filtering",{"0":{"1916":1},"2":{"374":1,"505":1,"1276":1,"1906":1,"1925":1,"1927":1,"2264":2,"2792":1}}],["filters",{"2":{"236":1,"374":1}}],["filter",{"2":{"199":1,"374":6,"384":1,"1276":1,"1362":1,"1477":2,"2339":1}}],["fills",{"2":{"2188":1,"2456":1}}],["filled",{"2":{"1987":1,"2616":9}}],["fill",{"2":{"370":1,"371":1,"378":1,"381":1,"383":1,"386":1,"546":1,"1442":1,"1927":1,"2188":1,"2597":1,"2616":3}}],["filen",{"2":{"400":1}}],["filenames",{"2":{"400":1,"460":1,"2603":1}}],["filename",{"2":{"379":1,"380":2,"388":1,"389":1,"390":1,"391":1,"441":2,"460":1,"1324":1,"2386":1,"2392":1,"2491":1}}],["filename>",{"2":{"292":1,"405":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2278":1,"2280":1,"2281":1,"2282":1,"2288":3,"2386":1}}],["file2",{"2":{"400":1,"2527":1}}],["file1",{"2":{"400":1,"2527":1}}],["file>",{"2":{"377":1}}],["fileformat",{"2":{"199":1}}],["filegen",{"2":{"160":1}}],["file",{"0":{"440":1,"501":1,"512":1,"542":1,"545":1,"2299":1,"2491":1,"2654":1},"1":{"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"513":1,"514":1,"515":1,"516":1},"2":{"5":2,"16":1,"25":1,"65":2,"70":1,"73":1,"87":1,"114":2,"120":1,"132":2,"160":2,"164":1,"176":3,"189":1,"191":2,"211":4,"236":2,"249":1,"262":2,"266":1,"286":1,"291":2,"304":1,"308":1,"314":1,"315":1,"331":1,"332":1,"341":1,"347":1,"350":1,"374":1,"377":1,"393":2,"394":2,"399":1,"401":1,"404":2,"405":3,"408":1,"409":1,"410":1,"430":1,"437":1,"441":3,"450":1,"452":2,"453":4,"454":2,"496":1,"501":2,"512":1,"529":2,"530":1,"533":1,"534":1,"541":4,"545":2,"549":1,"554":1,"559":2,"560":3,"564":4,"565":1,"566":1,"601":1,"607":1,"613":1,"621":1,"626":1,"678":1,"1124":2,"1127":3,"1130":3,"1133":1,"1135":1,"1137":1,"1138":1,"1142":1,"1276":1,"1287":1,"1291":1,"1324":5,"1369":1,"1388":2,"1389":1,"1391":1,"1414":2,"1416":4,"1420":1,"1422":3,"1435":3,"1442":2,"1452":2,"1477":6,"1532":1,"1533":2,"1545":1,"1550":1,"1565":2,"1591":1,"1592":1,"1695":1,"1713":1,"1763":1,"1767":2,"1771":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1851":1,"1852":2,"1855":1,"1863":1,"1864":1,"1964":1,"1984":1,"1990":2,"1995":1,"2079":1,"2082":1,"2162":2,"2163":1,"2164":2,"2165":2,"2166":1,"2167":1,"2175":1,"2179":1,"2191":1,"2199":1,"2202":1,"2207":2,"2267":1,"2268":1,"2269":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":2,"2278":1,"2280":1,"2281":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":1,"2291":2,"2297":7,"2299":1,"2300":13,"2301":9,"2302":3,"2303":1,"2316":1,"2317":2,"2318":1,"2334":4,"2336":1,"2337":1,"2338":6,"2339":4,"2340":2,"2341":1,"2348":3,"2351":1,"2381":1,"2386":3,"2388":5,"2392":2,"2439":1,"2443":2,"2444":1,"2445":2,"2446":1,"2448":1,"2459":1,"2461":1,"2462":3,"2464":2,"2475":2,"2476":7,"2478":2,"2479":3,"2485":1,"2488":1,"2491":5,"2508":2,"2513":13,"2525":1,"2527":1,"2530":1,"2540":1,"2545":1,"2547":3,"2550":2,"2552":7,"2578":1,"2580":2,"2581":1,"2583":1,"2587":1,"2589":1,"2594":2,"2596":1,"2603":1,"2605":4,"2614":10,"2616":2,"2622":1,"2624":1,"2626":6,"2630":1,"2631":2,"2633":6,"2634":3,"2646":1,"2653":4,"2654":2,"2655":3,"2656":1,"2659":3,"2710":2,"2791":1,"2792":6,"2796":1}}],["files>",{"2":{"2513":1}}],["filesystem",{"2":{"2502":1}}],["files",{"0":{"5":1,"1835":1,"2342":1,"2474":1,"2477":1,"2742":1},"2":{"1":1,"32":1,"50":4,"69":1,"73":2,"75":1,"86":1,"92":1,"113":1,"114":5,"118":1,"132":1,"133":1,"134":3,"145":2,"176":2,"191":3,"199":7,"201":2,"211":3,"213":2,"220":1,"224":2,"234":2,"236":4,"238":1,"249":3,"262":1,"266":1,"277":1,"282":3,"341":1,"371":1,"374":1,"380":1,"387":1,"396":2,"399":1,"400":5,"401":2,"411":1,"448":1,"453":1,"454":1,"485":2,"496":3,"499":1,"501":1,"509":1,"513":4,"515":1,"520":1,"521":1,"522":2,"530":1,"545":1,"554":2,"606":2,"609":2,"610":1,"613":1,"614":2,"1132":1,"1133":1,"1324":1,"1414":3,"1416":1,"1420":1,"1421":1,"1422":3,"1482":1,"1591":1,"1767":1,"1990":1,"2164":3,"2298":2,"2299":1,"2300":4,"2301":2,"2335":1,"2338":1,"2339":1,"2342":5,"2348":1,"2381":1,"2383":1,"2385":1,"2388":1,"2444":1,"2464":1,"2466":2,"2467":1,"2468":2,"2469":1,"2472":1,"2474":1,"2475":1,"2476":1,"2477":1,"2478":1,"2479":2,"2484":1,"2486":1,"2487":1,"2496":2,"2512":1,"2513":2,"2516":1,"2527":4,"2540":1,"2547":1,"2548":1,"2563":1,"2564":1,"2565":1,"2572":1,"2587":1,"2592":1,"2603":5,"2604":1,"2605":7,"2612":2,"2654":1,"2686":1,"2710":5,"2792":4}}],["finnish",{"2":{"1392":1,"2742":3}}],["finger",{"2":{"1366":1,"1912":3,"1940":3,"1946":1,"2190":1,"2191":1}}],["fingers",{"2":{"1366":1,"1447":1,"1940":1}}],["fingerprintusbhost",{"2":{"1869":1}}],["fingerprint",{"2":{"199":1}}],["finite",{"2":{"516":1}}],["finishing",{"0":{"2319":1},"2":{"505":1}}],["finishes",{"2":{"331":1,"2199":2,"2200":1,"2782":1}}],["finished",{"0":{"316":1,"525":1},"2":{"312":1,"315":1,"316":1,"522":1,"647":1,"665":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1195":1,"1199":1,"1203":1,"1205":1,"1767":2,"1925":1,"1990":2,"2199":2,"2200":5,"2205":2,"2206":3,"2207":3,"2208":3,"2209":4,"2392":1}}],["finish",{"0":{"2235":1,"2259":1},"2":{"331":1,"1591":2,"1593":1,"1721":1,"2402":1,"2540":1}}],["finalize",{"2":{"2303":1}}],["final",{"0":{"2751":1},"2":{"496":1,"499":1,"522":1,"614":1,"1321":4,"1488":1,"2199":1,"2312":1,"2552":1,"2713":1,"2744":1,"2788":1}}],["finally",{"2":{"163":1,"330":1,"626":1,"1362":1,"1396":1,"1927":1,"2150":1,"2200":1,"2209":1,"2219":1,"2390":1,"2569":1,"2596":1}}],["finer",{"2":{"2143":1,"2394":1}}],["fine40",{"2":{"211":1}}],["fine",{"0":{"1900":1},"2":{"176":1,"1297":1,"1442":1,"1467":1,"1714":1,"1901":1,"1918":1,"1919":1,"2156":1,"2188":1,"2464":1,"2508":1,"2537":1,"2545":1,"2605":2,"2608":1,"2776":1,"2779":1}}],["finder",{"2":{"2283":1,"2285":1,"2287":1,"2491":2}}],["finds",{"2":{"1291":1,"1292":1}}],["finding",{"2":{"557":1}}],["find",{"0":{"374":1,"2709":1},"2":{"31":4,"34":1,"124":1,"211":1,"233":1,"236":2,"240":1,"245":1,"248":1,"249":1,"331":1,"335":1,"336":1,"352":3,"356":1,"374":4,"401":1,"430":1,"446":1,"454":1,"481":3,"552":1,"554":1,"557":1,"602":1,"616":1,"627":1,"628":1,"674":1,"1129":1,"1132":1,"1133":1,"1253":1,"1296":1,"1297":1,"1299":1,"1341":1,"1401":1,"1453":2,"1478":1,"1611":1,"1689":1,"1715":1,"1925":1,"2099":1,"2156":1,"2164":1,"2209":1,"2291":1,"2297":2,"2300":1,"2312":1,"2314":1,"2321":1,"2344":1,"2387":1,"2394":2,"2431":2,"2443":1,"2444":2,"2445":1,"2457":1,"2458":1,"2462":3,"2466":1,"2513":2,"2573":1,"2595":1,"2725":1,"2766":1,"2767":2,"2777":1,"2782":1,"2783":1,"2787":1,"2789":1,"2794":1}}],["fields",{"2":{"191":1,"1572":1,"2541":1,"2624":1,"2631":1}}],["field",{"2":{"160":1,"335":1,"350":5,"628":1,"1712":1,"2200":1,"2475":1,"2654":2,"2744":1}}],["fitler",{"2":{"1477":2,"1488":2}}],["fits",{"2":{"1442":1,"2219":1}}],["fitness",{"2":{"1417":1,"2609":1}}],["fit",{"2":{"124":2,"134":1,"352":1,"1373":1,"1592":1,"1860":2,"2181":2,"2592":1,"2743":2}}],["fitting",{"2":{"114":1}}],["firefox",{"2":{"2466":1}}],["fired",{"2":{"2301":1}}],["fire",{"2":{"1555":3,"1611":2,"2200":1}}],["firstly",{"2":{"2147":1,"2392":1}}],["first",{"0":{"2459":1,"2537":1},"1":{"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1},"2":{"46":1,"65":1,"90":2,"113":1,"114":1,"120":1,"130":1,"142":1,"213":1,"222":1,"284":1,"358":2,"361":1,"366":1,"430":1,"453":1,"462":1,"465":1,"496":1,"501":1,"505":1,"506":1,"550":1,"556":1,"557":2,"559":1,"560":2,"570":1,"588":1,"597":1,"598":1,"606":1,"627":1,"644":2,"646":1,"656":1,"659":1,"663":1,"679":2,"680":1,"685":1,"734":1,"738":1,"760":1,"764":1,"792":1,"796":1,"822":1,"826":1,"857":1,"861":1,"891":1,"895":1,"925":1,"929":1,"959":1,"963":1,"993":1,"997":1,"1027":1,"1031":1,"1061":1,"1065":1,"1095":1,"1099":1,"1148":1,"1152":1,"1185":1,"1189":1,"1218":1,"1251":1,"1296":1,"1303":1,"1307":1,"1325":1,"1340":2,"1377":1,"1396":2,"1422":1,"1460":1,"1488":3,"1489":1,"1548":1,"1555":1,"1557":1,"1558":1,"1559":1,"1565":1,"1591":1,"1598":2,"1632":2,"1650":1,"1652":1,"1690":1,"1713":2,"1741":1,"1744":1,"1747":1,"1750":1,"1763":1,"1819":1,"1822":1,"1825":1,"1845":1,"1850":1,"1858":1,"1918":1,"1925":1,"1927":2,"1936":1,"1943":1,"1950":1,"1984":1,"1987":1,"2064":1,"2067":1,"2101":1,"2160":1,"2163":1,"2164":1,"2169":1,"2175":1,"2185":1,"2199":4,"2200":3,"2209":1,"2220":2,"2299":1,"2309":1,"2312":1,"2320":1,"2344":1,"2348":2,"2368":1,"2372":1,"2457":1,"2480":1,"2489":1,"2509":1,"2512":1,"2513":3,"2514":1,"2527":1,"2529":1,"2547":1,"2552":1,"2554":1,"2596":1,"2604":2,"2605":1,"2614":2,"2616":1,"2635":8,"2642":1,"2653":1,"2655":1,"2663":1,"2696":1,"2697":1,"2714":2,"2725":1,"2739":1,"2744":1,"2761":1,"2767":1,"2774":1,"2776":1,"2782":1,"2786":1}}],["firmware\`",{"2":{"365":2,"366":2}}],["firmwares",{"2":{"164":1,"173":1,"263":1,"371":1,"2466":1}}],["firmware",{"0":{"31":1,"34":1,"56":1,"164":1,"273":1,"276":1,"542":1,"1296":1,"2159":1,"2316":1,"2317":1,"2318":1,"2354":1,"2357":1,"2360":1,"2361":1,"2381":1,"2388":1,"2459":1,"2464":1,"2465":1,"2674":1,"2713":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2382":1,"2383":1,"2384":1,"2385":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1},"2":{"2":1,"3":1,"10":1,"15":1,"21":1,"24":1,"28":2,"30":2,"33":2,"36":1,"37":1,"43":1,"49":1,"70":3,"73":1,"107":1,"112":1,"114":3,"116":1,"124":1,"130":2,"131":1,"132":1,"156":1,"160":4,"164":1,"166":1,"201":1,"213":1,"215":1,"222":2,"224":2,"228":3,"236":1,"238":1,"240":1,"243":1,"249":4,"265":2,"266":2,"268":1,"273":5,"275":1,"276":3,"278":1,"291":1,"292":1,"304":3,"308":1,"309":1,"311":1,"312":3,"313":1,"314":1,"316":5,"332":1,"341":2,"343":2,"344":2,"345":2,"346":1,"347":2,"349":2,"352":2,"360":4,"363":1,"365":1,"366":1,"367":2,"370":6,"371":2,"373":1,"375":1,"382":1,"387":1,"388":2,"391":1,"393":2,"394":2,"397":1,"401":2,"406":1,"430":1,"450":2,"451":1,"458":3,"506":1,"513":3,"515":2,"519":1,"521":2,"527":1,"529":3,"530":2,"533":2,"534":1,"535":1,"536":1,"539":1,"542":1,"543":1,"554":2,"556":1,"557":1,"558":1,"574":2,"592":4,"679":1,"689":1,"1271":1,"1273":1,"1276":1,"1278":1,"1280":1,"1294":1,"1307":1,"1324":2,"1325":1,"1349":1,"1356":1,"1371":1,"1413":1,"1422":2,"1450":1,"1471":1,"1472":1,"1474":1,"1528":2,"1529":2,"1534":1,"1632":1,"1766":1,"1854":1,"1863":2,"1910":1,"1967":1,"1986":1,"1987":2,"2072":1,"2075":1,"2080":1,"2152":2,"2161":1,"2162":1,"2163":2,"2164":2,"2166":1,"2172":1,"2187":2,"2198":1,"2199":1,"2215":1,"2264":1,"2270":2,"2272":3,"2277":1,"2279":4,"2284":2,"2286":2,"2287":1,"2288":3,"2289":1,"2291":3,"2297":1,"2300":2,"2301":1,"2303":4,"2307":2,"2315":2,"2316":7,"2318":1,"2319":1,"2334":2,"2335":1,"2343":1,"2350":5,"2351":1,"2352":1,"2353":1,"2354":3,"2357":1,"2359":1,"2361":1,"2366":1,"2368":1,"2372":1,"2380":1,"2384":1,"2388":6,"2390":1,"2441":1,"2442":2,"2456":1,"2457":3,"2459":2,"2460":1,"2461":1,"2462":1,"2464":3,"2465":2,"2466":1,"2467":1,"2468":1,"2476":4,"2478":3,"2480":7,"2481":1,"2484":1,"2485":1,"2486":2,"2487":1,"2488":1,"2489":2,"2490":1,"2491":6,"2492":1,"2493":2,"2494":1,"2495":1,"2507":1,"2508":5,"2509":1,"2511":1,"2516":10,"2518":1,"2526":6,"2533":1,"2537":1,"2540":1,"2542":1,"2543":1,"2545":1,"2547":1,"2549":1,"2550":1,"2551":1,"2552":6,"2553":1,"2561":1,"2562":1,"2563":1,"2564":1,"2583":1,"2605":5,"2608":1,"2612":1,"2614":6,"2615":12,"2616":2,"2617":1,"2618":1,"2653":2,"2666":1,"2686":1,"2710":3,"2711":1,"2713":1,"2743":1,"2744":2,"2747":2,"2748":1,"2749":1,"2751":1,"2757":1,"2758":4,"2760":1,"2767":1,"2774":1,"2775":1,"2781":1,"2784":2,"2788":1,"2795":1}}],["fixme",{"2":{"482":1}}],["fixmes",{"0":{"482":1},"2":{"482":2}}],["fixups",{"2":{"114":1}}],["fixup",{"2":{"65":1,"92":2,"114":6,"134":3,"145":2,"160":3,"176":9,"191":23,"199":9,"211":13,"222":3,"236":1,"249":7,"266":4,"277":4}}],["fixing",{"0":{"28":1},"2":{"50":1,"114":1,"199":1,"236":1,"557":1,"2607":2}}],["fixed",{"0":{"25":1},"2":{"25":1,"50":1,"73":1,"86":1,"114":1,"145":1,"160":1,"191":1,"199":1,"211":2,"236":1,"266":1,"434":1,"570":1,"1332":1,"2357":1,"2507":1,"2529":1}}],["fixes",{"0":{"48":1,"62":1,"73":1,"92":1},"2":{"5":1,"73":2,"92":1,"114":3,"134":3,"145":4,"160":8,"176":7,"190":2,"191":7,"199":3,"211":2,"222":1,"236":2,"249":1,"266":2,"277":3,"343":1,"2556":1}}],["fix",{"0":{"11":1},"2":{"6":1,"28":1,"32":1,"50":1,"51":1,"62":1,"73":6,"74":1,"75":1,"77":1,"92":8,"94":2,"95":2,"114":68,"133":1,"134":42,"145":12,"160":32,"175":1,"176":40,"190":2,"191":47,"199":25,"211":25,"222":23,"236":17,"249":19,"266":10,"277":5,"352":1,"376":3,"554":2,"560":2,"1278":1,"1298":2,"1307":1,"1440":1,"1538":1,"2338":1,"2358":1,"2437":2,"2450":2,"2493":1,"2507":2,"2511":1,"2529":1,"2603":1}}],["footprint",{"0":{"2077":1},"2":{"2557":1,"2567":1}}],["footnotes",{"2":{"279":1}}],["foo=none",{"2":{"474":1}}],["foo=",{"2":{"474":1}}],["foo",{"2":{"453":6,"457":1,"459":1,"474":2,"475":1,"476":2,"570":2,"572":2,"1369":1}}],["font",{"0":{"409":1,"410":1,"2624":1,"2626":1,"2629":1,"2630":1},"1":{"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1},"2":{"409":1,"410":1,"1852":5,"1855":8,"2176":1,"2179":8,"2614":18,"2616":34,"2624":6,"2625":1,"2626":6,"2627":2,"2628":3,"2629":4,"2630":1}}],["fonts",{"2":{"138":2,"248":1,"249":1,"1855":3,"2179":3,"2612":2,"2613":5,"2614":1,"2616":5}}],["fox",{"2":{"211":1}}],["focused",{"2":{"481":1,"2457":1}}],["focuses",{"2":{"278":1}}],["focusing",{"2":{"233":1}}],["focus",{"2":{"182":1,"213":1,"430":1,"1605":1,"1715":1,"2541":1,"2777":1}}],["foundational",{"2":{"2764":1}}],["foundation",{"2":{"1417":1,"2609":1}}],["found",{"0":{"1298":1},"2":{"124":2,"210":1,"316":1,"324":1,"327":1,"335":1,"376":1,"401":1,"430":1,"446":1,"483":1,"484":1,"529":1,"552":1,"674":1,"675":1,"676":1,"696":1,"1309":1,"1377":1,"1435":1,"1475":1,"1482":1,"1489":1,"1528":1,"1668":1,"1854":1,"1925":1,"1927":1,"2178":1,"2182":1,"2183":1,"2184":1,"2280":1,"2295":3,"2298":2,"2301":1,"2310":1,"2319":1,"2357":1,"2392":1,"2432":1,"2460":1,"2480":1,"2482":1,"2507":1,"2508":1,"2561":1,"2572":1,"2588":1,"2614":1,"2616":1,"2694":1,"2762":1,"2782":1,"2796":1}}],["fourth",{"2":{"1443":1,"1747":1,"1750":1,"2190":1,"2199":1,"2205":2}}],["fourier",{"2":{"45":1}}],["four",{"0":{"1746":1},"1":{"1747":1,"1748":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"154":2,"160":1,"453":1,"455":1,"529":1,"654":1,"755":1,"758":1,"784":1,"787":1,"816":1,"819":1,"848":1,"883":1,"917":1,"920":1,"951":1,"954":1,"985":1,"988":1,"1019":1,"1053":1,"1087":1,"1143":1,"1146":1,"1180":1,"1183":1,"1337":1,"1597":1,"1629":1,"2131":1,"2143":1,"2190":2,"2387":1,"2391":1,"2653":1,"2738":2}}],["folks",{"2":{"343":1,"344":1,"345":1,"346":1,"349":1}}],["foldkb",{"2":{"134":1}}],["folder2",{"2":{"1388":1}}],["folder1",{"2":{"1388":1}}],["folder>",{"2":{"1383":3}}],["folder",{"0":{"43":1,"2335":1},"1":{"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2341":1},"2":{"70":1,"72":2,"111":1,"113":3,"114":5,"133":1,"134":1,"145":2,"160":20,"176":2,"199":2,"204":1,"211":6,"236":1,"249":10,"266":1,"277":2,"286":1,"291":2,"331":3,"335":1,"370":1,"373":1,"387":1,"497":1,"499":2,"513":4,"558":1,"559":2,"565":1,"566":1,"1383":2,"1384":3,"1388":2,"1413":2,"1416":1,"1422":1,"1435":1,"1450":1,"1452":1,"1477":4,"1767":1,"1990":1,"2295":3,"2296":1,"2297":1,"2298":1,"2300":3,"2333":1,"2334":5,"2335":2,"2338":14,"2339":16,"2342":1,"2346":3,"2464":1,"2474":2,"2475":2,"2477":1,"2479":1,"2491":1,"2507":1,"2508":1,"2536":1,"2537":3,"2547":3,"2550":2,"2605":1,"2654":1,"2792":5,"2794":1}}],["folders",{"0":{"499":1,"2334":1},"2":{"35":1,"37":1,"43":1,"114":1,"160":1,"204":1,"222":1,"496":1,"498":1,"499":3,"1383":1,"2300":3,"2334":3,"2338":1,"2792":1}}],["followed",{"2":{"361":1,"616":1,"1363":1,"1366":3,"1394":1,"1398":2,"1488":2,"1713":3,"2533":1,"2603":2,"2614":1,"2626":1,"2633":1,"2635":2,"2684":1,"2773":1}}],["followup",{"2":{"160":1,"224":1,"2606":1}}],["follow",{"2":{"114":1,"125":1,"185":1,"228":1,"240":1,"367":2,"453":3,"559":1,"560":2,"606":1,"607":1,"609":2,"623":1,"1124":1,"1127":1,"1130":1,"1132":1,"1133":1,"1302":1,"1375":1,"1489":1,"1536":1,"2221":1,"2336":1,"2343":1,"2352":1,"2456":1,"2457":1,"2472":1,"2501":1,"2506":1,"2507":1,"2536":1,"2593":1,"2605":1,"2639":1,"2792":1}}],["following",{"2":{"30":1,"31":2,"33":1,"34":3,"45":1,"67":1,"86":1,"102":1,"118":1,"119":1,"122":1,"125":1,"143":1,"144":1,"154":1,"157":1,"167":1,"168":1,"181":1,"185":1,"194":2,"197":1,"201":1,"206":1,"248":1,"255":2,"256":1,"273":1,"314":1,"317":1,"371":2,"374":1,"416":1,"450":1,"453":1,"462":1,"487":1,"514":1,"516":1,"534":1,"556":1,"565":1,"566":2,"588":2,"598":1,"602":1,"610":1,"615":1,"631":1,"643":1,"644":1,"656":1,"657":1,"659":1,"690":1,"692":1,"696":1,"698":1,"700":1,"702":1,"703":1,"731":1,"734":1,"757":1,"758":1,"760":1,"786":1,"787":1,"788":1,"789":1,"790":1,"792":1,"818":1,"819":1,"820":1,"822":1,"850":1,"851":1,"853":1,"854":1,"855":1,"857":1,"885":1,"886":1,"887":1,"888":1,"889":1,"891":1,"919":1,"920":1,"921":1,"922":1,"923":1,"925":1,"953":1,"954":1,"955":1,"956":1,"957":1,"959":1,"987":1,"988":1,"989":1,"990":1,"991":1,"993":1,"1021":1,"1022":1,"1024":1,"1025":1,"1027":1,"1055":1,"1056":1,"1058":1,"1059":1,"1061":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1095":1,"1134":1,"1145":1,"1146":1,"1148":1,"1170":1,"1171":1,"1173":1,"1182":1,"1183":1,"1185":1,"1212":1,"1214":1,"1233":1,"1250":1,"1251":1,"1253":1,"1254":1,"1257":1,"1261":1,"1262":1,"1263":1,"1264":1,"1265":1,"1266":1,"1267":1,"1276":2,"1282":1,"1289":1,"1290":1,"1291":1,"1317":1,"1331":1,"1338":1,"1341":1,"1348":1,"1351":1,"1353":1,"1354":1,"1356":1,"1365":1,"1366":1,"1367":1,"1378":1,"1413":1,"1415":1,"1422":1,"1424":1,"1430":1,"1434":1,"1440":1,"1453":2,"1467":1,"1468":1,"1475":1,"1485":1,"1489":2,"1492":1,"1494":1,"1495":1,"1503":1,"1504":2,"1506":1,"1507":1,"1529":1,"1530":1,"1537":1,"1549":1,"1552":2,"1555":1,"1563":1,"1565":1,"1570":1,"1591":1,"1593":1,"1597":1,"1600":1,"1608":2,"1613":1,"1617":1,"1620":1,"1622":1,"1623":1,"1624":1,"1625":1,"1628":1,"1629":1,"1631":1,"1669":1,"1671":1,"1672":1,"1703":1,"1715":1,"1717":1,"1720":1,"1721":1,"1722":1,"1723":1,"1754":1,"1762":1,"1763":1,"1825":1,"1827":1,"1828":1,"1838":1,"1839":1,"1840":1,"1841":1,"1842":1,"1843":1,"1846":1,"1850":1,"1852":1,"1863":1,"1871":1,"1894":1,"1897":1,"1899":1,"1900":1,"1901":1,"1906":1,"1910":1,"1911":1,"1912":1,"1913":1,"1915":1,"1917":1,"1919":1,"1921":1,"1923":1,"1924":1,"1925":1,"1927":1,"1933":1,"1937":1,"1951":2,"1953":1,"1956":1,"1961":1,"1962":1,"1963":1,"1972":1,"1977":1,"1981":2,"1983":1,"1984":1,"1988":1,"1989":1,"2069":1,"2070":2,"2076":1,"2077":1,"2098":1,"2101":1,"2106":1,"2111":1,"2112":1,"2113":1,"2116":1,"2141":1,"2147":1,"2159":1,"2160":1,"2162":1,"2163":2,"2164":2,"2165":2,"2167":1,"2175":1,"2176":1,"2184":1,"2185":1,"2186":1,"2187":1,"2195":1,"2207":1,"2208":1,"2209":2,"2216":1,"2217":1,"2218":1,"2219":2,"2220":1,"2221":1,"2268":1,"2269":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":2,"2278":1,"2280":1,"2281":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":1,"2291":1,"2297":1,"2298":1,"2300":2,"2307":1,"2321":1,"2339":2,"2340":1,"2341":1,"2350":3,"2367":1,"2385":1,"2386":1,"2387":1,"2390":1,"2392":3,"2444":1,"2448":1,"2452":1,"2453":1,"2468":1,"2470":2,"2471":1,"2474":1,"2476":1,"2477":2,"2479":1,"2489":1,"2492":1,"2498":1,"2503":1,"2507":4,"2513":1,"2526":2,"2552":3,"2562":2,"2570":1,"2578":1,"2581":1,"2587":3,"2599":1,"2605":1,"2612":1,"2614":2,"2615":34,"2616":2,"2618":1,"2632":1,"2635":1,"2748":2,"2766":4,"2774":2,"2775":2,"2776":3,"2777":4,"2781":1}}],["follows",{"2":{"0":1,"19":1,"31":1,"145":1,"203":1,"231":1,"234":1,"317":1,"455":1,"513":1,"534":1,"1337":1,"1843":1,"1901":1,"1904":1,"2338":2,"2339":1,"2342":1,"2356":1,"2469":1,"2491":1,"2574":1,"2624":1,"2629":1,"2631":1,"2634":1,"2635":2,"2639":1,"2654":1}}],["forum",{"2":{"2754":1}}],["forums",{"2":{"2365":1}}],["forgot",{"2":{"2767":1}}],["forget",{"2":{"1916":3}}],["forgiveness",{"2":{"466":1}}],["forever",{"2":{"2783":1}}],["forever60",{"2":{"389":5}}],["foremost",{"2":{"2744":1}}],["foreground",{"2":{"435":4}}],["foreach",{"2":{"349":1}}],["forth",{"2":{"341":1,"2184":1,"2269":1,"2276":1}}],["forcing",{"2":{"1866":1,"2166":1}}],["forcibly",{"2":{"50":1,"2169":1}}],["forceon",{"2":{"698":4}}],["forced",{"2":{"511":1,"1337":1,"2166":1,"2301":1}}],["forces",{"2":{"504":1,"515":1,"698":1,"1353":1,"1354":1,"2107":1}}],["forcefully",{"2":{"236":1}}],["force",{"0":{"195":1,"230":1},"2":{"112":3,"145":1,"195":4,"199":2,"211":2,"226":2,"236":3,"249":1,"277":1,"349":1,"361":2,"405":2,"504":2,"593":1,"594":1,"1134":1,"1275":1,"1280":1,"1369":1,"1386":3,"1866":1,"1897":1,"1974":2,"2109":1,"2183":1,"2268":2,"2301":1,"2318":1,"2492":1,"2516":2,"2605":1,"2649":1,"2738":3}}],["forming",{"2":{"2728":1}}],["formulas",{"2":{"1937":1}}],["formula",{"2":{"1763":1,"1984":1,"2500":1}}],["formed",{"2":{"1475":1}}],["former",{"2":{"1275":1,"1310":1}}],["formerly",{"2":{"37":1,"1535":2,"1566":1}}],["forms",{"2":{"453":1,"1430":1,"1447":1}}],["formalise",{"2":{"191":1}}],["formats",{"2":{"374":1,"377":1,"399":1,"400":1,"406":1,"2491":1,"2614":1}}],["formatters",{"2":{"114":1}}],["formatted",{"2":{"1":1,"50":1,"76":1,"482":1,"612":1,"1287":2,"2654":1}}],["formatting",{"0":{"1":1,"442":1,"444":1,"445":1,"454":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1},"2":{"73":1,"160":1,"176":1,"249":2,"432":1,"462":1,"2531":1,"2542":1}}],["format",{"0":{"1":1,"377":1,"399":1,"400":1,"406":1,"454":1,"470":1,"1394":1,"1487":1,"2624":1,"2631":1},"1":{"1488":1,"1489":1,"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1},"2":{"1":2,"93":1,"112":1,"114":2,"134":5,"145":1,"160":1,"191":1,"199":1,"211":2,"248":1,"249":1,"277":1,"317":1,"341":2,"374":1,"377":4,"378":1,"384":1,"399":1,"400":7,"406":1,"408":2,"409":2,"410":1,"432":2,"442":2,"444":1,"445":2,"454":9,"462":1,"467":1,"468":2,"470":1,"496":1,"513":2,"529":1,"533":1,"610":1,"1315":1,"1337":1,"1385":1,"1488":3,"1489":1,"2129":1,"2131":1,"2133":1,"2135":1,"2185":1,"2186":1,"2190":1,"2291":1,"2342":2,"2348":1,"2388":1,"2392":1,"2467":1,"2479":1,"2491":1,"2508":1,"2605":1,"2614":21,"2615":13,"2616":2,"2624":5,"2626":4,"2631":6,"2632":1,"2633":1,"2634":1,"2635":6,"2636":2,"2638":1,"2654":1,"2713":2,"2725":1,"2738":1}}],["form",{"2":{"110":1,"393":1,"394":1,"416":1,"417":1,"453":1,"1280":1,"2163":1,"2190":1,"2207":1,"2654":1,"2671":1,"2711":2,"2712":1}}],["forward",{"2":{"36":1,"37":1,"43":1,"113":1,"134":1,"184":1,"254":1,"268":1,"1369":1,"1561":1,"1763":1,"1860":1,"1910":4,"1984":1,"1986":2,"2072":1,"2181":1,"2333":1,"2394":4,"2415":1,"2416":2,"2431":1,"2432":4,"2607":1,"2794":1}}],["forked",{"0":{"2482":1},"2":{"2445":1,"2511":1,"2759":1}}],["forks",{"0":{"26":1},"2":{"349":1,"1302":1,"2758":1}}],["forking",{"2":{"21":1,"2303":1}}],["fork",{"0":{"5":1,"2525":1},"1":{"2526":1,"2527":1,"2528":1},"2":{"26":1,"46":1,"176":1,"228":1,"349":1,"554":1,"556":1,"1294":1,"1302":3,"2268":1,"2269":1,"2276":1,"2295":1,"2303":7,"2467":1,"2480":1,"2482":2,"2485":1,"2507":1,"2511":1,"2512":1,"2514":1,"2516":7,"2526":3,"2527":2,"2528":2,"2587":1,"2588":2,"2607":3}}],["for",{"0":{"11":1,"14":2,"26":1,"35":1,"56":1,"80":1,"149":1,"174":1,"203":1,"231":1,"246":1,"350":1,"356":1,"367":1,"448":1,"450":1,"510":1,"533":1,"534":1,"541":1,"547":1,"553":1,"562":1,"1139":1,"1278":1,"1290":1,"1300":1,"1306":1,"1339":1,"1340":1,"1387":1,"1708":1,"1709":1,"1710":1,"1830":1,"1971":1,"1975":1,"1981":1,"2188":1,"2208":1,"2209":1,"2315":1,"2510":1,"2531":1,"2539":1,"2542":1,"2550":1,"2589":2,"2590":1,"2591":1,"2603":1,"2709":1,"2779":1,"2792":1},"1":{"36":1,"449":1,"450":1,"451":1,"452":1,"1140":1,"1141":1,"1142":1,"1301":1,"1388":1,"1389":1,"1711":1,"1712":1,"1713":1,"1972":1,"2511":1,"2540":1,"2541":1,"2551":1},"2":{"0":1,"8":2,"9":1,"12":1,"13":3,"14":1,"18":3,"19":1,"28":1,"30":3,"31":3,"33":3,"34":1,"35":1,"36":9,"39":1,"45":5,"49":14,"50":10,"51":1,"52":1,"55":2,"63":2,"64":1,"65":4,"69":2,"70":1,"74":7,"75":3,"76":1,"81":1,"82":1,"86":2,"88":1,"89":1,"90":1,"92":4,"93":21,"94":3,"98":2,"99":4,"104":1,"107":2,"108":1,"111":1,"112":1,"114":58,"116":1,"118":5,"119":2,"120":2,"123":2,"125":3,"127":1,"128":1,"130":3,"131":1,"132":1,"133":1,"134":38,"137":3,"138":6,"139":1,"141":2,"143":1,"145":21,"149":2,"153":1,"156":1,"157":1,"160":33,"163":3,"164":1,"166":2,"169":2,"172":4,"173":2,"174":4,"175":5,"176":45,"179":1,"182":4,"183":1,"185":4,"186":2,"188":7,"189":3,"190":3,"191":52,"194":7,"195":2,"196":1,"199":28,"201":7,"202":1,"203":1,"204":1,"206":2,"209":1,"210":2,"211":32,"213":6,"215":1,"222":15,"224":1,"228":5,"229":3,"230":2,"231":2,"232":3,"234":2,"235":1,"236":26,"240":1,"241":1,"243":1,"246":1,"247":2,"248":2,"249":27,"253":1,"255":4,"256":1,"257":1,"258":1,"259":2,"262":1,"263":4,"264":1,"265":1,"266":18,"270":1,"271":1,"272":1,"273":2,"274":1,"276":1,"277":8,"279":2,"282":6,"284":1,"302":1,"303":1,"304":1,"306":1,"309":1,"311":1,"312":2,"315":1,"316":4,"317":3,"318":1,"322":2,"328":1,"331":6,"332":1,"334":3,"335":2,"336":2,"339":1,"340":3,"341":7,"343":4,"344":4,"345":2,"346":2,"347":3,"349":3,"350":10,"352":2,"355":3,"365":1,"366":1,"367":4,"370":4,"371":5,"372":1,"373":1,"374":7,"376":1,"378":3,"383":1,"384":1,"385":1,"393":2,"394":2,"395":1,"400":4,"401":1,"402":1,"403":1,"404":1,"408":1,"409":2,"410":1,"413":2,"415":2,"418":2,"427":1,"430":2,"431":2,"432":3,"433":1,"436":1,"437":3,"441":1,"446":2,"448":1,"453":3,"454":3,"455":2,"457":1,"461":1,"466":3,"470":3,"471":1,"472":1,"473":1,"474":1,"479":1,"480":1,"481":1,"483":1,"485":2,"486":2,"492":1,"495":2,"496":4,"498":1,"499":1,"500":1,"502":10,"504":1,"505":21,"506":4,"509":4,"510":1,"511":11,"512":1,"513":1,"515":8,"519":1,"521":1,"522":2,"523":1,"525":1,"528":1,"529":2,"530":3,"532":1,"533":1,"534":1,"535":2,"536":1,"537":1,"540":2,"541":2,"546":2,"550":4,"551":1,"554":6,"556":5,"557":3,"559":5,"560":4,"561":1,"562":2,"564":2,"565":1,"566":3,"567":1,"568":1,"569":1,"571":2,"572":1,"574":5,"575":3,"578":1,"580":2,"586":1,"588":3,"589":1,"592":6,"593":2,"594":2,"597":3,"598":1,"601":1,"602":1,"606":1,"607":1,"608":1,"609":2,"610":3,"611":2,"613":1,"614":4,"615":1,"621":2,"623":1,"624":3,"625":1,"626":5,"627":5,"628":2,"629":1,"630":4,"635":2,"636":1,"638":3,"639":7,"641":5,"642":1,"661":1,"662":3,"671":4,"673":1,"674":5,"675":2,"676":1,"677":2,"678":4,"679":3,"680":4,"681":1,"682":2,"684":1,"685":4,"686":4,"687":1,"689":1,"690":7,"691":3,"697":2,"701":2,"703":9,"704":1,"705":1,"707":3,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":3,"727":1,"730":2,"734":2,"736":1,"737":4,"749":1,"751":1,"756":2,"760":2,"762":1,"763":4,"776":1,"778":1,"785":2,"789":4,"792":2,"794":1,"795":4,"808":1,"809":3,"810":1,"811":1,"817":2,"820":1,"822":2,"824":1,"825":4,"830":1,"840":1,"842":1,"849":2,"850":4,"853":1,"854":4,"857":2,"859":1,"860":4,"865":1,"875":1,"877":1,"884":2,"887":1,"888":4,"891":2,"893":1,"894":4,"899":1,"909":1,"911":1,"918":2,"921":1,"922":4,"925":2,"927":1,"928":4,"933":1,"943":1,"945":1,"952":2,"955":1,"956":4,"959":2,"961":1,"962":4,"967":1,"977":1,"979":1,"986":2,"990":4,"993":2,"995":1,"996":4,"1001":1,"1011":1,"1012":3,"1013":1,"1014":1,"1020":2,"1021":4,"1024":4,"1027":2,"1029":1,"1030":4,"1035":1,"1045":1,"1046":3,"1047":1,"1048":1,"1054":2,"1055":4,"1058":4,"1061":2,"1063":1,"1064":4,"1069":1,"1079":1,"1080":3,"1081":1,"1082":1,"1088":2,"1092":4,"1095":2,"1097":1,"1098":4,"1103":1,"1113":1,"1114":3,"1115":1,"1116":1,"1121":3,"1122":1,"1123":3,"1126":5,"1127":5,"1129":6,"1130":6,"1132":3,"1133":2,"1134":1,"1136":1,"1138":1,"1139":1,"1142":2,"1144":1,"1148":1,"1150":1,"1151":4,"1156":1,"1162":1,"1168":1,"1171":8,"1174":1,"1181":2,"1185":2,"1187":1,"1188":4,"1193":1,"1203":1,"1205":1,"1214":9,"1218":1,"1235":11,"1249":1,"1252":1,"1253":1,"1254":1,"1255":1,"1256":1,"1257":1,"1258":1,"1262":5,"1263":4,"1264":2,"1267":5,"1271":1,"1272":1,"1275":1,"1277":1,"1278":2,"1279":2,"1280":1,"1284":1,"1286":1,"1288":1,"1289":2,"1290":1,"1291":3,"1294":2,"1300":1,"1302":2,"1304":1,"1306":3,"1307":2,"1309":1,"1311":1,"1312":1,"1313":1,"1315":2,"1318":1,"1320":1,"1324":2,"1330":2,"1331":1,"1336":3,"1337":9,"1339":1,"1340":1,"1341":1,"1347":1,"1349":2,"1350":1,"1351":2,"1353":1,"1354":1,"1356":1,"1358":2,"1360":1,"1361":1,"1362":4,"1363":6,"1366":5,"1367":1,"1368":4,"1369":7,"1371":3,"1372":4,"1373":4,"1376":3,"1377":2,"1378":10,"1379":1,"1380":1,"1383":2,"1384":1,"1386":1,"1388":2,"1389":3,"1390":1,"1394":4,"1396":4,"1397":1,"1398":3,"1400":1,"1401":3,"1405":2,"1406":1,"1412":1,"1413":1,"1414":3,"1415":2,"1416":4,"1417":2,"1418":2,"1419":2,"1420":2,"1421":5,"1422":6,"1424":2,"1425":3,"1426":1,"1427":1,"1428":3,"1429":1,"1430":1,"1432":1,"1435":1,"1436":5,"1438":2,"1439":1,"1440":2,"1441":1,"1442":4,"1443":5,"1447":2,"1448":3,"1449":4,"1451":3,"1453":5,"1455":1,"1460":1,"1467":5,"1468":4,"1469":1,"1475":1,"1476":1,"1477":1,"1478":2,"1479":2,"1482":4,"1483":5,"1484":2,"1485":2,"1487":1,"1488":6,"1489":3,"1490":2,"1491":1,"1492":1,"1494":4,"1496":1,"1497":1,"1501":1,"1503":1,"1506":4,"1507":1,"1508":1,"1528":3,"1531":1,"1532":2,"1533":2,"1534":1,"1535":1,"1536":5,"1537":1,"1540":2,"1541":2,"1545":2,"1548":1,"1549":2,"1551":3,"1552":2,"1553":1,"1555":6,"1556":1,"1560":1,"1561":3,"1562":5,"1563":4,"1565":2,"1567":1,"1568":1,"1571":2,"1572":1,"1585":1,"1586":1,"1587":1,"1591":1,"1592":2,"1593":1,"1594":1,"1595":2,"1596":4,"1597":1,"1600":2,"1608":3,"1611":8,"1614":4,"1615":6,"1616":1,"1620":1,"1627":1,"1632":1,"1643":1,"1660":2,"1662":1,"1670":1,"1671":2,"1676":1,"1689":3,"1692":1,"1693":1,"1699":1,"1700":3,"1704":1,"1708":5,"1713":4,"1714":1,"1715":2,"1721":1,"1722":2,"1723":1,"1737":1,"1740":1,"1743":1,"1746":1,"1749":1,"1752":1,"1753":2,"1755":2,"1757":2,"1758":1,"1759":1,"1760":2,"1762":2,"1763":5,"1764":2,"1766":1,"1767":4,"1768":1,"1769":1,"1771":1,"1829":2,"1830":1,"1832":1,"1840":2,"1841":2,"1842":4,"1843":1,"1844":2,"1845":2,"1846":1,"1847":1,"1851":3,"1852":1,"1853":3,"1854":1,"1855":6,"1857":5,"1858":14,"1859":7,"1860":8,"1862":2,"1865":1,"1867":1,"1891":3,"1894":4,"1895":3,"1896":2,"1897":3,"1900":1,"1901":1,"1904":4,"1907":2,"1910":2,"1911":2,"1912":6,"1913":1,"1914":1,"1915":1,"1917":2,"1918":3,"1920":1,"1921":1,"1922":1,"1924":1,"1925":5,"1927":2,"1933":3,"1935":1,"1936":4,"1937":8,"1939":5,"1940":2,"1941":3,"1943":7,"1947":1,"1948":3,"1949":1,"1950":4,"1952":7,"1953":3,"1954":4,"1956":1,"1961":1,"1963":2,"1964":1,"1965":2,"1967":1,"1968":1,"1970":1,"1971":2,"1973":2,"1974":7,"1980":1,"1981":2,"1983":2,"1984":5,"1985":3,"1986":3,"1987":1,"1988":1,"1990":4,"1992":1,"1993":1,"1995":1,"1996":5,"1997":2,"2069":1,"2070":6,"2072":2,"2073":1,"2074":2,"2076":7,"2078":7,"2079":2,"2080":1,"2082":3,"2085":2,"2092":12,"2101":2,"2105":1,"2108":1,"2109":1,"2110":1,"2111":1,"2113":5,"2123":1,"2125":1,"2138":1,"2139":1,"2140":1,"2149":1,"2150":2,"2152":3,"2155":1,"2156":6,"2158":1,"2160":1,"2164":1,"2166":5,"2167":5,"2168":5,"2169":6,"2170":1,"2172":1,"2176":1,"2177":3,"2179":4,"2180":4,"2181":5,"2182":1,"2183":1,"2185":1,"2186":2,"2187":3,"2188":5,"2190":1,"2191":1,"2192":2,"2193":1,"2194":1,"2199":7,"2200":3,"2202":3,"2203":1,"2206":1,"2207":14,"2208":6,"2209":7,"2210":2,"2212":4,"2216":1,"2217":1,"2219":4,"2220":3,"2221":6,"2241":2,"2244":1,"2247":1,"2261":1,"2263":2,"2264":3,"2266":2,"2267":3,"2268":2,"2269":2,"2270":1,"2271":2,"2272":2,"2273":1,"2274":1,"2275":3,"2276":5,"2278":2,"2279":1,"2280":2,"2281":2,"2282":4,"2283":5,"2285":5,"2287":5,"2288":3,"2289":2,"2291":5,"2293":1,"2296":4,"2297":7,"2299":1,"2300":14,"2301":8,"2302":1,"2303":1,"2307":2,"2308":2,"2309":1,"2311":3,"2312":2,"2313":1,"2314":1,"2316":2,"2317":1,"2318":2,"2319":2,"2321":1,"2323":2,"2325":1,"2326":2,"2327":2,"2328":2,"2329":3,"2330":2,"2331":1,"2332":1,"2333":1,"2334":2,"2337":1,"2338":4,"2339":4,"2340":1,"2341":4,"2342":1,"2343":2,"2344":1,"2345":3,"2346":1,"2349":2,"2350":2,"2354":1,"2356":1,"2357":1,"2358":1,"2366":1,"2367":2,"2374":2,"2378":1,"2380":1,"2381":1,"2383":3,"2384":3,"2385":1,"2386":6,"2387":3,"2388":2,"2389":1,"2392":1,"2394":2,"2395":1,"2406":1,"2409":2,"2418":2,"2424":1,"2432":1,"2434":1,"2435":2,"2436":1,"2440":1,"2441":2,"2443":1,"2444":5,"2445":2,"2447":1,"2448":3,"2449":1,"2450":4,"2452":1,"2453":3,"2455":1,"2456":4,"2457":3,"2459":1,"2460":1,"2463":1,"2464":2,"2466":4,"2467":2,"2468":2,"2470":1,"2471":1,"2474":1,"2475":1,"2476":1,"2478":1,"2480":1,"2481":1,"2484":1,"2485":2,"2489":2,"2490":2,"2491":2,"2493":2,"2494":1,"2495":1,"2496":1,"2498":1,"2499":1,"2501":1,"2502":1,"2506":1,"2507":1,"2508":4,"2509":1,"2516":2,"2520":1,"2521":1,"2525":1,"2526":2,"2527":1,"2529":4,"2530":5,"2531":6,"2536":4,"2540":1,"2541":1,"2542":3,"2545":9,"2547":2,"2548":1,"2549":2,"2551":1,"2552":11,"2553":3,"2554":1,"2555":2,"2556":2,"2557":1,"2558":2,"2561":2,"2562":2,"2563":6,"2564":1,"2565":2,"2566":1,"2567":1,"2569":2,"2570":1,"2572":4,"2573":1,"2574":1,"2578":2,"2580":1,"2581":1,"2582":1,"2584":1,"2585":3,"2587":3,"2588":2,"2589":4,"2590":1,"2591":2,"2592":7,"2594":2,"2595":1,"2599":1,"2600":3,"2601":3,"2603":6,"2604":4,"2605":20,"2606":5,"2607":4,"2608":3,"2609":2,"2610":2,"2611":1,"2612":3,"2613":2,"2614":3,"2615":29,"2616":19,"2617":1,"2623":2,"2624":3,"2625":1,"2626":3,"2627":1,"2628":1,"2631":3,"2632":3,"2633":1,"2634":1,"2635":2,"2636":3,"2639":2,"2646":2,"2651":1,"2653":5,"2654":3,"2655":1,"2656":1,"2658":1,"2659":1,"2663":1,"2664":1,"2665":1,"2667":1,"2668":1,"2678":1,"2679":2,"2685":1,"2687":1,"2695":1,"2696":2,"2697":1,"2698":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2710":2,"2711":3,"2713":2,"2715":1,"2722":1,"2725":4,"2727":2,"2728":1,"2732":1,"2734":2,"2735":1,"2736":3,"2738":3,"2740":4,"2741":2,"2743":1,"2744":2,"2746":1,"2747":2,"2749":1,"2750":2,"2752":1,"2757":1,"2758":3,"2759":2,"2764":1,"2765":1,"2766":6,"2767":6,"2768":3,"2774":5,"2775":4,"2776":2,"2777":4,"2778":1,"2779":3,"2782":5,"2783":3,"2784":4,"2785":2,"2790":2,"2792":9,"2793":2,"2794":1,"2795":2,"2796":3}}],["oxidisation",{"2":{"2311":1}}],["oar",{"2":{"2185":1}}],["oops",{"2":{"1324":1}}],["oob",{"2":{"176":1,"222":2}}],["oemxx",{"2":{"628":2}}],["oj",{"2":{"616":1}}],["oven",{"2":{"523":1}}],["overcrowded",{"2":{"2346":1}}],["overhead",{"2":{"2167":1}}],["overheat",{"2":{"1611":1}}],["overhauls",{"2":{"352":1}}],["overhaul",{"0":{"142":1},"2":{"75":1,"94":1,"133":1,"134":1,"145":1,"160":1,"175":1,"176":2,"182":1,"266":1}}],["overlay",{"0":{"2447":1},"2":{"1943":4,"2080":1,"2441":2,"2445":1,"2447":1,"2482":1,"2483":1,"2484":1}}],["overlap",{"2":{"1547":1,"1566":1,"1846":4,"2080":1,"2606":1}}],["overlapping",{"0":{"1547":1,"1846":1},"2":{"98":1,"114":1,"236":1,"277":1,"1422":1,"1552":1,"1846":3,"2615":1}}],["overlook",{"2":{"473":1}}],["overwritable",{"2":{"1980":1}}],["overwritten",{"2":{"1852":1,"2273":1,"2389":1,"2561":1,"2563":1,"2580":1}}],["overwrites",{"2":{"2164":1}}],["overwrite",{"2":{"405":3,"1337":2,"1482":1,"1781":1,"1783":1,"2008":1,"2010":1,"2366":1,"2622":1,"2748":1}}],["overwriting",{"2":{"70":9,"1980":1,"1981":1}}],["overwhelmed",{"2":{"356":1}}],["overall",{"0":{"279":1},"1":{"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1},"2":{"374":1,"484":1,"505":1,"686":1,"2071":1,"2612":1,"2757":1}}],["overnumpad",{"2":{"134":1}}],["overrride",{"2":{"703":1}}],["overrun",{"2":{"114":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1226":1,"1229":1,"1244":1,"1246":1}}],["overridable",{"2":{"211":1,"1860":2,"2181":4}}],["overriding",{"0":{"1479":1,"2083":1},"1":{"1480":1},"2":{"99":1,"145":1,"191":1,"199":1,"277":1,"679":2,"686":1,"1482":1,"2080":1,"2444":1,"2710":1,"2788":1}}],["override",{"0":{"272":1,"1415":1,"1708":1},"2":{"50":1,"74":1,"90":2,"112":1,"114":1,"125":2,"134":1,"185":2,"188":1,"191":2,"199":1,"222":1,"272":7,"277":1,"377":1,"404":1,"500":1,"505":1,"506":1,"515":2,"567":1,"571":1,"580":4,"641":1,"673":1,"674":2,"675":2,"676":1,"679":1,"680":1,"681":1,"694":2,"702":1,"704":1,"705":1,"1132":1,"1133":1,"1214":1,"1235":1,"1435":1,"1453":1,"1483":1,"1598":2,"1606":4,"1693":2,"1695":5,"1696":2,"1697":2,"1698":1,"1699":1,"1700":1,"1701":4,"1703":19,"1704":7,"1706":3,"1707":3,"1708":17,"1709":4,"1710":2,"1711":4,"1712":2,"1713":2,"1714":1,"1754":1,"1860":1,"1911":1,"2083":1,"2114":1,"2141":1,"2181":1,"2299":2,"2516":1,"2562":1,"2563":2,"2564":1,"2606":1,"2615":2,"2712":1,"2741":1,"2776":1,"2788":1}}],["overridescontains",{"2":{"1695":1}}],["overrides",{"0":{"99":1,"580":1,"1346":1,"1693":1,"1694":1,"1696":1},"1":{"1694":1,"1695":1,"1696":1,"1697":2,"1698":2,"1699":2,"1700":2,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"1714":1,"1715":1},"2":{"4":1,"50":1,"99":4,"114":2,"125":2,"145":1,"176":1,"185":2,"199":1,"222":1,"272":5,"502":2,"505":1,"511":1,"1340":1,"1346":1,"1693":2,"1695":2,"1696":1,"1701":2,"1703":4,"1704":2,"1706":1,"1707":3,"1708":1,"1710":1,"1711":2,"1713":2,"1714":4,"1715":2,"1956":1,"1974":1,"2080":3,"2299":1,"2562":1,"2597":1,"2763":1}}],["overridden",{"2":{"50":1,"498":1,"679":1,"707":1,"726":1,"1413":1,"1952":1,"1956":2,"2234":1,"2235":1,"2236":1}}],["overview",{"0":{"303":1,"312":1,"363":1,"428":1,"518":1,"552":1,"607":1,"1349":1,"2153":1,"2393":1,"2439":1,"2457":1},"1":{"313":1,"364":1,"365":1,"366":1,"367":1,"429":1,"1350":1,"1351":1,"2394":1,"2395":1,"2396":1,"2397":1,"2398":1,"2399":1,"2400":1,"2401":1,"2402":1,"2403":1,"2404":1,"2405":1,"2406":1,"2407":1,"2408":1,"2409":1,"2410":1,"2411":1,"2412":1,"2413":1,"2414":1,"2415":1,"2416":1,"2417":1,"2418":1,"2419":1,"2420":1,"2421":1,"2422":1,"2423":1,"2440":1,"2441":1,"2442":1,"2443":1,"2444":1,"2445":1,"2446":1,"2447":1},"2":{"112":1,"492":1,"550":1,"1303":1,"1371":1,"1382":1,"2210":1,"2297":1,"2448":1,"2574":1,"2594":1,"2764":1}}],["over",{"2":{"99":1,"114":2,"124":1,"151":1,"191":1,"243":1,"310":1,"317":1,"319":1,"320":1,"381":1,"434":1,"479":1,"501":1,"502":1,"516":1,"540":1,"566":1,"674":1,"675":1,"694":1,"1125":2,"1128":2,"1172":1,"1249":1,"1253":1,"1331":1,"1363":1,"1366":1,"1373":1,"1397":2,"1529":1,"1568":1,"1612":1,"1849":1,"1851":1,"1853":2,"1859":1,"1901":1,"1922":1,"1989":1,"2069":1,"2070":1,"2152":1,"2174":1,"2175":1,"2177":2,"2184":2,"2185":1,"2200":1,"2291":1,"2301":2,"2302":1,"2311":1,"2312":1,"2318":1,"2332":1,"2351":1,"2354":1,"2366":1,"2388":1,"2480":1,"2529":2,"2531":1,"2536":1,"2542":1,"2585":1,"2599":1,"2666":1,"2699":1,"2763":1,"2774":1,"2783":1}}],["overflows",{"2":{"114":1}}],["overflow",{"0":{"11":1},"2":{"11":3,"114":1,"160":1,"236":1}}],["ohm",{"2":{"786":2,"789":18,"850":2,"854":18,"885":2,"888":18,"919":2,"922":18,"953":2,"956":18,"987":2,"990":18,"1021":2,"1024":18,"1055":2,"1058":18,"1089":2,"1092":18}}],["oh",{"0":{"442":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1}}],["okay",{"2":{"1297":1,"1842":1,"2605":1}}],["ok",{"2":{"331":1,"396":2,"458":1,"472":1,"473":1,"479":1,"482":1,"554":1,"698":1,"1324":2,"1400":2,"1591":1,"2386":1,"2464":4,"2508":4,"2791":1}}],["oq",{"2":{"266":1}}],["o",{"2":{"222":1,"266":1,"277":2,"313":1,"379":1,"380":1,"388":2,"404":1,"433":2,"441":1,"513":2,"530":2,"563":1,"1258":1,"1910":1,"1912":1,"2186":1,"2191":4,"2288":1,"2307":1,"2308":2,"2314":2,"2323":1,"2394":3,"2425":3,"2446":1,"2567":1,"2614":8}}],["odd",{"2":{"1896":1,"2350":1}}],["odelia",{"2":{"211":1}}],["odin",{"2":{"191":1,"211":2}}],["og60",{"2":{"236":1}}],["og",{"2":{"211":1}}],["ogr",{"2":{"211":1}}],["ogurec",{"2":{"154":2}}],["owl8",{"2":{"154":2}}],["owners",{"2":{"2758":1}}],["owned",{"2":{"191":1}}],["owns",{"2":{"2620":1}}],["own",{"0":{"1287":1,"1367":1,"2515":1},"2":{"30":1,"33":1,"37":1,"43":1,"107":1,"113":1,"114":2,"134":1,"172":1,"228":1,"273":1,"318":1,"352":1,"453":1,"499":1,"556":1,"559":1,"563":1,"570":1,"602":1,"641":1,"682":1,"1315":1,"1341":1,"1367":2,"1413":1,"1421":1,"1430":2,"1435":2,"1494":1,"1506":1,"1548":1,"1598":1,"1753":1,"1919":2,"1925":2,"1952":1,"1956":1,"2146":2,"2200":1,"2215":1,"2219":1,"2221":1,"2266":1,"2267":1,"2268":1,"2281":1,"2301":2,"2321":1,"2350":1,"2357":1,"2385":1,"2436":1,"2448":1,"2461":1,"2466":1,"2467":1,"2480":1,"2485":1,"2509":1,"2514":1,"2516":1,"2530":1,"2563":1,"2564":1,"2565":1,"2603":3,"2605":2,"2607":1,"2610":1,"2613":1,"2624":1,"2631":2,"2654":1,"2666":1,"2740":1,"2767":1,"2778":1}}],["o3",{"2":{"114":1}}],["opinions",{"2":{"2789":1}}],["opmode",{"2":{"704":2}}],["opqr",{"2":{"266":1}}],["opcode",{"2":{"222":1}}],["opposed",{"2":{"630":1,"1340":1}}],["opposite",{"2":{"202":1,"1234":1,"1904":1,"2378":1}}],["opportune",{"2":{"263":1}}],["opportunity",{"2":{"203":1}}],["opus",{"2":{"144":2}}],["oper",{"2":{"2394":2,"2431":2}}],["operate",{"2":{"432":1,"1126":2,"1275":1,"1615":1,"2386":1}}],["operates",{"2":{"82":1,"428":1,"641":1,"1256":1,"1842":1,"2160":1,"2623":1,"2741":1}}],["operational",{"2":{"674":1}}],["operation",{"0":{"698":1,"2089":1},"2":{"630":1,"641":1,"1125":1,"1128":1,"1130":1,"1134":1,"1308":1,"1943":1,"2288":1,"2513":1,"2554":1,"2582":2,"2616":1}}],["operations",{"0":{"348":1,"424":1},"1":{"349":1,"350":1},"2":{"266":1,"424":1,"432":1,"698":1,"1859":1,"2471":1,"2612":1,"2615":12,"2616":4,"2620":1}}],["operating",{"0":{"367":1,"2356":1,"2548":1},"2":{"176":1,"367":1,"403":1,"1310":1,"1840":1,"1870":1,"2184":1,"2215":1,"2289":1,"2300":2,"2355":1,"2356":1,"2359":1,"2470":1,"2595":1,"2740":1}}],["operators",{"2":{"1337":2}}],["operator",{"2":{"222":1,"432":1,"470":1,"701":1,"1337":1}}],["opening",{"0":{"616":1},"2":{"453":2,"462":1,"554":1,"558":1,"560":1,"1390":1,"1925":1,"2117":1,"2146":1,"2491":1,"2529":1,"2603":1}}],["opensource",{"2":{"551":1,"1316":2}}],["opens",{"2":{"373":1,"453":2,"2186":1,"2499":1,"2654":1}}],["openocd",{"0":{"328":1},"2":{"322":1,"328":1,"331":1,"335":3,"2390":3,"2392":1}}],["opendeck",{"2":{"277":1}}],["opendrain",{"2":{"134":1,"707":2}}],["opened",{"2":{"275":1,"291":1,"1927":1,"2547":1,"2608":1}}],["open",{"0":{"1262":1,"2462":1},"2":{"160":1,"243":1,"265":1,"322":1,"324":1,"331":3,"352":1,"389":1,"390":1,"391":1,"401":1,"447":1,"485":1,"553":1,"554":1,"559":1,"560":2,"561":1,"585":1,"609":1,"613":1,"624":1,"627":1,"628":2,"696":2,"1126":1,"1262":2,"1297":2,"1298":2,"1300":1,"1301":1,"1337":1,"1868":1,"1925":1,"2147":3,"2148":3,"2151":1,"2182":2,"2301":1,"2316":1,"2318":1,"2325":1,"2350":1,"2361":1,"2365":1,"2386":1,"2388":1,"2394":3,"2421":3,"2432":3,"2437":2,"2443":1,"2450":2,"2459":1,"2462":1,"2476":1,"2491":3,"2493":1,"2499":2,"2507":4,"2512":1,"2513":1,"2526":1,"2527":1,"2531":1,"2537":1,"2541":1,"2542":1,"2547":1,"2550":2,"2551":2,"2592":1,"2605":1,"2617":1,"2709":2,"2751":3,"2755":1,"2767":1}}],["opt",{"0":{"273":1},"2":{"124":3,"199":1,"273":1,"277":1,"514":1,"641":2,"1421":2,"1422":1,"2283":1,"2285":1,"2339":2,"2413":1,"2449":1,"2552":1}}],["optimal",{"2":{"1467":1,"1614":1,"1615":1}}],["optimisation",{"2":{"222":1,"236":1}}],["optimisations",{"2":{"160":1,"2552":2}}],["optimise",{"2":{"191":1}}],["optimized",{"2":{"191":1}}],["optimize",{"2":{"114":1,"134":1,"160":1,"236":1}}],["optimizations",{"0":{"50":1,"64":1,"75":1,"94":1,"214":1,"215":1}}],["optimization",{"2":{"10":2,"50":1,"513":1,"2713":1,"2744":1}}],["optical",{"2":{"114":1,"160":3,"176":1,"199":1,"1936":1,"1950":1}}],["option+right",{"2":{"2221":1}}],["option+left",{"2":{"2221":1}}],["option=com",{"2":{"1279":1}}],["optional",{"0":{"1617":1,"2460":1,"2515":1},"2":{"262":1,"282":1,"349":1,"365":1,"366":1,"370":1,"371":1,"453":2,"454":1,"510":1,"607":1,"610":4,"1413":5,"1501":3,"1555":1,"1714":1,"1768":1,"1936":4,"1937":9,"1939":4,"1940":17,"1941":3,"1943":10,"1944":5,"1945":3,"1946":2,"1948":4,"1950":7,"1952":14,"1953":5,"1969":5,"1992":1,"2070":1,"2269":1,"2276":1,"2305":1,"2496":1,"2505":1,"2540":1,"2545":1,"2549":4,"2552":2,"2578":1,"2614":1,"2624":4,"2631":3,"2762":1}}],["optionally",{"2":{"211":1,"365":1,"366":1,"1134":1,"1417":1,"1424":1,"1427":1,"1429":1,"1596":1,"1897":1,"1908":1,"1910":1,"2104":1,"2188":1,"2199":1,"2219":1,"2268":1,"2278":1,"2609":1}}],["options",{"0":{"425":1,"426":1,"502":1,"507":1,"508":1,"511":1,"513":1,"514":1,"515":1,"1345":1,"1416":1,"1530":1,"1608":1,"1700":2,"1753":1,"1768":1,"1867":1,"1969":1,"1992":1,"2166":1,"2167":1,"2169":1,"2301":1,"2302":1,"2600":1,"2601":1,"2765":1},"1":{"509":1,"510":1,"511":1,"2766":1,"2767":1,"2768":1,"2769":1,"2770":1,"2771":1,"2772":1,"2773":1,"2774":1,"2775":1,"2776":1,"2777":1,"2778":1,"2779":1,"2780":1},"2":{"83":1,"109":1,"114":2,"128":1,"134":1,"137":1,"149":1,"160":1,"194":1,"198":1,"206":1,"222":1,"234":1,"236":2,"249":1,"335":1,"374":1,"393":1,"394":1,"395":1,"396":1,"401":1,"402":1,"403":1,"411":1,"448":1,"498":1,"500":1,"503":1,"504":1,"508":1,"514":1,"515":1,"607":1,"609":2,"626":1,"641":2,"679":1,"680":1,"681":1,"1127":1,"1130":1,"1135":1,"1277":1,"1317":1,"1324":2,"1335":2,"1345":1,"1386":2,"1416":1,"1529":1,"1533":1,"1536":1,"1552":1,"1555":1,"1557":1,"1592":1,"1594":1,"1606":1,"1608":1,"1696":1,"1700":3,"1703":5,"1706":1,"1708":2,"1709":3,"1710":1,"1752":2,"1753":1,"1754":1,"1840":1,"1845":1,"1855":1,"1858":1,"1933":2,"1953":3,"1968":1,"1988":1,"1996":1,"1997":1,"2070":1,"2076":1,"2082":1,"2150":1,"2164":1,"2165":1,"2166":1,"2167":1,"2186":1,"2199":1,"2297":2,"2298":2,"2300":4,"2302":2,"2313":1,"2338":2,"2339":1,"2343":1,"2437":1,"2450":1,"2455":1,"2507":1,"2545":3,"2563":1,"2578":1,"2594":3,"2600":2,"2601":2,"2605":3,"2613":1,"2614":2,"2686":1,"2743":1,"2745":1,"2747":1,"2764":1,"2765":2,"2788":1,"2792":1}}],["option",{"0":{"608":1,"1709":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1},"2":{"14":1,"32":1,"50":1,"74":1,"75":1,"87":1,"103":1,"114":3,"126":1,"132":1,"134":2,"176":1,"191":1,"194":1,"195":1,"211":2,"222":1,"234":1,"236":1,"246":1,"249":2,"266":1,"271":1,"454":1,"505":1,"609":2,"614":1,"1256":1,"1267":1,"1318":1,"1325":1,"1367":1,"1417":1,"1422":1,"1430":1,"1442":1,"1443":1,"1536":1,"1540":2,"1598":1,"1618":1,"1700":1,"1703":5,"1706":1,"1708":1,"1709":6,"1711":1,"1712":2,"1852":1,"1951":1,"1953":4,"1986":1,"2072":1,"2156":1,"2164":2,"2165":3,"2167":1,"2169":5,"2171":1,"2187":1,"2199":5,"2221":1,"2300":4,"2313":1,"2339":8,"2386":1,"2394":2,"2429":2,"2460":1,"2508":1,"2545":4,"2587":1,"2599":1,"2609":1,"2613":1,"2616":2,"2649":1,"2744":1,"2774":5,"2775":3}}],["ould",{"2":{"1921":1}}],["ou",{"2":{"1531":4,"2400":4}}],["ouput",{"2":{"1477":3}}],["our",{"2":{"76":1,"114":2,"130":1,"164":1,"167":1,"323":1,"331":1,"334":1,"352":1,"430":1,"432":1,"433":1,"445":1,"446":2,"447":1,"453":1,"455":3,"457":1,"462":1,"470":2,"479":1,"483":2,"485":1,"530":1,"533":1,"555":2,"557":2,"560":1,"562":3,"572":1,"576":1,"606":1,"624":1,"641":1,"1295":1,"1297":1,"1381":1,"1396":2,"1489":1,"2208":1,"2209":3,"2313":1,"2331":1,"2350":2,"2365":2,"2444":4,"2447":2,"2456":1,"2513":1,"2526":1,"2608":1,"2653":6,"2654":4,"2659":1,"2706":1,"2752":2,"2753":1,"2785":4,"2786":2,"2787":3}}],["outlines",{"2":{"2585":1}}],["outlined",{"2":{"2167":1,"2587":1}}],["outs",{"2":{"2580":1}}],["outside",{"2":{"22":1,"182":1,"434":1,"460":1,"1129":1,"1340":1,"1381":1,"1757":1,"1946":1,"1956":1,"2164":1,"2480":1,"2777":1,"2785":1}}],["outright",{"2":{"2541":1,"2555":1,"2747":1}}],["outbound",{"2":{"2168":1}}],["outer",{"2":{"1722":1,"1945":1,"2071":1,"2439":1,"2725":1}}],["out3",{"2":{"734":2,"760":2}}],["out2",{"2":{"734":2,"760":2}}],["out1",{"2":{"734":3,"760":3}}],["outwardly",{"2":{"198":1}}],["outdated",{"2":{"160":1,"352":1,"606":1,"2758":1}}],["outputted",{"2":{"2605":1}}],["outputting",{"2":{"432":1,"434":1,"554":1}}],["output=",{"2":{"222":1}}],["output+keymap",{"2":{"222":1}}],["outputs",{"2":{"93":1,"580":1,"1267":1,"1424":1,"1531":1,"2300":1,"2312":1,"2749":2}}],["outputselect",{"2":{"50":1,"160":1}}],["output",{"0":{"2478":1},"2":{"10":2,"65":1,"75":1,"92":1,"99":1,"114":5,"119":1,"160":2,"176":1,"188":1,"191":4,"199":3,"203":1,"211":2,"222":1,"236":1,"243":3,"249":1,"316":1,"349":1,"379":1,"380":1,"388":1,"404":1,"432":1,"433":1,"435":2,"441":2,"484":1,"502":1,"506":2,"576":6,"580":1,"586":1,"628":1,"659":1,"662":3,"674":1,"690":3,"696":11,"734":1,"737":4,"760":1,"763":4,"792":1,"795":4,"822":1,"825":4,"857":1,"860":4,"891":1,"894":4,"925":1,"928":4,"959":1,"962":4,"993":1,"996":4,"1027":1,"1030":4,"1061":1,"1064":4,"1095":1,"1098":4,"1138":1,"1148":1,"1151":4,"1171":9,"1185":1,"1188":4,"1262":1,"1267":3,"1282":3,"1289":1,"1290":1,"1292":1,"1422":3,"1427":1,"1431":1,"1441":1,"1477":2,"1498":1,"1499":1,"1503":1,"1531":3,"1565":1,"1567":1,"1600":1,"1602":2,"1603":2,"1605":1,"1668":1,"1669":1,"1855":1,"1860":1,"1904":2,"1936":1,"1964":1,"2097":1,"2098":1,"2163":1,"2179":1,"2181":1,"2188":1,"2219":2,"2267":1,"2269":1,"2276":1,"2300":5,"2301":1,"2312":1,"2386":1,"2392":1,"2400":3,"2461":1,"2464":2,"2478":1,"2492":1,"2508":1,"2513":1,"2558":1,"2567":1,"2613":3,"2614":23,"2654":1,"2713":1,"2732":1,"2767":1,"2769":1,"2773":1,"2795":1}}],["out",{"0":{"123":1,"1735":1,"2494":1,"2514":1,"2743":1},"1":{"2515":1,"2516":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1,"2750":1},"2":{"6":1,"10":1,"21":1,"49":1,"50":1,"93":1,"113":1,"114":3,"119":1,"124":1,"133":2,"134":5,"145":1,"160":2,"176":1,"191":4,"194":1,"199":4,"228":1,"236":1,"249":1,"278":1,"321":1,"335":1,"356":1,"358":1,"367":1,"373":1,"401":1,"405":1,"434":1,"440":2,"462":1,"468":1,"482":1,"505":4,"510":1,"527":1,"529":1,"557":1,"561":2,"588":2,"606":2,"617":1,"671":1,"674":1,"683":1,"688":1,"693":1,"1138":1,"1280":1,"1324":2,"1363":1,"1378":3,"1393":1,"1396":2,"1400":2,"1422":1,"1424":1,"1434":1,"1541":1,"1565":1,"1722":1,"1766":13,"1767":1,"1855":4,"1860":3,"1870":1,"1940":1,"1949":1,"1956":1,"1964":1,"1987":20,"1990":1,"1992":1,"2074":1,"2086":1,"2099":1,"2116":1,"2117":1,"2119":1,"2120":1,"2121":1,"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2129":1,"2131":1,"2133":1,"2135":1,"2156":1,"2168":3,"2169":1,"2170":1,"2171":1,"2172":1,"2181":3,"2207":1,"2210":1,"2300":3,"2303":4,"2313":1,"2318":1,"2342":1,"2350":1,"2364":1,"2365":1,"2367":1,"2394":2,"2431":2,"2456":1,"2462":1,"2467":1,"2494":2,"2511":1,"2516":1,"2527":3,"2549":1,"2573":1,"2580":1,"2588":1,"2603":2,"2605":3,"2613":1,"2614":2,"2615":1,"2750":2,"2751":2,"2762":1,"2783":1,"2784":1,"2792":3,"2796":1}}],["otype",{"2":{"707":2}}],["otaku",{"2":{"154":4}}],["otg2",{"2":{"2587":1}}],["otg1",{"2":{"176":1,"2587":1}}],["otg",{"2":{"65":1,"191":1}}],["others",{"2":{"114":1,"134":1,"145":1,"160":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"263":1,"277":1,"474":1,"559":1,"852":1,"1023":1,"1057":1,"1128":1,"1263":2,"1335":1,"1376":1,"1417":1,"1421":1,"1430":1,"1440":1,"1453":1,"1503":1,"2069":1,"2298":1,"2315":1,"2512":1,"2583":1}}],["other",{"0":{"367":1,"511":1,"1314":1,"1854":1,"2178":1,"2320":1,"2455":1,"2548":1,"2775":1},"2":{"30":1,"33":1,"50":1,"98":1,"114":2,"128":1,"134":2,"137":2,"138":1,"153":1,"163":1,"173":1,"174":1,"175":1,"176":2,"191":2,"194":8,"199":1,"201":2,"206":2,"210":1,"213":1,"220":1,"229":1,"234":1,"244":1,"278":2,"317":1,"331":2,"334":1,"341":1,"367":1,"430":1,"446":1,"448":1,"453":1,"470":1,"481":1,"485":1,"498":1,"501":1,"503":1,"505":5,"541":1,"545":1,"548":1,"560":1,"572":1,"586":1,"597":1,"598":1,"606":1,"609":2,"615":1,"628":1,"671":1,"685":1,"692":1,"701":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1132":1,"1133":1,"1142":1,"1214":1,"1227":1,"1230":1,"1260":1,"1264":1,"1273":2,"1277":1,"1279":2,"1292":1,"1302":2,"1308":1,"1337":6,"1340":1,"1367":1,"1369":2,"1372":2,"1375":2,"1377":2,"1378":3,"1380":1,"1381":1,"1390":1,"1392":1,"1396":5,"1398":1,"1420":2,"1422":1,"1424":1,"1427":1,"1428":1,"1435":1,"1438":1,"1449":2,"1455":1,"1478":1,"1479":1,"1482":1,"1483":2,"1496":2,"1500":1,"1536":3,"1562":1,"1563":2,"1589":1,"1592":1,"1601":1,"1634":1,"1704":1,"1706":1,"1709":1,"1711":1,"1712":1,"1714":1,"1724":1,"1829":1,"1841":1,"1858":1,"1910":1,"1913":1,"1914":1,"1915":1,"1917":1,"1918":1,"1919":1,"1921":1,"1933":2,"1977":1,"1979":2,"2080":2,"2082":1,"2099":1,"2101":1,"2143":1,"2150":2,"2151":1,"2152":1,"2166":1,"2183":1,"2207":1,"2208":1,"2209":1,"2220":1,"2221":1,"2264":1,"2300":1,"2301":2,"2302":1,"2307":1,"2312":1,"2318":1,"2323":1,"2331":1,"2338":1,"2340":1,"2341":1,"2350":2,"2380":1,"2387":1,"2389":1,"2406":1,"2435":1,"2441":3,"2442":1,"2444":1,"2449":1,"2466":1,"2516":1,"2529":1,"2531":2,"2542":1,"2549":1,"2555":1,"2557":1,"2568":1,"2578":1,"2580":1,"2589":1,"2603":3,"2605":2,"2606":5,"2610":1,"2615":11,"2616":1,"2642":1,"2644":1,"2676":1,"2684":1,"2696":1,"2711":1,"2713":2,"2741":1,"2751":1,"2757":1,"2758":2,"2759":1,"2768":6,"2770":2,"2771":3,"2772":2,"2774":3,"2775":7,"2778":1,"2780":1,"2782":4,"2793":1}}],["otherwise",{"2":{"28":1,"31":1,"209":1,"327":1,"349":1,"473":1,"567":1,"568":1,"593":1,"594":1,"597":1,"614":1,"627":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1227":1,"1230":1,"1378":1,"1508":1,"1563":1,"1591":1,"1659":1,"1708":1,"1781":1,"1783":1,"1911":1,"1987":1,"2008":1,"2010":1,"2083":1,"2169":1,"2190":1,"2199":2,"2220":1,"2275":1,"2278":1,"2280":1,"2288":1,"2301":1,"2392":1,"2489":3,"2635":1,"2642":1,"2776":1}}],["omit",{"2":{"628":1,"679":2,"1568":1,"2386":1}}],["omitted",{"2":{"468":1,"502":2,"511":1,"585":1,"2291":1}}],["omkbd",{"2":{"154":12,"160":2}}],["omrontkl",{"2":{"57":2}}],["omnikey",{"2":{"37":2,"144":2,"145":1}}],["oc7",{"2":{"1831":1,"2410":1}}],["oc6",{"2":{"1831":1,"2410":1}}],["oc5",{"2":{"1831":1,"2410":1}}],["oc4",{"2":{"1831":1,"2410":1}}],["oc3",{"2":{"1831":1,"2410":1}}],["oc2",{"2":{"1831":1,"1832":1,"2410":1}}],["oc1",{"2":{"1831":1,"2410":1}}],["oc0",{"2":{"1831":1,"2410":1}}],["ocn1",{"2":{"1831":1,"2410":1}}],["ocn2",{"2":{"1831":1,"2410":1}}],["ocean",{"2":{"519":1,"527":1}}],["oceanographer",{"2":{"211":1}}],["occupied",{"2":{"1396":1}}],["occupy",{"2":{"1214":1}}],["occupying",{"2":{"701":1}}],["occurrence",{"2":{"2767":1}}],["occurred",{"2":{"315":1,"588":2,"1363":1,"1366":4}}],["occured",{"2":{"588":1}}],["occurs",{"2":{"94":1,"598":1,"679":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1227":1,"1230":1,"1367":1,"2166":2,"2169":1,"2623":1}}],["occur",{"2":{"11":1,"49":1,"556":1,"580":2,"1610":1,"1956":1,"1958":1,"2167":1,"2168":1,"2480":1,"2578":1,"2616":1}}],["occasionally",{"2":{"1313":1,"1479":1}}],["occasional",{"2":{"597":1}}],["occasion",{"2":{"352":1,"1453":1}}],["ocd",{"2":{"191":1}}],["octet",{"2":{"2639":8}}],["octets",{"2":{"2632":1,"2638":1,"2639":3}}],["octd",{"2":{"1825":1,"1831":1,"2410":1}}],["octu",{"2":{"1825":1,"1831":1,"2410":1}}],["octave",{"2":{"1440":1,"1825":1,"1831":96,"1832":1,"2410":96}}],["octaves",{"2":{"1440":1}}],["octagon",{"2":{"249":1,"266":1}}],["oct",{"2":{"55":2,"340":2}}],["oscillator",{"2":{"1855":1}}],["oses",{"2":{"1711":1,"1712":1,"1713":1}}],["osdn",{"2":{"358":1}}],["osx",{"0":{"1316":1,"1317":1,"1320":1},"2":{"188":2,"191":2,"1316":2,"1317":2,"1318":1,"1320":1,"1392":5}}],["os",{"0":{"1334":1,"1603":1,"1862":1,"1865":1},"1":{"1863":1,"1864":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1},"2":{"65":1,"145":2,"199":1,"211":1,"249":3,"324":1,"358":1,"367":2,"1291":1,"1399":1,"1467":1,"1536":2,"1571":1,"1603":1,"1708":1,"1713":1,"1862":4,"1863":10,"1864":14,"1865":1,"1866":1,"1867":3,"1868":4,"2114":1,"2194":1,"2214":1,"2221":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":2,"2283":2,"2285":2,"2287":2,"2288":1,"2301":1,"2350":1,"2352":1,"2359":4,"2418":3,"2422":1,"2432":1,"2468":1,"2496":1,"2529":3,"2562":1,"2705":1,"2736":2,"2740":1}}],["osms",{"2":{"211":1}}],["osm",{"2":{"38":1,"236":1,"1422":3,"1537":1,"1692":1,"2418":1,"2449":1,"2529":5,"2530":1}}],["osl",{"2":{"38":1,"199":1,"236":1,"1372":1,"1966":1,"2406":1,"2418":1,"2529":2,"2530":1}}],["olkb",{"0":{"2641":1,"2754":1},"1":{"2642":1,"2643":1,"2644":1,"2645":1},"2":{"551":1,"624":3,"2210":1,"2268":2,"2319":1,"2365":1,"2754":1}}],["olly",{"2":{"211":1,"249":2}}],["oledunder",{"2":{"55":1}}],["oledback",{"2":{"55":1}}],["oleds",{"2":{"31":1,"34":1,"114":1,"138":1,"229":1,"230":1,"232":1,"248":1,"2615":1,"2745":1}}],["oled",{"0":{"33":1,"125":1,"210":1,"220":1,"230":1,"232":1,"1848":1,"1851":1,"1858":1,"1860":1,"2326":1,"2749":1},"1":{"34":1,"1849":1,"1850":1,"1851":1,"1852":1,"1853":1,"1854":1,"1855":1,"1856":1,"1857":1,"1858":1,"1859":2,"1860":1,"1861":1},"2":{"30":1,"31":11,"33":2,"34":8,"49":1,"55":11,"62":1,"63":1,"92":2,"93":2,"114":4,"125":6,"128":2,"134":7,"138":1,"176":4,"191":3,"210":4,"211":2,"220":3,"221":2,"222":2,"230":4,"232":4,"236":3,"248":2,"249":2,"511":2,"700":1,"1212":1,"1485":2,"1849":2,"1850":1,"1851":15,"1852":5,"1853":6,"1854":15,"1855":28,"1856":2,"1857":10,"1858":29,"1859":12,"1860":77,"1861":17,"2167":6,"2319":1,"2323":1,"2326":2,"2605":1,"2612":7,"2615":1,"2736":2,"2749":5}}],["oldest",{"2":{"515":1}}],["older",{"2":{"142":1,"338":1,"1276":1,"1291":1,"1910":1,"2074":1,"2268":1,"2443":1,"2444":1,"2562":1}}],["old",{"0":{"220":1},"2":{"10":1,"22":1,"37":1,"38":1,"43":1,"46":1,"67":1,"86":1,"102":1,"122":1,"125":1,"134":1,"141":1,"142":1,"144":1,"154":1,"160":2,"168":1,"173":1,"174":1,"181":1,"182":2,"183":3,"185":1,"191":1,"194":1,"195":1,"197":1,"206":1,"207":1,"217":1,"219":1,"220":1,"221":6,"222":3,"226":1,"232":2,"234":1,"236":1,"241":1,"243":1,"244":1,"253":1,"262":1,"270":1,"271":1,"354":2,"453":1,"602":1,"1313":1,"1341":1,"1565":1,"1861":1,"1954":2,"1956":1,"2074":1,"2151":1,"2156":1,"2200":1,"2288":1,"2321":1,"2515":2,"2603":1,"2749":1}}],["obtain",{"2":{"1891":1}}],["obtaining",{"2":{"363":1}}],["objs",{"2":{"2300":1,"2338":1}}],["obj",{"2":{"614":2}}],["objects",{"2":{"374":1,"457":1,"474":2,"1393":2,"1394":1,"2303":8,"2654":1,"2723":1}}],["objective",{"2":{"323":1,"2274":1}}],["object",{"0":{"1394":1},"2":{"73":1,"236":1,"374":1,"396":1,"411":1,"430":2,"433":2,"474":1,"475":1,"479":1,"609":1,"611":1,"1394":1,"1925":1,"2300":2,"2616":2,"2654":7,"2655":2,"2789":1}}],["observe",{"2":{"557":1,"1472":1}}],["obsolete",{"0":{"2151":1},"2":{"3":1,"15":1}}],["obviously",{"2":{"1453":1,"1491":1,"2740":1}}],["obvious",{"2":{"249":3,"453":2,"455":2,"467":1,"560":1,"2344":1,"2350":1}}],["obliterated75",{"2":{"211":1}}],["obfuscate",{"2":{"199":1}}],["obosob",{"2":{"154":2,"160":2}}],["obdev",{"2":{"21":1,"1279":1}}],["onboard",{"2":{"592":1,"671":1,"673":1,"1258":1,"1259":1,"1260":1,"2070":2,"2099":1,"2557":1,"2569":1}}],["onto",{"2":{"459":1,"1295":1,"1324":1,"1482":1,"2309":1,"2313":1,"2316":1,"2368":1,"2372":1,"2381":1,"2388":1,"2757":1,"2767":1}}],["onyx",{"2":{"211":1}}],["online",{"2":{"182":1,"2456":1,"2466":1,"2753":1}}],["only=true",{"2":{"441":3}}],["only",{"0":{"450":1,"532":1,"2325":1,"2483":1},"2":{"4":1,"14":1,"69":1,"83":1,"87":1,"98":1,"103":2,"107":1,"114":1,"116":1,"120":1,"126":2,"134":1,"169":1,"174":1,"184":1,"191":2,"194":3,"201":1,"221":3,"222":1,"233":1,"236":2,"244":1,"266":1,"317":1,"335":1,"340":2,"341":1,"343":1,"344":2,"345":2,"347":2,"349":2,"350":2,"352":1,"354":1,"358":2,"359":1,"360":1,"375":3,"376":1,"400":2,"441":1,"454":1,"479":1,"496":1,"499":1,"505":1,"510":1,"511":2,"516":1,"580":1,"606":1,"617":1,"623":1,"630":1,"635":1,"636":1,"641":2,"676":1,"682":1,"684":1,"687":1,"688":1,"689":1,"690":1,"707":1,"734":1,"737":4,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"760":1,"763":4,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"792":1,"795":4,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"822":1,"825":4,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"850":1,"853":1,"857":1,"860":4,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"885":1,"887":1,"891":1,"894":4,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"919":1,"921":1,"925":1,"928":4,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"953":1,"955":1,"959":1,"962":4,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"993":1,"996":4,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1027":1,"1030":4,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1061":1,"1064":4,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1095":1,"1098":4,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1123":1,"1126":2,"1127":1,"1130":2,"1133":2,"1134":1,"1148":1,"1151":4,"1158":1,"1160":1,"1162":1,"1173":1,"1176":1,"1178":1,"1185":1,"1188":4,"1195":1,"1197":1,"1199":1,"1201":1,"1203":1,"1205":1,"1216":1,"1237":1,"1256":1,"1257":1,"1258":1,"1259":1,"1260":1,"1261":3,"1262":1,"1263":1,"1264":1,"1266":1,"1267":3,"1273":1,"1276":1,"1287":2,"1291":1,"1302":1,"1310":1,"1315":1,"1337":1,"1339":2,"1349":1,"1353":1,"1356":1,"1357":2,"1363":2,"1366":1,"1368":2,"1369":3,"1372":3,"1373":1,"1375":1,"1394":1,"1397":1,"1413":1,"1421":1,"1427":1,"1431":1,"1433":1,"1434":1,"1438":1,"1453":1,"1468":2,"1477":1,"1478":1,"1482":1,"1491":1,"1496":1,"1503":1,"1504":1,"1506":1,"1507":1,"1508":1,"1528":1,"1529":1,"1531":3,"1532":1,"1540":1,"1547":1,"1554":1,"1555":6,"1558":1,"1562":1,"1563":1,"1586":1,"1596":1,"1597":1,"1600":2,"1634":1,"1692":1,"1708":2,"1709":1,"1711":1,"1715":1,"1723":1,"1763":1,"1769":1,"1781":1,"1783":1,"1825":1,"1840":1,"1843":1,"1846":1,"1859":3,"1897":1,"1916":1,"1934":1,"1945":1,"1952":1,"1953":5,"1954":1,"1955":1,"1956":2,"1958":1,"1960":1,"1963":1,"1967":2,"1980":1,"1984":1,"1986":1,"1993":1,"1996":1,"2008":1,"2010":1,"2074":1,"2080":1,"2110":1,"2113":1,"2140":1,"2144":1,"2145":1,"2166":2,"2167":2,"2168":1,"2171":1,"2187":1,"2188":1,"2190":1,"2199":3,"2220":1,"2221":1,"2264":1,"2266":1,"2271":1,"2273":1,"2283":1,"2285":1,"2287":1,"2298":1,"2307":1,"2309":1,"2315":1,"2333":1,"2340":1,"2341":2,"2345":1,"2348":1,"2350":3,"2354":2,"2358":1,"2383":1,"2393":1,"2400":2,"2450":1,"2456":1,"2460":1,"2480":1,"2490":1,"2495":1,"2497":1,"2516":1,"2527":1,"2531":1,"2545":1,"2551":1,"2558":2,"2562":1,"2568":1,"2569":2,"2574":1,"2580":1,"2582":2,"2588":1,"2589":1,"2595":1,"2603":1,"2605":3,"2606":1,"2608":1,"2613":1,"2614":2,"2615":2,"2624":2,"2629":2,"2635":1,"2642":1,"2654":1,"2655":1,"2688":1,"2712":1,"2716":1,"2736":1,"2739":3,"2741":2,"2758":1,"2768":1,"2777":1,"2780":1,"2787":1,"2788":1,"2792":1,"2793":1}}],["onkey",{"2":{"176":1}}],["ongoing",{"2":{"145":1,"606":1,"2605":1,"2758":1}}],["onces",{"2":{"199":1,"211":1}}],["once",{"2":{"114":1,"119":1,"134":1,"137":1,"231":1,"245":1,"316":1,"331":1,"358":1,"403":2,"430":1,"453":1,"472":1,"515":1,"598":1,"600":1,"678":1,"701":1,"707":1,"1216":1,"1237":1,"1273":1,"1276":1,"1291":1,"1350":1,"1372":1,"1377":1,"1422":3,"1448":1,"1452":1,"1453":1,"1472":1,"1536":1,"1545":1,"1634":1,"1708":1,"1716":1,"1720":1,"1722":1,"1767":1,"1842":1,"1859":2,"1901":1,"1925":2,"1956":1,"1958":1,"1990":1,"2082":1,"2084":1,"2105":1,"2171":1,"2183":1,"2188":1,"2198":1,"2199":4,"2202":1,"2221":1,"2264":1,"2271":1,"2273":2,"2299":2,"2301":1,"2303":2,"2311":1,"2316":1,"2319":1,"2350":1,"2356":1,"2442":1,"2485":1,"2486":2,"2487":1,"2491":1,"2495":1,"2499":1,"2529":1,"2537":1,"2538":1,"2549":1,"2551":1,"2552":1,"2603":1,"2616":2,"2626":1,"2633":1,"2653":2,"2654":1,"2692":1,"2701":1,"2767":1,"2785":1,"2796":1}}],["ones",{"2":{"243":1,"266":1,"371":1,"1313":1,"1435":1,"1439":1,"1558":1,"1565":1,"1694":1,"1950":1,"1986":1,"1991":2,"2096":2,"2110":1,"2113":1,"2317":1,"2318":1,"2346":1,"2358":1,"2547":1,"2610":1,"2616":1,"2740":1,"2796":1}}],["oneshots",{"2":{"2745":1}}],["oneshot",{"0":{"2693":1},"2":{"38":2,"63":2,"112":2,"134":1,"145":1,"188":1,"191":2,"211":1,"266":1,"503":1,"505":4,"511":1,"1337":8,"1422":2,"2167":2,"2266":1,"2529":11,"2530":19,"2730":1,"2745":1}}],["onehand",{"2":{"114":1}}],["onekey",{"2":{"49":1,"191":3,"211":1,"222":1,"2283":1,"2285":1,"2287":1,"2552":2,"2606":1}}],["one",{"0":{"295":1,"296":1,"1271":1,"1311":1,"1344":1,"1737":1,"2205":1,"2418":1,"2529":1,"2730":1},"1":{"296":1,"297":1,"1272":1,"1738":1,"1739":1,"2530":1},"2":{"37":1,"45":1,"50":1,"55":1,"75":1,"82":1,"89":1,"93":2,"98":1,"107":1,"114":1,"139":1,"141":1,"142":1,"145":4,"163":1,"176":1,"188":1,"191":1,"194":3,"196":1,"199":2,"204":1,"211":2,"213":1,"231":1,"241":1,"253":1,"256":1,"262":1,"268":1,"270":1,"276":1,"282":1,"291":1,"295":1,"296":1,"317":1,"341":1,"347":1,"352":1,"370":1,"374":2,"418":1,"453":2,"457":1,"459":1,"462":1,"467":2,"468":1,"501":1,"502":7,"503":1,"505":1,"508":1,"509":1,"513":1,"515":3,"516":1,"529":1,"530":2,"537":1,"540":2,"556":1,"557":1,"560":1,"580":1,"612":1,"626":1,"628":2,"638":1,"641":1,"684":3,"685":1,"686":1,"687":1,"688":1,"690":1,"691":1,"701":1,"734":1,"758":1,"760":1,"787":1,"792":1,"819":1,"822":1,"851":1,"852":1,"857":1,"886":1,"891":1,"920":1,"925":1,"954":1,"959":1,"988":1,"993":1,"1022":1,"1023":1,"1027":1,"1056":1,"1057":1,"1061":1,"1090":1,"1095":1,"1121":3,"1123":2,"1126":2,"1137":1,"1146":1,"1183":1,"1185":1,"1213":1,"1253":1,"1258":2,"1271":1,"1273":1,"1275":1,"1311":1,"1313":1,"1315":1,"1324":1,"1327":1,"1337":12,"1340":2,"1344":1,"1353":1,"1357":3,"1363":4,"1366":3,"1371":1,"1372":3,"1373":1,"1375":1,"1376":2,"1383":1,"1390":1,"1394":3,"1396":1,"1397":2,"1413":1,"1414":2,"1415":2,"1424":5,"1427":1,"1428":2,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":4,"1436":2,"1450":1,"1451":1,"1452":1,"1453":3,"1468":2,"1469":1,"1475":1,"1483":3,"1488":2,"1489":2,"1494":1,"1496":1,"1508":1,"1537":3,"1540":3,"1552":2,"1560":2,"1562":3,"1589":1,"1591":1,"1596":1,"1600":1,"1611":1,"1670":1,"1671":1,"1692":2,"1708":1,"1709":1,"1712":2,"1714":1,"1718":1,"1722":1,"1724":3,"1735":1,"1754":1,"1769":1,"1841":1,"1858":2,"1859":1,"1860":1,"1863":1,"1896":1,"1933":1,"1934":2,"1939":3,"1949":1,"1953":3,"1955":1,"1965":2,"1966":1,"1977":1,"1993":1,"2105":1,"2146":1,"2147":1,"2152":1,"2156":2,"2163":2,"2165":1,"2166":2,"2168":1,"2169":1,"2185":1,"2190":3,"2191":2,"2192":1,"2194":1,"2198":3,"2200":4,"2205":1,"2207":3,"2209":1,"2219":1,"2220":1,"2269":1,"2276":1,"2283":1,"2285":1,"2287":1,"2288":1,"2291":2,"2300":2,"2301":1,"2306":1,"2307":3,"2309":1,"2312":2,"2313":1,"2316":1,"2317":1,"2341":1,"2350":6,"2358":1,"2366":2,"2367":1,"2374":1,"2381":1,"2387":1,"2390":1,"2406":1,"2418":9,"2422":1,"2445":2,"2447":1,"2450":1,"2456":1,"2463":1,"2470":1,"2471":1,"2472":1,"2481":1,"2491":2,"2503":1,"2513":1,"2515":1,"2516":1,"2529":15,"2530":7,"2547":1,"2569":1,"2583":1,"2587":1,"2589":1,"2592":1,"2605":2,"2613":3,"2616":2,"2634":1,"2636":1,"2642":1,"2653":1,"2654":1,"2700":1,"2712":1,"2713":2,"2715":1,"2716":2,"2717":1,"2722":2,"2727":2,"2728":1,"2730":1,"2731":1,"2733":2,"2734":2,"2736":2,"2737":1,"2739":1,"2740":1,"2741":1,"2749":1,"2750":1,"2759":1,"2776":1,"2779":1,"2788":1,"2791":1,"2792":1}}],["on",{"0":{"14":1,"235":1,"568":1,"689":1,"1275":1,"1277":1,"1292":1,"1315":1,"1319":1,"1320":1,"1495":1,"1540":1,"1577":1,"1579":1,"1581":1,"1638":1,"1830":1,"1883":1,"1977":1,"2083":1,"2187":1,"2202":2,"2205":1,"2206":2,"2293":1,"2302":1,"2310":1,"2482":1,"2515":1,"2775":1},"1":{"1276":1,"1277":1,"1639":1,"1884":1,"1885":1},"2":{"1":1,"2":1,"10":1,"11":3,"14":2,"24":1,"25":2,"28":2,"30":1,"31":1,"33":1,"34":2,"49":8,"50":4,"51":1,"65":3,"69":1,"73":4,"74":1,"77":1,"90":1,"92":2,"93":3,"99":1,"105":6,"107":1,"113":2,"114":23,"118":1,"123":2,"124":2,"131":1,"133":1,"134":15,"137":1,"138":4,"142":1,"143":3,"145":4,"149":1,"156":1,"160":2,"164":1,"169":2,"176":8,"182":2,"190":1,"191":15,"194":10,"195":1,"198":1,"199":7,"201":1,"202":1,"206":4,"209":2,"210":1,"211":7,"213":3,"215":2,"222":7,"228":2,"231":4,"233":1,"236":11,"240":1,"247":2,"249":4,"255":1,"263":1,"266":3,"276":2,"277":4,"278":1,"279":1,"294":1,"302":1,"307":1,"317":2,"321":2,"322":1,"323":1,"331":8,"335":2,"336":1,"337":1,"341":1,"343":1,"344":1,"345":1,"349":2,"350":1,"352":2,"355":1,"356":2,"374":1,"385":1,"386":1,"389":1,"390":1,"391":2,"399":1,"400":2,"408":1,"409":1,"410":1,"430":1,"436":1,"446":1,"453":1,"454":4,"467":1,"468":1,"479":1,"481":1,"485":1,"486":1,"496":1,"502":9,"503":1,"504":3,"505":10,"506":5,"511":8,"515":1,"519":1,"520":1,"521":1,"530":1,"535":1,"540":5,"541":1,"551":3,"553":1,"554":2,"555":1,"556":4,"557":1,"560":8,"562":1,"567":1,"574":1,"578":1,"580":6,"584":1,"585":1,"589":1,"590":1,"597":1,"602":1,"605":1,"606":1,"607":1,"609":1,"613":1,"616":1,"623":1,"624":2,"625":2,"626":3,"627":1,"630":3,"633":1,"635":3,"638":1,"639":2,"641":1,"658":1,"659":5,"671":4,"674":1,"677":1,"678":1,"679":5,"680":1,"681":2,"685":2,"689":3,"690":3,"693":1,"694":1,"696":2,"701":2,"702":1,"703":1,"714":1,"717":1,"720":1,"723":1,"726":1,"733":1,"734":1,"758":1,"759":1,"760":2,"787":1,"789":2,"791":1,"792":3,"819":1,"820":1,"821":1,"822":3,"851":1,"854":2,"856":1,"857":3,"886":1,"888":2,"890":1,"891":3,"920":1,"922":2,"924":1,"925":3,"954":1,"956":2,"958":1,"959":3,"988":1,"990":2,"992":1,"993":3,"1022":1,"1024":2,"1026":1,"1027":3,"1056":1,"1058":2,"1060":1,"1061":3,"1090":1,"1092":2,"1094":1,"1095":3,"1122":1,"1124":2,"1125":1,"1127":1,"1128":1,"1129":2,"1130":2,"1132":3,"1133":4,"1134":2,"1146":1,"1147":1,"1148":3,"1168":1,"1169":1,"1171":4,"1174":1,"1183":1,"1184":1,"1185":3,"1213":1,"1218":4,"1234":1,"1238":1,"1249":1,"1254":1,"1255":1,"1256":1,"1260":3,"1263":1,"1264":1,"1267":2,"1271":1,"1273":1,"1276":1,"1278":1,"1280":2,"1282":1,"1291":1,"1292":1,"1298":1,"1299":1,"1307":2,"1308":1,"1309":1,"1310":2,"1312":2,"1315":1,"1317":4,"1318":1,"1320":3,"1324":2,"1336":1,"1337":3,"1338":1,"1339":1,"1340":1,"1341":1,"1353":4,"1354":3,"1356":1,"1357":1,"1363":3,"1366":10,"1369":3,"1371":1,"1372":5,"1376":1,"1377":3,"1378":24,"1380":1,"1381":6,"1398":2,"1402":2,"1414":2,"1415":2,"1420":1,"1421":2,"1422":6,"1424":4,"1426":1,"1427":1,"1430":1,"1433":3,"1435":5,"1436":6,"1438":1,"1440":4,"1443":4,"1445":10,"1447":1,"1449":2,"1453":2,"1467":1,"1468":3,"1469":1,"1471":3,"1472":1,"1473":1,"1475":3,"1478":1,"1479":1,"1480":3,"1483":1,"1484":1,"1486":2,"1491":2,"1493":3,"1494":4,"1495":4,"1496":2,"1497":1,"1499":1,"1501":2,"1506":3,"1507":1,"1510":1,"1511":1,"1522":1,"1523":1,"1531":1,"1532":2,"1533":2,"1536":1,"1537":5,"1538":2,"1540":4,"1542":4,"1543":1,"1544":1,"1549":5,"1555":1,"1556":5,"1557":2,"1558":1,"1559":1,"1560":3,"1561":1,"1562":1,"1566":1,"1572":2,"1586":2,"1587":10,"1589":1,"1591":1,"1592":1,"1594":1,"1595":1,"1596":1,"1598":3,"1600":2,"1603":1,"1605":1,"1606":2,"1610":8,"1611":5,"1612":1,"1613":1,"1615":1,"1620":1,"1627":1,"1629":2,"1636":1,"1637":1,"1638":2,"1641":1,"1642":2,"1643":1,"1647":1,"1651":1,"1668":2,"1672":1,"1693":1,"1698":1,"1703":1,"1704":3,"1706":4,"1707":3,"1708":1,"1709":1,"1715":1,"1718":1,"1721":1,"1722":1,"1752":1,"1753":2,"1754":1,"1755":3,"1756":4,"1760":4,"1762":2,"1763":3,"1764":1,"1765":4,"1766":2,"1767":1,"1768":2,"1771":1,"1773":1,"1774":1,"1775":1,"1776":1,"1781":1,"1783":1,"1825":1,"1826":1,"1830":4,"1831":3,"1832":1,"1837":1,"1841":1,"1842":2,"1845":3,"1846":1,"1853":1,"1854":1,"1855":1,"1859":5,"1860":17,"1861":2,"1862":3,"1864":1,"1866":1,"1867":1,"1868":2,"1870":2,"1891":1,"1894":1,"1895":1,"1896":3,"1897":1,"1899":1,"1900":1,"1907":1,"1908":1,"1912":1,"1913":1,"1915":1,"1916":1,"1917":4,"1918":2,"1922":2,"1925":8,"1927":3,"1939":1,"1943":2,"1944":4,"1945":1,"1946":2,"1948":1,"1950":3,"1953":3,"1955":1,"1956":2,"1959":1,"1960":2,"1962":2,"1963":4,"1965":3,"1974":1,"1975":2,"1977":1,"1978":1,"1979":3,"1980":1,"1983":2,"1984":3,"1985":1,"1986":1,"1987":6,"1988":1,"1989":1,"1990":1,"1992":5,"1995":1,"1996":3,"1997":2,"2000":1,"2001":1,"2002":1,"2003":1,"2008":1,"2010":1,"2069":3,"2070":2,"2072":1,"2073":1,"2075":1,"2076":1,"2078":1,"2079":1,"2080":2,"2082":4,"2089":4,"2091":6,"2094":3,"2095":1,"2099":1,"2101":3,"2123":1,"2125":1,"2138":1,"2139":1,"2140":1,"2144":2,"2145":5,"2146":2,"2149":1,"2150":1,"2151":1,"2156":1,"2158":1,"2160":1,"2162":1,"2163":1,"2164":1,"2166":1,"2167":9,"2168":2,"2169":7,"2170":2,"2171":1,"2177":1,"2181":18,"2183":2,"2184":1,"2187":1,"2188":2,"2192":1,"2194":7,"2195":1,"2196":4,"2198":1,"2199":14,"2200":12,"2205":7,"2206":1,"2207":3,"2208":1,"2209":7,"2213":1,"2215":1,"2216":1,"2218":1,"2220":3,"2221":3,"2222":1,"2234":1,"2235":1,"2236":1,"2263":1,"2264":1,"2267":1,"2268":3,"2271":1,"2273":2,"2274":2,"2275":1,"2276":1,"2278":2,"2280":1,"2281":1,"2282":1,"2283":3,"2285":3,"2287":4,"2288":1,"2293":2,"2297":1,"2300":1,"2301":3,"2303":5,"2305":1,"2306":1,"2307":4,"2309":2,"2311":6,"2312":6,"2313":3,"2314":2,"2315":5,"2316":2,"2318":4,"2321":1,"2323":1,"2325":1,"2328":1,"2329":1,"2330":2,"2332":1,"2338":1,"2341":1,"2342":1,"2344":2,"2345":1,"2348":1,"2350":1,"2352":2,"2355":1,"2359":1,"2365":1,"2369":4,"2371":4,"2373":4,"2374":1,"2383":1,"2385":2,"2386":2,"2387":2,"2389":2,"2391":3,"2392":1,"2394":2,"2396":10,"2397":3,"2398":3,"2399":3,"2406":7,"2408":4,"2409":11,"2410":3,"2415":1,"2416":1,"2418":3,"2422":6,"2423":1,"2424":1,"2432":2,"2433":1,"2435":11,"2436":1,"2437":3,"2441":2,"2442":4,"2445":2,"2446":1,"2447":1,"2450":3,"2452":2,"2454":2,"2456":1,"2457":2,"2458":1,"2465":1,"2466":1,"2469":1,"2470":1,"2476":3,"2478":1,"2479":1,"2480":1,"2481":1,"2482":1,"2484":1,"2487":1,"2489":5,"2491":1,"2493":4,"2494":1,"2499":1,"2501":1,"2505":1,"2507":2,"2509":1,"2513":4,"2516":3,"2519":1,"2526":2,"2527":3,"2529":5,"2530":3,"2531":2,"2535":1,"2536":2,"2540":2,"2541":1,"2542":1,"2547":2,"2551":1,"2552":2,"2556":2,"2557":4,"2558":1,"2561":1,"2563":1,"2564":1,"2568":3,"2569":4,"2570":1,"2572":3,"2574":1,"2578":1,"2583":1,"2584":1,"2585":3,"2587":2,"2591":1,"2592":1,"2595":1,"2596":1,"2599":1,"2602":1,"2603":4,"2604":1,"2605":6,"2606":2,"2607":1,"2610":1,"2612":1,"2613":5,"2614":3,"2615":5,"2616":18,"2623":1,"2624":1,"2626":1,"2631":2,"2636":1,"2640":1,"2641":1,"2642":4,"2643":2,"2644":1,"2646":1,"2650":1,"2653":1,"2654":3,"2655":1,"2656":1,"2663":1,"2664":1,"2667":1,"2672":1,"2682":1,"2685":1,"2694":1,"2696":1,"2697":1,"2702":1,"2704":1,"2711":1,"2712":2,"2713":2,"2714":2,"2715":4,"2716":4,"2719":3,"2723":1,"2724":3,"2726":1,"2727":3,"2731":2,"2733":2,"2734":3,"2736":2,"2739":1,"2740":3,"2741":1,"2750":1,"2753":1,"2754":1,"2755":1,"2757":1,"2759":3,"2767":4,"2768":1,"2770":2,"2771":3,"2772":2,"2773":2,"2774":5,"2775":9,"2776":2,"2777":1,"2779":2,"2782":1,"2783":1,"2784":1,"2785":1,"2788":1,"2789":1,"2790":1,"2793":1}}],["often",{"0":{"2525":1},"1":{"2526":1,"2527":1,"2528":1},"2":{"99":1,"502":1,"586":1,"587":1,"625":1,"689":1,"1249":1,"1278":1,"1303":1,"1306":1,"1311":1,"1362":3,"1363":1,"1368":1,"1447":1,"1536":2,"1600":1,"1608":1,"1965":1,"2069":1,"2099":1,"2182":1,"2207":1,"2353":1,"2511":1,"2512":1,"2514":1,"2607":1,"2687":1,"2694":2,"2696":1,"2703":1}}],["offending",{"2":{"2605":1}}],["offer",{"2":{"2070":1,"2308":1}}],["offered",{"2":{"1708":1,"1710":1}}],["offers",{"2":{"1340":1,"1434":1,"1500":1,"2553":1}}],["official",{"2":{"1315":1,"1356":1,"2367":1,"2505":1,"2553":1,"2562":1,"2572":1,"2573":1,"2617":1,"2754":1}}],["officially",{"2":{"254":1,"1301":1,"1302":1,"2480":1}}],["offloaded",{"2":{"1125":1,"1128":1}}],["offload",{"2":{"703":1,"1258":1,"1259":1,"1260":1}}],["offset=0",{"2":{"465":1}}],["offsets",{"2":{"222":1,"249":1,"1488":1,"1859":1,"2615":6,"2616":4,"2634":4}}],["offset",{"0":{"2634":1,"2659":1},"2":{"199":1,"211":2,"222":1,"465":4,"679":1,"680":1,"1488":2,"1843":12,"1855":1,"1858":1,"1987":1,"2076":1,"2179":1,"2288":2,"2615":2,"2616":8,"2626":1,"2627":3,"2631":1,"2633":2,"2634":2,"2656":1,"2659":4}}],["offs",{"2":{"114":1}}],["offhand",{"2":{"31":1,"34":1,"1854":1,"2178":1}}],["off",{"0":{"1271":1,"1578":1,"1580":1,"1582":1,"1640":1,"1830":1,"2083":1,"2205":1},"1":{"1272":1},"2":{"25":1,"92":1,"105":4,"114":2,"116":1,"134":1,"137":1,"145":1,"160":1,"195":1,"211":1,"222":1,"236":1,"247":2,"284":1,"347":1,"356":1,"454":1,"502":1,"504":1,"506":3,"511":2,"550":1,"560":1,"588":1,"592":1,"593":2,"594":2,"610":1,"688":1,"689":2,"786":2,"789":14,"1021":2,"1024":14,"1055":2,"1058":14,"1089":2,"1092":14,"1271":1,"1337":1,"1369":1,"1372":1,"1376":1,"1377":1,"1378":7,"1381":2,"1383":1,"1414":1,"1435":6,"1436":5,"1440":3,"1443":2,"1445":8,"1471":3,"1479":1,"1480":3,"1486":1,"1491":1,"1493":4,"1494":1,"1496":1,"1499":1,"1510":1,"1512":1,"1522":1,"1524":1,"1540":1,"1541":1,"1542":2,"1544":1,"1549":4,"1572":1,"1586":2,"1587":7,"1608":1,"1610":6,"1611":1,"1614":2,"1640":1,"1706":1,"1707":3,"1755":1,"1756":4,"1760":4,"1765":4,"1768":2,"1773":1,"1774":1,"1777":1,"1778":1,"1825":1,"1830":4,"1831":4,"1853":1,"1855":1,"1860":8,"1861":2,"1894":1,"1896":1,"1937":1,"1950":1,"1974":7,"1975":1,"1978":4,"1979":4,"1986":1,"1987":3,"1991":2,"1992":2,"1998":3,"2000":1,"2001":1,"2004":1,"2005":1,"2072":1,"2073":1,"2082":3,"2083":2,"2091":4,"2095":1,"2096":2,"2101":1,"2144":2,"2145":3,"2167":4,"2177":2,"2179":1,"2181":10,"2194":6,"2196":2,"2200":1,"2205":8,"2208":1,"2209":5,"2300":2,"2301":3,"2309":1,"2311":1,"2313":1,"2396":8,"2397":3,"2398":3,"2399":4,"2406":2,"2408":4,"2409":5,"2410":4,"2415":1,"2416":1,"2418":3,"2422":5,"2435":5,"2441":2,"2529":2,"2530":5,"2599":1,"2602":1,"2605":2,"2613":1,"2616":2,"2642":1,"2643":2,"2644":1,"2716":1,"2727":1,"2733":1,"2734":1,"2736":2,"2783":1}}],["of",{"0":{"8":1,"28":1,"33":1,"89":1,"123":1,"124":1,"262":1,"265":1,"275":1,"347":1,"361":1,"533":1,"562":1,"571":1,"629":1,"1269":1,"1308":1,"1327":1,"1363":1,"1589":1,"1715":1,"1716":1,"1755":1,"1756":1,"1966":1,"2097":1,"2358":1,"2443":1,"2514":1,"2640":1,"2660":1,"2743":1,"2791":1},"1":{"34":1,"572":1,"573":1,"1270":1,"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1722":1,"1723":1,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"2444":1,"2445":1,"2446":1,"2447":1,"2515":1,"2516":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1,"2670":1,"2671":1,"2672":1,"2673":1,"2674":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":1,"2691":1,"2692":1,"2693":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2699":1,"2700":1,"2701":1,"2702":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2708":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1,"2750":1},"2":{"0":1,"3":2,"4":1,"5":1,"6":1,"10":1,"15":2,"17":1,"19":1,"21":1,"22":2,"23":1,"25":2,"30":2,"31":3,"32":1,"33":2,"34":1,"37":1,"43":1,"45":3,"49":4,"50":9,"51":1,"55":1,"63":1,"64":1,"65":3,"67":1,"69":1,"70":2,"74":4,"76":3,"83":1,"86":2,"87":2,"88":2,"93":3,"94":3,"95":2,"98":2,"99":2,"103":4,"104":2,"107":3,"109":1,"112":3,"113":4,"114":15,"118":2,"119":4,"123":1,"124":3,"125":1,"126":2,"127":2,"130":2,"131":3,"132":1,"133":2,"134":21,"137":1,"138":3,"139":1,"141":5,"142":2,"143":1,"145":4,"153":1,"160":11,"163":4,"164":1,"166":3,"167":1,"169":3,"172":1,"173":3,"174":3,"175":2,"176":16,"182":4,"183":1,"184":2,"185":1,"186":1,"187":1,"189":3,"190":1,"191":15,"194":8,"195":1,"196":1,"198":4,"199":16,"201":6,"202":4,"203":5,"204":2,"209":2,"210":1,"211":20,"213":4,"214":1,"215":1,"222":10,"224":3,"228":1,"229":1,"231":1,"233":6,"234":2,"236":12,"238":5,"243":1,"245":1,"246":1,"247":1,"248":1,"249":6,"251":2,"254":2,"255":2,"256":2,"259":1,"262":5,"263":3,"265":3,"266":10,"268":2,"272":2,"273":2,"275":2,"276":1,"277":4,"288":1,"290":1,"292":1,"303":2,"304":2,"306":1,"313":2,"316":5,"317":5,"327":1,"331":2,"334":3,"335":1,"336":3,"337":1,"341":5,"345":1,"346":3,"349":2,"350":7,"352":1,"355":1,"363":1,"364":1,"370":2,"371":1,"372":1,"374":3,"375":1,"376":1,"377":1,"393":1,"394":1,"395":1,"396":1,"411":1,"413":1,"430":3,"432":2,"434":2,"435":4,"436":2,"445":1,"446":1,"448":1,"450":1,"451":1,"453":13,"454":2,"455":4,"457":1,"462":1,"463":1,"464":2,"465":5,"466":2,"469":1,"470":2,"471":1,"475":1,"479":2,"481":2,"482":1,"483":2,"484":1,"485":1,"486":1,"488":1,"496":5,"500":1,"501":2,"502":18,"504":2,"505":7,"506":9,"509":2,"510":1,"511":6,"513":1,"515":2,"516":1,"517":1,"519":2,"520":2,"521":1,"522":1,"527":1,"529":4,"530":2,"532":1,"533":1,"534":2,"535":1,"540":1,"541":1,"546":1,"548":1,"550":1,"552":1,"554":8,"555":1,"556":3,"557":2,"560":9,"561":1,"562":4,"563":1,"564":1,"567":1,"568":1,"569":1,"570":2,"571":2,"572":1,"574":1,"578":2,"580":8,"584":1,"587":1,"588":2,"589":2,"592":2,"596":1,"597":4,"598":3,"601":3,"602":2,"606":10,"607":1,"612":5,"614":2,"616":2,"617":2,"623":1,"624":1,"625":1,"626":3,"627":3,"628":5,"629":1,"630":2,"631":1,"635":4,"638":1,"639":2,"641":6,"644":3,"647":1,"649":1,"654":1,"662":1,"664":1,"665":1,"667":1,"670":2,"671":3,"673":2,"674":5,"675":4,"676":1,"677":1,"678":5,"679":12,"680":7,"681":7,"682":3,"684":1,"686":1,"688":8,"689":1,"690":2,"691":1,"693":1,"694":4,"696":3,"697":2,"698":4,"699":1,"701":4,"702":1,"703":2,"707":1,"709":3,"712":3,"715":3,"718":3,"721":3,"724":3,"727":1,"731":1,"739":1,"741":1,"743":1,"745":1,"747":1,"755":1,"757":5,"758":1,"763":1,"766":1,"768":1,"770":1,"772":1,"774":1,"784":1,"786":6,"787":1,"789":1,"795":1,"798":1,"800":1,"802":1,"804":1,"806":1,"816":1,"818":5,"819":1,"825":1,"828":1,"832":1,"834":1,"836":1,"838":1,"848":1,"850":6,"851":1,"854":1,"860":1,"863":1,"867":1,"869":1,"871":1,"873":1,"883":1,"885":6,"886":1,"888":1,"894":1,"897":1,"901":1,"903":1,"905":1,"907":1,"917":1,"919":6,"920":1,"922":1,"928":1,"931":1,"935":1,"937":1,"939":1,"941":1,"951":1,"953":7,"954":1,"956":1,"962":1,"965":1,"969":1,"971":1,"973":1,"975":1,"985":1,"987":7,"988":1,"990":1,"996":1,"999":1,"1003":1,"1005":1,"1007":1,"1009":1,"1019":1,"1021":6,"1022":1,"1024":1,"1030":1,"1033":1,"1037":1,"1039":1,"1041":1,"1043":1,"1053":1,"1055":6,"1056":1,"1058":1,"1064":1,"1067":1,"1071":1,"1073":1,"1075":1,"1077":1,"1087":1,"1089":7,"1090":1,"1092":1,"1098":1,"1100":1,"1101":1,"1105":1,"1107":1,"1109":1,"1111":1,"1121":2,"1122":2,"1124":1,"1125":2,"1126":2,"1127":1,"1129":6,"1130":1,"1132":3,"1133":2,"1134":5,"1138":1,"1142":1,"1143":1,"1145":5,"1146":1,"1151":1,"1154":1,"1158":1,"1160":1,"1168":1,"1171":5,"1176":1,"1178":1,"1180":2,"1182":5,"1183":1,"1188":1,"1191":1,"1195":1,"1197":1,"1199":1,"1201":1,"1211":1,"1213":1,"1216":1,"1218":3,"1226":2,"1229":2,"1232":1,"1234":1,"1237":1,"1244":2,"1246":2,"1249":2,"1251":7,"1252":2,"1253":2,"1254":1,"1257":1,"1261":2,"1264":1,"1266":1,"1267":1,"1270":2,"1271":1,"1273":1,"1275":2,"1276":1,"1277":1,"1279":1,"1282":1,"1287":1,"1288":1,"1289":1,"1291":1,"1292":1,"1294":2,"1295":2,"1296":2,"1302":5,"1304":1,"1307":1,"1308":2,"1311":1,"1312":1,"1315":5,"1318":1,"1321":3,"1324":4,"1326":2,"1327":3,"1329":1,"1331":1,"1335":1,"1337":8,"1339":1,"1340":13,"1341":2,"1356":1,"1357":1,"1360":1,"1361":1,"1363":12,"1366":11,"1367":1,"1368":4,"1369":6,"1370":1,"1371":3,"1372":4,"1373":6,"1375":2,"1377":4,"1378":4,"1381":4,"1382":1,"1383":5,"1384":2,"1388":1,"1389":1,"1390":2,"1392":1,"1393":1,"1396":2,"1398":2,"1400":1,"1401":2,"1402":1,"1405":1,"1407":1,"1412":2,"1414":1,"1415":1,"1417":4,"1420":4,"1421":3,"1422":7,"1424":3,"1427":2,"1430":2,"1434":1,"1435":5,"1436":1,"1437":1,"1438":1,"1441":1,"1442":2,"1443":5,"1445":2,"1447":1,"1448":2,"1449":1,"1452":1,"1453":4,"1460":1,"1463":1,"1464":1,"1465":1,"1466":1,"1467":2,"1468":3,"1469":1,"1471":1,"1472":3,"1474":1,"1475":2,"1478":3,"1479":1,"1480":1,"1482":2,"1483":3,"1484":4,"1485":2,"1488":12,"1489":2,"1491":4,"1494":4,"1495":1,"1496":5,"1498":1,"1499":1,"1501":1,"1503":1,"1504":1,"1508":3,"1532":2,"1534":2,"1535":1,"1536":1,"1545":2,"1548":2,"1552":5,"1555":3,"1556":1,"1557":1,"1561":1,"1563":1,"1564":2,"1565":4,"1566":2,"1572":3,"1574":1,"1575":4,"1583":1,"1584":2,"1585":2,"1589":1,"1591":4,"1592":3,"1593":3,"1594":2,"1596":2,"1597":2,"1598":1,"1599":1,"1600":1,"1602":2,"1608":2,"1611":5,"1616":2,"1620":1,"1621":2,"1622":2,"1623":2,"1624":2,"1625":2,"1629":4,"1634":1,"1643":2,"1645":1,"1647":2,"1650":4,"1651":1,"1652":4,"1662":1,"1663":1,"1670":2,"1671":4,"1675":1,"1676":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1687":1,"1688":1,"1689":2,"1692":2,"1693":3,"1695":1,"1696":1,"1701":1,"1706":2,"1708":4,"1709":4,"1710":2,"1711":4,"1712":3,"1713":3,"1714":5,"1715":5,"1716":1,"1718":1,"1720":1,"1721":3,"1722":8,"1723":2,"1752":1,"1753":1,"1754":2,"1757":1,"1758":1,"1759":1,"1760":2,"1762":2,"1763":14,"1766":5,"1767":2,"1768":5,"1779":1,"1781":1,"1783":1,"1794":1,"1812":1,"1819":2,"1822":2,"1829":3,"1840":3,"1841":4,"1842":9,"1843":1,"1844":2,"1845":3,"1846":2,"1849":1,"1851":1,"1852":1,"1853":2,"1855":5,"1856":1,"1857":3,"1858":10,"1859":2,"1860":16,"1863":2,"1865":3,"1870":2,"1875":1,"1876":1,"1877":1,"1878":1,"1879":1,"1880":1,"1881":1,"1882":1,"1883":1,"1884":1,"1888":1,"1890":1,"1891":2,"1896":2,"1897":3,"1899":1,"1900":1,"1901":1,"1904":2,"1907":1,"1909":1,"1910":1,"1911":3,"1912":2,"1915":1,"1918":1,"1919":1,"1920":1,"1924":2,"1925":6,"1927":2,"1930":1,"1932":1,"1933":1,"1934":1,"1935":4,"1936":1,"1937":2,"1939":3,"1943":8,"1945":2,"1946":4,"1947":3,"1948":2,"1949":5,"1950":7,"1952":3,"1955":2,"1956":1,"1958":1,"1959":1,"1960":5,"1965":1,"1967":2,"1969":2,"1972":1,"1974":5,"1975":1,"1977":1,"1978":1,"1979":1,"1980":3,"1983":2,"1984":14,"1986":2,"1987":10,"1988":9,"1990":2,"1992":7,"1995":1,"2006":1,"2008":1,"2010":1,"2021":1,"2057":1,"2064":2,"2067":2,"2069":3,"2070":6,"2071":2,"2073":3,"2074":1,"2076":6,"2078":7,"2079":2,"2080":5,"2081":2,"2082":3,"2085":1,"2089":2,"2090":4,"2094":1,"2097":3,"2098":2,"2099":1,"2100":2,"2101":1,"2102":1,"2104":1,"2105":1,"2108":2,"2110":3,"2112":1,"2113":2,"2119":1,"2121":1,"2122":1,"2123":1,"2125":1,"2126":1,"2143":1,"2147":1,"2150":1,"2151":2,"2152":1,"2155":1,"2156":1,"2157":1,"2158":2,"2160":2,"2161":1,"2163":2,"2164":1,"2165":1,"2166":10,"2167":28,"2168":2,"2169":7,"2170":1,"2171":2,"2172":1,"2174":1,"2175":1,"2176":1,"2177":2,"2179":2,"2180":4,"2181":11,"2182":4,"2183":2,"2184":2,"2185":16,"2186":6,"2187":3,"2188":5,"2190":17,"2191":1,"2193":1,"2195":2,"2198":3,"2199":6,"2200":6,"2202":1,"2206":1,"2207":8,"2208":3,"2209":6,"2210":1,"2213":1,"2215":3,"2216":1,"2217":2,"2219":5,"2220":6,"2221":4,"2238":1,"2242":1,"2252":1,"2264":6,"2266":2,"2267":4,"2268":2,"2269":1,"2271":2,"2273":1,"2274":1,"2275":1,"2276":2,"2278":2,"2280":2,"2281":1,"2282":4,"2283":2,"2285":2,"2287":2,"2288":4,"2291":1,"2293":1,"2295":1,"2297":1,"2298":5,"2300":12,"2301":2,"2303":2,"2305":1,"2307":4,"2308":4,"2309":6,"2310":1,"2311":13,"2312":5,"2313":5,"2314":2,"2315":3,"2316":4,"2318":7,"2319":2,"2321":1,"2323":2,"2330":1,"2333":1,"2334":1,"2337":1,"2339":5,"2340":1,"2342":1,"2343":1,"2345":2,"2348":1,"2349":1,"2350":7,"2351":1,"2352":2,"2353":2,"2354":2,"2356":2,"2358":4,"2359":4,"2361":3,"2363":3,"2365":1,"2366":4,"2367":1,"2374":2,"2378":1,"2380":1,"2381":2,"2385":1,"2386":4,"2387":5,"2388":5,"2389":1,"2391":1,"2392":3,"2393":1,"2394":1,"2396":2,"2397":1,"2398":1,"2409":3,"2420":1,"2424":2,"2432":2,"2434":1,"2435":4,"2436":1,"2439":4,"2440":4,"2441":4,"2442":2,"2443":2,"2444":3,"2445":5,"2446":2,"2447":2,"2450":4,"2452":2,"2453":3,"2456":6,"2457":2,"2459":1,"2460":1,"2461":2,"2462":4,"2463":4,"2464":3,"2467":2,"2470":4,"2471":1,"2476":2,"2480":4,"2481":1,"2483":1,"2484":1,"2485":1,"2486":2,"2487":2,"2489":3,"2491":1,"2494":1,"2496":1,"2497":1,"2502":1,"2503":1,"2505":1,"2506":1,"2507":4,"2508":3,"2511":2,"2512":1,"2513":13,"2514":2,"2515":2,"2516":1,"2518":1,"2525":3,"2527":3,"2528":1,"2529":4,"2530":3,"2531":1,"2533":1,"2536":2,"2537":1,"2540":1,"2541":2,"2542":1,"2543":1,"2545":1,"2547":1,"2549":2,"2552":8,"2553":2,"2554":2,"2557":1,"2558":2,"2560":1,"2562":7,"2563":8,"2564":4,"2565":2,"2568":1,"2569":2,"2571":1,"2572":3,"2573":1,"2578":3,"2580":2,"2582":1,"2583":2,"2584":1,"2585":5,"2587":3,"2588":3,"2589":4,"2591":1,"2592":5,"2593":1,"2594":2,"2595":2,"2596":4,"2597":5,"2598":3,"2599":2,"2602":1,"2603":10,"2604":1,"2605":11,"2606":6,"2607":1,"2608":2,"2609":4,"2610":1,"2613":9,"2614":12,"2615":21,"2616":29,"2617":1,"2623":4,"2624":5,"2626":7,"2627":1,"2628":1,"2629":1,"2630":1,"2631":6,"2632":5,"2633":6,"2634":4,"2635":6,"2636":2,"2637":2,"2638":1,"2639":4,"2640":2,"2644":1,"2646":1,"2647":1,"2649":2,"2650":1,"2653":4,"2654":4,"2655":1,"2656":1,"2658":1,"2661":2,"2662":1,"2664":1,"2666":1,"2670":1,"2671":1,"2676":1,"2677":1,"2682":1,"2684":1,"2687":2,"2690":1,"2692":2,"2694":1,"2699":1,"2700":2,"2704":2,"2705":2,"2710":2,"2711":3,"2712":2,"2713":4,"2714":1,"2715":1,"2716":4,"2717":1,"2718":1,"2719":2,"2720":1,"2721":2,"2722":7,"2723":2,"2725":18,"2726":1,"2727":14,"2728":6,"2730":2,"2731":1,"2733":8,"2734":16,"2735":1,"2736":5,"2737":1,"2738":1,"2739":2,"2740":5,"2741":2,"2743":2,"2744":2,"2745":1,"2747":2,"2748":1,"2749":2,"2750":2,"2751":3,"2752":3,"2753":1,"2757":1,"2758":6,"2759":3,"2762":2,"2763":4,"2764":1,"2765":1,"2766":4,"2767":7,"2768":2,"2769":2,"2773":2,"2774":4,"2775":3,"2776":3,"2777":6,"2778":1,"2779":3,"2780":1,"2781":1,"2782":4,"2783":2,"2784":6,"2785":6,"2786":3,"2787":3,"2788":5,"2789":3,"2791":4,"2792":4,"2793":1,"2796":7}}],["ordinarily",{"2":{"1468":1}}],["ordering",{"2":{"50":1,"1897":1,"2605":1}}],["order",{"0":{"1253":1,"1554":1,"1555":1,"2097":1},"2":{"10":1,"49":3,"50":1,"119":1,"124":1,"125":1,"132":1,"133":1,"134":1,"143":2,"174":1,"176":2,"185":1,"186":1,"188":1,"191":2,"211":1,"218":1,"221":1,"234":2,"272":1,"277":1,"278":1,"317":1,"399":1,"424":1,"509":1,"513":1,"516":2,"574":1,"621":1,"625":1,"659":1,"674":1,"675":1,"679":2,"694":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1171":1,"1185":1,"1251":3,"1253":7,"1280":1,"1324":1,"1339":1,"1363":1,"1369":1,"1377":1,"1389":2,"1464":1,"1488":1,"1554":2,"1555":7,"1714":1,"1859":1,"1897":1,"1922":1,"1988":1,"2080":1,"2097":5,"2150":1,"2160":1,"2161":1,"2187":1,"2195":1,"2200":1,"2207":1,"2209":1,"2299":1,"2313":1,"2338":1,"2339":1,"2366":1,"2383":1,"2489":2,"2511":1,"2552":2,"2562":1,"2563":2,"2585":1,"2591":1,"2605":1,"2606":1,"2614":1,"2730":1,"2757":1,"2767":1,"2768":1,"2774":1,"2796":1}}],["ored",{"2":{"1321":1}}],["orient",{"2":{"2164":1}}],["orientation",{"2":{"1904":5,"2616":1}}],["oriented",{"2":{"575":1,"1854":1,"2178":1,"2789":1}}],["oring",{"2":{"1488":2,"2449":1}}],["originating",{"2":{"1945":1,"1946":1}}],["original",{"2":{"124":1,"597":1,"1340":1,"1693":1,"1869":1,"2295":1,"2348":1,"2662":1,"2777":1}}],["originally",{"2":{"113":1,"1302":1,"1490":1,"2274":1,"2384":1,"2603":1}}],["origin",{"2":{"349":1,"359":2,"360":1,"361":2,"400":2,"554":1,"2477":3,"2516":6,"2526":4,"2527":1}}],["orange",{"2":{"160":1,"626":1,"1864":1,"1991":2,"2096":3}}],["organise",{"2":{"211":1}}],["organize",{"2":{"114":1,"160":1,"2334":1}}],["organization",{"2":{"21":1,"160":1,"268":1,"286":1,"2303":1,"2334":3}}],["org",{"2":{"160":1,"551":1,"1312":1,"1317":1,"1326":1,"1334":1,"1335":1,"1417":1,"1834":1,"2609":1}}],["orbit",{"2":{"160":1}}],["orthocode",{"2":{"277":1}}],["orthograph",{"2":{"249":1}}],["ortho60",{"2":{"199":1}}],["ortholinear",{"2":{"114":1,"624":1,"1440":1,"2307":1}}],["ortho",{"2":{"70":1,"154":4,"211":3,"249":1,"1386":4,"1389":1,"1442":1,"2309":1,"2333":1,"2598":2,"2605":1,"2711":1}}],["or",{"0":{"1308":1,"1959":1,"2197":1,"2511":1,"2708":1,"2768":1,"2780":1,"2792":1},"1":{"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1,"2769":1,"2770":1,"2771":1,"2772":1,"2773":1,"2774":1,"2775":1},"2":{"0":1,"9":1,"16":1,"19":1,"22":1,"23":1,"32":1,"39":1,"49":1,"52":1,"82":1,"87":1,"88":2,"90":2,"103":2,"104":2,"119":2,"126":2,"127":2,"131":1,"134":1,"137":2,"138":2,"143":2,"145":1,"149":1,"182":1,"191":1,"201":1,"202":1,"203":2,"214":2,"221":1,"222":1,"232":1,"234":4,"240":3,"244":1,"263":1,"268":1,"275":1,"291":1,"307":1,"337":3,"341":1,"352":5,"355":1,"356":2,"364":1,"366":1,"370":7,"371":3,"374":1,"376":1,"377":1,"378":3,"380":1,"381":3,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"400":1,"402":1,"403":1,"404":1,"405":3,"418":1,"428":1,"429":1,"433":1,"434":1,"436":1,"437":1,"448":2,"450":1,"453":3,"454":2,"457":1,"460":1,"461":1,"465":2,"469":1,"479":2,"481":1,"482":1,"485":1,"486":2,"497":1,"498":2,"502":6,"505":3,"506":2,"510":1,"511":1,"515":2,"522":1,"532":1,"533":1,"537":1,"538":1,"541":3,"551":2,"553":1,"554":3,"555":1,"557":4,"560":7,"561":1,"562":1,"563":1,"568":1,"569":1,"571":3,"580":4,"585":1,"586":2,"588":2,"589":2,"592":3,"597":1,"598":2,"601":1,"606":1,"607":1,"609":1,"610":1,"613":3,"623":2,"624":1,"626":5,"629":1,"630":2,"635":2,"638":1,"641":3,"643":1,"654":1,"671":1,"673":1,"683":1,"684":4,"688":4,"689":6,"690":1,"692":1,"693":1,"698":2,"700":1,"701":1,"729":1,"730":1,"750":3,"752":1,"755":1,"756":1,"777":3,"779":1,"784":1,"785":1,"816":1,"817":1,"841":3,"843":1,"848":1,"849":1,"876":3,"878":1,"883":1,"884":1,"910":3,"912":1,"917":1,"918":1,"944":3,"946":1,"951":1,"952":1,"978":3,"980":1,"985":1,"986":1,"1019":1,"1020":1,"1053":1,"1054":1,"1087":1,"1088":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":1,"1129":3,"1130":1,"1134":1,"1136":1,"1143":1,"1163":3,"1169":1,"1171":1,"1180":1,"1181":1,"1204":3,"1206":1,"1212":1,"1219":2,"1222":1,"1224":1,"1233":1,"1250":1,"1251":1,"1253":1,"1255":2,"1256":1,"1260":1,"1262":2,"1271":1,"1273":1,"1275":2,"1276":1,"1278":3,"1282":1,"1289":1,"1301":1,"1302":1,"1305":1,"1310":1,"1311":1,"1312":2,"1321":1,"1335":2,"1336":1,"1337":2,"1340":3,"1352":1,"1362":1,"1363":1,"1366":1,"1369":3,"1371":1,"1372":4,"1373":1,"1375":1,"1376":1,"1377":2,"1378":4,"1379":1,"1380":1,"1389":1,"1390":1,"1392":2,"1394":2,"1396":3,"1398":5,"1402":1,"1407":1,"1414":1,"1415":2,"1416":2,"1417":3,"1420":2,"1421":1,"1422":2,"1423":1,"1427":3,"1428":1,"1430":3,"1431":1,"1432":1,"1433":1,"1435":1,"1436":2,"1438":1,"1440":1,"1442":2,"1443":1,"1448":2,"1449":1,"1451":1,"1453":1,"1467":3,"1472":1,"1474":1,"1475":3,"1477":3,"1478":1,"1479":1,"1482":2,"1484":1,"1487":1,"1488":1,"1491":2,"1492":1,"1493":1,"1494":1,"1495":3,"1496":1,"1497":1,"1508":1,"1510":1,"1522":1,"1530":1,"1533":1,"1534":1,"1536":5,"1537":5,"1538":1,"1540":2,"1544":2,"1545":1,"1548":1,"1551":1,"1552":1,"1555":6,"1556":2,"1560":1,"1561":1,"1563":1,"1564":2,"1565":1,"1566":1,"1568":1,"1575":1,"1585":1,"1587":2,"1591":5,"1592":1,"1598":1,"1600":1,"1601":1,"1602":1,"1603":1,"1604":1,"1608":1,"1610":1,"1615":1,"1616":1,"1617":2,"1618":1,"1627":1,"1638":1,"1642":1,"1656":1,"1658":1,"1668":1,"1670":1,"1671":1,"1678":2,"1686":1,"1692":1,"1693":1,"1694":1,"1703":1,"1708":2,"1709":1,"1712":1,"1715":5,"1721":1,"1724":1,"1755":1,"1756":1,"1760":3,"1763":4,"1765":1,"1767":2,"1771":2,"1773":1,"1774":1,"1781":1,"1783":1,"1829":2,"1840":2,"1841":2,"1843":2,"1845":2,"1849":3,"1851":1,"1853":1,"1854":2,"1855":1,"1859":1,"1860":10,"1862":1,"1864":1,"1870":1,"1891":2,"1893":2,"1894":1,"1899":2,"1904":1,"1905":1,"1910":2,"1911":1,"1914":1,"1916":1,"1917":1,"1918":1,"1920":1,"1922":1,"1925":3,"1933":1,"1942":2,"1943":1,"1950":4,"1953":2,"1960":1,"1962":1,"1965":2,"1966":2,"1967":1,"1969":1,"1974":4,"1980":1,"1984":4,"1986":2,"1990":2,"1995":2,"2000":1,"2001":1,"2008":1,"2010":1,"2072":2,"2075":1,"2079":1,"2082":2,"2094":1,"2102":1,"2142":1,"2144":1,"2145":4,"2149":1,"2150":2,"2151":2,"2152":3,"2156":2,"2163":1,"2164":2,"2167":1,"2168":3,"2169":2,"2170":2,"2171":1,"2175":1,"2177":1,"2178":2,"2181":5,"2183":1,"2184":1,"2185":1,"2188":4,"2190":5,"2191":1,"2194":2,"2199":3,"2200":2,"2207":4,"2208":2,"2209":1,"2213":1,"2219":1,"2220":2,"2221":1,"2222":1,"2255":1,"2264":2,"2266":2,"2268":3,"2271":2,"2273":1,"2274":1,"2276":1,"2278":2,"2280":2,"2281":1,"2283":3,"2285":3,"2287":3,"2288":2,"2290":1,"2291":3,"2294":1,"2300":3,"2301":2,"2303":1,"2305":1,"2307":2,"2310":1,"2311":4,"2312":1,"2313":1,"2315":2,"2316":2,"2317":1,"2318":4,"2319":2,"2328":1,"2329":1,"2333":1,"2334":1,"2338":1,"2339":2,"2340":1,"2349":1,"2350":2,"2354":1,"2358":1,"2366":1,"2367":1,"2370":1,"2386":3,"2392":1,"2395":1,"2399":1,"2403":1,"2406":1,"2408":1,"2415":1,"2416":1,"2422":1,"2423":1,"2437":1,"2441":1,"2442":1,"2444":3,"2445":3,"2449":1,"2450":2,"2461":1,"2462":2,"2463":2,"2464":2,"2466":3,"2480":1,"2484":1,"2485":1,"2489":7,"2490":1,"2491":5,"2493":3,"2494":1,"2497":1,"2505":1,"2525":2,"2527":2,"2529":3,"2530":1,"2534":2,"2537":1,"2540":1,"2541":1,"2547":1,"2549":1,"2552":1,"2554":1,"2557":1,"2563":3,"2569":1,"2570":2,"2573":1,"2581":1,"2585":3,"2587":1,"2589":1,"2592":1,"2596":1,"2599":2,"2602":1,"2603":3,"2604":1,"2605":18,"2606":3,"2607":1,"2608":2,"2609":5,"2611":1,"2612":1,"2613":1,"2614":1,"2615":5,"2616":12,"2623":1,"2626":1,"2628":1,"2629":1,"2631":1,"2635":2,"2640":1,"2642":1,"2644":1,"2645":1,"2646":1,"2647":2,"2648":2,"2649":3,"2650":1,"2651":1,"2653":1,"2656":1,"2664":1,"2667":1,"2672":1,"2678":1,"2684":2,"2693":1,"2700":2,"2708":1,"2711":2,"2713":1,"2725":1,"2727":1,"2733":1,"2734":1,"2741":1,"2744":2,"2747":2,"2748":2,"2749":2,"2750":1,"2755":1,"2758":4,"2759":3,"2762":1,"2767":1,"2768":4,"2769":1,"2774":2,"2775":1,"2777":5,"2780":2,"2787":1,"2788":1,"2794":1}}],["dx",{"2":{"2744":1}}],["dg",{"2":{"2506":1}}],["dgk6x",{"2":{"199":1,"207":2}}],["dqt",{"2":{"2417":1,"2438":1}}],["dquote",{"2":{"462":2}}],["dquo",{"2":{"176":2,"2417":1,"2438":1,"2452":6}}],["dlr",{"2":{"2417":1,"2438":1}}],["d♯",{"2":{"1831":6,"2410":6}}],["ds5",{"2":{"1831":1,"2410":1}}],["ds4",{"2":{"1831":1,"2410":1}}],["ds3",{"2":{"1831":1,"2410":1}}],["ds2",{"2":{"1831":1,"2410":1}}],["ds1",{"2":{"1831":1,"2410":1}}],["ds",{"2":{"1831":1,"2410":1}}],["d♭",{"2":{"1831":6,"2410":6}}],["dwl",{"2":{"1611":1}}],["dwld",{"2":{"1610":1}}],["dwlu",{"2":{"1610":1}}],["dwell",{"2":{"1610":4,"1611":13,"2167":1}}],["dword",{"0":{"2129":1},"1":{"2130":1},"2":{"1368":1,"1370":1}}],["db5",{"2":{"1831":1,"2410":1}}],["db4",{"2":{"1831":1,"2410":1}}],["db3",{"2":{"1831":1,"2410":1}}],["db2",{"2":{"1831":1,"2410":1}}],["db1",{"2":{"1831":1,"2410":1}}],["dbl",{"2":{"1616":2}}],["dblsharp",{"2":{"1616":6}}],["dblclick",{"2":{"1616":14}}],["dbaas",{"2":{"1540":1}}],["db",{"2":{"1282":1,"1831":1,"2082":1,"2395":1,"2410":1,"2611":1}}],["db60",{"2":{"191":1}}],["d9",{"2":{"635":1}}],["d8",{"2":{"635":1,"2386":1}}],["d3",{"2":{"511":1,"1124":1,"1234":3,"1356":1,"1831":1,"2157":1,"2410":1,"2569":1,"2596":1,"2597":1}}],["d2",{"2":{"511":1,"1124":1,"1234":3,"1356":1,"1831":1,"1893":1,"1894":2,"1896":1,"2157":1,"2410":1,"2569":1,"2596":1,"2597":1}}],["d7",{"2":{"502":1,"506":1,"633":1,"1234":1,"1629":1,"2569":1}}],["d6",{"2":{"502":1,"633":1,"1234":1,"2315":1}}],["d4",{"2":{"502":1,"633":1,"1503":1,"1529":1,"1629":1,"1831":1,"2410":1,"2569":1,"2596":1}}],["d5",{"2":{"502":1,"1234":1,"1353":1,"1357":1,"1503":1,"1831":1,"1894":2,"1896":1,"2269":1,"2276":1,"2410":1,"2569":2,"2597":1}}],["dnworks",{"2":{"270":2,"277":2}}],["dpi",{"2":{"1954":2,"1955":1}}],["dprint",{"2":{"1287":1,"2168":1,"2301":2}}],["dprintf",{"2":{"50":1,"1287":1,"2168":1}}],["dp3000",{"2":{"226":2,"236":1}}],["dharma",{"2":{"211":1}}],["dyn",{"2":{"1593":1}}],["dynamically",{"2":{"119":1,"2623":1,"2710":1,"2767":1}}],["dynamic",{"0":{"119":1,"1591":1,"1593":1,"2402":1,"2672":1,"2767":1},"1":{"1592":1,"1593":1,"1594":1},"2":{"119":4,"134":1,"160":2,"176":3,"188":2,"191":4,"199":1,"211":1,"222":3,"236":2,"249":1,"277":2,"479":1,"515":1,"1591":11,"1592":6,"1593":4,"1594":6,"2402":6,"2414":6,"2672":1,"2763":1,"2766":2,"2767":10,"2788":2}}],["dymium65",{"2":{"211":1}}],["dyz",{"2":{"211":1}}],["dclk",{"2":{"2391":1}}],["dc",{"2":{"1857":2,"2615":11}}],["dc60",{"2":{"211":1}}],["dc01",{"2":{"114":2}}],["d",{"2":{"194":1,"196":8,"199":1,"211":1,"249":1,"266":3,"292":1,"313":1,"314":1,"375":3,"432":1,"437":1,"451":1,"452":1,"513":2,"530":2,"551":1,"556":2,"557":1,"559":1,"561":1,"574":1,"1148":4,"1276":2,"1291":1,"1417":1,"1420":1,"1421":2,"1422":1,"1473":1,"1540":2,"1545":2,"1548":1,"1568":1,"1718":8,"1724":1,"1831":19,"1853":1,"1910":1,"1912":2,"2168":1,"2177":1,"2186":1,"2191":1,"2212":1,"2221":1,"2278":2,"2280":2,"2281":2,"2282":1,"2309":1,"2346":1,"2386":1,"2394":3,"2410":19,"2425":3,"2440":1,"2446":1,"2492":1,"2498":1,"2530":1,"2612":11,"2614":2,"2615":4,"2616":4,"2744":1}}],["dvp",{"2":{"1392":1}}],["dv",{"2":{"176":2,"1536":1}}],["dvorak",{"0":{"2671":1},"2":{"92":1,"176":1,"1372":1,"1375":1,"1376":1,"1392":5,"1536":1,"1563":3,"1565":2,"2081":1,"2445":1,"2646":2,"2671":2,"2742":14}}],["ddr",{"2":{"1896":3}}],["ddram",{"0":{"1666":1},"1":{"1667":1},"2":{"1659":2,"1666":1,"1667":1}}],["ddrb",{"2":{"1349":1}}],["dd",{"2":{"176":2,"188":1,"191":10,"199":7,"211":1,"236":2,"277":6,"349":2}}],["djinn",{"2":{"176":1,"266":1}}],["dt40",{"2":{"222":1}}],["dtisaac",{"2":{"122":1}}],["dtisaac01",{"2":{"122":2}}],["dt",{"2":{"119":3,"2414":3,"2767":22}}],["dzr",{"2":{"2191":1}}],["dz60",{"2":{"211":1,"370":2}}],["dz60rgb",{"2":{"114":1,"160":1}}],["dztech",{"2":{"102":1,"160":1,"199":1,"211":1}}],["dribin",{"2":{"2350":1}}],["driving",{"2":{"684":1,"1262":1}}],["drives",{"2":{"176":1,"1427":1}}],["drive",{"2":{"173":1,"502":1,"691":1,"1134":1,"1428":1,"1432":1,"1433":1,"1495":1,"1611":2,"1614":1,"1615":1}}],["driven",{"0":{"109":1,"169":1,"184":1,"605":1},"1":{"110":1,"111":1,"112":1,"170":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1},"2":{"76":1,"109":1,"114":1,"145":3,"160":2,"169":1,"176":4,"184":1,"191":2,"199":13,"201":1,"211":26,"222":13,"236":6,"262":1,"266":68,"277":3,"389":1,"390":1,"496":2,"605":1,"690":1,"1168":1,"1169":3,"1262":1,"1353":1,"1354":1,"1424":2,"1495":2,"1508":1,"1761":1,"1859":1,"1933":1,"1936":1,"1937":1,"1950":1,"1982":1,"2338":1,"2558":1,"2594":1,"2599":1,"2605":2,"2710":1,"2789":1}}],["driver",{"0":{"210":1,"221":1,"233":1,"240":1,"244":1,"625":1,"630":1,"642":1,"654":1,"671":1,"672":1,"674":1,"675":1,"676":1,"677":1,"679":1,"680":1,"681":1,"682":1,"683":1,"693":1,"694":1,"699":1,"729":1,"755":1,"784":1,"816":1,"848":1,"852":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1023":1,"1053":1,"1057":1,"1087":1,"1121":1,"1131":1,"1132":1,"1133":1,"1134":1,"1143":1,"1168":1,"1174":1,"1180":1,"1211":1,"1232":1,"1249":1,"1255":1,"1256":1,"1257":1,"1258":1,"1259":1,"1260":1,"1263":1,"1266":1,"1267":1,"1497":1,"1498":1,"1499":1,"1500":1,"1501":1,"1503":1,"1504":1,"1506":1,"1507":1,"1626":1,"1762":1,"1848":1,"1861":1,"1951":1,"1983":1,"2173":1,"2326":1,"2575":1,"2576":1,"2577":1},"1":{"626":1,"627":1,"628":1,"629":1,"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1,"639":1,"640":1,"641":1,"643":1,"644":1,"645":1,"646":1,"647":1,"648":1,"649":1,"650":1,"651":1,"652":1,"653":1,"655":1,"656":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":1,"663":1,"664":1,"665":1,"666":1,"667":1,"668":1,"669":1,"670":1,"672":1,"673":2,"674":1,"675":1,"676":1,"677":1,"684":1,"685":1,"686":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1,"694":1,"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"730":1,"731":1,"732":1,"733":1,"734":1,"735":1,"736":1,"737":1,"738":1,"739":1,"740":1,"741":1,"742":1,"743":1,"744":1,"745":1,"746":1,"747":1,"748":1,"749":1,"750":1,"751":1,"752":1,"753":1,"754":1,"756":1,"757":1,"758":1,"759":1,"760":1,"761":1,"762":1,"763":1,"764":1,"765":1,"766":1,"767":1,"768":1,"769":1,"770":1,"771":1,"772":1,"773":1,"774":1,"775":1,"776":1,"777":1,"778":1,"779":1,"780":1,"781":1,"782":1,"783":1,"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"791":1,"792":1,"793":1,"794":1,"795":1,"796":1,"797":1,"798":1,"799":1,"800":1,"801":1,"802":1,"803":1,"804":1,"805":1,"806":1,"807":1,"808":1,"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"817":1,"818":1,"819":1,"820":1,"821":1,"822":1,"823":1,"824":1,"825":1,"826":1,"827":1,"828":1,"829":1,"830":1,"831":1,"832":1,"833":1,"834":1,"835":1,"836":1,"837":1,"838":1,"839":1,"840":1,"841":1,"842":1,"843":1,"844":1,"845":1,"846":1,"847":1,"849":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"856":1,"857":1,"858":1,"859":1,"860":1,"861":1,"862":1,"863":1,"864":1,"865":1,"866":1,"867":1,"868":1,"869":1,"870":1,"871":1,"872":1,"873":1,"874":1,"875":1,"876":1,"877":1,"878":1,"879":1,"880":1,"881":1,"882":1,"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"890":1,"891":1,"892":1,"893":1,"894":1,"895":1,"896":1,"897":1,"898":1,"899":1,"900":1,"901":1,"902":1,"903":1,"904":1,"905":1,"906":1,"907":1,"908":1,"909":1,"910":1,"911":1,"912":1,"913":1,"914":1,"915":1,"916":1,"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"924":1,"925":1,"926":1,"927":1,"928":1,"929":1,"930":1,"931":1,"932":1,"933":1,"934":1,"935":1,"936":1,"937":1,"938":1,"939":1,"940":1,"941":1,"942":1,"943":1,"944":1,"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"958":1,"959":1,"960":1,"961":1,"962":1,"963":1,"964":1,"965":1,"966":1,"967":1,"968":1,"969":1,"970":1,"971":1,"972":1,"973":1,"974":1,"975":1,"976":1,"977":1,"978":1,"979":1,"980":1,"981":1,"982":1,"983":1,"984":1,"986":1,"987":1,"988":1,"989":1,"990":1,"991":1,"992":1,"993":1,"994":1,"995":1,"996":1,"997":1,"998":1,"999":1,"1000":1,"1001":1,"1002":1,"1003":1,"1004":1,"1005":1,"1006":1,"1007":1,"1008":1,"1009":1,"1010":1,"1011":1,"1012":1,"1013":1,"1014":1,"1015":1,"1016":1,"1017":1,"1018":1,"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1026":1,"1027":1,"1028":1,"1029":1,"1030":1,"1031":1,"1032":1,"1033":1,"1034":1,"1035":1,"1036":1,"1037":1,"1038":1,"1039":1,"1040":1,"1041":1,"1042":1,"1043":1,"1044":1,"1045":1,"1046":1,"1047":1,"1048":1,"1049":1,"1050":1,"1051":1,"1052":1,"1054":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1060":1,"1061":1,"1062":1,"1063":1,"1064":1,"1065":1,"1066":1,"1067":1,"1068":1,"1069":1,"1070":1,"1071":1,"1072":1,"1073":1,"1074":1,"1075":1,"1076":1,"1077":1,"1078":1,"1079":1,"1080":1,"1081":1,"1082":1,"1083":1,"1084":1,"1085":1,"1086":1,"1088":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1094":1,"1095":1,"1096":1,"1097":1,"1098":1,"1099":1,"1100":1,"1101":1,"1102":1,"1103":1,"1104":1,"1105":1,"1106":1,"1107":1,"1108":1,"1109":1,"1110":1,"1111":1,"1112":1,"1113":1,"1114":1,"1115":1,"1116":1,"1117":1,"1118":1,"1119":1,"1120":1,"1122":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":1,"1128":1,"1129":1,"1130":1,"1131":1,"1132":2,"1133":2,"1134":2,"1135":1,"1136":1,"1137":1,"1138":1,"1139":1,"1140":1,"1141":1,"1142":1,"1169":1,"1170":1,"1171":1,"1172":1,"1173":1,"1174":1,"1175":1,"1176":1,"1177":1,"1178":1,"1179":1,"1181":1,"1182":1,"1183":1,"1184":1,"1185":1,"1186":1,"1187":1,"1188":1,"1189":1,"1190":1,"1191":1,"1192":1,"1193":1,"1194":1,"1195":1,"1196":1,"1197":1,"1198":1,"1199":1,"1200":1,"1201":1,"1202":1,"1203":1,"1204":1,"1205":1,"1206":1,"1207":1,"1208":1,"1209":1,"1210":1,"1212":1,"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1218":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1224":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1231":1,"1233":1,"1234":1,"1235":1,"1236":1,"1237":1,"1238":1,"1239":1,"1240":1,"1241":1,"1242":1,"1243":1,"1244":1,"1245":1,"1246":1,"1247":1,"1248":1,"1250":1,"1251":1,"1252":1,"1253":1,"1254":1,"1255":1,"1256":2,"1257":2,"1258":2,"1259":2,"1260":2,"1261":1,"1262":1,"1263":1,"1264":2,"1265":2,"1266":1,"1267":1,"1268":1,"1269":1,"1270":1,"1498":1,"1499":1,"1500":1,"1501":1,"1627":1,"1628":1,"1629":1,"1630":1,"1631":1,"1632":1,"1633":1,"1634":1,"1635":1,"1636":1,"1637":1,"1638":1,"1639":1,"1640":1,"1641":1,"1642":1,"1643":1,"1644":1,"1645":1,"1646":1,"1647":1,"1648":1,"1649":1,"1650":1,"1651":1,"1652":1,"1653":1,"1654":1,"1655":1,"1656":1,"1657":1,"1658":1,"1659":1,"1660":1,"1661":1,"1662":1,"1663":1,"1664":1,"1665":1,"1666":1,"1667":1,"1849":1,"1850":1,"1851":1,"1852":1,"1853":1,"1854":1,"1855":1,"1856":1,"1857":1,"1858":1,"1859":1,"1860":1,"1861":1,"2174":1,"2175":1,"2176":1,"2177":1,"2178":1,"2179":1,"2180":1,"2181":1},"2":{"21":1,"31":5,"34":5,"50":1,"65":4,"75":1,"93":3,"94":2,"107":1,"112":1,"114":12,"118":10,"128":1,"133":2,"134":8,"145":3,"160":13,"174":2,"175":1,"176":13,"183":2,"191":18,"199":4,"210":2,"211":11,"220":2,"221":11,"222":7,"224":1,"232":4,"234":8,"236":25,"240":6,"248":1,"249":11,"266":3,"277":3,"625":1,"626":7,"627":6,"628":4,"629":3,"630":1,"631":2,"635":2,"642":1,"643":4,"646":1,"654":1,"655":5,"656":2,"659":3,"662":2,"663":1,"664":1,"669":1,"670":2,"671":13,"674":2,"675":2,"676":1,"677":3,"678":10,"679":3,"680":2,"681":1,"682":4,"683":3,"684":2,"685":2,"686":3,"689":3,"690":2,"691":2,"693":4,"694":2,"700":4,"701":1,"702":2,"703":3,"707":1,"729":1,"730":5,"731":1,"734":2,"737":4,"738":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"753":1,"754":1,"755":1,"756":5,"757":4,"758":1,"760":5,"763":6,"764":1,"765":1,"767":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"780":1,"781":1,"782":1,"783":1,"784":1,"785":5,"786":4,"787":1,"792":5,"795":6,"796":1,"797":1,"799":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"812":1,"813":1,"814":1,"815":1,"816":1,"817":5,"818":4,"819":1,"822":5,"825":6,"826":1,"827":1,"829":1,"830":1,"831":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"844":1,"845":1,"846":1,"847":1,"848":1,"849":5,"850":8,"851":1,"852":4,"857":5,"860":6,"861":1,"862":1,"864":1,"865":1,"866":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"879":1,"880":1,"881":1,"882":1,"883":1,"884":5,"885":4,"886":1,"891":5,"894":6,"895":1,"896":1,"898":1,"899":1,"900":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"914":1,"915":1,"916":1,"917":1,"918":5,"919":4,"920":1,"925":5,"928":6,"929":1,"930":1,"932":1,"933":1,"934":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"947":1,"948":1,"949":1,"950":1,"951":1,"952":5,"953":4,"954":1,"959":5,"962":6,"963":1,"964":1,"966":1,"967":1,"968":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"981":1,"982":1,"983":1,"984":1,"985":1,"986":5,"987":4,"988":1,"993":5,"996":6,"997":1,"998":1,"1000":1,"1001":1,"1002":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1015":1,"1016":1,"1017":1,"1018":1,"1019":1,"1020":5,"1021":8,"1022":1,"1023":4,"1027":5,"1030":6,"1031":1,"1032":1,"1034":1,"1035":1,"1036":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1049":1,"1050":1,"1051":1,"1052":1,"1053":1,"1054":5,"1055":8,"1056":1,"1057":4,"1061":5,"1064":6,"1065":1,"1066":1,"1068":1,"1069":1,"1070":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1083":1,"1084":1,"1085":1,"1086":1,"1087":1,"1088":5,"1089":4,"1090":1,"1095":5,"1098":6,"1099":1,"1100":2,"1102":1,"1103":1,"1104":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1117":1,"1118":1,"1119":1,"1120":1,"1121":2,"1122":4,"1123":2,"1124":3,"1126":2,"1127":6,"1128":2,"1129":3,"1130":6,"1132":4,"1133":4,"1134":1,"1137":1,"1143":1,"1144":5,"1145":4,"1146":1,"1148":4,"1151":6,"1152":1,"1153":1,"1155":1,"1156":1,"1157":1,"1158":1,"1160":1,"1162":1,"1164":1,"1165":1,"1166":1,"1167":1,"1168":1,"1169":1,"1170":4,"1172":1,"1174":1,"1176":1,"1178":1,"1180":1,"1181":5,"1182":4,"1183":1,"1185":5,"1188":6,"1189":1,"1190":1,"1192":1,"1193":1,"1194":1,"1195":1,"1197":1,"1199":1,"1201":1,"1203":1,"1205":1,"1207":1,"1208":1,"1209":1,"1210":1,"1212":4,"1214":1,"1216":1,"1232":1,"1233":4,"1235":1,"1237":1,"1249":1,"1250":4,"1251":1,"1255":3,"1256":3,"1257":3,"1258":3,"1259":2,"1260":2,"1263":3,"1266":1,"1267":3,"1278":2,"1354":2,"1426":1,"1427":3,"1430":1,"1431":1,"1433":2,"1497":1,"1498":2,"1499":3,"1500":1,"1501":2,"1503":2,"1504":2,"1506":3,"1507":2,"1528":2,"1530":1,"1608":2,"1613":1,"1669":3,"1762":5,"1849":1,"1851":2,"1870":1,"1893":2,"1894":2,"1895":1,"1896":2,"1897":1,"1933":1,"1934":2,"1935":1,"1936":1,"1937":1,"1938":1,"1939":1,"1942":2,"1947":1,"1948":1,"1949":1,"1950":2,"1951":6,"1952":1,"1983":5,"1997":1,"2070":3,"2153":1,"2174":1,"2273":1,"2275":1,"2301":1,"2326":1,"2328":2,"2329":3,"2330":2,"2394":1,"2570":11,"2574":1,"2575":2,"2576":2,"2577":1,"2580":10,"2582":7,"2606":1,"2612":2,"2615":1,"2616":2,"2714":1,"2715":2,"2716":2,"2717":2,"2722":4,"2727":2,"2731":2,"2733":2,"2734":2,"2736":2,"2739":5}}],["drivers",{"0":{"128":1,"157":1,"327":1,"1934":1,"2323":1,"2324":1,"2574":1,"2615":1},"1":{"158":1,"159":1,"1935":1,"1936":1,"1937":1,"1938":1,"1939":1,"1940":1,"1941":1,"1942":1,"1943":1,"1944":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":1,"1951":1,"2325":1,"2326":1,"2327":1,"2328":1,"2329":1,"2330":1,"2575":1,"2576":1,"2577":1},"2":{"1":1,"33":2,"65":1,"74":2,"93":1,"113":2,"114":4,"128":1,"133":2,"134":11,"175":1,"176":3,"199":1,"211":2,"222":5,"233":2,"234":1,"236":8,"249":21,"266":1,"277":2,"327":2,"625":2,"628":3,"629":1,"654":1,"656":1,"674":1,"675":1,"676":1,"678":1,"699":1,"755":1,"757":1,"784":1,"786":1,"816":1,"818":1,"848":1,"850":1,"852":1,"883":1,"885":1,"917":1,"919":1,"951":1,"953":1,"985":1,"987":1,"1019":1,"1021":1,"1023":1,"1053":1,"1055":1,"1057":1,"1087":1,"1089":1,"1121":1,"1122":2,"1143":1,"1145":1,"1180":1,"1182":1,"1211":1,"1232":1,"1255":1,"1261":2,"1278":1,"1434":1,"1496":1,"1497":2,"1501":1,"1608":1,"1761":1,"1762":1,"1763":1,"1852":1,"1859":1,"1950":2,"1951":2,"1964":1,"1982":1,"1983":1,"1984":1,"2152":1,"2323":1,"2328":1,"2574":1,"2579":1,"2580":1,"2581":2,"2605":1,"2612":16,"2613":1,"2615":13,"2617":1,"2618":3,"2716":1,"2739":1}}],["drgblight",{"2":{"2339":2}}],["dr",{"2":{"2191":3,"2671":1}}],["drum",{"2":{"2140":1}}],["drv",{"2":{"1616":1}}],["drv2605l",{"0":{"1612":1,"1616":1,"1617":1,"1618":1},"1":{"1613":1,"1614":1,"1615":1,"1616":1},"2":{"221":2,"1608":1,"1610":4,"1612":1,"1614":5,"1615":8,"1616":1,"1617":2}}],["drone",{"2":{"616":1,"621":1}}],["drops",{"2":{"2264":1}}],["dropdown",{"2":{"626":1,"1272":1,"1273":1,"2221":1,"2552":2}}],["drop",{"2":{"73":1,"114":1,"119":1,"131":3,"134":1,"172":1,"173":1,"207":2,"211":1,"222":2,"236":1,"537":1,"540":1,"1347":1,"2437":1,"2450":1,"2475":1,"2529":1,"2566":1,"2584":1}}],["dropped",{"0":{"166":1},"2":{"50":1}}],["dry",{"2":{"396":1}}],["drhigsby",{"2":{"154":4,"160":2}}],["drastically",{"2":{"1368":1}}],["drashna",{"2":{"93":1,"114":5,"123":1,"134":1,"175":1,"179":1,"191":1,"1419":1,"1420":1,"1995":1}}],["drags",{"2":{"1847":1}}],["drag",{"0":{"1959":1,"1960":1},"2":{"236":1,"540":1,"1892":1,"1959":3,"1960":10,"2491":1}}],["drain",{"0":{"1262":1},"2":{"160":1,"243":1,"696":2,"1126":1,"1262":2}}],["drawtext",{"2":{"2616":7}}],["drawimage",{"2":{"2616":7}}],["drawing",{"0":{"2616":1},"2":{"125":5,"138":3,"1860":1,"2181":1,"2612":1,"2615":14,"2616":8,"2620":1}}],["draws",{"2":{"2615":1,"2616":1}}],["drawbacks",{"2":{"1302":1}}],["drawn",{"2":{"587":1,"618":1,"2615":2,"2616":3,"2637":1}}],["draw",{"2":{"138":1,"618":1,"2615":3,"2616":34,"2620":2,"2637":4,"2738":1}}],["draculad",{"2":{"114":1}}],["dm",{"2":{"1591":12,"1593":2,"2402":5}}],["dmote",{"2":{"226":2,"236":1}}],["dmq",{"2":{"176":1}}],["dmacros",{"2":{"1421":1}}],["dma1",{"2":{"1267":1}}],["dma",{"2":{"49":1,"50":3,"266":1,"703":4,"1258":2,"1259":1,"1260":1,"1267":4,"2567":1}}],["dmas",{"2":{"49":1}}],["dmamux",{"2":{"49":4,"1267":3}}],["dm9records",{"2":{"37":3}}],["dutch",{"2":{"2742":1}}],["duty",{"2":{"63":1,"704":2,"1491":1,"1494":1,"1496":1}}],["duophony",{"2":{"502":3}}],["duckypad",{"2":{"222":1}}],["ducky",{"2":{"211":1}}],["duckduckgo",{"2":{"196":1,"1718":1}}],["dumbpad",{"2":{"191":1}}],["dummy",{"2":{"191":1,"222":1,"636":1,"1715":4,"2777":4}}],["dumps",{"2":{"2300":3}}],["dump",{"2":{"49":3,"176":1,"211":1,"277":1,"566":1,"2300":5}}],["dubba175",{"2":{"154":2}}],["duplex",{"0":{"1125":1,"1128":1},"1":{"1126":1,"1127":1,"1129":1,"1130":1},"2":{"93":1,"107":3,"114":2,"176":1,"191":1,"277":1,"1121":2,"1122":2,"1125":4,"1126":1,"1127":1,"1128":4,"1129":1,"1130":3,"1134":3,"1136":2,"2582":4}}],["duplicating",{"2":{"2562":1}}],["duplication",{"2":{"4":1,"211":1,"236":3,"606":1,"2562":1,"2605":1}}],["duplicates",{"2":{"236":1}}],["duplicated",{"2":{"75":1,"236":1,"1632":1}}],["duplicate",{"2":{"4":1,"70":2,"75":1,"76":1,"145":1,"176":1,"191":2,"199":3,"211":2,"266":1,"277":1,"610":1,"2318":1,"2515":2,"2634":1,"2710":1}}],["duration",{"2":{"119":1,"120":1,"222":2,"599":1,"1391":1,"1394":2,"1443":3,"1541":1,"1713":1,"1989":1,"2082":2}}],["durgod",{"2":{"86":4,"102":2,"114":2,"160":1,"181":4,"191":1,"199":1,"207":2,"211":1}}],["during",{"2":{"49":1,"103":1,"107":1,"116":1,"118":1,"126":1,"131":1,"160":1,"170":1,"176":1,"191":1,"201":2,"213":1,"236":1,"249":1,"273":1,"396":1,"504":1,"571":1,"575":1,"587":1,"592":1,"674":1,"687":1,"688":1,"691":1,"1329":1,"1436":1,"1472":1,"1496":1,"1592":1,"1611":2,"1617":1,"1853":1,"1862":1,"1863":1,"1965":1,"1967":2,"1968":1,"2080":1,"2168":1,"2177":1,"2318":1,"2563":2,"2605":1,"2615":2,"2623":1,"2634":1,"2635":1,"2718":1,"2760":1,"2788":1}}],["dualbank",{"2":{"176":1}}],["dual",{"2":{"49":3,"114":2,"160":1,"176":1,"194":1,"505":3,"515":1,"1766":4,"1987":15,"2199":1,"2301":1,"2563":8,"2750":2,"2767":2,"2768":8,"2774":8,"2775":5,"2776":1,"2777":1}}],["due",{"2":{"45":1,"114":1,"120":1,"128":1,"134":2,"138":1,"167":1,"199":1,"233":1,"236":1,"273":1,"1128":1,"1254":1,"1256":1,"1258":1,"1267":1,"1278":1,"1280":1,"1307":1,"1326":1,"1440":1,"1453":1,"1474":1,"1484":1,"1763":1,"1974":1,"1984":1,"2069":1,"2184":1,"2220":1,"2221":1,"2382":1,"2388":1,"2440":1,"2445":1,"2507":1,"2553":1,"2560":1,"2588":1,"2603":1,"2605":1,"2612":1,"2703":1,"2757":1,"2758":1,"2785":1}}],["dfsr",{"2":{"2392":1}}],["dflash",{"2":{"1422":1}}],["df11",{"2":{"629":1,"2278":1}}],["df1deb37c163",{"2":{"315":1}}],["df",{"2":{"38":1,"247":2,"1372":1,"1586":2,"1966":1,"2406":1,"2424":1,"2434":1}}],["dfu",{"0":{"1278":1,"2268":1,"2269":1,"2278":1,"2281":1,"2282":1,"2288":1,"2382":1,"2489":1},"1":{"2269":1,"2270":1,"2279":1},"2":{"12":1,"49":2,"111":1,"114":1,"145":1,"199":1,"222":2,"240":5,"509":6,"514":4,"629":17,"1275":3,"1324":4,"1611":1,"2164":6,"2268":11,"2269":1,"2270":5,"2277":1,"2278":6,"2279":6,"2280":4,"2281":3,"2282":4,"2288":3,"2300":4,"2387":1,"2389":2,"2392":1,"2489":1,"2492":5,"2556":1}}],["d14",{"2":{"635":2}}],["d13",{"2":{"635":2}}],["d12",{"2":{"635":2}}],["d11",{"2":{"635":2}}],["d10",{"2":{"635":2}}],["d1",{"2":{"34":1,"511":1,"702":2,"1124":1,"1234":2,"1356":1,"1831":1,"1893":1,"2157":1,"2166":1,"2410":1,"2569":1,"2596":1}}],["d0",{"2":{"34":1,"502":1,"511":2,"702":2,"1124":1,"1234":2,"1330":1,"1356":1,"2157":1,"2163":1,"2166":2,"2569":1}}],["dio",{"2":{"2391":1}}],["dioded",{"2":{"2350":1}}],["diodes",{"0":{"2312":1,"2322":1},"2":{"2155":1,"2305":1,"2309":1,"2311":1,"2312":3,"2313":2,"2596":1,"2687":1,"2728":2}}],["diode",{"2":{"70":2,"111":1,"199":1,"502":2,"1171":1,"1590":1,"2163":2,"2171":3,"2307":4,"2311":1,"2312":12,"2315":2,"2318":2,"2350":4,"2596":1,"2597":1,"2605":1,"2685":1,"2728":1}}],["diameter",{"2":{"1943":3}}],["diagram",{"2":{"1611":1,"2572":1}}],["diagnose",{"2":{"1289":1}}],["dialog",{"2":{"1310":1}}],["die",{"2":{"1254":1}}],["dinterrupt",{"2":{"514":1}}],["ding",{"2":{"120":1,"1391":1}}],["diy",{"2":{"502":2,"2751":3}}],["dimensional",{"2":{"2193":1,"2728":1}}],["dimensions",{"2":{"1939":1}}],["dims",{"2":{"2076":1}}],["dimming",{"2":{"1491":1}}],["dimmer",{"2":{"435":1}}],["dim",{"2":{"435":1}}],["dictated",{"2":{"1437":1}}],["dictionaries",{"0":{"468":1},"2":{"1393":1,"1565":1,"2725":2,"2727":1,"2734":1}}],["dictionary",{"0":{"1565":1},"2":{"196":1,"436":1,"438":1,"439":1,"1477":3,"1478":1,"2182":1,"2713":1,"2725":4,"2727":2,"2733":1,"2734":2}}],["dict",{"2":{"211":1,"611":1,"1479":1}}],["dilemma",{"2":{"176":2,"249":1}}],["dive",{"2":{"2319":1}}],["diverged",{"2":{"1302":1}}],["divergetm2",{"2":{"154":2}}],["diverge3",{"2":{"154":2}}],["dividing",{"0":{"280":1},"2":{"1218":1}}],["divided",{"2":{"1858":1,"2180":1}}],["divide",{"2":{"675":1,"694":1,"1855":1}}],["dividends",{"2":{"198":1}}],["divider",{"2":{"191":1,"1668":1}}],["divine",{"2":{"236":1}}],["division",{"2":{"114":1}}],["divisors",{"2":{"1264":1,"1960":1}}],["divisor",{"0":{"1217":1},"1":{"1218":1,"1219":1},"2":{"114":1,"236":1,"656":2,"675":2,"694":2,"1218":3,"1231":1,"1263":2,"1264":1,"1857":1,"1901":2,"1936":2,"1937":1,"1943":2,"1950":2,"1960":6,"2179":2,"2615":11}}],["dig",{"2":{"1433":1,"2363":1,"2763":1}}],["digest",{"2":{"138":1}}],["digit",{"2":{"1678":3,"2129":1,"2131":1,"2133":1,"2135":1,"2387":1,"2738":2}}],["digital",{"2":{"145":1,"519":1,"527":1,"630":1,"1362":2,"1669":1,"1987":3,"2314":2,"2750":1}}],["digits",{"2":{"134":1,"341":1,"1478":1,"2350":1}}],["digitizers",{"2":{"190":1,"1569":1}}],["digitizer",{"0":{"100":1,"190":1,"1569":1,"1574":1,"1576":1,"1577":1,"1578":1,"1579":1,"1580":1,"1581":1,"1582":1,"1583":1},"1":{"1570":1,"1571":1,"1572":1,"1573":1,"1574":1,"1575":2,"1576":1,"1577":1,"1578":1,"1579":1,"1580":1,"1581":1,"1582":1,"1583":1,"1584":2},"2":{"100":2,"114":1,"190":3,"191":2,"1572":7,"1574":1,"1575":3,"1576":1,"1583":1}}],["diffused",{"2":{"2069":1}}],["diff",{"2":{"160":1,"292":1,"400":1,"556":1,"2077":1,"2659":1}}],["difficulty",{"0":{"1702":1},"1":{"1703":1,"1704":1}}],["difficulties",{"2":{"1551":1}}],["difficult",{"2":{"119":1,"123":1,"125":1,"185":1,"246":1,"481":1,"1722":1,"1841":1,"2308":1,"2309":2,"2312":1,"2313":1,"2607":1}}],["differs",{"2":{"2598":1,"2653":1}}],["difference",{"0":{"1714":1},"2":{"1337":1,"2589":1,"2608":1}}],["differences",{"0":{"1302":1},"2":{"2499":1}}],["differentiating",{"2":{"2186":1}}],["differentiates",{"2":{"592":1}}],["differentiate",{"2":{"468":1}}],["differently",{"2":{"1440":1,"1469":1,"1842":1,"1854":1,"1862":1,"2160":1,"2169":1,"2178":1,"2198":1,"2220":1,"2432":1,"2441":1,"2778":1}}],["different",{"0":{"1978":1,"2197":1},"1":{"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"49":1,"191":1,"204":1,"357":1,"371":1,"481":1,"499":1,"509":1,"511":2,"556":2,"560":3,"567":1,"592":1,"626":2,"635":1,"641":2,"679":1,"695":1,"1252":1,"1253":1,"1271":1,"1287":1,"1330":1,"1356":1,"1363":1,"1371":1,"1376":2,"1383":2,"1392":1,"1400":1,"1415":5,"1422":1,"1435":1,"1439":1,"1440":1,"1443":1,"1448":1,"1453":1,"1488":1,"1491":1,"1533":1,"1535":1,"1545":1,"1562":1,"1596":1,"1613":1,"1615":1,"1693":3,"1711":1,"1714":1,"1836":1,"1840":1,"1843":1,"1849":1,"1854":1,"1862":1,"1937":2,"1950":2,"2076":1,"2078":1,"2080":1,"2097":1,"2114":1,"2150":1,"2152":1,"2169":5,"2178":1,"2185":1,"2186":1,"2267":2,"2297":1,"2314":1,"2319":2,"2323":1,"2366":1,"2381":1,"2447":1,"2466":2,"2489":2,"2540":1,"2542":1,"2547":1,"2603":2,"2605":2,"2615":2,"2624":1,"2630":1,"2631":2,"2741":1,"2750":1,"2768":1,"2774":1,"2782":1,"2784":1,"2789":2,"2792":2}}],["differ",{"2":{"69":1,"685":1,"1943":1,"2200":1,"2381":1,"2513":1}}],["dip",{"0":{"105":1,"247":1,"1585":1,"1586":1,"1589":1,"1590":1,"2721":1},"1":{"1586":1,"1587":1,"1588":1,"1589":1,"1590":1},"2":{"105":13,"114":6,"191":1,"236":3,"247":9,"249":3,"633":1,"1585":7,"1586":10,"1587":6,"1589":1,"1590":1,"2721":3,"2736":2}}],["di",{"2":{"70":1,"201":1,"211":3,"506":2,"644":2,"1251":2,"1260":1,"1262":2,"2070":2,"2714":1,"2739":1}}],["didn",{"2":{"1396":1,"2205":1,"2551":1}}],["did",{"0":{"1290":1},"2":{"31":1,"125":1,"163":1,"185":1,"221":1,"545":1,"1449":2,"1487":1,"1724":4,"2318":1,"2461":1,"2464":1,"2493":1}}],["disk",{"2":{"2283":1,"2285":1,"2287":1}}],["dis",{"0":{"1556":1}}],["distclean",{"2":{"2300":1}}],["distinguish",{"2":{"2207":1,"2701":1}}],["distinction",{"2":{"2447":1}}],["distinct",{"0":{"2770":1},"2":{"1121":1,"1129":1,"1491":1,"1600":1,"1921":1}}],["distance",{"2":{"1940":9,"1950":2,"1988":1,"2315":1}}],["distances",{"2":{"1447":1,"1842":1,"1844":1}}],["distribution",{"2":{"2390":1}}],["distributed",{"2":{"1417":1,"2605":1,"2609":1}}],["distribute",{"2":{"526":1}}],["distros",{"2":{"1291":2,"2221":1,"2505":1}}],["distro",{"2":{"199":1}}],["disputes",{"2":{"2758":1}}],["disposal",{"2":{"2074":1}}],["displacements",{"2":{"1569":1}}],["displaying",{"2":{"2167":2}}],["displayed",{"2":{"424":1,"431":1,"1253":1,"1254":1,"2623":1,"2654":1}}],["displays",{"0":{"1858":1,"2180":1},"1":{"1859":1},"2":{"138":2,"210":1,"232":2,"236":1,"248":2,"249":1,"378":1,"587":1,"629":1,"1642":2,"1771":1,"1854":1,"1855":1,"1858":7,"1859":1,"1995":1,"2178":1,"2190":1,"2300":2,"2326":1,"2605":2,"2612":1,"2613":1,"2615":26}}],["display\\t",{"2":{"31":1,"34":1}}],["display",{"0":{"2615":1},"2":{"30":1,"31":2,"33":1,"34":1,"49":1,"63":1,"64":1,"82":1,"83":1,"92":1,"114":1,"123":1,"125":1,"138":1,"185":1,"211":1,"236":1,"378":1,"418":1,"586":1,"1284":1,"1285":1,"1286":1,"1485":1,"1571":1,"1629":8,"1634":1,"1636":1,"1638":1,"1640":1,"1641":1,"1643":2,"1645":1,"1647":1,"1653":1,"1654":1,"1655":1,"1656":1,"1657":1,"1660":2,"1662":2,"1666":1,"1841":1,"1853":3,"1854":1,"1855":3,"1856":2,"1857":5,"1858":23,"1859":2,"1860":13,"2167":2,"2174":1,"2177":4,"2178":4,"2179":5,"2180":8,"2181":14,"2188":2,"2319":1,"2337":1,"2394":1,"2478":2,"2595":1,"2606":1,"2612":1,"2613":5,"2615":13,"2616":46,"2617":1,"2618":2,"2620":15,"2623":1,"2653":1,"2658":1,"2710":1,"2725":1}}],["dispatched",{"2":{"2783":1}}],["dispatches",{"2":{"2783":1}}],["dispatchconsumerevent",{"2":{"1316":1}}],["dispatch",{"2":{"521":1,"2476":1,"2787":1}}],["disregarding",{"2":{"2759":1}}],["disregarded",{"2":{"282":3,"341":1}}],["disrupting",{"2":{"2079":1}}],["disruption",{"2":{"103":1}}],["discretion",{"2":{"2606":1,"2759":1}}],["disclosure",{"2":{"2605":1}}],["disc",{"2":{"1609":1}}],["discusses",{"2":{"1362":1}}],["discussed",{"2":{"50":1,"560":1,"1383":1}}],["discuss",{"2":{"496":1,"2603":1}}],["discussion",{"2":{"265":1,"2755":1}}],["discarded",{"2":{"176":1,"671":1,"2614":1}}],["discovered",{"2":{"2331":1}}],["discovery",{"2":{"119":1,"191":1,"222":1}}],["discouraged",{"2":{"282":1,"607":1,"2603":1}}],["disconnection",{"2":{"2166":1}}],["disconnect",{"2":{"160":1,"191":2,"1292":1,"2156":1}}],["disconnected",{"2":{"107":1,"134":1,"176":1,"2166":2,"2492":1}}],["discord",{"0":{"350":1},"2":{"49":1,"50":1,"213":1,"228":1,"276":1,"343":1,"344":1,"345":1,"349":1,"350":1,"356":1,"485":1,"551":1,"553":1,"560":1,"585":1,"609":1,"613":1,"1301":1,"2319":1,"2365":1,"2489":1,"2494":1,"2584":1,"2602":1,"2603":2,"2606":1,"2753":1}}],["discharge",{"2":{"49":1}}],["disappearance",{"2":{"2759":1}}],["disappearing",{"2":{"26":1}}],["disadvantages",{"2":{"2359":1}}],["disallows",{"2":{"2358":1}}],["disallow",{"2":{"1556":1}}],["disabling",{"0":{"1722":1,"2081":1,"2622":1},"2":{"28":1,"134":1,"266":1,"486":1,"512":1,"1308":2,"1337":2,"1974":1,"1977":1,"2667":1,"2744":3,"2750":1,"2776":1}}],["disables",{"2":{"114":1,"505":1,"515":1,"1369":1,"1462":1,"1536":2,"1559":1,"1564":1,"1592":1,"1974":1,"1975":1,"1992":1,"2073":1,"2614":4,"2744":3}}],["disabled",{"0":{"503":1},"2":{"50":1,"124":1,"134":2,"236":1,"249":1,"502":1,"560":2,"636":1,"698":2,"1331":1,"1353":1,"1369":1,"1435":1,"1443":1,"1448":2,"1451":1,"1476":1,"1483":3,"1532":1,"1553":1,"1559":1,"1566":1,"1608":2,"1611":1,"1910":1,"1948":1,"1967":2,"1974":1,"1977":1,"2083":1,"2111":1,"2149":1,"2199":1,"2221":1,"2344":1,"2382":4,"2613":1,"2738":1,"2782":1}}],["disable",{"0":{"25":1,"1512":1,"1524":1,"1777":1,"1778":1,"1977":1,"2004":1,"2005":1,"2091":1},"2":{"25":7,"50":1,"77":2,"114":6,"134":4,"143":1,"145":1,"176":1,"183":2,"191":2,"194":1,"195":1,"211":2,"222":2,"232":1,"236":3,"249":2,"335":1,"375":1,"435":1,"503":6,"505":1,"515":1,"592":1,"703":1,"750":3,"752":1,"777":3,"779":1,"841":3,"843":1,"876":3,"878":1,"910":3,"912":1,"944":3,"946":1,"978":3,"980":1,"1163":3,"1204":3,"1206":1,"1214":1,"1331":1,"1335":1,"1337":2,"1365":1,"1369":2,"1421":1,"1440":2,"1483":1,"1486":1,"1537":1,"1538":1,"1549":2,"1556":2,"1564":1,"1591":1,"1614":1,"1615":1,"1706":1,"1722":1,"1841":1,"1855":2,"1899":1,"1901":2,"1960":3,"1962":1,"1974":3,"1977":2,"1979":2,"1986":2,"1992":1,"1998":2,"2072":2,"2073":1,"2075":1,"2077":2,"2080":1,"2081":1,"2091":2,"2094":1,"2108":2,"2142":1,"2144":1,"2145":4,"2151":2,"2166":2,"2179":1,"2188":1,"2221":1,"2301":4,"2386":1,"2409":2,"2435":2,"2476":1,"2500":1,"2545":1,"2552":2,"2555":1,"2614":2,"2713":1,"2727":1,"2733":1,"2734":1,"2735":2,"2738":1,"2744":2,"2745":2,"2746":1,"2750":2,"2767":1}}],["dir=",{"2":{"2482":1,"2483":1,"2484":1}}],["dirty",{"2":{"114":1,"191":2,"199":1,"230":1,"1572":1,"1575":1,"1576":1,"1676":1,"1679":1,"1854":1,"1855":1,"1858":3,"1860":5,"2180":3,"2181":2,"2515":1,"2615":5}}],["dir",{"2":{"114":1}}],["dire",{"2":{"93":1}}],["directives",{"2":{"453":2,"496":1}}],["directive",{"2":{"172":1}}],["directional",{"0":{"259":1},"2":{"236":1,"256":1}}],["directions",{"2":{"201":2,"211":1,"1595":1,"1597":1,"1836":1,"1845":1,"1925":1}}],["direction",{"2":{"13":2,"70":2,"111":1,"191":1,"199":1,"211":2,"502":1,"560":1,"1171":3,"1594":5,"1595":2,"1846":1,"1855":1,"1904":1,"1910":2,"1986":2,"2072":2,"2307":1,"2311":1,"2415":2,"2416":2,"2596":2,"2597":1,"2605":1,"2728":1}}],["directpins",{"2":{"114":1}}],["directors",{"2":{"347":1}}],["directory",{"2":{"36":2,"50":1,"114":1,"132":1,"133":1,"134":3,"145":1,"160":2,"222":1,"236":1,"331":1,"370":9,"371":2,"373":1,"378":2,"381":2,"383":2,"386":2,"387":1,"389":1,"390":1,"391":1,"401":1,"404":1,"405":1,"446":1,"454":1,"529":1,"557":1,"564":1,"1278":1,"1767":2,"1913":1,"1990":2,"2291":1,"2296":1,"2297":1,"2302":1,"2316":1,"2386":1,"2392":1,"2460":1,"2476":2,"2480":1,"2484":3,"2485":1,"2486":1,"2491":1,"2502":1,"2508":1,"2537":3,"2540":2,"2552":2,"2562":1,"2587":1,"2592":2,"2614":6}}],["directories",{"2":{"18":1,"113":1,"114":3,"2603":1,"2605":1}}],["directly",{"2":{"16":1,"50":1,"132":1,"134":1,"164":1,"236":1,"282":3,"341":1,"432":1,"452":1,"506":2,"522":1,"609":1,"633":1,"679":1,"690":1,"1129":1,"1136":1,"1256":1,"1378":2,"1433":1,"1499":1,"1508":1,"1528":1,"1529":1,"1572":1,"1589":1,"1599":1,"1700":1,"1708":1,"1767":1,"1829":2,"1897":1,"1933":1,"1950":1,"1960":1,"1990":1,"2074":1,"2107":1,"2169":2,"2172":1,"2219":1,"2276":1,"2297":2,"2308":1,"2309":1,"2350":1,"2351":1,"2357":1,"2367":1,"2380":1,"2469":1,"2497":1,"2513":1,"2536":1,"2565":1,"2568":1,"2590":1,"2605":2,"2627":1,"2628":1,"2635":1,"2639":1}}],["direct",{"0":{"284":1,"1273":1,"2089":1,"2597":1},"2":{"3":1,"7":1,"15":1,"63":1,"199":2,"222":6,"279":1,"413":1,"502":1,"511":5,"580":3,"1271":9,"1272":3,"1273":3,"1986":1,"2169":2,"2536":1,"2597":3,"2605":2,"2728":2,"2784":1}}],["dirction",{"2":{"13":1}}],["dollars",{"2":{"2703":1}}],["dollar",{"2":{"2417":1,"2438":1}}],["dolor",{"2":{"301":1}}],["dor1",{"2":{"1896":1}}],["doe",{"2":{"1473":3,"1548":2}}],["doesnt",{"2":{"191":1,"515":1}}],["doesn",{"0":{"1307":1,"1318":1,"1325":1,"1328":1,"1329":1},"2":{"114":1,"352":1,"401":1,"515":1,"540":1,"560":1,"621":1,"1278":1,"1308":1,"1323":1,"1325":2,"1340":1,"1377":1,"1420":1,"1422":1,"1443":1,"1475":1,"1479":1,"1552":1,"1555":1,"1858":1,"1953":1,"2102":1,"2183":1,"2300":1,"2301":1,"2313":1,"2318":1,"2325":1,"2346":1,"2493":1,"2494":1,"2552":1,"2581":1,"2785":2,"2787":1,"2792":1}}],["does",{"0":{"562":1,"1280":1,"1448":1,"1475":1,"2355":1,"2356":1},"2":{"23":1,"28":1,"50":1,"134":1,"236":1,"276":1,"285":1,"302":1,"304":1,"306":1,"401":1,"433":1,"436":1,"437":1,"446":1,"462":1,"502":1,"510":1,"527":1,"540":1,"550":1,"556":3,"567":1,"572":1,"584":1,"592":1,"597":1,"625":1,"647":1,"665":1,"679":1,"683":1,"692":1,"697":1,"702":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1132":1,"1133":1,"1158":1,"1162":1,"1195":1,"1199":1,"1203":1,"1205":1,"1232":1,"1321":1,"1324":1,"1363":1,"1377":1,"1378":1,"1394":1,"1398":1,"1434":2,"1447":1,"1449":1,"1460":1,"1468":1,"1528":1,"1536":2,"1565":1,"1596":1,"1669":1,"1692":1,"1714":1,"1860":2,"1866":1,"1916":1,"1925":1,"1986":2,"2103":1,"2161":1,"2191":1,"2207":1,"2209":1,"2219":1,"2294":1,"2311":1,"2312":1,"2344":1,"2354":1,"2358":1,"2359":2,"2387":1,"2390":1,"2394":1,"2395":1,"2416":2,"2447":1,"2468":2,"2493":1,"2496":2,"2540":1,"2569":1,"2583":1,"2585":2,"2588":1,"2595":1,"2603":2,"2605":2,"2611":1,"2628":1,"2654":1,"2656":1,"2738":1,"2758":1,"2768":1,"2781":1,"2785":1}}],["doing",{"2":{"304":1,"435":1,"628":1,"1287":1,"1315":1,"1378":2,"1381":1,"1435":1,"1552":1,"2300":1,"2311":1,"2555":1,"2784":1,"2795":1}}],["doio",{"2":{"176":1,"191":1,"222":1,"249":1}}],["domain",{"2":{"279":1}}],["dogtag",{"2":{"211":1,"277":1,"390":2}}],["dozen0",{"2":{"154":2}}],["dozens",{"2":{"112":1}}],["doxygen",{"2":{"145":1,"211":1,"2587":1}}],["doubt",{"2":{"685":1,"2457":1}}],["doubled",{"2":{"635":1,"1907":1,"2207":1}}],["double",{"0":{"2202":1,"2578":1},"2":{"137":1,"215":2,"335":1,"461":1,"548":1,"627":1,"628":1,"1373":1,"1537":4,"1907":1,"2160":2,"2199":3,"2202":1,"2205":1,"2207":22,"2208":4,"2209":5,"2283":2,"2285":2,"2287":3,"2314":1,"2319":1,"2387":1,"2417":1,"2438":1,"2450":1,"2537":1,"2578":7,"2580":1,"2719":1,"2744":1}}],["dout",{"2":{"45":1}}],["dosa40rgb",{"2":{"134":1}}],["doc",{"2":{"199":1,"1312":1}}],["docker",{"0":{"2289":1},"1":{"2290":1,"2291":1,"2292":1,"2293":1},"2":{"114":1,"160":1,"2289":1,"2290":2,"2291":9,"2293":2}}],["docstring",{"0":{"463":1,"464":1,"465":1},"2":{"462":2}}],["docstrings",{"0":{"462":1},"1":{"463":1,"464":1,"465":1},"2":{"455":1,"462":2}}],["docs",{"0":{"402":1,"403":1},"2":{"114":3,"145":1,"160":1,"176":4,"182":1,"191":4,"199":2,"211":1,"222":1,"236":3,"279":1,"341":1,"350":1,"402":2,"403":3,"557":3,"558":1,"560":1,"607":1,"621":3,"626":1,"1280":1,"1358":1,"2296":1,"2319":1,"2448":1,"2517":1,"2592":2,"2605":1}}],["doctor",{"0":{"376":1,"397":1},"2":{"114":3,"176":1,"199":3,"376":4,"397":1,"2493":1}}],["documenting",{"0":{"621":1},"2":{"2393":1}}],["documented",{"2":{"213":1,"1487":1,"2275":1,"2325":1,"2345":1,"2481":1,"2610":1,"2699":1}}],["documents",{"2":{"32":1,"114":1,"342":1,"622":1,"1347":1,"2393":1,"2440":1,"2762":2,"2763":2,"2781":1}}],["documentation",{"0":{"22":1,"278":1,"416":1,"557":1,"558":1,"573":1,"577":1,"579":1,"580":1,"583":1,"586":1,"591":1,"595":1,"615":1,"622":1,"1370":1,"1382":1},"1":{"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"558":1,"623":1,"624":1},"2":{"13":1,"22":1,"93":1,"99":1,"118":1,"123":1,"124":1,"134":1,"137":1,"138":1,"149":1,"160":1,"172":1,"174":1,"182":1,"195":1,"196":1,"202":1,"222":2,"228":1,"229":1,"232":1,"245":1,"247":1,"277":1,"278":1,"372":1,"403":1,"408":1,"409":1,"410":1,"446":1,"557":5,"611":1,"615":1,"616":1,"621":2,"641":1,"680":1,"1304":1,"1338":1,"1693":1,"1762":1,"1870":1,"1925":1,"1983":1,"2153":1,"2167":1,"2267":1,"2310":1,"2314":1,"2350":1,"2361":1,"2363":1,"2365":1,"2552":1,"2605":1,"2617":1,"2672":1,"2684":1,"2688":1,"2691":1,"2700":1,"2702":1,"2705":1,"2706":1,"2790":1,"2791":1}}],["document",{"0":{"355":1},"2":{"0":1,"76":1,"93":1,"176":1,"199":1,"306":1,"337":1,"341":1,"349":1,"367":1,"412":1,"427":1,"462":1,"482":1,"560":2,"615":1,"1378":1,"1417":1,"2190":1,"2480":1,"2512":2,"2514":2,"2531":1,"2542":1,"2553":1,"2602":1,"2603":2,"2654":2,"2760":1,"2781":1,"2784":1,"2785":1}}],["dots",{"2":{"485":1,"1627":2}}],["dotty",{"2":{"374":1,"611":1}}],["dotted",{"2":{"282":1}}],["dot",{"0":{"111":1},"2":{"111":1,"313":1,"530":2,"611":1,"1460":1,"1467":5,"1622":1,"1913":1,"2394":2,"2427":1,"2433":1,"2446":1}}],["downstream",{"2":{"2605":1}}],["downside",{"2":{"2582":1}}],["downward",{"2":{"1956":2}}],["downloadable",{"2":{"2342":1}}],["downloads",{"2":{"389":1,"390":1,"391":1,"522":2,"525":1,"2316":1,"2526":1}}],["downloaded",{"2":{"331":1,"2390":1,"2392":1,"2476":1,"2552":2}}],["download",{"0":{"308":1,"2536":1},"2":{"143":1,"303":1,"308":1,"309":1,"312":1,"329":1,"527":2,"541":1,"542":1,"1278":2,"2303":1,"2316":1,"2475":1,"2478":1,"2487":1,"2500":1,"2536":1,"2546":1,"2548":1,"2551":1}}],["down",{"0":{"590":1,"1398":1,"2680":1},"2":{"90":2,"119":3,"120":1,"160":1,"209":1,"222":1,"236":1,"255":1,"266":1,"313":1,"530":4,"537":1,"571":1,"589":1,"590":1,"591":2,"623":1,"624":1,"626":1,"674":1,"696":1,"1310":1,"1321":1,"1349":1,"1363":6,"1366":1,"1372":1,"1375":1,"1377":1,"1391":1,"1394":6,"1397":1,"1398":3,"1404":1,"1440":2,"1443":4,"1445":2,"1448":2,"1449":1,"1453":1,"1471":3,"1472":3,"1473":1,"1483":2,"1493":2,"1532":1,"1555":2,"1567":1,"1598":1,"1602":1,"1603":1,"1610":2,"1615":1,"1624":2,"1689":2,"1691":1,"1694":2,"1697":2,"1703":6,"1706":3,"1708":3,"1709":6,"1711":9,"1712":6,"1713":4,"1714":1,"1765":2,"1766":7,"1831":8,"1839":5,"1841":1,"1859":1,"1860":1,"1910":10,"1925":1,"1937":1,"1952":1,"1960":1,"1975":2,"1979":1,"1987":7,"1992":1,"2072":4,"2109":1,"2113":1,"2144":2,"2163":1,"2181":1,"2190":4,"2207":1,"2209":1,"2220":1,"2269":1,"2276":1,"2301":1,"2318":1,"2342":1,"2347":1,"2350":2,"2394":14,"2396":2,"2397":3,"2399":2,"2405":1,"2408":2,"2410":8,"2411":5,"2414":2,"2415":4,"2428":1,"2431":6,"2432":5,"2433":2,"2437":1,"2442":1,"2446":2,"2449":1,"2450":1,"2453":1,"2462":1,"2475":1,"2489":4,"2529":4,"2556":1,"2616":5,"2623":1,"2680":1,"2690":1,"2693":1,"2698":1,"2701":1,"2744":1,"2750":2,"2767":14,"2768":5,"2770":4,"2771":6,"2772":4,"2774":8,"2775":2,"2776":3,"2796":2}}],["downbubble",{"2":{"43":2}}],["dongles",{"2":{"2392":1}}],["dongle",{"2":{"2279":2,"2389":1}}],["donating",{"2":{"551":1}}],["done",{"2":{"104":1,"114":1,"125":1,"127":2,"182":1,"185":2,"224":1,"331":1,"347":1,"358":1,"482":1,"542":1,"546":1,"597":1,"614":1,"627":1,"671":1,"695":1,"701":1,"1129":1,"1214":1,"1274":1,"1337":1,"1340":1,"1369":1,"1381":1,"1422":1,"1452":2,"1487":1,"1488":1,"1842":1,"1859":1,"1865":1,"1956":1,"1978":1,"2171":1,"2185":1,"2268":2,"2273":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2303":8,"2311":1,"2314":1,"2316":1,"2318":1,"2319":1,"2348":2,"2357":1,"2386":1,"2459":1,"2485":1,"2495":1,"2508":1,"2525":1,"2526":1,"2551":1,"2552":1,"2605":1,"2607":2,"2608":1,"2615":22,"2616":1,"2745":1,"2751":1,"2785":1,"2792":1}}],["don",{"0":{"551":1,"1280":1,"1295":1},"2":{"31":1,"34":1,"119":1,"160":2,"166":1,"191":1,"198":1,"199":1,"222":1,"232":1,"277":2,"317":1,"396":1,"430":1,"453":1,"454":1,"455":1,"457":1,"479":1,"551":1,"560":1,"1137":1,"1214":1,"1273":1,"1279":1,"1299":1,"1302":1,"1313":2,"1324":1,"1362":1,"1368":1,"1404":1,"1420":2,"1422":1,"1440":1,"1441":1,"1467":1,"1475":1,"1487":1,"1532":1,"1552":1,"1598":1,"1693":1,"1965":1,"1986":1,"2171":1,"2187":1,"2210":1,"2293":1,"2311":1,"2350":1,"2444":2,"2456":1,"2463":1,"2483":1,"2492":1,"2493":1,"2507":1,"2536":1,"2547":1,"2572":1,"2592":1,"2595":1,"2645":1,"2653":1,"2745":3,"2750":1,"2763":1,"2767":2,"2791":1,"2796":2}}],["do",{"0":{"353":2,"546":2,"554":1,"1323":1,"1446":1,"1450":1,"1476":1,"1537":1,"1908":1,"2197":1,"2779":1},"1":{"354":2,"355":2,"356":2,"1447":1,"1448":1,"1449":1,"1450":1,"1451":1,"1452":1,"1453":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1465":1,"1466":1,"1467":1,"1468":1,"1469":1,"1470":1,"1471":1,"1472":1,"1473":1,"1538":1,"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"14":1,"92":2,"132":1,"176":1,"194":1,"199":2,"211":1,"231":3,"232":2,"241":1,"253":1,"268":1,"270":1,"318":1,"353":1,"367":1,"381":1,"401":2,"435":1,"440":2,"446":2,"453":4,"454":1,"455":3,"457":1,"459":1,"460":2,"467":1,"469":2,"471":1,"474":1,"481":1,"485":2,"487":1,"516":1,"538":1,"551":2,"556":1,"559":2,"560":4,"562":1,"567":1,"572":2,"574":1,"587":2,"597":1,"623":1,"625":1,"626":1,"635":1,"678":1,"687":1,"701":2,"726":1,"852":1,"1023":1,"1057":1,"1137":1,"1169":1,"1232":1,"1280":2,"1307":2,"1324":1,"1337":1,"1339":3,"1362":1,"1368":1,"1369":2,"1375":1,"1377":1,"1390":2,"1394":1,"1396":1,"1397":1,"1412":1,"1420":1,"1421":2,"1422":2,"1427":1,"1430":1,"1433":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1479":1,"1530":1,"1532":1,"1534":1,"1535":1,"1536":1,"1544":2,"1548":1,"1552":1,"1560":1,"1565":1,"1591":1,"1598":1,"1703":1,"1706":1,"1715":1,"1718":1,"1721":1,"1754":1,"1763":1,"1767":1,"1825":1,"1845":1,"1854":1,"1859":1,"1868":1,"1894":3,"1896":4,"1911":1,"1953":1,"1965":1,"1979":1,"1984":1,"1990":1,"2079":2,"2097":1,"2147":1,"2161":1,"2162":1,"2163":1,"2164":1,"2170":1,"2178":1,"2191":1,"2198":2,"2199":1,"2200":1,"2207":1,"2209":1,"2269":1,"2276":1,"2280":1,"2297":2,"2301":2,"2309":1,"2325":1,"2344":2,"2345":1,"2350":1,"2355":1,"2358":1,"2366":2,"2369":1,"2371":1,"2373":1,"2374":1,"2386":1,"2387":1,"2390":1,"2436":1,"2456":1,"2460":1,"2461":1,"2462":1,"2464":1,"2466":2,"2472":1,"2476":1,"2484":1,"2489":1,"2493":1,"2501":1,"2508":1,"2515":1,"2516":2,"2525":1,"2526":1,"2528":1,"2530":1,"2534":1,"2537":2,"2538":1,"2546":1,"2551":1,"2552":1,"2563":1,"2564":1,"2565":1,"2581":1,"2588":1,"2595":1,"2596":1,"2604":1,"2605":4,"2607":1,"2616":2,"2623":1,"2642":1,"2646":1,"2647":2,"2649":1,"2651":2,"2706":1,"2710":1,"2726":1,"2740":1,"2741":2,"2743":1,"2744":1,"2745":1,"2767":3,"2774":2,"2775":2,"2777":1,"2779":1,"2783":2,"2792":1,"2795":1,"2796":1}}],["dave",{"2":{"2350":1}}],["dazzle",{"2":{"1907":1}}],["damage",{"2":{"1611":1,"2311":1,"2568":1}}],["damnit",{"2":{"290":1}}],["daemon",{"2":{"1276":1}}],["daunting",{"2":{"496":1}}],["dashes",{"2":{"460":1,"461":1}}],["dashed",{"2":{"282":1}}],["daskygit",{"2":{"175":1}}],["dac2",{"2":{"686":1}}],["dac1",{"2":{"686":5,"687":4}}],["dacs",{"2":{"686":1,"687":1}}],["dac",{"0":{"686":1,"687":1,"688":1,"1427":1,"1430":1},"1":{"689":1,"1428":1,"1429":1},"2":{"222":3,"236":2,"249":1,"685":2,"686":6,"687":7,"688":13,"689":6,"692":2,"1427":7,"1428":1,"1430":9,"1431":2,"1434":1,"1438":4,"2567":1,"2715":2}}],["dactyl",{"2":{"114":3,"191":1,"211":1,"217":4,"222":14,"226":1,"236":2,"277":1,"380":2,"2309":2,"2310":1}}],["days",{"0":{"346":1},"2":{"345":1,"346":2,"350":1}}],["day",{"0":{"347":1},"2":{"211":1,"340":1,"343":1,"344":1,"345":2,"350":4,"479":1}}],["daily",{"2":{"2545":1}}],["daily60",{"2":{"211":1}}],["dailycraft",{"2":{"154":7}}],["daisy",{"2":{"102":2}}],["dawn60",{"0":{"58":1},"2":{"58":3}}],["danielggordon",{"2":{"2207":1}}],["danish",{"2":{"1392":1,"2742":3}}],["danger",{"2":{"290":1,"2498":1}}],["dangerous",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"290":1,"337":2}}],["dango40",{"2":{"211":1}}],["dances",{"2":{"191":1,"2205":1,"2206":1,"2207":2,"2209":2}}],["dance",{"0":{"2197":1,"2199":1,"2204":1,"2207":1,"2208":1,"2209":1,"2702":1},"1":{"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"49":4,"176":3,"191":1,"199":1,"222":1,"249":1,"277":1,"503":1,"533":2,"1373":1,"1377":1,"1537":1,"1546":1,"1721":1,"2198":2,"2199":26,"2200":25,"2202":7,"2203":1,"2204":8,"2205":15,"2206":24,"2207":27,"2208":15,"2209":31,"2450":1,"2529":1,"2605":1,"2702":1,"2763":1,"2788":2}}],["datastructure",{"2":{"2443":1,"2784":2}}],["datasheets",{"2":{"701":1,"1129":1}}],["datasheet",{"2":{"160":1,"635":1,"638":1,"639":1,"654":1,"659":1,"674":3,"675":1,"679":1,"694":5,"697":1,"703":1,"729":1,"755":1,"784":1,"789":1,"792":1,"816":1,"822":1,"848":1,"854":1,"857":1,"883":1,"888":1,"891":1,"917":1,"922":1,"925":1,"951":1,"956":1,"959":1,"985":1,"990":1,"993":1,"1019":1,"1024":1,"1027":1,"1053":1,"1058":1,"1061":1,"1087":1,"1092":1,"1095":1,"1127":1,"1130":1,"1143":1,"1148":1,"1180":1,"1185":1,"1214":1,"1235":1,"1506":1,"1614":1,"1615":2,"1616":1,"1643":1,"1660":1,"2367":1,"2572":1,"2573":1}}],["datatypes",{"2":{"215":2,"2616":1}}],["datablock",{"2":{"191":1}}],["database",{"0":{"132":1,"401":1},"2":{"132":3,"134":1,"249":1,"401":4,"2551":2}}],["data",{"0":{"109":1,"169":1,"184":1,"605":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"739":1,"766":1,"798":1,"828":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1,"1191":1,"1220":1,"1225":1,"1228":1,"1239":1,"1243":1,"1245":1,"1487":1,"1649":1,"1651":1,"1655":1,"1662":2,"1925":1,"1926":1,"1929":1,"1931":1,"2167":1,"2168":1,"2630":1,"2638":1,"2639":1},"1":{"110":1,"111":1,"112":1,"170":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"740":1,"767":1,"799":1,"829":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1,"1192":1,"1221":1,"1222":1,"1226":1,"1227":1,"1229":1,"1230":1,"1240":1,"1244":1,"1246":1,"1488":1,"1489":1,"1650":1,"1652":1,"1656":1,"1663":2,"1930":1,"1932":1},"2":{"45":2,"76":2,"107":4,"109":1,"114":3,"145":3,"160":2,"169":1,"176":6,"184":1,"191":3,"199":13,"201":2,"211":29,"214":1,"222":13,"236":7,"249":2,"251":1,"262":2,"266":68,"277":3,"282":2,"314":2,"334":1,"374":2,"389":1,"390":1,"405":1,"434":1,"496":2,"511":3,"519":1,"566":1,"605":1,"607":2,"609":1,"610":2,"612":2,"642":1,"673":1,"685":2,"690":2,"703":1,"709":3,"712":2,"715":3,"718":3,"721":1,"724":1,"740":1,"767":1,"799":1,"829":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1123":1,"1126":1,"1129":3,"1155":1,"1192":1,"1221":1,"1226":3,"1229":2,"1240":1,"1242":1,"1244":3,"1246":2,"1247":2,"1249":1,"1251":1,"1252":1,"1254":1,"1262":1,"1269":1,"1324":1,"1368":1,"1370":1,"1433":1,"1475":2,"1477":3,"1478":1,"1485":1,"1487":2,"1488":4,"1529":1,"1611":1,"1629":1,"1632":1,"1650":2,"1652":2,"1656":2,"1662":2,"1663":2,"1752":1,"1859":3,"1860":22,"1863":1,"1868":2,"1892":2,"1893":1,"1894":3,"1895":2,"1896":6,"1897":2,"1899":2,"1925":3,"1926":2,"1927":8,"1930":2,"1932":2,"1935":1,"1943":2,"1947":1,"1949":1,"1950":1,"1952":3,"1953":4,"1954":7,"1955":3,"1996":2,"1997":1,"2069":1,"2070":3,"2082":1,"2099":1,"2166":3,"2168":17,"2169":1,"2179":1,"2181":11,"2188":1,"2204":1,"2205":3,"2206":6,"2207":4,"2208":4,"2209":4,"2264":1,"2315":1,"2338":1,"2350":4,"2386":3,"2439":1,"2440":1,"2526":1,"2594":1,"2599":1,"2605":3,"2613":1,"2614":2,"2615":2,"2616":5,"2624":3,"2628":1,"2630":2,"2631":3,"2632":1,"2635":1,"2638":6,"2654":7,"2710":2,"2714":2,"2725":2,"2731":2}}],["dates",{"0":{"340":1},"2":{"350":1}}],["date",{"2":{"6":2,"10":1,"142":1,"347":1,"349":1,"350":10,"556":1,"2172":1,"2505":1,"2525":1,"2536":1,"2585":1,"2588":1,"2603":1}}],["deutsche",{"2":{"2697":1}}],["derivatives",{"2":{"2507":1}}],["derive",{"2":{"675":1,"694":1,"1264":1}}],["derived",{"2":{"323":1,"2383":1,"2741":1}}],["dereferencing",{"2":{"1853":1,"2177":1}}],["deghost",{"2":{"818":1,"820":1}}],["degradation",{"2":{"2613":1}}],["degrade",{"2":{"1855":1}}],["degrading",{"2":{"209":1}}],["degree",{"0":{"1859":1},"2":{"1592":1,"1594":1,"1858":2,"1859":3,"1941":3}}],["degrees",{"2":{"31":1,"34":1,"1854":1,"1904":1,"1950":1,"1952":3,"1953":3,"2178":1,"2616":1,"2636":1,"2725":1}}],["denote",{"2":{"2442":1,"2635":2}}],["denoted",{"2":{"1860":1,"2181":1,"2624":1,"2631":1}}],["denotes",{"2":{"679":1,"680":1,"681":1,"758":1,"787":1,"819":1,"851":1,"852":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1023":1,"1056":1,"1057":1,"1090":1,"1146":1,"1183":1,"1252":1,"2634":1,"2635":1,"2722":1}}],["density",{"0":{"1142":1},"2":{"114":1,"2392":2}}],["deeper",{"2":{"1372":1,"2200":1}}],["deeply",{"2":{"611":1}}],["deep",{"2":{"496":1,"499":2,"2334":1}}],["dedicate",{"2":{"1913":1}}],["dedicates",{"2":{"1271":3}}],["dedicated",{"2":{"492":1,"671":1,"1122":1,"1301":1,"1494":1,"1536":1,"1593":1,"1601":1,"1696":1,"1706":2,"1767":1,"1990":1}}],["dedupe",{"2":{"236":1}}],["dekunukem",{"2":{"222":1}}],["demand",{"2":{"2516":2}}],["demo",{"2":{"2078":1,"2169":1}}],["demonstrate",{"2":{"2781":1}}],["demonstrates",{"2":{"2071":1}}],["demonstration",{"2":{"1927":1,"2074":1}}],["demiurge",{"2":{"211":1}}],["demultiplexer",{"2":{"160":1}}],["dead",{"2":{"2529":1,"2693":1,"2741":1}}],["deadline",{"2":{"350":1,"511":1}}],["deadlock",{"2":{"191":2,"199":1}}],["deadlocks",{"2":{"176":1}}],["deaf",{"2":{"2182":1}}],["deactivating",{"2":{"1978":1,"2719":1}}],["deactivation",{"0":{"1712":1},"2":{"1706":1,"1966":2,"1974":1,"1975":1}}],["deactivates",{"2":{"1377":1,"1543":1,"1544":1,"1706":1,"1712":1,"2719":1}}],["deactivate",{"2":{"1374":1,"1543":1,"1709":1,"1965":2,"2144":1,"2145":4,"2184":1}}],["deactivated",{"2":{"1372":1,"1435":1,"1436":2,"1708":2,"1709":1,"1712":1,"1965":1}}],["deassert",{"2":{"1231":1,"1578":1,"1580":1,"1582":1}}],["deals",{"2":{"1307":1,"2596":1}}],["deal",{"2":{"1296":1,"2363":1}}],["dealt",{"2":{"587":1}}],["dealing",{"2":{"11":1,"2306":1}}],["de",{"0":{"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1},"2":{"134":1,"199":4,"266":1,"820":1,"1372":2,"1912":1,"2394":1,"2742":2}}],["detrimental",{"2":{"276":1}}],["detach",{"0":{"2621":1},"2":{"266":1,"2621":2}}],["detailing",{"2":{"2511":1}}],["detail",{"2":{"176":2,"355":1,"556":1,"1318":1,"1710":1,"2200":1,"2300":1,"2393":1,"2789":1}}],["details",{"0":{"300":1,"445":1,"446":1,"447":1,"2200":1,"2448":1},"2":{"163":1,"195":1,"224":1,"228":1,"229":1,"232":1,"290":2,"302":1,"307":2,"336":1,"371":1,"436":1,"446":1,"470":1,"496":1,"505":3,"626":1,"628":1,"701":1,"1272":1,"1279":1,"1281":1,"1363":1,"1372":1,"1377":1,"1378":1,"1417":1,"1426":1,"1439":1,"1443":1,"1453":1,"1487":1,"1537":1,"1591":1,"1627":1,"1700":1,"1752":1,"1917":1,"1996":1,"1997":1,"2079":1,"2082":1,"2203":1,"2216":1,"2300":1,"2301":2,"2339":1,"2352":1,"2406":1,"2424":1,"2448":1,"2478":1,"2493":1,"2600":1,"2609":1,"2766":1}}],["detailed",{"0":{"71":1,"519":1,"2300":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1,"2301":1,"2302":1},"2":{"14":1,"70":1,"492":1,"1278":1,"1315":1,"1371":1,"1844":1,"2153":1,"2172":1,"2210":1,"2338":1,"2512":1,"2514":1,"2601":1}}],["detent",{"2":{"1595":1,"1600":2}}],["determining",{"2":{"1377":1,"2185":1,"2736":1}}],["deterministically",{"2":{"230":1}}],["determines",{"2":{"370":1,"1218":1,"2164":1,"2736":1,"2766":1}}],["determined",{"2":{"353":1,"430":1,"509":2,"510":2,"679":1,"2441":1}}],["determine",{"2":{"114":1,"119":1,"142":1,"484":1,"509":1,"510":1,"597":1,"675":1,"679":1,"703":1,"1214":1,"1235":1,"1247":1,"1442":1,"1460":1,"1506":1,"2161":1,"2162":1,"2163":2,"2208":2,"2209":1,"2587":2,"2606":1,"2736":1,"2787":1}}],["detects",{"2":{"2350":1}}],["detected",{"0":{"1277":1},"2":{"211":1,"266":1,"505":1,"679":1,"1337":1,"1863":2,"1864":8,"1866":1,"1868":1,"2166":1,"2185":1,"2291":1,"2493":1,"2552":1,"2736":2}}],["detecting",{"2":{"132":1,"511":2,"2169":2,"2170":1,"2272":1,"2456":2,"2548":1,"2623":1,"2626":1,"2632":1,"2633":1,"2783":1,"2784":1}}],["detection",{"0":{"1862":1,"1865":1,"2787":1},"1":{"1863":1,"1864":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1},"2":{"114":1,"175":1,"199":4,"249":3,"679":1,"1357":1,"1358":1,"1482":1,"1863":1,"1865":1,"1867":3,"1868":3,"1953":1,"2169":1,"2170":3,"2171":2,"2784":1}}],["detect",{"2":{"112":1,"199":1,"377":1,"511":6,"626":1,"1339":1,"1340":1,"1357":1,"1485":1,"1863":1,"2169":5,"2170":3,"2171":2,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":1,"2350":1,"2552":1,"2605":1,"2687":1,"2736":2,"2796":1}}],["debt",{"2":{"187":1,"198":1,"201":1,"213":1,"224":1,"238":1}}],["debian",{"2":{"114":3,"2470":1,"2503":1,"2507":3}}],["debouncing",{"0":{"1367":1},"2":{"94":1,"222":1,"515":1,"566":2,"1362":3,"1363":12,"1366":6,"1367":2,"1865":2,"1948":1,"2301":1}}],["debouncer",{"2":{"160":1}}],["debounce",{"0":{"1363":1,"1364":1,"1365":1,"1366":1},"1":{"1365":1,"1366":1,"1367":1},"2":{"70":2,"111":1,"112":1,"114":3,"134":1,"160":1,"176":1,"199":3,"222":2,"236":1,"502":1,"515":1,"566":4,"1362":3,"1363":6,"1364":1,"1365":3,"1366":10,"1367":4,"1534":1,"1867":2,"1945":1,"1946":1,"1948":1,"1969":1,"1974":4,"1980":1,"2301":1,"2605":3,"2713":2,"2728":2,"2764":1}}],["debugged",{"2":{"2653":1}}],["debuggers",{"2":{"336":1}}],["debugger",{"0":{"327":1,"334":1,"335":1,"336":1},"2":{"335":1,"1378":2,"2552":2,"2794":1,"2796":1}}],["debugging",{"0":{"322":1,"333":1,"1281":1,"1282":1,"1283":1,"1284":1,"1285":1,"1286":1,"2522":1,"2524":1,"2552":1,"2794":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":2,"335":2,"336":2,"1282":1,"1283":1,"1284":2,"1285":2,"1286":2,"1287":1,"1288":1,"1289":1,"1290":1,"1291":1,"1292":1,"2523":1,"2524":1},"2":{"82":1,"114":1,"322":1,"328":1,"331":1,"335":1,"336":1,"375":1,"502":1,"503":2,"1138":1,"1288":2,"1292":1,"1331":1,"1568":4,"1964":1,"2301":1,"2531":1,"2542":1,"2547":1,"2552":4,"2569":1,"2613":2,"2655":1,"2678":1,"2755":1}}],["debug=1",{"2":{"249":1,"2794":2}}],["debug",{"0":{"1287":1,"1288":1,"1868":1,"1905":1},"1":{"1289":1,"1290":1},"2":{"24":1,"34":1,"49":1,"50":1,"65":1,"114":2,"176":1,"188":1,"191":2,"199":1,"211":1,"249":2,"277":1,"334":1,"335":2,"336":1,"433":2,"481":1,"503":1,"515":2,"1138":2,"1282":8,"1283":1,"1284":1,"1285":1,"1286":1,"1287":3,"1290":1,"1291":1,"1292":3,"1378":2,"1568":4,"1868":1,"1905":5,"1964":2,"2082":4,"2300":1,"2301":4,"2395":2,"2463":1,"2468":1,"2496":1,"2552":11,"2611":2,"2613":3,"2794":1}}],["devuan",{"2":{"2470":1,"2503":1}}],["devaddr",{"0":{"714":1,"717":1,"720":1,"723":1},"1":{"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1},"2":{"715":1,"718":1,"721":1,"724":1}}],["devastatingtkl",{"2":{"211":1}}],["devised",{"2":{"2358":1}}],["deviation",{"2":{"1940":1}}],["deviate",{"2":{"367":1,"2580":1}}],["device",{"0":{"118":1,"175":1,"190":1,"627":1,"1277":1,"1278":1,"1291":1,"1847":1,"1933":1,"1939":1,"1962":1,"1981":1},"1":{"1934":1,"1935":1,"1936":1,"1937":1,"1938":1,"1939":1,"1940":1,"1941":1,"1942":1,"1943":1,"1944":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":1,"1951":1,"1952":1,"1953":1,"1954":1,"1955":1},"2":{"63":1,"70":2,"100":2,"111":1,"114":1,"118":13,"134":3,"149":3,"157":1,"160":2,"169":2,"175":4,"176":7,"184":2,"190":3,"191":7,"211":4,"240":2,"249":1,"266":1,"273":2,"331":1,"502":3,"505":1,"625":3,"626":3,"627":4,"628":6,"629":5,"635":1,"673":1,"697":1,"701":1,"708":1,"709":2,"711":1,"712":2,"714":1,"715":2,"717":1,"718":2,"720":1,"721":2,"723":1,"724":2,"727":2,"1125":1,"1128":1,"1218":1,"1220":1,"1223":1,"1224":1,"1225":1,"1228":1,"1234":1,"1238":1,"1275":1,"1276":1,"1277":2,"1289":1,"1291":5,"1292":1,"1329":2,"1352":1,"1359":1,"1362":2,"1569":2,"1608":2,"1668":2,"1829":1,"1830":3,"1835":1,"1847":1,"1851":1,"1865":1,"1867":1,"1870":1,"1891":1,"1904":6,"1925":5,"1927":7,"1933":3,"1934":1,"1935":4,"1936":2,"1937":1,"1938":1,"1939":1,"1942":2,"1943":2,"1945":2,"1946":1,"1947":3,"1948":1,"1949":4,"1950":10,"1951":6,"1952":23,"1953":15,"1954":11,"1955":9,"1956":9,"1958":3,"1959":2,"1960":1,"1962":5,"1963":6,"1964":2,"1965":3,"1967":2,"1969":1,"1980":2,"1981":10,"2109":5,"2167":2,"2215":1,"2267":1,"2268":2,"2270":1,"2271":2,"2272":2,"2273":3,"2274":1,"2275":3,"2276":2,"2277":1,"2278":2,"2279":1,"2280":2,"2281":2,"2282":2,"2283":2,"2285":2,"2287":2,"2288":1,"2338":5,"2383":1,"2385":1,"2386":4,"2389":1,"2446":1,"2489":3,"2492":3,"2552":3,"2595":2,"2605":1,"2615":63,"2616":52,"2620":3,"2685":1,"2694":1,"2708":1,"2731":2,"2738":2}}],["devices",{"0":{"11":1,"149":1,"1963":1},"2":{"11":2,"49":3,"149":1,"160":1,"174":2,"175":1,"190":1,"191":1,"229":1,"263":1,"266":1,"276":1,"331":2,"375":1,"556":2,"626":2,"627":1,"628":3,"629":1,"630":1,"635":4,"679":1,"682":1,"702":1,"726":1,"1173":1,"1213":2,"1253":1,"1256":1,"1261":1,"1264":1,"1277":1,"1292":1,"1363":1,"1427":1,"1438":1,"1528":1,"1647":1,"1651":1,"1862":1,"1867":1,"1868":1,"1891":1,"1925":2,"1955":1,"2123":1,"2125":1,"2138":1,"2139":1,"2167":1,"2278":1,"2323":1,"2361":3,"2367":1,"2389":1,"2490":1,"2552":1,"2557":1,"2562":1,"2585":3,"2587":2,"2588":1,"2595":1,"2605":1,"2612":1,"2615":16,"2764":1}}],["dev",{"2":{"108":1,"325":1,"328":1,"401":1,"429":1,"2386":2,"2469":1,"2470":2,"2503":4,"2527":5,"2528":1,"2552":1}}],["developing",{"2":{"2347":1,"2361":1,"2525":1,"2531":1,"2542":1,"2607":1}}],["developed",{"2":{"2273":1,"2671":1,"2758":1}}],["developer=true",{"2":{"429":1}}],["developer",{"0":{"398":1,"429":1},"1":{"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1},"2":{"311":1,"319":1,"429":1,"537":1}}],["developers",{"0":{"319":1,"321":1},"2":{"302":1,"322":1,"427":1,"605":1,"2300":1,"2536":2,"2673":1}}],["developments",{"2":{"2525":1}}],["development",{"0":{"302":1,"310":1,"427":1,"2531":1,"2542":1},"2":{"132":1,"145":3,"163":2,"175":1,"176":1,"198":1,"233":1,"266":1,"310":1,"321":1,"495":1,"558":1,"625":1,"1129":1,"2274":1,"2479":1,"2525":2,"2527":1,"2531":2,"2534":1,"2535":1,"2591":1,"2607":1,"2694":1,"2703":1,"2712":5,"2743":1,"2757":1,"2758":1,"2764":3,"2789":1}}],["develop",{"0":{"349":1},"2":{"51":1,"73":1,"76":1,"92":1,"93":1,"94":1,"114":5,"134":4,"160":3,"164":1,"169":1,"176":7,"191":6,"199":1,"211":5,"222":4,"236":2,"251":1,"266":1,"317":2,"337":1,"340":6,"341":3,"343":1,"344":1,"345":1,"346":1,"347":5,"349":7,"350":12,"358":3,"359":3,"360":3,"361":6,"1299":1,"2200":1,"2312":1,"2605":4,"2606":1,"2759":2,"2760":1}}],["declined",{"2":{"2758":1}}],["declares",{"2":{"1863":1}}],["declare",{"2":{"1351":2,"1767":2,"1990":2,"2208":1,"2209":1}}],["declared",{"2":{"1349":1,"1396":1,"1767":1,"1990":1,"2203":1}}],["declarations",{"2":{"222":1,"2202":1}}],["declaration",{"2":{"191":1,"500":1}}],["decryption",{"2":{"2103":1}}],["decreasing",{"2":{"506":3,"1363":1,"1988":1}}],["decrease",{"0":{"1515":1,"1797":1,"1798":1,"1803":1,"1804":1,"2024":1,"2025":1,"2030":1,"2031":1,"2036":1,"2037":1,"2042":1,"2043":1},"2":{"166":1,"1437":1,"1470":1,"1472":1,"1493":1,"1494":1,"1515":1,"1598":2,"1610":2,"1618":1,"1765":2,"1797":1,"1798":1,"1803":1,"1804":1,"1831":4,"1986":8,"1988":3,"2024":1,"2025":1,"2030":1,"2031":1,"2036":1,"2037":1,"2042":1,"2043":1,"2072":8,"2092":12,"2093":2,"2144":1,"2145":3,"2266":1,"2399":1,"2408":2,"2410":4,"2415":8,"2416":8,"2623":1,"2767":1}}],["decreases",{"2":{"119":1,"1443":1,"1445":1,"2093":2,"2396":1,"2414":1,"2767":2}}],["decreased",{"2":{"49":1,"1988":1,"2264":1}}],["decays",{"2":{"2264":1}}],["decay",{"2":{"2102":1}}],["decalartion",{"2":{"160":1}}],["deceptively",{"2":{"2788":1}}],["decelerated",{"2":{"1842":4}}],["decelerates",{"2":{"1840":1}}],["decent",{"2":{"3":1,"15":1}}],["dec",{"2":{"1324":1}}],["decodable",{"2":{"1489":1}}],["decoding",{"0":{"1489":1}}],["decode",{"2":{"1487":1}}],["decoder",{"2":{"563":1,"2639":1}}],["decorators",{"0":{"477":1}}],["decorator",{"2":{"430":2}}],["decorated",{"2":{"428":1}}],["decoupled",{"2":{"174":1}}],["decouple",{"2":{"73":1,"94":1,"191":1,"222":1,"249":1,"277":1}}],["decimal",{"2":{"1324":1}}],["decides",{"2":{"2768":1}}],["decide",{"2":{"1127":1,"1130":1,"1472":2,"1555":3}}],["decided",{"2":{"87":1,"103":1,"126":1,"169":1,"179":1,"184":1,"1302":1}}],["deciding",{"2":{"453":1}}],["decisions",{"2":{"453":1,"455":1}}],["decision",{"0":{"2768":1},"1":{"2769":1,"2770":1,"2771":1,"2772":1,"2773":1,"2774":1,"2775":1},"2":{"203":1,"222":1,"243":1,"1363":1,"2190":1,"2768":3,"2769":2,"2774":1}}],["despite",{"2":{"2615":2,"2703":1}}],["descr",{"2":{"2392":1}}],["describing",{"2":{"306":1,"341":1,"453":1,"455":1,"465":1,"621":1,"2108":1,"2711":4,"2727":1,"2734":1}}],["described",{"2":{"462":1,"562":1,"568":1,"598":1,"613":1,"629":1,"1401":1,"1488":1,"1919":1,"2146":1,"2307":1,"2335":1,"2613":1,"2787":1}}],["describes",{"2":{"311":1,"313":1,"322":1,"337":1,"517":1,"536":1,"605":1,"608":1,"621":1,"1503":1,"1504":1,"1677":1,"2198":1,"2552":1,"2562":1,"2592":1,"2632":1,"2636":1,"2637":1,"2638":1,"2725":1}}],["describe",{"2":{"99":1,"556":1,"2267":1,"2306":1,"2593":1,"2774":2}}],["descriptive",{"2":{"460":1,"554":1,"2527":1,"2552":1}}],["descriptions",{"2":{"674":1,"675":1,"676":1,"2552":1}}],["description",{"0":{"519":1},"1":{"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1},"2":{"119":1,"145":1,"341":1,"350":5,"425":1,"426":1,"435":1,"462":2,"540":1,"554":2,"556":1,"616":1,"623":1,"638":1,"639":1,"641":1,"644":1,"656":1,"671":1,"673":1,"674":1,"675":1,"676":1,"678":1,"679":1,"680":1,"681":1,"688":1,"693":1,"694":1,"696":1,"702":1,"703":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1171":1,"1182":1,"1214":1,"1235":1,"1251":1,"1257":1,"1261":1,"1263":1,"1266":1,"1267":1,"1336":1,"1366":1,"1378":3,"1435":1,"1436":1,"1439":1,"1440":1,"1443":2,"1445":1,"1471":1,"1480":1,"1486":1,"1493":1,"1494":1,"1504":1,"1506":1,"1507":1,"1531":1,"1542":1,"1549":1,"1555":1,"1564":1,"1568":1,"1591":1,"1592":1,"1604":1,"1606":1,"1608":1,"1609":1,"1610":1,"1611":1,"1629":1,"1673":1,"1691":1,"1707":1,"1708":1,"1709":1,"1725":1,"1753":1,"1764":1,"1765":1,"1766":2,"1831":1,"1839":1,"1841":1,"1842":1,"1843":1,"1845":1,"1846":1,"1855":1,"1856":1,"1857":1,"1858":2,"1872":1,"1909":1,"1910":4,"1920":1,"1924":1,"1935":1,"1936":1,"1937":1,"1939":3,"1940":1,"1941":1,"1943":3,"1944":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":1,"1952":1,"1953":1,"1954":1,"1955":1,"1969":1,"1971":1,"1974":1,"1975":1,"1980":1,"1981":1,"1985":1,"1986":1,"1987":3,"2070":1,"2072":1,"2073":1,"2074":1,"2075":1,"2076":1,"2086":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2107":1,"2108":1,"2109":1,"2112":1,"2113":1,"2143":1,"2144":1,"2145":1,"2148":1,"2150":1,"2151":1,"2179":1,"2180":1,"2194":1,"2196":1,"2211":1,"2212":1,"2213":1,"2217":1,"2218":1,"2222":1,"2264":1,"2265":1,"2298":1,"2338":1,"2341":1,"2394":1,"2395":1,"2396":1,"2397":1,"2398":1,"2399":1,"2400":1,"2401":1,"2402":1,"2403":1,"2404":1,"2405":1,"2406":1,"2407":1,"2408":1,"2409":1,"2410":1,"2411":1,"2412":1,"2413":1,"2414":1,"2415":1,"2416":1,"2417":1,"2418":1,"2419":1,"2420":1,"2421":1,"2422":1,"2423":1,"2425":1,"2426":1,"2427":1,"2428":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2438":1,"2449":2,"2563":1,"2601":1,"2605":1,"2611":1,"2767":1}}],["descriptors",{"2":{"2":1,"50":1}}],["descriptor",{"0":{"2":1,"2626":1,"2633":1,"2635":1},"2":{"50":1,"114":1,"134":1,"145":1,"1865":1,"2624":1,"2625":1,"2626":5,"2627":1,"2628":1,"2631":2,"2632":1,"2633":4,"2634":2,"2635":3,"2636":1}}],["descendant",{"2":{"2389":1}}],["desktop",{"2":{"1571":1,"2432":1,"2437":3,"2450":3,"2529":2}}],["deskthority",{"2":{"1327":1,"1891":1,"2350":1}}],["deskdaily",{"2":{"211":1}}],["destination",{"2":{"1312":1,"2406":1}}],["destroyed",{"2":{"454":1,"598":1}}],["desirable",{"2":{"1415":1}}],["desire",{"2":{"540":1}}],["desired",{"2":{"312":1,"352":1,"697":1,"1218":1,"1282":1,"1337":1,"1449":1,"1452":1,"1846":1,"2188":1,"2219":1,"2291":1,"2527":1,"2654":1,"2741":1,"2757":1}}],["designing",{"2":{"1494":1,"1506":1,"1753":1,"2306":1}}],["designate",{"2":{"2653":1}}],["designated",{"2":{"852":1,"1023":1,"1057":1,"1468":1,"2269":1,"2276":1,"2732":2}}],["designates",{"2":{"430":1,"2653":1}}],["designs",{"2":{"211":1,"2384":1,"2573":1}}],["design",{"2":{"114":1,"168":1,"211":2,"1125":1,"1128":1,"1489":1,"2758":1}}],["designers",{"2":{"125":1,"185":1,"201":1,"221":1,"233":1,"234":1,"1763":1,"1984":1,"2562":1,"2584":1}}],["designer",{"2":{"56":1,"502":2,"511":1,"580":2,"2603":1}}],["designed",{"2":{"37":1,"43":1,"1302":1,"1347":1,"2308":1,"2339":1,"2384":1,"2466":2,"2584":1}}],["depicting",{"2":{"623":1}}],["depths",{"2":{"2615":1}}],["depth",{"2":{"561":1,"641":2}}],["depressed",{"2":{"1448":2}}],["deprecating",{"2":{"94":1}}],["deprecations",{"2":{"352":1,"2760":1}}],["deprecation",{"0":{"87":1,"88":1,"104":1,"127":1,"170":1,"264":1,"274":1,"2758":1,"2760":1},"1":{"88":1,"265":1,"275":1,"276":1,"2759":1,"2760":1},"2":{"184":1,"264":1,"274":1,"678":1,"2758":4,"2759":2}}],["deprecate",{"2":{"87":1,"94":1,"103":1,"126":1,"160":1,"169":1,"176":1,"184":1,"188":7,"191":7,"2585":1}}],["deprecated",{"0":{"27":1,"254":1},"2":{"3":1,"7":1,"15":1,"25":1,"27":1,"38":1,"50":1,"75":2,"114":2,"133":1,"134":1,"142":2,"151":1,"160":1,"176":1,"182":1,"188":1,"191":3,"194":1,"195":1,"199":2,"245":1,"249":1,"254":1,"266":1,"277":1,"502":6,"1535":1,"1752":1,"2072":10,"2075":2,"2415":10,"2435":1,"2744":1,"2760":1}}],["depracted",{"2":{"199":1}}],["depend",{"2":{"703":1,"1238":1,"1363":1,"1414":1,"1643":1,"2394":1}}],["dependent",{"2":{"692":1,"1260":1,"1353":1,"1354":1,"1506":1,"1592":1,"1952":1,"2355":1,"2759":1}}],["dependencies",{"2":{"73":1,"143":1,"145":2,"234":1,"322":1,"324":1,"2470":1,"2497":1,"2500":1,"2505":1}}],["dependency",{"2":{"24":1,"65":1,"328":1}}],["depends",{"2":{"685":1,"1171":2,"1363":1,"1755":1,"1842":1,"1943":1,"2221":1,"2234":1,"2235":1,"2236":1,"2300":1,"2583":1,"2779":1}}],["dependant",{"2":{"578":1}}],["depending",{"2":{"25":1,"30":1,"33":1,"90":1,"209":1,"574":1,"597":1,"658":1,"671":1,"693":1,"733":1,"758":1,"759":1,"787":1,"791":1,"819":1,"821":1,"851":1,"856":1,"886":1,"890":1,"920":1,"924":1,"954":1,"958":1,"988":1,"992":1,"1022":1,"1026":1,"1056":1,"1060":1,"1090":1,"1094":1,"1146":1,"1147":1,"1174":1,"1183":1,"1184":1,"1260":1,"1263":1,"1267":1,"1271":1,"1506":1,"1507":1,"1560":1,"1600":2,"1610":1,"1612":1,"1754":1,"1860":1,"1987":1,"2156":1,"2207":1,"2306":1,"2313":1,"2338":1,"2383":1,"2432":1,"2535":1,"2557":1,"2624":1,"2626":1,"2631":2,"2636":1,"2641":1,"2740":1,"2757":1,"2788":1}}],["def1",{"2":{"1291":2}}],["def",{"2":{"145":2,"430":1,"441":1,"463":1,"464":1,"465":1,"474":2,"475":3,"1565":1,"1927":2}}],["defs",{"2":{"114":1,"134":1,"145":1,"236":1,"514":1,"1421":2,"1422":1,"2339":2,"2605":1,"2792":1}}],["deferred",{"0":{"596":1,"597":1,"598":1,"599":1,"600":1,"601":1},"1":{"597":1,"598":1,"599":1,"600":1,"601":1},"2":{"134":1,"160":1,"341":1,"350":1,"515":3,"596":1,"597":4,"598":4,"599":2,"600":2,"601":3,"1713":1,"2301":3,"2616":4}}],["deferring",{"2":{"125":1,"185":1,"580":2}}],["defer",{"2":{"114":2,"125":1,"160":1,"185":1,"236":1,"597":1,"598":1,"599":1,"600":1,"1363":9,"1366":6,"1911":1,"2713":4}}],["definable",{"2":{"1467":1}}],["defining",{"0":{"570":1,"1911":1,"2080":1},"1":{"1912":1,"1913":1},"2":{"45":1,"49":2,"50":1,"80":1,"120":1,"196":1,"199":1,"467":1,"568":1,"686":1,"688":1,"691":1,"1136":1,"1137":1,"1372":1,"1373":1,"1441":1,"1443":1,"1538":1,"1552":1,"1554":1,"1556":1,"1559":1,"1560":1,"1561":1,"1562":1,"1591":1,"1592":2,"1595":1,"1632":1,"1664":1,"1671":1,"1708":1,"1766":1,"1911":1,"1952":1,"1986":1,"1987":1,"2072":1,"2097":2,"2163":2,"2194":1,"2221":1,"2341":1,"2393":1,"2529":1,"2580":1,"2767":1}}],["definitions",{"0":{"2444":1},"2":{"50":5,"76":1,"77":1,"93":1,"173":1,"176":1,"182":1,"199":1,"201":3,"211":1,"213":1,"222":1,"331":1,"1422":1,"1595":1,"1596":1,"1910":2,"1911":2,"2202":2,"2313":1,"2440":1,"2443":1,"2444":2,"2445":1,"2481":1,"2562":4,"2605":6,"2616":1,"2725":1}}],["definition",{"0":{"1632":1},"2":{"25":2,"36":2,"50":1,"65":1,"90":1,"145":1,"166":1,"191":1,"199":1,"468":1,"511":1,"701":1,"703":2,"1546":1,"1563":1,"1619":1,"1671":1,"2080":1,"2081":1,"2163":1,"2199":1,"2202":1,"2393":1,"2444":1,"2445":2,"2447":1,"2562":1,"2563":1,"2564":1,"2565":1,"2580":1,"2605":1,"2624":1,"2631":1,"2709":1,"2785":4}}],["define\\tsplit",{"2":{"2162":1}}],["defined",{"0":{"2579":1},"1":{"2580":1,"2581":1},"2":{"75":1,"199":4,"247":1,"382":1,"453":5,"505":3,"506":3,"510":2,"538":1,"568":1,"573":1,"598":1,"644":2,"656":3,"674":2,"675":1,"679":1,"707":1,"726":1,"731":1,"757":5,"786":5,"818":6,"850":5,"885":5,"919":5,"953":5,"987":5,"1021":5,"1055":5,"1089":5,"1135":1,"1145":5,"1171":2,"1182":5,"1251":3,"1253":1,"1263":2,"1266":1,"1267":2,"1304":1,"1349":1,"1351":1,"1369":1,"1375":1,"1383":1,"1384":2,"1400":1,"1405":1,"1421":1,"1436":8,"1437":1,"1448":2,"1464":1,"1468":1,"1482":1,"1494":3,"1506":1,"1508":1,"1533":1,"1534":1,"1548":1,"1554":1,"1555":3,"1567":1,"1586":2,"1591":1,"1592":3,"1595":3,"1597":2,"1608":6,"1611":6,"1617":1,"1629":6,"1632":1,"1670":1,"1676":1,"1692":1,"1732":1,"1735":1,"1752":1,"1753":5,"1767":1,"1840":1,"1843":2,"1844":2,"1855":3,"1857":1,"1858":9,"1860":2,"1867":1,"1910":3,"1919":1,"1937":6,"1939":4,"1941":3,"1943":3,"1944":1,"1945":1,"1946":2,"1952":14,"1953":8,"1956":4,"1958":1,"1965":1,"1969":1,"1988":1,"1990":1,"1991":1,"1992":1,"2073":6,"2074":1,"2075":12,"2076":2,"2096":1,"2112":1,"2150":3,"2151":2,"2165":1,"2170":1,"2171":1,"2179":3,"2195":3,"2199":2,"2203":1,"2209":1,"2219":1,"2234":1,"2235":1,"2236":1,"2264":6,"2266":1,"2287":1,"2297":1,"2340":1,"2354":1,"2359":1,"2439":1,"2442":1,"2446":3,"2484":1,"2552":1,"2584":1,"2587":2,"2605":1,"2610":1,"2612":1,"2616":1,"2624":2,"2631":2,"2646":1,"2653":1,"2740":1,"2766":1,"2792":1}}],["defines",{"0":{"510":1,"1617":1},"2":{"50":1,"93":1,"114":4,"133":1,"134":3,"160":1,"175":1,"176":2,"191":11,"199":5,"211":2,"222":1,"233":1,"236":9,"249":3,"266":1,"277":1,"502":4,"510":1,"513":1,"532":1,"572":1,"630":1,"702":1,"758":1,"787":1,"819":1,"851":1,"852":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1023":1,"1056":1,"1057":1,"1090":1,"1142":1,"1146":1,"1173":1,"1183":1,"1252":1,"1257":1,"1261":1,"1263":1,"1266":1,"1267":1,"1429":1,"1430":1,"1434":1,"1439":1,"1448":1,"1504":1,"1506":1,"1507":1,"1529":1,"1595":2,"1632":1,"1660":1,"1695":1,"1698":1,"1699":1,"1701":1,"1703":1,"1766":1,"1858":7,"1859":1,"1900":1,"1901":1,"1913":1,"1919":1,"1921":1,"1939":1,"1952":1,"1954":1,"1955":1,"1987":2,"2073":1,"2075":1,"2143":2,"2150":1,"2151":4,"2180":1,"2212":1,"2264":2,"2269":1,"2276":1,"2444":2,"2462":1,"2551":1,"2552":1,"2579":1,"2583":1,"2587":1,"2589":1,"2597":1,"2598":2,"2604":1,"2605":2,"2750":1,"2782":1,"2792":1}}],["define",{"0":{"540":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1461":1,"1462":1,"1558":1,"1559":1,"1649":1,"1651":1,"2165":1},"1":{"1650":1,"1652":1},"2":{"13":1,"14":3,"25":2,"28":1,"31":1,"34":1,"49":2,"50":1,"69":1,"75":1,"94":1,"98":1,"107":1,"114":1,"120":3,"134":2,"139":1,"142":1,"160":1,"169":5,"176":2,"184":5,"191":4,"211":1,"222":1,"236":2,"249":2,"266":1,"273":3,"292":3,"317":3,"430":1,"453":1,"496":1,"502":43,"503":6,"504":4,"505":28,"506":13,"507":5,"510":6,"511":25,"571":1,"588":2,"601":2,"607":1,"641":1,"644":1,"656":1,"657":1,"673":1,"674":15,"675":7,"676":1,"679":6,"680":5,"681":5,"686":8,"687":5,"688":2,"690":7,"691":1,"694":7,"701":1,"703":2,"731":1,"757":1,"758":1,"786":1,"787":1,"788":2,"789":4,"790":1,"818":1,"819":1,"820":1,"850":1,"851":1,"852":1,"853":2,"854":4,"855":1,"885":1,"886":1,"887":2,"888":4,"889":1,"919":1,"920":1,"921":2,"922":4,"923":1,"953":1,"954":1,"955":2,"956":4,"957":1,"987":1,"988":1,"989":2,"990":4,"991":1,"1021":1,"1022":1,"1023":1,"1024":4,"1025":1,"1055":1,"1056":1,"1057":1,"1058":4,"1059":1,"1089":1,"1090":1,"1091":2,"1092":4,"1093":1,"1124":2,"1127":3,"1130":6,"1132":3,"1133":3,"1134":2,"1136":1,"1137":1,"1138":1,"1145":1,"1146":1,"1171":1,"1174":3,"1182":1,"1183":1,"1214":7,"1235":10,"1251":1,"1253":1,"1254":1,"1257":1,"1261":1,"1262":1,"1263":3,"1264":1,"1265":1,"1266":1,"1267":3,"1290":1,"1306":5,"1313":2,"1328":1,"1331":1,"1353":1,"1357":1,"1365":1,"1369":1,"1372":1,"1381":3,"1384":1,"1390":1,"1391":2,"1396":2,"1401":1,"1414":1,"1416":1,"1422":1,"1424":9,"1427":4,"1428":1,"1429":3,"1430":6,"1431":1,"1432":3,"1433":4,"1434":2,"1435":2,"1438":1,"1439":2,"1440":2,"1441":1,"1442":1,"1443":1,"1451":2,"1452":2,"1453":1,"1460":1,"1468":2,"1470":1,"1477":3,"1494":1,"1495":1,"1496":2,"1504":1,"1506":3,"1507":3,"1529":3,"1532":2,"1533":3,"1534":1,"1537":2,"1538":1,"1540":1,"1541":1,"1543":1,"1544":2,"1545":1,"1548":2,"1551":1,"1552":8,"1553":2,"1562":1,"1563":1,"1565":1,"1568":2,"1585":4,"1592":2,"1593":1,"1595":10,"1596":10,"1597":1,"1600":4,"1606":2,"1614":5,"1615":8,"1617":3,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1629":1,"1632":1,"1649":1,"1650":1,"1651":2,"1652":1,"1670":4,"1695":1,"1713":1,"1715":5,"1720":1,"1721":2,"1722":1,"1723":1,"1752":1,"1753":2,"1760":1,"1763":1,"1764":1,"1766":21,"1767":1,"1768":12,"1827":1,"1828":1,"1830":2,"1841":1,"1842":1,"1843":6,"1844":2,"1845":1,"1846":1,"1853":1,"1855":2,"1856":1,"1857":1,"1858":4,"1860":5,"1867":2,"1868":2,"1893":2,"1894":6,"1895":3,"1896":10,"1897":2,"1899":5,"1900":3,"1901":9,"1902":1,"1903":4,"1904":3,"1905":2,"1906":1,"1910":1,"1911":2,"1914":1,"1919":2,"1921":1,"1924":1,"1937":1,"1950":2,"1952":1,"1960":2,"1964":1,"1967":2,"1969":1,"1984":1,"1985":1,"1987":49,"1988":6,"1989":2,"1990":1,"1992":16,"1996":1,"1997":1,"2070":3,"2073":1,"2075":1,"2076":1,"2077":3,"2079":1,"2080":5,"2082":2,"2083":1,"2084":1,"2097":2,"2098":2,"2108":1,"2112":1,"2138":1,"2139":1,"2141":1,"2150":2,"2151":4,"2162":1,"2163":2,"2164":1,"2165":2,"2166":7,"2167":10,"2168":5,"2169":12,"2177":1,"2179":1,"2180":1,"2181":1,"2183":1,"2190":1,"2191":1,"2192":1,"2199":4,"2202":1,"2206":1,"2207":1,"2208":4,"2209":1,"2212":1,"2217":1,"2218":1,"2220":1,"2221":3,"2264":1,"2269":4,"2276":4,"2299":2,"2301":6,"2338":12,"2341":5,"2345":1,"2439":1,"2440":1,"2444":2,"2529":4,"2530":1,"2563":5,"2578":3,"2580":1,"2583":5,"2587":4,"2596":1,"2598":1,"2605":3,"2610":2,"2611":1,"2615":13,"2623":1,"2627":4,"2646":2,"2653":3,"2745":2,"2746":1,"2747":3,"2766":2,"2767":2,"2774":2,"2775":2,"2776":2,"2777":7,"2785":2,"2792":1,"2795":1}}],["default=",{"2":{"430":1}}],["defaults",{"0":{"415":1,"2343":1,"2460":1},"1":{"2344":1},"2":{"69":1,"77":1,"114":1,"134":2,"145":2,"160":1,"176":2,"199":1,"236":4,"249":1,"498":1,"505":4,"506":1,"566":1,"688":1,"703":1,"1214":1,"1235":1,"1353":1,"1354":1,"1430":1,"1506":1,"1858":1,"1935":1,"1936":1,"1943":1,"1947":1,"1949":1,"1950":2,"2165":1,"2338":1,"2460":1,"2464":1,"2614":2,"2765":1,"2766":1}}],["default",{"0":{"148":1,"166":1,"474":1,"497":1,"528":1,"1305":1,"1415":1,"2646":1,"2773":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1},"2":{"14":1,"28":1,"30":1,"31":1,"33":1,"38":1,"49":1,"50":2,"69":1,"74":1,"77":1,"83":1,"93":2,"114":8,"124":1,"125":1,"134":2,"141":1,"145":2,"148":1,"154":2,"160":8,"164":1,"166":1,"176":10,"183":8,"191":8,"194":5,"195":3,"199":2,"202":1,"206":1,"209":1,"211":5,"222":1,"236":7,"249":4,"266":3,"273":1,"277":2,"331":3,"335":1,"370":2,"371":1,"374":2,"378":1,"380":2,"385":1,"386":1,"389":1,"391":1,"393":2,"394":2,"400":1,"402":1,"403":1,"404":1,"405":1,"414":2,"415":1,"417":3,"423":3,"424":3,"425":2,"426":3,"430":1,"433":2,"435":3,"474":1,"496":1,"497":1,"502":5,"504":1,"509":2,"511":4,"513":2,"516":1,"528":1,"529":7,"530":5,"559":1,"560":2,"563":1,"565":1,"572":1,"580":2,"601":1,"607":1,"610":4,"612":1,"623":2,"624":2,"626":2,"636":1,"641":4,"644":3,"656":1,"671":1,"673":2,"674":2,"675":2,"676":2,"679":2,"680":1,"681":1,"682":1,"684":1,"686":1,"688":1,"689":1,"694":2,"702":1,"703":2,"704":1,"705":1,"731":1,"757":1,"786":1,"788":1,"789":2,"790":1,"818":1,"850":1,"853":1,"854":2,"855":1,"885":1,"887":1,"888":2,"889":1,"919":1,"921":1,"922":2,"923":1,"953":1,"955":1,"956":2,"957":1,"987":1,"989":1,"990":2,"991":1,"1021":1,"1024":4,"1025":1,"1055":1,"1058":4,"1059":1,"1089":1,"1091":1,"1092":3,"1093":1,"1122":1,"1127":1,"1130":1,"1132":2,"1133":2,"1134":2,"1136":2,"1137":2,"1142":2,"1145":1,"1169":1,"1171":1,"1182":1,"1214":1,"1235":1,"1251":1,"1253":1,"1255":1,"1256":1,"1257":1,"1261":1,"1262":1,"1263":1,"1266":1,"1267":1,"1280":1,"1282":1,"1302":1,"1318":1,"1320":1,"1325":1,"1331":1,"1349":1,"1353":1,"1356":1,"1357":1,"1358":1,"1365":1,"1366":1,"1368":1,"1369":13,"1372":7,"1375":1,"1378":16,"1380":2,"1381":1,"1383":5,"1399":1,"1405":2,"1414":1,"1415":1,"1422":1,"1434":1,"1435":1,"1436":4,"1437":2,"1439":1,"1440":1,"1441":2,"1442":1,"1443":7,"1445":1,"1451":1,"1453":3,"1460":3,"1467":4,"1476":2,"1478":1,"1482":1,"1492":1,"1494":5,"1497":1,"1498":1,"1504":1,"1506":2,"1507":1,"1532":2,"1533":1,"1536":2,"1538":1,"1540":1,"1541":1,"1543":2,"1551":1,"1552":2,"1553":2,"1555":5,"1563":10,"1565":1,"1566":1,"1567":1,"1568":15,"1592":2,"1595":3,"1597":1,"1598":2,"1600":1,"1605":1,"1608":1,"1610":1,"1611":4,"1617":1,"1629":1,"1669":1,"1670":1,"1671":1,"1709":2,"1711":1,"1712":1,"1713":1,"1715":2,"1720":1,"1723":1,"1753":1,"1760":1,"1763":3,"1768":10,"1832":1,"1840":3,"1841":2,"1842":1,"1843":3,"1845":2,"1846":1,"1851":4,"1852":2,"1855":2,"1856":1,"1857":3,"1858":4,"1860":3,"1865":1,"1897":1,"1899":3,"1901":2,"1910":3,"1911":3,"1914":1,"1918":1,"1924":2,"1934":1,"1935":1,"1936":1,"1937":2,"1939":2,"1940":1,"1941":1,"1943":5,"1944":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":2,"1952":5,"1953":1,"1956":1,"1960":4,"1962":1,"1965":1,"1967":4,"1969":3,"1970":1,"1972":1,"1977":1,"1978":7,"1980":2,"1984":3,"1986":1,"1988":1,"1992":14,"1996":1,"2070":2,"2072":1,"2073":12,"2075":1,"2076":1,"2080":1,"2081":1,"2108":1,"2111":1,"2112":2,"2114":1,"2141":1,"2149":1,"2150":2,"2151":1,"2161":1,"2162":1,"2164":2,"2166":2,"2168":1,"2169":1,"2175":2,"2176":1,"2179":2,"2180":2,"2181":1,"2183":1,"2187":2,"2188":1,"2194":1,"2199":1,"2207":3,"2208":2,"2209":2,"2212":5,"2213":1,"2217":1,"2218":1,"2220":1,"2221":1,"2264":2,"2266":2,"2268":1,"2269":2,"2276":2,"2283":1,"2285":1,"2287":1,"2291":3,"2297":2,"2298":1,"2300":4,"2301":7,"2316":1,"2334":2,"2339":1,"2341":5,"2343":1,"2344":3,"2350":1,"2381":1,"2382":1,"2383":2,"2394":1,"2396":1,"2406":2,"2414":2,"2441":7,"2443":1,"2444":1,"2460":3,"2461":1,"2464":4,"2467":1,"2468":1,"2483":1,"2491":2,"2492":1,"2496":1,"2502":1,"2508":7,"2527":1,"2537":1,"2540":1,"2541":2,"2545":3,"2552":2,"2563":2,"2564":1,"2565":1,"2578":1,"2579":1,"2580":2,"2583":2,"2592":3,"2595":1,"2604":3,"2605":10,"2606":4,"2613":2,"2614":2,"2615":11,"2623":1,"2646":6,"2649":1,"2654":1,"2712":1,"2713":14,"2714":2,"2715":8,"2716":14,"2718":2,"2719":5,"2720":1,"2721":1,"2722":1,"2723":1,"2724":1,"2725":3,"2726":3,"2727":19,"2728":6,"2729":1,"2731":3,"2733":24,"2734":25,"2735":3,"2736":16,"2737":2,"2738":8,"2739":4,"2740":1,"2741":1,"2744":1,"2746":1,"2750":1,"2766":1,"2767":4,"2768":4,"2770":2,"2771":3,"2772":2,"2774":3,"2775":3,"2776":5,"2777":3,"2796":1}}],["delkey",{"2":{"1340":5}}],["delegation",{"2":{"2170":1}}],["delegating",{"2":{"511":1}}],["delegates",{"2":{"2169":1}}],["delegated",{"2":{"2169":1}}],["delegate",{"2":{"2169":1}}],["deleting",{"0":{"423":1,"439":1},"2":{"460":1}}],["deleted",{"2":{"16":1,"387":1,"2278":1,"2288":1}}],["delete",{"0":{"1340":1},"2":{"8":1,"31":1,"34":1,"99":1,"137":1,"211":1,"222":1,"255":1,"266":1,"347":1,"423":1,"439":1,"627":1,"628":3,"1340":4,"1536":1,"1624":1,"1694":1,"1701":3,"1861":2,"1910":1,"2113":1,"2264":1,"2394":4,"2427":1,"2431":2,"2433":1,"2796":2}}],["delimited",{"2":{"2614":1}}],["delimiter",{"2":{"2614":1}}],["delivered",{"2":{"616":1,"621":1}}],["deliberately",{"2":{"440":1,"585":1}}],["delilah",{"2":{"154":2}}],["delikeeb",{"2":{"86":8}}],["delayed",{"2":{"1398":1,"1443":1,"2768":1}}],["delays",{"2":{"515":1,"597":1,"1398":1,"1840":1,"2301":1,"2563":1,"2564":1,"2565":1}}],["delay",{"0":{"1406":2,"1407":2,"1713":1,"2121":1,"2125":1,"2139":1},"1":{"2122":1,"2126":1},"2":{"74":3,"112":6,"114":4,"120":1,"160":2,"176":5,"191":1,"222":2,"236":1,"249":2,"266":2,"502":4,"505":5,"507":2,"597":2,"598":1,"599":1,"689":1,"1391":1,"1394":3,"1398":4,"1405":2,"1406":1,"1436":2,"1443":1,"1592":1,"1597":3,"1713":6,"1714":1,"1841":5,"1842":2,"1845":4,"1860":1,"1899":1,"1969":2,"1975":1,"1980":1,"1988":3,"2113":1,"2119":1,"2121":1,"2123":1,"2125":2,"2138":2,"2139":2,"2217":1,"2450":1,"2563":3,"2603":3,"2635":2,"2713":5,"2728":1,"2729":2,"2738":1,"2768":2}}],["del",{"0":{"8":1},"2":{"8":1,"63":1,"120":1,"313":1,"439":2,"530":2,"1336":2,"1337":3,"1340":9,"1391":1,"1394":1,"1543":1,"1701":1,"1910":1,"2113":1,"2266":2,"2394":1,"2431":1,"2447":1}}],["deltas",{"2":{"1943":1,"2303":2,"2614":1}}],["delta",{"0":{"2637":1},"2":{"100":1,"211":1,"222":1,"1841":2,"1842":1,"1845":2,"1846":4,"1950":2,"2303":5,"2614":1,"2626":1,"2631":2,"2635":8,"2637":9}}],["delt",{"0":{"8":1},"2":{"8":1,"188":1,"191":1}}],["u8",{"2":{"2749":2}}],["u80",{"2":{"211":1}}],["u03a8",{"2":{"2711":2}}],["u32",{"2":{"2634":1}}],["udr1",{"2":{"1896":1}}],["udevadm",{"2":{"1276":2}}],["udev",{"0":{"1276":1},"2":{"199":2,"1275":2,"1276":1,"1291":1,"2300":1}}],["ubrr1l",{"2":{"1896":1}}],["ubrr1h",{"2":{"1896":1}}],["ubuntu",{"2":{"454":1,"2470":1,"2476":1,"2503":1,"2507":3,"2531":1,"2542":1}}],["ug",{"2":{"1597":10,"2072":11,"2083":1,"2415":11}}],["ugfx",{"0":{"10":1},"2":{"10":1,"114":1,"134":1}}],["ultra",{"2":{"1377":1}}],["ultimately",{"2":{"2610":1}}],["ultimate",{"2":{"457":1}}],["ukrainian",{"2":{"2742":2}}],["ukr",{"2":{"2220":1}}],["uk",{"2":{"701":1,"1392":1,"1536":1,"2358":1,"2742":3}}],["uz",{"2":{"450":1}}],["uzu42",{"2":{"176":2}}],["urls",{"2":{"316":3}}],["url",{"2":{"316":3,"527":1,"609":1,"2516":1,"2526":1,"2605":1,"2654":1,"2711":2}}],["urbanvanilla",{"2":{"211":1}}],["u",{"2":{"266":1,"313":1,"385":2,"530":2,"1289":3,"1910":1,"1912":1,"2186":1,"2190":1,"2191":4,"2217":1,"2234":1,"2271":1,"2274":1,"2309":3,"2386":1,"2387":3,"2394":3,"2425":3,"2446":1,"2477":1,"2527":2,"2614":4}}],["uvwxyz",{"2":{"266":1}}],["uefi",{"0":{"1335":1},"2":{"263":1}}],["umsel10",{"2":{"1896":1}}],["um",{"2":{"219":1,"2219":3,"2222":1,"2301":1,"2423":1}}],["um70",{"2":{"114":1}}],["u16",{"2":{"191":1}}],["u+ffff",{"2":{"2221":2}}],["u+10ffff",{"2":{"2219":1}}],["u+",{"2":{"2219":1}}],["u+7fff",{"2":{"2219":1}}],["u+exxx",{"2":{"191":1}}],["u+axxx",{"2":{"191":1}}],["uaccess",{"2":{"1291":3}}],["ua62",{"2":{"154":2}}],["uart1",{"2":{"2577":2}}],["uart0",{"2":{"2577":2}}],["uart",{"0":{"1232":1,"1237":1,"1239":1,"1241":1,"1243":1,"1245":1,"1247":1,"2577":1},"1":{"1233":1,"1234":1,"1235":1,"1236":1,"1237":1,"1238":2,"1239":1,"1240":2,"1241":1,"1242":2,"1243":1,"1244":2,"1245":1,"1246":2,"1247":1,"1248":2},"2":{"50":1,"73":1,"75":1,"133":2,"134":2,"160":4,"191":1,"199":1,"234":2,"236":2,"249":1,"1121":1,"1232":1,"1233":3,"1234":1,"1235":12,"1237":1,"1247":1,"1356":2,"1528":2,"1529":1,"2315":1,"2570":1,"2573":1,"2577":1,"2580":4,"2582":2}}],["utc",{"2":{"463":1,"464":1,"465":2}}],["utf",{"2":{"211":1}}],["ut47",{"2":{"160":1}}],["ut472",{"2":{"144":2}}],["utilised",{"2":{"2758":2}}],["utilise",{"2":{"2605":1}}],["utilises",{"2":{"2585":1}}],["utilising",{"2":{"1125":1,"2585":1}}],["utilisation",{"2":{"516":1}}],["utilize",{"2":{"496":1,"2725":1}}],["utilized",{"2":{"496":1,"1134":1}}],["utilities",{"2":{"133":1,"134":1,"160":1}}],["utility",{"2":{"49":1,"199":1,"266":1,"625":1,"1422":1,"2279":2,"2282":1}}],["utils",{"2":{"249":1}}],["util",{"2":{"114":1,"211":1,"236":2,"266":1,"360":1,"450":1,"451":1,"452":1,"509":2,"1278":1,"1854":1,"2164":2,"2178":1,"2278":3,"2279":6,"2280":3,"2281":3,"2291":6,"2300":2,"2389":1,"2392":1,"2603":1}}],["ucpol1",{"2":{"1896":1}}],["ucsr1b",{"2":{"1896":3}}],["ucsr1a",{"2":{"1896":3}}],["ucsr1c",{"2":{"1896":2}}],["ucsz10",{"2":{"1896":1}}],["ucis",{"0":{"2249":1,"2250":1,"2252":1,"2254":1,"2257":1,"2259":1,"2260":1,"2261":1},"1":{"2251":1,"2253":1,"2255":1,"2256":1,"2258":1,"2262":1},"2":{"199":1,"222":1,"2220":12,"2250":1,"2251":1,"2261":1,"2262":1,"2301":1,"2788":1}}],["uc",{"2":{"134":1,"188":1,"191":1,"2219":3,"2221":2,"2222":9,"2301":1,"2423":9}}],["ui",{"2":{"120":1,"191":1,"521":1}}],["uint24",{"2":{"2626":1,"2627":1,"2628":2,"2632":1,"2633":1}}],["uintptr",{"2":{"1706":2}}],["uint",{"2":{"134":1}}],["uint32",{"0":{"1237":1,"1887":1,"1889":1,"2129":1,"2237":1,"2244":1},"1":{"1238":1,"1888":1,"1890":1,"2130":1,"2238":1,"2245":1,"2246":1},"2":{"105":4,"114":1,"176":1,"588":1,"597":1,"962":5,"1238":1,"1369":1,"1370":4,"1587":2,"1890":1,"2130":1,"2168":1,"2219":1,"2220":1,"2238":1,"2616":7,"2626":2,"2633":2,"2634":2}}],["uint8",{"0":{"647":3,"649":3,"652":1,"665":3,"667":3,"669":1,"708":2,"711":2,"714":3,"717":2,"720":3,"723":2,"726":1,"739":2,"741":3,"743":3,"745":1,"747":1,"749":1,"751":1,"764":1,"766":3,"768":3,"770":3,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1,"796":1,"798":3,"800":3,"802":3,"804":1,"806":1,"808":4,"810":2,"812":1,"814":1,"826":1,"828":3,"830":2,"832":3,"834":3,"836":1,"838":1,"840":1,"842":1,"844":1,"846":1,"861":1,"863":3,"865":2,"867":3,"869":3,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"895":1,"897":3,"899":2,"901":3,"903":3,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"929":1,"931":3,"933":2,"935":3,"937":3,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1,"963":1,"965":3,"967":2,"969":3,"971":3,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1,"997":1,"999":3,"1001":2,"1003":3,"1005":3,"1007":1,"1009":1,"1011":4,"1013":2,"1015":1,"1017":1,"1031":1,"1033":3,"1035":2,"1037":3,"1039":3,"1041":1,"1043":1,"1045":4,"1047":2,"1049":1,"1051":1,"1065":1,"1067":3,"1069":2,"1071":3,"1073":3,"1075":1,"1077":1,"1079":4,"1081":2,"1083":1,"1085":1,"1099":1,"1101":3,"1103":2,"1105":3,"1107":3,"1109":1,"1111":1,"1113":4,"1115":2,"1117":1,"1119":1,"1152":1,"1154":3,"1156":2,"1158":3,"1160":3,"1162":1,"1164":1,"1166":1,"1176":3,"1178":3,"1189":1,"1191":3,"1193":2,"1195":3,"1197":3,"1199":1,"1201":1,"1203":1,"1205":1,"1207":1,"1209":1,"1217":1,"1220":1,"1225":1,"1228":1,"1239":1,"1241":1,"1243":1,"1516":1,"1518":1,"1641":2,"1649":2,"1651":2,"1655":1,"1657":1,"1660":1,"1662":1,"1664":1,"1666":1,"1680":1,"1682":1,"1684":1,"1687":1,"1781":2,"1783":1,"1785":1,"1787":1,"1793":1,"1799":1,"1805":1,"1807":1,"1809":1,"1818":2,"1821":2,"1875":1,"1877":1,"1879":1,"1881":1,"1883":1,"1929":2,"1931":2,"2008":4,"2010":3,"2012":1,"2014":1,"2020":1,"2026":1,"2032":1,"2038":1,"2044":1,"2046":1,"2048":1,"2050":3,"2052":3,"2063":2,"2066":2,"2121":1,"2125":1,"2133":1,"2135":1,"2224":1,"2226":1,"2230":1,"2232":1,"2241":1,"2244":1,"2247":1,"2252":1},"1":{"648":3,"650":3,"653":1,"666":3,"668":3,"670":1,"709":2,"710":2,"712":2,"713":2,"715":3,"716":3,"718":2,"719":2,"721":3,"722":3,"724":2,"725":2,"727":1,"728":1,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"797":1,"799":3,"801":3,"803":3,"805":1,"807":1,"809":4,"811":2,"813":1,"815":1,"827":1,"829":3,"831":2,"833":3,"835":3,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1100":1,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1177":3,"1179":3,"1190":1,"1192":3,"1194":2,"1196":3,"1198":3,"1200":1,"1202":1,"1204":1,"1206":1,"1208":1,"1210":1,"1218":1,"1219":1,"1221":1,"1222":1,"1226":1,"1227":1,"1229":1,"1230":1,"1240":1,"1242":1,"1244":1,"1517":1,"1519":1,"1642":2,"1650":2,"1652":2,"1656":1,"1658":1,"1659":1,"1661":1,"1663":1,"1665":1,"1667":1,"1681":1,"1683":1,"1685":1,"1686":1,"1688":1,"1782":2,"1784":1,"1786":1,"1788":1,"1794":1,"1800":1,"1806":1,"1808":1,"1810":1,"1876":1,"1878":1,"1880":1,"1882":1,"1884":1,"1885":1,"1930":2,"1932":2,"2009":4,"2011":3,"2013":1,"2015":1,"2021":1,"2027":1,"2033":1,"2039":1,"2045":1,"2047":1,"2049":1,"2053":3,"2122":1,"2126":1,"2134":1,"2136":1,"2225":1,"2227":1,"2231":1,"2233":1,"2242":1,"2243":1,"2245":1,"2246":1,"2248":1,"2253":1},"2":{"46":1,"90":4,"105":4,"211":1,"566":2,"573":2,"580":3,"588":1,"648":3,"650":3,"653":1,"662":4,"666":3,"668":3,"670":1,"709":2,"712":2,"715":3,"718":2,"721":2,"724":1,"727":1,"737":4,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"763":5,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"795":5,"797":1,"799":3,"801":3,"803":3,"805":1,"807":1,"809":4,"811":2,"813":1,"815":1,"825":5,"827":1,"829":3,"831":2,"833":3,"835":3,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"860":5,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"894":5,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"928":5,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"996":5,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1030":5,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1064":5,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1098":5,"1100":2,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1151":5,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1177":3,"1179":3,"1188":5,"1190":1,"1192":3,"1194":2,"1196":3,"1198":3,"1200":1,"1202":1,"1204":1,"1206":1,"1208":1,"1210":1,"1218":1,"1221":1,"1226":1,"1229":1,"1240":1,"1244":1,"1246":1,"1340":1,"1369":1,"1381":2,"1397":1,"1422":2,"1437":3,"1442":2,"1477":1,"1482":2,"1483":2,"1484":1,"1485":3,"1501":1,"1517":1,"1555":1,"1560":2,"1561":2,"1563":2,"1587":2,"1598":2,"1632":1,"1642":1,"1650":2,"1652":2,"1656":1,"1661":1,"1663":1,"1665":1,"1667":1,"1676":1,"1681":1,"1683":1,"1685":1,"1688":1,"1706":3,"1708":3,"1752":2,"1756":1,"1760":5,"1767":3,"1771":2,"1782":2,"1784":1,"1786":1,"1788":1,"1806":1,"1808":1,"1819":2,"1822":2,"1853":2,"1859":1,"1860":15,"1876":1,"1878":1,"1880":1,"1882":1,"1884":1,"1911":2,"1912":1,"1913":1,"1915":1,"1916":1,"1917":1,"1919":1,"1921":3,"1925":2,"1927":3,"1930":2,"1932":2,"1954":1,"1956":1,"1969":1,"1974":3,"1990":3,"1995":2,"1996":12,"1997":5,"2009":4,"2011":3,"2013":1,"2015":1,"2045":1,"2047":1,"2051":3,"2053":3,"2064":2,"2067":2,"2073":1,"2078":7,"2122":1,"2126":1,"2134":1,"2136":1,"2145":11,"2168":6,"2177":2,"2181":6,"2190":2,"2195":1,"2227":1,"2231":1,"2233":1,"2245":1,"2248":1,"2262":1,"2266":2,"2445":1,"2530":6,"2615":4,"2616":34,"2626":6,"2632":2,"2633":1,"2635":4,"2636":7,"2638":1,"2748":2}}],["uint16",{"0":{"647":1,"708":2,"711":2,"714":2,"717":3,"720":2,"723":3,"726":1,"1217":1,"1225":1,"1228":1,"1243":1,"1245":1,"1269":1,"1732":1,"1737":1,"1740":2,"1743":3,"1746":4,"1749":5,"2131":1,"2241":1,"2254":1},"1":{"648":1,"709":2,"710":2,"712":2,"713":2,"715":2,"716":2,"718":3,"719":3,"721":2,"722":2,"724":3,"725":3,"727":1,"728":1,"1218":1,"1219":1,"1226":1,"1227":1,"1229":1,"1230":1,"1244":1,"1246":1,"1270":1,"1733":1,"1734":1,"1738":1,"1739":1,"1741":2,"1742":2,"1744":3,"1745":3,"1747":4,"1748":4,"1750":5,"1751":5,"2132":1,"2242":1,"2243":1,"2255":1,"2256":1},"2":{"22":6,"46":2,"194":2,"195":2,"247":1,"530":1,"534":2,"572":1,"573":3,"588":1,"648":1,"709":2,"712":2,"715":2,"718":3,"721":2,"724":3,"727":1,"1218":1,"1226":1,"1229":1,"1244":1,"1246":1,"1270":1,"1289":1,"1339":1,"1340":1,"1369":2,"1381":1,"1396":4,"1397":2,"1412":2,"1421":1,"1422":2,"1430":1,"1441":1,"1453":1,"1460":2,"1467":3,"1482":1,"1483":1,"1543":2,"1545":2,"1546":2,"1547":2,"1548":7,"1555":10,"1556":4,"1560":5,"1561":6,"1586":1,"1597":1,"1619":1,"1672":3,"1678":3,"1708":2,"1733":1,"1738":1,"1741":2,"1744":3,"1747":4,"1750":5,"1830":2,"1853":1,"1858":1,"1860":7,"1868":1,"1911":2,"1912":1,"1913":3,"1915":1,"1916":1,"1917":1,"1918":1,"1919":2,"1921":4,"1951":2,"1954":1,"1955":1,"1959":1,"1960":1,"1971":2,"1972":1,"1974":3,"1979":1,"1981":1,"2082":2,"2116":1,"2132":1,"2177":1,"2180":1,"2181":4,"2190":2,"2202":1,"2206":4,"2209":2,"2242":1,"2255":1,"2266":4,"2340":1,"2440":1,"2445":1,"2452":1,"2453":1,"2454":1,"2462":1,"2615":43,"2616":39,"2626":1,"2633":3,"2635":1,"2637":4,"2643":1,"2651":1,"2748":2,"2766":1,"2767":2,"2774":1,"2775":1,"2776":1,"2777":1,"2786":1,"2788":38}}],["uf2boot",{"0":{"2285":1},"1":{"2286":1},"2":{"236":1,"2285":5}}],["uf2conv",{"2":{"211":1,"222":1}}],["uf2",{"0":{"2287":1,"2561":1},"2":{"93":1,"114":1,"145":1,"176":2,"199":3,"211":1,"2164":2,"2283":1,"2284":2,"2285":1,"2286":2,"2287":1,"2476":1,"2578":1,"2713":1}}],["unknowingly",{"2":{"2344":1}}],["unknown",{"0":{"1278":1},"2":{"111":1,"315":1,"2207":2,"2208":2,"2209":2,"2339":1,"2392":1}}],["unblink",{"2":{"2082":4}}],["unwanted",{"2":{"1713":1,"2103":1}}],["unnecessarily",{"2":{"1214":1,"1381":1}}],["unnecessary",{"2":{"134":1,"236":1,"266":1,"277":1,"556":1,"2444":1}}],["unpressed",{"2":{"1362":1}}],["unpredictable",{"2":{"674":1}}],["unplugged",{"2":{"1591":1,"2672":1}}],["unplugging",{"2":{"1369":1,"1374":1,"1440":1,"2156":1,"2288":1}}],["unplug",{"2":{"626":1,"1307":1,"1566":1,"1591":1,"2392":1,"2489":3,"2646":1}}],["unpacking",{"2":{"467":1}}],["unparsed",{"2":{"249":1}}],["unquoted",{"2":{"612":1}}],["unusable",{"0":{"2555":1},"2":{"1280":1}}],["unusual",{"2":{"466":1,"623":1,"1532":1,"2785":1}}],["unuseful",{"2":{"266":1}}],["unused",{"0":{"1590":1},"2":{"50":1,"75":1,"160":1,"176":1,"191":1,"199":8,"540":1,"1260":1,"1279":1,"1357":1,"1585":1,"1815":1,"1820":1,"2060":1,"2065":1,"2099":2,"2163":3,"2169":1,"2301":1,"2605":1,"2728":1}}],["unfiltered",{"2":{"2264":2}}],["unfamiliar",{"2":{"460":1}}],["unfortunately",{"2":{"173":1,"537":1,"1256":1,"1449":1,"1478":1,"2437":1,"2553":1,"2741":1,"2789":1}}],["uncle",{"2":{"2789":1}}],["unclear",{"2":{"453":1,"458":1,"560":1}}],["uncapitalizing",{"2":{"1540":1}}],["uncomment",{"2":{"1555":1}}],["uncommon",{"2":{"11":1,"1478":1}}],["uncombined",{"2":{"516":1}}],["uncovered",{"2":{"191":1}}],["unconditionally",{"2":{"49":1,"114":1}}],["unavoidable",{"2":{"2605":1}}],["unavailable",{"2":{"635":1,"696":2,"1431":1,"1896":1,"2599":1}}],["unaffected",{"2":{"1536":1}}],["unannotated",{"2":{"480":1}}],["unambiguous",{"2":{"467":1}}],["unable",{"2":{"337":1,"352":1,"2355":1,"2358":1,"2743":1}}],["unassigned",{"2":{"236":1,"446":1}}],["unxmaal",{"2":{"236":1}}],["unshifted",{"2":{"2436":1}}],["unswap",{"2":{"2409":20,"2435":20}}],["unsplit",{"2":{"1950":1}}],["unscrewing",{"2":{"1324":1}}],["unsucessful",{"2":{"726":1}}],["unsupported",{"2":{"638":1,"639":1,"1860":1,"2152":1}}],["unsure",{"2":{"626":1,"628":1,"1863":1,"1864":1,"2315":1,"2318":1,"2460":1,"2508":1}}],["unsigned",{"2":{"222":1,"1327":1,"1858":1,"2129":1,"2131":1,"2180":1}}],["unsent",{"2":{"1893":1}}],["unset",{"2":{"145":1,"679":2,"2613":2}}],["unselect",{"2":{"114":3,"502":1}}],["unmergeable",{"2":{"2605":1}}],["unmerged",{"2":{"221":1,"341":1}}],["unmod",{"2":{"1843":4}}],["unmodified",{"2":{"1715":1,"1843":7,"2777":1}}],["unmaintained",{"2":{"114":1}}],["unrecoverable",{"2":{"2387":1}}],["unresponsive",{"2":{"1591":1,"1841":1,"1842":1}}],["unregistered",{"2":{"597":1,"1412":1,"1560":1,"1708":1}}],["unregister",{"0":{"1404":1,"1407":1,"1682":1,"1881":1},"1":{"1683":1,"1882":1},"2":{"505":1,"1312":1,"1337":1,"1339":1,"1340":1,"1397":1,"1405":2,"1406":1,"1412":2,"1467":3,"1560":2,"1561":1,"1706":1,"1708":1,"1709":1,"1715":1,"2206":1,"2207":5,"2208":3,"2777":1}}],["unrelated",{"2":{"191":1,"279":1,"282":3,"341":1}}],["unreferenced",{"2":{"133":1,"134":1}}],["unloaded",{"2":{"2616":2}}],["unlocking",{"2":{"2104":1,"2109":1}}],["unlock",{"0":{"2104":1},"2":{"2104":1,"2107":6,"2108":3,"2109":6,"2392":2,"2735":4}}],["unlocked",{"2":{"340":1,"349":1,"2105":1,"2108":1,"2109":3,"2735":1}}],["unlk",{"2":{"2107":1}}],["unlike",{"2":{"1315":1,"1569":1,"2467":1,"2725":1,"2780":1}}],["unlikely",{"2":{"139":1,"502":1,"1315":1,"2589":1}}],["unlimited",{"2":{"396":1,"411":1}}],["unless",{"2":{"191":1,"435":1,"457":1,"469":1,"477":1,"566":2,"1312":1,"1315":1,"1324":1,"1337":1,"1378":2,"1448":1,"1494":1,"1506":1,"1753":1,"1978":1,"1987":1,"2300":1,"2318":1,"2357":1,"2406":1,"2580":1,"2585":1,"2603":1,"2605":4,"2616":1}}],["un",{"2":{"160":1,"191":1,"266":1,"502":1,"1405":1,"1912":1}}],["unexplainable",{"2":{"2300":1}}],["unexpectedly",{"2":{"1327":1}}],["unexpected",{"2":{"87":1,"337":1,"1536":1,"1704":1}}],["unecessary",{"2":{"145":1}}],["uno",{"0":{"2370":1},"1":{"2371":1},"2":{"144":2,"145":2,"2370":2,"2371":3}}],["ungodly",{"2":{"114":2}}],["unterminated",{"2":{"134":1}}],["untested",{"2":{"49":1,"483":1,"1627":1,"1849":1,"1855":1,"2179":1,"2301":2}}],["until",{"2":{"114":1,"145":1,"199":1,"522":1,"588":1,"598":1,"627":1,"703":1,"1310":1,"1353":1,"1354":1,"1362":1,"1372":2,"1404":1,"1441":1,"1442":1,"1453":1,"1475":1,"1537":1,"1541":1,"1689":1,"1691":1,"1713":3,"1768":1,"1840":3,"1841":2,"1845":1,"1860":1,"1865":2,"1948":1,"1966":1,"1992":1,"2194":1,"2270":1,"2272":1,"2277":1,"2279":1,"2316":1,"2405":1,"2406":1,"2422":1,"2459":1,"2513":1,"2529":2,"2603":1,"2605":2,"2616":1,"2693":1,"2767":1,"2768":1,"2776":2}}],["universal",{"2":{"2707":1}}],["union",{"2":{"1369":2}}],["uninsulated",{"2":{"2309":1}}],["uninstallation",{"0":{"628":1},"2":{"628":1}}],["uninstall",{"2":{"627":1,"628":4,"629":1}}],["unintentional",{"2":{"191":1,"2309":1}}],["unix",{"2":{"249":1,"277":1,"399":1,"2294":1,"2496":1,"2497":1,"2519":1,"2545":2,"2659":1}}],["unix60",{"2":{"67":1,"72":1,"211":1}}],["uniform",{"2":{"222":1}}],["unify",{"0":{"22":1},"2":{"113":1,"114":2,"160":1,"222":1}}],["uni",{"2":{"197":2,"199":2}}],["unikeyboard",{"2":{"154":3,"160":2}}],["uniquely",{"2":{"1372":1,"1965":1}}],["unique",{"2":{"145":1,"199":1,"570":2,"606":1,"1279":2,"2313":1}}],["unicorne",{"2":{"134":1,"249":1}}],["unicodemap",{"0":{"219":1,"2241":1,"2244":1,"2247":1},"1":{"2242":1,"2243":1,"2245":1,"2246":1,"2248":1},"2":{"219":1,"222":2,"2301":1,"2788":1}}],["unicode",{"0":{"186":1,"2214":1,"2224":1,"2226":1,"2228":1,"2229":1,"2230":1,"2232":1,"2234":1,"2235":1,"2236":1,"2237":1,"2239":1,"2359":1,"2423":1,"2628":1,"2705":1},"1":{"2215":1,"2216":1,"2217":1,"2218":1,"2219":1,"2220":1,"2221":1,"2222":1,"2223":1,"2224":1,"2225":2,"2226":1,"2227":2,"2228":1,"2229":1,"2230":1,"2231":2,"2232":1,"2233":2,"2234":1,"2235":1,"2236":1,"2237":1,"2238":2,"2239":1,"2240":2,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2250":1,"2251":1,"2252":1,"2253":1,"2254":1,"2255":1,"2256":1,"2257":1,"2258":1,"2259":1,"2260":1,"2261":1,"2262":1},"2":{"70":1,"94":1,"111":1,"134":1,"145":1,"160":2,"186":3,"188":3,"191":6,"199":2,"211":1,"222":2,"411":1,"433":1,"515":2,"533":1,"1314":1,"1477":1,"2110":2,"2214":1,"2215":2,"2216":1,"2217":11,"2218":5,"2219":6,"2220":6,"2221":21,"2222":12,"2224":1,"2225":1,"2226":1,"2228":1,"2229":1,"2234":4,"2235":2,"2236":2,"2237":1,"2239":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2301":5,"2358":1,"2359":2,"2423":13,"2614":18,"2624":2,"2626":3,"2628":6,"2629":2,"2705":3,"2711":2,"2741":1,"2764":1,"2788":2}}],["units",{"2":{"506":3,"556":1,"683":1,"1363":2,"1958":1,"1969":3,"2635":1,"2654":2,"2725":4}}],["unit|integration>",{"2":{"446":1}}],["unit",{"0":{"485":1,"2706":1,"2789":1},"1":{"2790":1,"2791":1,"2792":1,"2793":1,"2794":1,"2795":1},"2":{"114":1,"134":1,"191":1,"198":1,"199":2,"249":1,"411":1,"446":2,"483":1,"485":1,"560":1,"687":1,"703":2,"1363":1,"1430":1,"1592":1,"2301":1,"2606":3,"2689":1,"2706":2,"2789":2,"2790":1,"2792":2,"2795":1}}],["unite",{"2":{"114":1}}],["undone",{"2":{"2527":1}}],["undo",{"2":{"1565":1,"1958":1,"2394":2,"2431":2,"2513":1}}],["undocumented",{"2":{"8":1,"482":1}}],["unds",{"2":{"176":1,"1536":1,"1543":1,"2417":1,"2438":1}}],["undesired",{"2":{"1715":1,"2777":1}}],["undesirable",{"2":{"1714":1}}],["undef",{"2":{"45":1,"292":3,"500":1,"686":5,"687":3,"690":1,"703":1,"1132":1,"1133":1,"1174":2,"1214":1,"1235":1,"1263":1,"1267":1,"1357":1,"1506":1,"1507":1,"2077":4,"2299":2,"2745":2,"2750":55}}],["undefined",{"2":{"510":1,"1366":1,"1842":1,"1845":1,"1846":1,"1851":1,"1855":1,"1857":1,"2175":1,"2264":1,"2580":1}}],["undefine",{"2":{"45":1,"500":1,"1357":1}}],["underneath",{"2":{"1491":1}}],["undertake",{"2":{"554":1}}],["underlight",{"0":{"2704":1},"2":{"515":1}}],["underlying",{"2":{"234":1,"378":1,"416":1,"430":1,"677":1,"679":2,"680":1,"681":2,"1555":1,"1762":1,"1983":1,"2562":1,"2722":1}}],["undergoing",{"2":{"203":1}}],["undergoes",{"2":{"203":1}}],["underglowx",{"2":{"2339":1}}],["underglow",{"2":{"32":1,"49":1,"266":1,"277":3,"574":1,"582":1,"1369":2,"1380":1,"1491":1,"1985":2,"2069":1,"2072":11,"2079":1,"2099":1,"2319":1,"2339":3,"2415":11,"2649":1,"2750":1}}],["underside",{"2":{"626":1,"2489":1,"2704":1}}],["understood",{"2":{"479":1}}],["understands",{"0":{"2653":1},"2":{"1249":1,"2069":1,"2184":1,"2653":1}}],["understandable",{"2":{"556":1}}],["understandability",{"2":{"457":1,"479":2}}],["understanding",{"0":{"2781":1},"1":{"2782":1,"2783":1,"2784":1,"2785":1,"2786":1,"2787":1,"2788":1},"2":{"249":1,"302":1,"355":1,"474":1,"477":1,"479":1,"560":2,"567":1,"1377":1,"1710":1,"2200":1,"2517":1,"2653":2,"2761":1,"2764":1,"2781":1}}],["understand",{"2":{"2":1,"305":1,"432":1,"457":1,"469":1,"471":1,"567":1,"585":1,"606":1,"615":1,"623":1,"1368":1,"1479":1,"1711":1,"1712":1,"2351":1,"2653":2,"2781":1}}],["underscores",{"2":{"485":1,"2444":1,"2653":1}}],["underscore",{"2":{"461":1,"1478":1,"2333":2,"2417":1,"2438":1}}],["underscore33",{"2":{"154":4}}],["under",{"2":{"32":1,"55":13,"120":1,"134":1,"160":1,"204":1,"211":1,"222":1,"249":1,"265":1,"268":1,"331":1,"335":1,"341":1,"349":1,"370":1,"436":1,"554":1,"606":1,"611":1,"679":1,"682":1,"1280":1,"1310":1,"1391":1,"1417":1,"1443":1,"1767":1,"1925":1,"1977":2,"1990":1,"2166":1,"2207":1,"2221":3,"2317":2,"2349":1,"2386":1,"2463":1,"2478":1,"2479":1,"2552":3,"2582":1,"2606":1,"2609":1,"2615":1,"2616":1,"2694":1,"2710":1,"2758":2}}],["upgrading",{"2":{"2605":1}}],["upgrades",{"2":{"10":1,"114":1}}],["upgrade",{"0":{"24":1,"357":1,"361":1},"1":{"358":1,"359":1,"360":1,"361":1},"2":{"10":3,"65":2,"143":3,"2584":1,"2666":1}}],["upgraded",{"2":{"10":1}}],["uprint",{"2":{"2301":4}}],["uprintf",{"2":{"1287":1,"1289":1}}],["uppr",{"2":{"2211":1}}],["upper",{"0":{"2220":1},"2":{"191":1,"623":1,"688":1,"701":1,"1472":2,"1611":1,"1937":1,"1944":2,"1946":1,"2191":3,"2210":2,"2211":3,"2212":2,"2213":6,"2220":2,"2303":1,"2446":1}}],["uppercase",{"2":{"191":1,"1350":1,"2220":3,"2603":2}}],["upward",{"2":{"1956":2}}],["upwards",{"2":{"1442":1}}],["updir",{"2":{"1913":3}}],["updater",{"2":{"360":1,"2282":3}}],["updated",{"0":{"44":1,"59":1,"86":1,"102":1,"122":1,"144":1,"154":1,"168":1,"181":1,"197":1,"207":1,"217":1,"226":1,"241":1,"253":1,"270":1},"1":{"45":1,"60":1},"2":{"10":1,"14":1,"69":1,"83":1,"86":2,"108":1,"114":2,"126":1,"134":1,"145":1,"160":1,"182":2,"195":1,"220":1,"230":1,"241":1,"244":1,"253":1,"262":1,"270":1,"317":2,"349":1,"357":1,"587":2,"1752":1,"2525":1,"2526":1,"2527":2,"2605":1,"2607":3}}],["updates",{"0":{"190":1,"248":1,"255":1,"256":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"5":1,"12":2,"22":1,"30":1,"33":1,"64":1,"114":2,"134":2,"145":2,"160":2,"176":3,"190":1,"191":2,"199":1,"211":3,"222":1,"236":3,"249":5,"266":3,"277":1,"343":2,"344":2,"345":2,"346":1,"349":2,"352":1,"358":1,"452":1,"686":1,"687":1,"1307":1,"1981":1,"2485":1,"2526":1,"2545":1,"2605":1}}],["update",{"0":{"4":1,"6":1,"10":1,"12":1,"45":1,"56":1,"69":1,"77":1,"669":1,"753":1,"754":1,"780":1,"782":1,"812":1,"814":1,"844":1,"846":1,"879":1,"881":1,"913":1,"915":1,"947":1,"949":1,"981":1,"983":1,"1015":1,"1017":1,"1049":1,"1051":1,"1083":1,"1085":1,"1117":1,"1119":1,"1164":1,"1166":1,"1207":1,"1209":1,"1307":1,"1754":1,"1755":1,"1756":1,"1758":1,"2525":1,"2642":1,"2644":1},"1":{"670":1,"781":1,"783":1,"813":1,"815":1,"845":1,"847":1,"880":1,"882":1,"914":1,"916":1,"948":1,"950":1,"982":1,"984":1,"1016":1,"1018":1,"1050":1,"1052":1,"1084":1,"1086":1,"1118":1,"1120":1,"1165":1,"1167":1,"1208":1,"1210":1,"1755":1,"1756":1,"2526":1,"2527":1,"2528":1,"2643":1,"2645":1},"2":{"10":3,"21":1,"24":1,"31":1,"32":1,"46":1,"49":1,"63":1,"65":1,"75":1,"76":1,"89":1,"90":8,"93":3,"95":1,"105":12,"114":9,"131":2,"133":1,"134":8,"143":1,"145":3,"160":5,"176":15,"191":17,"194":1,"199":5,"211":8,"218":1,"222":8,"230":1,"236":11,"240":2,"249":12,"255":1,"256":1,"266":9,"277":8,"349":1,"350":1,"360":3,"361":2,"559":1,"588":1,"593":1,"594":1,"647":1,"665":2,"685":2,"741":2,"745":2,"749":2,"751":2,"768":2,"772":2,"776":2,"778":2,"800":2,"804":2,"808":2,"810":2,"832":2,"836":2,"840":2,"842":2,"867":2,"871":2,"875":2,"877":2,"901":2,"905":2,"909":2,"911":2,"935":2,"939":2,"943":2,"945":2,"969":2,"973":2,"977":2,"979":2,"1003":2,"1007":2,"1011":2,"1013":2,"1037":2,"1041":2,"1045":2,"1047":2,"1071":2,"1075":2,"1079":2,"1081":2,"1105":2,"1109":2,"1113":2,"1115":2,"1158":2,"1162":2,"1195":2,"1199":2,"1203":2,"1205":2,"1276":1,"1340":1,"1368":2,"1369":4,"1370":2,"1378":3,"1420":1,"1472":1,"1565":1,"1587":6,"1598":3,"1671":1,"1752":2,"1754":4,"1755":2,"1756":1,"1757":1,"1758":1,"1768":1,"1855":3,"1943":1,"1960":1,"1969":1,"1986":1,"1992":1,"2072":1,"2081":1,"2179":1,"2340":1,"2348":1,"2390":1,"2511":1,"2512":1,"2514":2,"2516":2,"2526":1,"2605":3,"2607":1,"2623":1,"2642":1,"2643":4,"2644":1,"2645":3,"2646":1,"2727":1,"2734":1,"2767":1,"2788":1}}],["updating",{"0":{"349":1,"360":1,"2526":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"107":1,"194":1,"199":1,"249":1,"337":1,"352":1,"354":1,"358":1,"359":1,"1855":1,"2080":1,"2179":1,"2301":1,"2603":1}}],["upe1",{"2":{"1896":1}}],["upm10",{"2":{"1896":1}}],["uploading",{"2":{"527":1}}],["uploaded",{"2":{"276":2,"521":1,"2300":1,"2605":1}}],["uploads",{"2":{"273":1,"277":1,"1330":2,"2300":1,"2467":1,"2526":1}}],["upload",{"0":{"273":1},"2":{"160":1,"273":4,"303":1,"304":1,"541":1,"623":1,"1471":1,"1472":1,"2298":1,"2300":1,"2389":1,"2476":1}}],["upon",{"2":{"65":1,"545":1,"1302":1,"1422":1,"1494":3,"1711":1,"1866":1,"1867":1,"2073":6,"2512":1,"2514":1,"2574":1,"2579":1,"2585":1}}],["ups",{"0":{"50":1,"64":1,"75":1,"94":1},"2":{"50":1,"176":1,"266":1,"1134":1,"2158":1}}],["upstreaming",{"2":{"2591":1}}],["upstreamed",{"2":{"2585":1,"2589":1,"2591":1}}],["upstream",{"2":{"10":1,"12":1,"26":1,"167":1,"211":1,"222":1,"347":3,"349":2,"359":2,"360":1,"556":1,"1413":1,"2513":8,"2516":6,"2526":8,"2527":4,"2585":1,"2590":1,"2603":2,"2758":1,"2759":2}}],["up",{"0":{"350":1,"354":1,"1398":1,"1971":1,"2314":1,"2316":1,"2319":1,"2481":1,"2495":1,"2515":1,"2531":1,"2542":1,"2543":1,"2681":1},"1":{"1972":1,"2315":1,"2496":1,"2497":1,"2498":1,"2499":1,"2500":1,"2501":1,"2502":1,"2503":1,"2504":1,"2505":1,"2506":1,"2507":1,"2508":1,"2544":1,"2545":1,"2546":1,"2547":1,"2548":1,"2549":1},"2":{"6":1,"13":1,"23":1,"28":1,"45":1,"50":1,"62":1,"73":3,"77":1,"90":3,"93":1,"94":3,"100":1,"114":13,"119":2,"120":3,"123":1,"124":2,"130":2,"131":1,"133":2,"134":6,"138":1,"141":1,"145":1,"156":1,"160":5,"163":1,"166":1,"173":1,"182":1,"188":1,"191":8,"198":2,"199":6,"206":1,"209":1,"210":1,"211":55,"219":1,"222":8,"224":1,"228":1,"231":2,"232":1,"236":4,"248":1,"249":1,"251":1,"266":3,"291":1,"292":1,"300":1,"313":1,"321":1,"331":1,"347":1,"365":1,"366":1,"370":1,"387":1,"453":2,"481":2,"496":1,"499":1,"502":1,"506":2,"515":2,"516":1,"523":1,"526":1,"529":1,"530":4,"554":1,"555":1,"556":1,"558":1,"571":2,"574":1,"576":1,"578":2,"580":2,"582":1,"589":1,"597":1,"624":1,"625":1,"627":1,"628":1,"635":1,"654":1,"673":1,"674":3,"689":2,"696":1,"703":1,"729":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1,"1126":2,"1134":1,"1143":1,"1180":1,"1214":1,"1218":1,"1235":1,"1267":3,"1273":1,"1298":1,"1300":1,"1331":1,"1363":8,"1366":2,"1369":2,"1375":1,"1391":2,"1394":6,"1397":1,"1398":2,"1422":1,"1423":1,"1424":1,"1435":1,"1436":1,"1440":2,"1443":4,"1445":2,"1449":1,"1471":3,"1472":2,"1473":2,"1476":1,"1477":1,"1488":1,"1493":2,"1506":1,"1555":1,"1598":1,"1610":2,"1615":1,"1624":2,"1632":1,"1668":1,"1694":2,"1703":6,"1709":1,"1715":1,"1716":1,"1724":2,"1754":1,"1765":2,"1766":7,"1831":8,"1839":5,"1870":1,"1891":3,"1910":10,"1913":1,"1937":1,"1943":2,"1960":1,"1972":1,"1975":1,"1979":2,"1987":9,"1988":2,"1997":1,"2072":4,"2076":2,"2080":1,"2113":1,"2142":1,"2144":2,"2150":1,"2151":1,"2155":1,"2158":1,"2164":1,"2169":1,"2172":1,"2186":1,"2188":1,"2199":2,"2205":1,"2209":1,"2219":2,"2220":2,"2221":2,"2222":2,"2293":1,"2299":1,"2301":5,"2303":1,"2311":1,"2316":1,"2318":1,"2328":2,"2329":1,"2334":1,"2347":1,"2350":1,"2380":1,"2385":1,"2394":13,"2396":2,"2397":3,"2399":2,"2408":2,"2410":8,"2411":5,"2414":2,"2415":4,"2423":2,"2431":7,"2432":4,"2433":2,"2441":1,"2442":1,"2446":1,"2459":1,"2463":2,"2481":1,"2484":1,"2487":1,"2493":1,"2495":1,"2497":1,"2505":1,"2508":1,"2511":1,"2525":1,"2529":1,"2531":2,"2536":1,"2541":1,"2542":1,"2543":2,"2547":3,"2552":4,"2556":2,"2558":2,"2560":2,"2568":1,"2578":1,"2585":1,"2587":1,"2603":1,"2605":1,"2606":1,"2607":1,"2616":1,"2620":1,"2639":2,"2701":1,"2735":1,"2738":2,"2747":2,"2749":1,"2750":2,"2761":1,"2767":11,"2770":4,"2771":6,"2772":4,"2774":7,"2775":2,"2776":2,"2777":1,"2779":1,"2786":1}}],["usd",{"2":{"2553":1,"2751":1}}],["us=yes",{"2":{"1356":1}}],["usr",{"2":{"1276":1,"2547":1}}],["usually",{"2":{"228":1,"335":1,"377":1,"474":1,"515":1,"564":1,"598":1,"624":1,"625":1,"626":1,"630":1,"679":3,"1129":1,"1137":1,"1256":1,"1307":2,"1323":1,"1363":1,"1366":1,"1438":1,"1491":1,"1496":1,"1501":2,"1532":1,"1602":1,"1953":1,"2070":2,"2084":1,"2111":1,"2182":1,"2275":1,"2300":1,"2301":1,"2353":1,"2367":1,"2385":1,"2387":1,"2391":1,"2441":1,"2489":2,"2494":1,"2529":1,"2537":1,"2552":1,"2589":1,"2653":1,"2725":1,"2753":1,"2757":1,"2796":1}}],["usual",{"2":{"77":1,"438":1,"439":1,"571":1,"1339":1,"1340":1,"1432":1,"1620":2,"1913":1,"1918":1,"1980":1,"2767":1}}],["usability",{"2":{"211":1}}],["usable",{"2":{"107":1,"114":1,"141":1,"209":1,"231":1,"408":1,"435":1,"679":2,"680":1,"681":1,"685":1,"1369":1,"1431":1,"2152":1,"2315":1,"2442":1,"2555":3,"2614":1,"2615":1,"2722":1}}],["usart4",{"2":{"1141":1}}],["usart2",{"2":{"1140":1,"1141":1,"1142":3,"1235":4}}],["usart3",{"2":{"1132":1,"1133":1,"1140":1,"1141":1,"1142":5,"1235":1}}],["usartn",{"2":{"1132":2,"1133":2}}],["usart1",{"2":{"1127":1,"1130":1,"1140":1,"1141":1,"1142":3,"1235":2,"1896":1}}],["usart",{"0":{"1125":1,"1128":1,"1896":1},"1":{"1126":1,"1127":1,"1129":1,"1130":1},"2":{"74":1,"107":1,"176":1,"266":1,"277":1,"1121":3,"1125":1,"1126":2,"1127":5,"1128":2,"1129":5,"1130":10,"1132":5,"1133":5,"1136":1,"1137":2,"1139":1,"1142":3,"1235":1,"1891":1,"1893":1,"1896":11,"2152":1,"2567":1,"2580":4,"2731":1,"2736":1}}],["usages",{"2":{"75":1,"118":1,"128":1,"141":1,"142":1,"151":1,"160":1,"167":1,"199":4,"249":1,"1316":2,"1870":1,"2531":1}}],["usage",{"0":{"631":1,"643":1,"655":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1170":1,"1181":1,"1212":1,"1233":1,"1250":1,"1492":1,"1567":1,"1570":1,"1602":1,"1628":1,"1669":1,"1690":1,"1717":1,"1825":1,"1850":1,"1863":1,"1871":1,"1923":1,"2070":1,"2077":1,"2101":1,"2106":1,"2111":1,"2147":1,"2175":1,"2216":1,"2291":1,"2554":1,"2557":1,"2558":1},"1":{"1826":1,"1827":1,"1828":1,"1829":1,"1830":1,"1831":1,"1832":1,"1833":1,"1834":1,"1835":1,"2071":1,"2555":1,"2556":1,"2557":1,"2558":1},"2":{"45":1,"118":1,"141":1,"145":1,"176":1,"199":1,"211":1,"231":1,"236":1,"249":3,"266":2,"370":5,"371":3,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":2,"390":2,"391":2,"393":1,"394":1,"395":1,"396":1,"400":4,"401":1,"402":2,"403":2,"404":1,"405":1,"406":1,"407":1,"411":1,"689":2,"1125":1,"1128":1,"1134":1,"1310":1,"1363":1,"1366":2,"1552":1,"1763":1,"1870":1,"1897":1,"1922":1,"1924":6,"1925":3,"1927":8,"1943":1,"1984":1,"2424":1,"2432":1,"2440":1,"2445":1,"2484":1,"2535":1,"2556":1,"2562":1,"2582":1,"2614":6,"2653":1,"2699":1,"2738":1,"2758":1}}],["us",{"0":{"2417":1,"2436":1},"1":{"2437":1,"2438":1},"2":{"6":1,"74":1,"99":1,"114":2,"160":1,"176":2,"188":1,"191":1,"213":1,"228":1,"245":1,"315":1,"324":1,"356":1,"436":1,"479":1,"485":1,"550":1,"554":1,"560":3,"585":1,"606":2,"674":3,"1251":1,"1340":2,"1392":1,"1399":1,"1447":1,"1536":2,"1622":2,"1721":1,"1859":1,"2114":1,"2150":1,"2350":1,"2358":3,"2394":2,"2417":1,"2427":2,"2436":1,"2457":1,"2494":1,"2513":5,"2608":2,"2676":1,"2706":1,"2740":1,"2741":1,"2742":7,"2769":1,"2785":1,"2787":1}}],["using",{"0":{"322":1,"365":1,"366":1,"1330":1,"1383":1,"1391":1,"1395":1,"1470":1,"1830":1,"2208":1,"2209":1,"2487":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"1384":1,"1385":1,"1386":1,"1387":1,"1388":1,"1389":1,"1392":1,"1393":1,"1394":1,"1396":1,"1397":1,"1398":1,"1399":1,"1400":1,"1401":1,"1402":1,"1403":1,"1404":1,"1405":1,"1406":1,"1407":1,"1408":1,"1409":1,"1410":1,"1411":1,"1412":1,"1471":1,"1472":1,"1473":1},"2":{"5":1,"7":1,"14":1,"16":2,"45":1,"49":2,"50":1,"65":2,"73":1,"76":1,"83":1,"103":1,"111":2,"114":4,"126":1,"132":1,"142":1,"143":1,"160":1,"176":2,"191":1,"199":1,"220":1,"232":1,"234":1,"236":1,"240":2,"241":2,"244":1,"248":1,"253":2,"255":1,"270":2,"271":1,"272":1,"311":1,"315":1,"319":2,"322":2,"324":1,"325":1,"326":1,"327":1,"331":1,"334":1,"352":1,"367":1,"374":3,"380":1,"391":1,"400":2,"428":1,"431":1,"432":1,"436":1,"440":1,"441":1,"448":1,"453":1,"455":1,"457":2,"462":1,"466":1,"467":2,"470":2,"479":1,"480":1,"502":2,"503":1,"504":1,"505":1,"510":3,"511":14,"519":1,"521":1,"532":1,"534":1,"554":3,"559":1,"584":1,"592":1,"598":1,"606":1,"626":1,"627":1,"628":1,"630":1,"643":1,"655":1,"673":2,"680":1,"688":1,"698":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1122":2,"1129":2,"1134":1,"1142":1,"1144":1,"1170":1,"1181":1,"1212":1,"1233":1,"1249":2,"1250":1,"1252":1,"1267":1,"1271":1,"1273":1,"1275":1,"1279":1,"1292":1,"1299":1,"1306":1,"1331":1,"1337":2,"1363":5,"1368":2,"1369":5,"1372":2,"1373":1,"1378":1,"1380":1,"1388":1,"1412":1,"1422":1,"1433":1,"1438":1,"1453":1,"1467":3,"1469":1,"1488":1,"1494":1,"1501":2,"1506":1,"1532":1,"1536":1,"1537":1,"1538":2,"1552":2,"1563":3,"1565":1,"1592":1,"1593":1,"1596":1,"1597":1,"1598":1,"1600":3,"1601":1,"1616":1,"1617":1,"1627":1,"1669":1,"1671":1,"1703":1,"1714":1,"1715":1,"1763":2,"1767":1,"1825":1,"1829":1,"1836":1,"1841":1,"1842":1,"1844":1,"1849":2,"1854":1,"1859":3,"1862":1,"1897":1,"1901":1,"1922":1,"1927":1,"1934":1,"1939":1,"1940":1,"1943":2,"1951":1,"1952":1,"1953":2,"1955":2,"1965":2,"1981":1,"1984":2,"1990":1,"1997":1,"1998":1,"2069":1,"2075":1,"2080":3,"2082":1,"2098":1,"2101":1,"2105":1,"2114":1,"2151":1,"2152":1,"2154":2,"2156":1,"2159":1,"2164":3,"2166":2,"2169":5,"2174":1,"2178":1,"2188":1,"2195":2,"2214":1,"2221":3,"2222":1,"2263":1,"2264":1,"2268":2,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":2,"2294":1,"2300":1,"2301":3,"2303":1,"2309":1,"2312":1,"2313":4,"2314":1,"2316":3,"2328":1,"2330":1,"2332":1,"2334":1,"2338":1,"2339":1,"2344":1,"2348":1,"2358":1,"2364":1,"2370":1,"2392":1,"2423":1,"2437":1,"2446":2,"2450":1,"2457":1,"2463":1,"2466":1,"2467":2,"2469":2,"2478":1,"2480":2,"2484":1,"2485":2,"2486":1,"2490":1,"2493":1,"2501":1,"2507":1,"2513":1,"2531":1,"2542":1,"2549":1,"2551":1,"2552":3,"2554":1,"2568":1,"2570":4,"2582":1,"2591":1,"2603":2,"2605":5,"2607":1,"2609":1,"2615":3,"2616":7,"2620":1,"2653":1,"2677":1,"2678":1,"2705":1,"2741":1,"2742":1,"2745":1,"2746":2,"2747":2,"2748":2,"2749":1,"2750":1,"2764":2,"2767":3,"2777":1,"2779":2,"2788":1,"2790":1}}],["usbmodemxxxxxx",{"2":{"2386":1}}],["usbtiny",{"2":{"2374":1}}],["usbtinyisp",{"0":{"2374":1},"1":{"2375":1},"2":{"371":1,"2374":3}}],["usbs1",{"2":{"1896":1}}],["usbser",{"2":{"629":12}}],["usb2adb",{"2":{"1316":1}}],["usb2422",{"2":{"134":1}}],["usbisactive",{"2":{"266":1}}],["usbc",{"2":{"207":2}}],["usbasploader",{"0":{"2274":1,"2385":1},"2":{"371":1,"514":1,"626":1,"629":1,"2274":3,"2385":1}}],["usbasp",{"0":{"2376":1},"1":{"2377":1},"2":{"134":1,"191":1,"371":1,"629":1,"2274":4,"2376":2,"2385":1}}],["usbpd",{"2":{"74":1}}],["usbdrv",{"0":{"21":1}}],["usb",{"0":{"2":1,"21":1,"148":1,"169":1,"184":1,"235":1,"263":1,"516":1,"1279":1,"1332":1,"1866":1,"2707":1,"2708":1,"2738":1},"1":{"170":1,"1280":1},"2":{"2":1,"21":2,"31":1,"34":1,"49":3,"50":5,"62":2,"65":1,"70":3,"73":2,"75":1,"94":2,"111":3,"112":9,"113":1,"114":7,"134":5,"145":6,"148":1,"160":4,"169":3,"170":2,"176":8,"184":4,"191":9,"199":5,"211":1,"222":9,"236":5,"240":1,"249":3,"263":2,"266":4,"334":1,"486":1,"487":3,"488":1,"502":5,"509":4,"511":7,"514":1,"515":6,"516":2,"575":1,"587":1,"626":1,"628":1,"629":1,"1123":1,"1126":1,"1129":1,"1277":3,"1316":1,"1332":2,"1353":4,"1354":4,"1436":1,"1531":5,"1826":2,"1862":2,"1865":1,"1866":4,"1867":1,"1868":2,"1925":2,"1927":1,"1956":4,"1986":1,"2072":1,"2152":1,"2156":4,"2165":3,"2169":9,"2170":4,"2171":2,"2184":1,"2188":3,"2268":1,"2274":2,"2275":1,"2276":1,"2278":1,"2280":1,"2283":1,"2285":1,"2287":3,"2288":1,"2308":2,"2314":1,"2338":4,"2351":1,"2352":1,"2353":1,"2354":2,"2358":1,"2366":2,"2374":1,"2376":1,"2378":1,"2382":1,"2383":1,"2384":1,"2385":2,"2386":1,"2388":1,"2389":2,"2392":1,"2400":4,"2440":1,"2445":1,"2553":1,"2555":3,"2565":1,"2567":1,"2568":1,"2587":2,"2595":8,"2605":1,"2610":1,"2666":1,"2699":2,"2708":1,"2711":2,"2736":3,"2738":7,"2782":1}}],["useful",{"0":{"2640":1},"1":{"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1},"2":{"427":1,"455":1,"502":1,"515":1,"550":1,"578":1,"581":1,"592":1,"630":1,"679":1,"691":1,"1213":1,"1287":1,"1289":1,"1290":1,"1306":1,"1368":1,"1379":1,"1397":1,"1401":2,"1405":2,"1415":1,"1417":1,"1440":1,"1478":1,"1496":1,"1532":1,"1536":1,"1544":1,"1549":1,"1555":3,"1600":1,"1757":1,"1844":2,"1855":1,"1860":1,"1907":2,"1913":1,"1916":1,"1922":1,"1952":3,"1954":2,"1958":1,"2082":1,"2098":1,"2150":1,"2156":1,"2169":1,"2181":1,"2208":1,"2220":1,"2264":1,"2266":1,"2272":1,"2300":1,"2305":1,"2311":1,"2355":1,"2441":1,"2534":1,"2603":1,"2609":1,"2640":1,"2642":1,"2645":1,"2742":1,"2780":1}}],["useless",{"2":{"199":1,"211":1,"266":2}}],["used",{"2":{"25":1,"49":1,"50":1,"60":1,"110":1,"120":1,"142":1,"174":1,"176":2,"203":1,"209":1,"215":1,"240":1,"243":1,"278":1,"279":1,"317":2,"324":1,"334":2,"341":1,"370":1,"374":2,"385":1,"415":1,"416":1,"435":1,"466":2,"467":1,"470":1,"497":1,"502":1,"504":1,"512":1,"513":3,"521":1,"529":5,"530":1,"534":1,"541":1,"557":1,"559":1,"568":1,"575":1,"586":1,"588":1,"597":1,"598":3,"599":1,"600":1,"602":2,"606":1,"635":4,"639":2,"673":1,"675":1,"677":1,"678":5,"679":3,"680":4,"681":2,"682":1,"686":2,"690":1,"691":1,"694":1,"697":2,"698":1,"699":1,"702":1,"703":1,"1121":3,"1123":1,"1125":1,"1126":1,"1127":1,"1129":2,"1132":2,"1133":1,"1134":1,"1211":1,"1214":2,"1232":1,"1235":1,"1257":1,"1262":1,"1263":1,"1280":1,"1284":1,"1285":1,"1286":1,"1330":1,"1337":1,"1340":1,"1341":2,"1356":2,"1371":1,"1372":1,"1373":2,"1386":1,"1391":1,"1397":1,"1398":1,"1415":1,"1422":1,"1427":1,"1430":1,"1460":1,"1468":1,"1488":1,"1495":1,"1504":1,"1531":1,"1537":1,"1552":1,"1593":1,"1608":1,"1611":1,"1664":1,"1666":1,"1695":1,"1698":1,"1701":1,"1703":1,"1704":2,"1708":2,"1709":1,"1714":1,"1769":1,"1845":1,"1846":1,"1847":1,"1853":1,"1855":1,"1857":3,"1858":2,"1860":3,"1895":1,"1897":3,"1911":1,"1913":1,"1918":3,"1919":2,"1920":1,"1927":1,"1936":1,"1937":5,"1938":1,"1942":1,"1943":1,"1948":2,"1950":1,"1952":2,"1953":1,"1956":1,"1958":1,"1965":1,"1967":1,"1974":2,"1978":2,"1979":1,"1986":2,"1993":1,"2072":2,"2076":2,"2084":1,"2085":1,"2114":1,"2150":1,"2151":2,"2152":1,"2156":2,"2157":1,"2163":1,"2164":1,"2166":2,"2170":1,"2174":1,"2177":1,"2181":2,"2182":1,"2186":1,"2187":2,"2191":1,"2199":2,"2203":1,"2207":6,"2208":1,"2209":3,"2210":1,"2216":1,"2221":1,"2264":1,"2268":1,"2274":1,"2280":1,"2291":1,"2297":1,"2301":4,"2315":1,"2319":1,"2321":2,"2323":1,"2333":2,"2337":1,"2338":1,"2339":1,"2341":1,"2353":1,"2370":1,"2389":1,"2437":1,"2442":1,"2444":2,"2447":1,"2450":3,"2452":2,"2453":1,"2487":1,"2493":1,"2526":1,"2527":1,"2531":1,"2551":1,"2554":1,"2555":5,"2556":2,"2557":4,"2558":4,"2569":1,"2574":1,"2587":2,"2592":3,"2603":2,"2605":8,"2610":1,"2612":1,"2615":11,"2616":12,"2620":1,"2626":2,"2632":1,"2633":1,"2635":2,"2636":2,"2639":1,"2653":1,"2655":2,"2675":1,"2679":2,"2683":1,"2685":1,"2686":1,"2703":1,"2710":1,"2711":2,"2722":1,"2727":1,"2732":1,"2734":1,"2741":1,"2760":1,"2788":1,"2795":1}}],["uses",{"2":{"8":1,"36":1,"46":1,"50":1,"89":1,"100":1,"114":1,"163":1,"218":1,"401":1,"403":1,"430":1,"436":1,"495":1,"510":1,"526":1,"529":1,"530":1,"554":1,"635":2,"671":1,"677":1,"686":3,"690":2,"691":1,"1134":3,"1174":1,"1258":1,"1271":1,"1277":1,"1302":1,"1305":2,"1320":1,"1352":1,"1359":1,"1369":3,"1373":2,"1399":1,"1438":1,"1442":3,"1529":1,"1565":2,"1841":1,"1842":1,"1851":2,"1859":1,"1894":1,"1895":1,"1897":1,"1906":1,"1935":1,"1936":1,"1937":1,"1947":1,"1949":1,"1959":1,"1986":2,"1988":1,"1997":1,"2071":1,"2150":1,"2152":3,"2163":1,"2263":2,"2271":1,"2276":1,"2334":3,"2346":1,"2381":1,"2445":1,"2450":2,"2453":1,"2476":3,"2493":1,"2526":1,"2545":1,"2549":1,"2562":1,"2572":2,"2585":1,"2624":1,"2631":1,"2635":1,"2653":1,"2655":1,"2747":1,"2749":1,"2776":1}}],["user\`",{"2":{"1381":1}}],["username>",{"2":{"446":1,"1417":1,"2460":1,"2461":2,"2516":3,"2526":2}}],["username",{"2":{"385":2,"425":1,"482":3,"554":2,"1413":1,"1417":2,"2460":1,"2474":1,"2475":2,"2476":2,"2477":5,"2507":1,"2592":1,"2711":1}}],["user",{"0":{"40":1,"53":1,"67":1,"72":1,"85":1,"101":1,"121":1,"140":1,"150":1,"165":1,"180":1,"193":1,"203":1,"205":1,"216":1,"225":1,"239":1,"252":1,"269":1,"369":1,"415":1,"425":1,"431":1,"450":1,"572":1,"576":1,"582":1,"588":1,"590":2,"594":1,"1396":1,"1481":1,"1564":1,"1593":1,"1594":1,"1727":1,"1728":1,"1756":1,"1816":1,"1821":1,"2061":1,"2066":1,"2230":1,"2780":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"86":1,"87":1,"88":1,"89":1,"90":1,"102":1,"103":1,"104":1,"105":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"141":1,"142":1,"143":1,"144":1,"151":1,"152":1,"153":1,"154":1,"166":1,"167":1,"168":1,"169":1,"170":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"194":1,"195":1,"196":1,"197":1,"206":1,"207":1,"217":1,"218":1,"219":1,"220":1,"221":1,"226":1,"240":1,"241":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"270":1,"271":1,"272":1,"273":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"432":1,"433":1,"434":1,"435":1,"1397":1,"1398":1,"1399":1,"1400":1,"1482":1,"1483":1,"1484":1,"1485":1,"1486":1,"1817":1,"2062":1,"2231":1},"2":{"3":1,"4":1,"7":1,"15":1,"28":1,"31":5,"34":3,"49":3,"70":3,"75":3,"90":4,"93":1,"105":8,"114":1,"125":4,"134":1,"139":1,"143":1,"160":3,"167":1,"176":6,"182":2,"185":4,"191":4,"195":2,"196":3,"199":1,"203":5,"211":4,"213":2,"220":1,"222":1,"228":2,"229":1,"231":3,"238":1,"249":7,"277":2,"352":4,"367":1,"385":1,"415":5,"422":1,"425":4,"429":1,"430":6,"431":2,"433":3,"435":3,"440":1,"511":1,"530":1,"534":3,"556":1,"566":4,"568":4,"571":1,"572":1,"573":1,"574":1,"576":1,"577":1,"579":1,"582":1,"583":1,"586":2,"587":1,"588":4,"590":2,"591":2,"592":2,"593":1,"594":1,"595":1,"606":1,"616":1,"1171":1,"1282":1,"1289":1,"1339":1,"1340":1,"1368":3,"1369":35,"1370":3,"1372":1,"1378":2,"1380":1,"1381":2,"1382":1,"1396":4,"1397":4,"1412":2,"1415":1,"1416":1,"1420":5,"1421":2,"1422":2,"1435":1,"1437":1,"1441":2,"1467":4,"1474":1,"1477":1,"1482":5,"1483":2,"1486":1,"1543":2,"1544":2,"1548":1,"1587":4,"1591":1,"1592":2,"1593":2,"1594":4,"1598":4,"1631":1,"1632":1,"1671":2,"1672":1,"1716":1,"1718":2,"1724":2,"1727":1,"1728":1,"1752":1,"1754":2,"1755":1,"1756":1,"1767":3,"1771":4,"1829":1,"1830":1,"1844":1,"1851":1,"1852":1,"1853":1,"1854":3,"1858":1,"1860":5,"1861":2,"1864":3,"1868":1,"1906":1,"1910":1,"1911":3,"1912":1,"1913":2,"1914":1,"1915":2,"1916":1,"1917":1,"1918":2,"1919":3,"1921":2,"1950":3,"1954":4,"1955":2,"1959":3,"1960":3,"1962":2,"1963":2,"1967":1,"1971":2,"1972":1,"1977":1,"1978":2,"1979":3,"1986":2,"1987":3,"1989":1,"1990":3,"1995":4,"1996":3,"1997":2,"1998":1,"2072":2,"2080":1,"2081":3,"2082":5,"2103":1,"2104":1,"2107":1,"2108":1,"2109":2,"2116":1,"2168":14,"2175":1,"2177":1,"2178":2,"2181":9,"2190":3,"2196":1,"2199":2,"2200":1,"2204":1,"2205":3,"2206":7,"2207":4,"2208":4,"2209":4,"2221":1,"2230":1,"2234":1,"2235":1,"2236":1,"2266":2,"2281":1,"2283":1,"2285":1,"2287":1,"2296":1,"2299":1,"2301":4,"2303":4,"2338":2,"2339":2,"2344":1,"2345":3,"2352":1,"2362":1,"2452":2,"2453":2,"2454":1,"2460":2,"2466":1,"2474":1,"2477":1,"2479":2,"2480":1,"2482":1,"2483":1,"2484":1,"2504":1,"2507":2,"2518":2,"2530":5,"2552":1,"2557":1,"2561":1,"2582":1,"2604":1,"2605":6,"2606":2,"2612":1,"2613":1,"2615":2,"2616":10,"2643":1,"2645":2,"2653":1,"2655":2,"2735":1,"2740":1,"2748":2,"2767":1,"2776":1,"2780":1,"2788":3,"2796":1}}],["userspace",{"0":{"228":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"1413":1,"1415":1,"2296":1,"2467":1,"2480":1,"2482":1,"2483":1,"2485":1,"2486":1},"1":{"393":1,"394":1,"395":1,"396":1,"397":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"2468":1,"2469":1,"2470":1,"2471":1,"2472":1,"2473":1,"2474":1,"2475":1,"2476":1,"2477":1,"2478":1,"2479":1,"2481":1,"2482":1,"2483":1,"2484":1,"2485":1,"2486":1,"2487":1},"2":{"74":2,"76":1,"134":1,"176":1,"191":3,"199":1,"211":1,"213":2,"222":1,"224":1,"228":4,"236":3,"241":2,"249":1,"253":2,"265":2,"268":2,"270":2,"275":1,"393":6,"394":6,"395":4,"396":3,"397":8,"556":1,"1413":2,"1414":2,"1415":1,"1419":1,"1420":2,"1421":3,"1422":2,"1435":1,"1767":2,"1990":2,"2288":1,"2296":1,"2299":1,"2467":1,"2476":1,"2479":1,"2480":5,"2481":1,"2482":3,"2483":3,"2484":2,"2485":5,"2486":5,"2487":1,"2604":1,"2605":1,"2763":1}}],["users",{"0":{"1376":1,"1377":1,"1710":1},"1":{"1711":1,"1712":1,"1713":1},"2":{"0":1,"9":1,"13":1,"19":1,"39":1,"52":1,"62":1,"70":1,"114":1,"118":1,"131":1,"139":1,"141":1,"166":2,"173":1,"201":1,"221":2,"228":1,"234":1,"243":2,"263":1,"276":1,"308":1,"309":1,"322":1,"337":1,"352":5,"388":1,"401":1,"414":1,"415":1,"417":1,"423":1,"424":1,"435":1,"450":1,"451":1,"496":1,"519":1,"527":1,"559":1,"575":1,"606":1,"609":1,"697":1,"1275":1,"1302":1,"1374":1,"1377":1,"1378":2,"1383":2,"1413":4,"1414":1,"1419":2,"1420":1,"1484":1,"1536":1,"1593":1,"1708":1,"1723":1,"2221":1,"2296":2,"2299":1,"2338":1,"2339":1,"2343":1,"2344":4,"2345":1,"2474":1,"2476":2,"2479":1,"2480":2,"2498":2,"2502":1,"2516":1,"2525":1,"2605":2,"2612":1,"2616":1,"2695":1,"2757":3,"2758":1}}],["use",{"0":{"6":1,"17":1,"30":1,"32":1,"33":1,"164":1,"1304":1,"1472":1,"1694":1,"1847":1,"1972":1,"1979":1,"2199":1,"2303":1,"2332":1,"2791":1},"1":{"31":1,"34":1,"1473":1},"2":{"1":1,"7":1,"17":1,"25":1,"30":1,"31":1,"32":1,"33":1,"34":1,"36":1,"37":1,"43":1,"45":1,"49":2,"70":1,"74":1,"76":1,"80":1,"87":1,"89":1,"93":1,"94":3,"95":1,"99":1,"103":1,"107":1,"114":5,"118":1,"119":3,"126":1,"133":2,"134":9,"145":3,"160":5,"166":1,"167":1,"174":1,"176":15,"179":1,"190":1,"191":15,"194":2,"199":10,"206":1,"211":11,"215":1,"218":1,"220":2,"222":2,"232":1,"236":8,"240":1,"249":4,"256":1,"260":1,"266":2,"277":3,"304":1,"311":1,"313":1,"318":1,"330":1,"331":1,"334":1,"342":1,"349":1,"357":1,"371":1,"378":1,"395":1,"401":1,"402":1,"403":1,"405":2,"430":3,"432":4,"435":1,"440":1,"442":2,"445":2,"446":1,"447":1,"453":6,"454":3,"455":2,"456":1,"457":2,"460":3,"461":1,"462":2,"466":1,"467":1,"469":2,"470":1,"471":1,"472":1,"473":1,"474":1,"475":1,"477":1,"479":3,"481":1,"483":1,"484":1,"487":2,"488":1,"500":1,"502":11,"505":2,"508":1,"509":3,"510":1,"511":1,"515":1,"516":2,"522":1,"529":1,"532":1,"537":1,"540":1,"541":1,"545":1,"554":2,"557":1,"563":2,"566":2,"568":1,"570":2,"571":1,"573":1,"574":1,"586":1,"588":2,"592":1,"597":1,"606":2,"611":2,"612":1,"613":1,"616":1,"621":1,"622":1,"623":1,"625":1,"626":1,"629":1,"631":1,"633":1,"635":1,"641":2,"643":2,"655":2,"656":2,"659":1,"671":1,"673":1,"679":2,"682":1,"684":1,"686":12,"687":8,"688":2,"690":5,"697":1,"698":1,"700":1,"702":1,"703":6,"707":1,"726":1,"730":2,"734":1,"756":2,"760":1,"785":2,"792":1,"817":2,"822":1,"849":2,"857":1,"884":2,"891":1,"918":2,"925":1,"952":2,"959":1,"986":2,"993":1,"1020":2,"1027":1,"1054":2,"1061":1,"1088":2,"1095":1,"1121":1,"1122":1,"1124":3,"1127":1,"1129":1,"1130":1,"1132":5,"1133":5,"1134":1,"1142":2,"1144":2,"1148":1,"1169":1,"1170":2,"1174":3,"1181":2,"1185":1,"1212":1,"1213":1,"1214":8,"1218":1,"1219":1,"1233":1,"1235":7,"1250":2,"1262":1,"1263":7,"1265":1,"1266":2,"1267":7,"1273":1,"1275":2,"1276":1,"1279":3,"1282":2,"1287":1,"1305":3,"1306":1,"1307":1,"1310":1,"1313":2,"1317":1,"1323":1,"1325":1,"1327":2,"1328":1,"1337":2,"1338":1,"1340":1,"1347":2,"1349":1,"1350":1,"1363":2,"1366":1,"1367":1,"1368":1,"1369":9,"1371":1,"1372":1,"1373":2,"1377":1,"1378":3,"1381":2,"1383":1,"1388":2,"1389":2,"1390":2,"1392":1,"1396":3,"1398":2,"1400":1,"1401":1,"1404":1,"1407":2,"1413":1,"1414":1,"1415":2,"1416":1,"1417":1,"1420":7,"1421":1,"1422":4,"1423":1,"1430":3,"1433":2,"1441":1,"1442":2,"1467":2,"1476":1,"1479":1,"1482":2,"1485":2,"1487":1,"1488":1,"1490":1,"1494":1,"1503":1,"1504":1,"1506":6,"1507":4,"1528":1,"1529":1,"1532":2,"1533":1,"1536":1,"1537":2,"1538":2,"1546":1,"1548":1,"1549":1,"1552":1,"1555":1,"1562":1,"1564":1,"1565":1,"1566":2,"1567":1,"1592":1,"1594":1,"1600":1,"1611":1,"1612":1,"1669":1,"1693":3,"1696":1,"1706":2,"1708":3,"1709":1,"1711":1,"1712":1,"1715":4,"1761":4,"1763":1,"1767":2,"1771":2,"1829":1,"1837":1,"1839":1,"1843":2,"1844":1,"1845":1,"1851":1,"1852":1,"1855":2,"1857":1,"1858":10,"1862":1,"1864":1,"1893":1,"1894":1,"1895":1,"1896":3,"1897":1,"1899":3,"1900":2,"1901":1,"1906":1,"1908":1,"1911":3,"1912":1,"1919":2,"1921":1,"1922":1,"1925":1,"1935":1,"1936":1,"1937":4,"1938":1,"1942":1,"1947":1,"1948":1,"1949":1,"1950":5,"1952":1,"1953":1,"1956":2,"1959":1,"1961":1,"1969":1,"1975":1,"1982":4,"1984":1,"1990":2,"1992":1,"1995":2,"1997":2,"1998":1,"2070":1,"2073":6,"2075":1,"2077":1,"2079":1,"2080":1,"2082":2,"2098":1,"2140":1,"2150":1,"2151":1,"2152":2,"2155":2,"2156":2,"2158":2,"2163":1,"2165":1,"2166":3,"2167":6,"2170":1,"2171":1,"2175":1,"2176":1,"2179":2,"2180":1,"2184":1,"2187":2,"2188":1,"2190":1,"2191":1,"2199":2,"2200":2,"2206":1,"2207":3,"2208":2,"2209":4,"2219":3,"2220":2,"2264":2,"2267":3,"2268":1,"2269":2,"2271":1,"2276":3,"2281":1,"2282":1,"2291":2,"2293":1,"2296":1,"2297":2,"2298":1,"2300":6,"2301":3,"2312":1,"2313":3,"2315":1,"2318":2,"2319":1,"2338":1,"2341":3,"2350":2,"2359":1,"2362":2,"2365":1,"2368":1,"2372":1,"2374":1,"2384":1,"2386":1,"2394":1,"2434":2,"2435":1,"2444":4,"2450":1,"2453":1,"2460":1,"2463":1,"2466":1,"2470":1,"2475":2,"2477":1,"2480":3,"2481":1,"2482":1,"2483":1,"2484":3,"2485":1,"2489":1,"2491":1,"2494":1,"2506":1,"2507":2,"2508":1,"2513":1,"2516":1,"2518":1,"2520":1,"2527":6,"2529":1,"2530":3,"2537":1,"2545":4,"2551":1,"2552":2,"2553":1,"2554":1,"2560":1,"2563":1,"2565":1,"2569":4,"2572":1,"2573":1,"2575":2,"2576":2,"2577":2,"2580":2,"2588":1,"2589":1,"2593":1,"2595":2,"2597":2,"2603":2,"2605":8,"2607":1,"2613":1,"2614":3,"2615":3,"2616":3,"2617":3,"2641":1,"2644":3,"2646":4,"2647":1,"2648":1,"2649":2,"2650":1,"2653":1,"2654":3,"2712":2,"2713":1,"2715":2,"2716":2,"2717":1,"2722":2,"2727":1,"2728":2,"2731":1,"2733":1,"2734":1,"2736":3,"2737":1,"2739":1,"2741":1,"2744":3,"2750":1,"2758":1,"2759":2,"2762":2,"2767":4,"2777":4,"2779":1,"2782":1,"2785":3,"2786":1,"2796":1}}],["hkcu",{"2":{"2221":1}}],["hrl",{"2":{"2191":1}}],["hl",{"2":{"2191":3}}],["hwdb",{"2":{"2355":1}}],["hw",{"2":{"1943":1}}],["hfuse",{"2":{"2387":2}}],["hf",{"2":{"1610":13,"1611":2,"1617":2}}],["hfdkb",{"2":{"217":1}}],["hm",{"2":{"1528":1}}],["hc",{"2":{"1528":1,"2338":2}}],["hz",{"2":{"702":1,"786":1,"788":11,"850":1,"853":6,"885":1,"887":6,"919":1,"921":6,"953":1,"955":6,"987":1,"989":6,"1089":1,"1091":10,"2738":1}}],["h>",{"2":{"686":2,"687":2,"690":2,"1132":1,"1133":1,"2616":1}}],["h1",{"2":{"616":1,"617":3}}],["hyper",{"2":{"2293":2,"2449":1}}],["hyphen",{"2":{"1536":1}}],["hypr",{"2":{"1336":1,"2412":2,"2413":1,"2449":2}}],["hypothetical",{"2":{"597":1}}],["hysteresis",{"2":{"114":1}}],["h87a",{"2":{"530":5}}],["h87g2",{"2":{"249":1}}],["hurt",{"2":{"2318":1}}],["hurry",{"2":{"1449":1}}],["hundreds",{"2":{"1863":1}}],["hungarian",{"2":{"1392":1,"2742":3}}],["huge",{"2":{"1565":1}}],["hum5",{"2":{"1616":1}}],["hum4",{"2":{"1616":1}}],["hum3",{"2":{"1616":1}}],["hum2",{"2":{"1616":1}}],["hum1",{"2":{"1616":1}}],["hum",{"2":{"1616":6}}],["humbert",{"2":{"624":1,"1302":1}}],["humans",{"2":{"530":1}}],["human",{"2":{"377":1,"436":1,"2450":1,"2654":1,"2670":1}}],["hui",{"2":{"530":2,"1986":1,"2416":1}}],["hud",{"2":{"530":2,"1986":2,"2416":1}}],["hub",{"0":{"1334":1},"2":{"249":1}}],["hub20",{"2":{"241":2}}],["hub16",{"2":{"241":2}}],["hues",{"2":{"1987":2,"1989":2,"2078":1}}],["hueu",{"2":{"1597":1,"2072":1,"2415":1}}],["hued",{"2":{"1597":1,"2072":1,"2415":1}}],["hue",{"0":{"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2092":1},"1":{"2027":1},"2":{"49":1,"111":1,"183":2,"222":3,"292":1,"506":2,"1598":4,"1986":4,"1987":44,"1992":2,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2071":2,"2072":6,"2073":4,"2077":1,"2092":12,"2095":2,"2338":2,"2415":6,"2416":4,"2616":13,"2636":1,"2733":4,"2734":4,"2750":3}}],["h2",{"2":{"211":1,"617":2}}],["hjson",{"2":{"191":1,"199":1,"222":1,"610":2,"2605":1}}],["hnahkb",{"2":{"154":3,"160":1}}],["hpp",{"2":{"145":1}}],["http",{"2":{"315":1,"358":1,"402":1,"522":1,"551":1,"558":1,"1417":1,"1565":1,"2609":1}}],["https",{"2":{"2":1,"21":1,"196":1,"236":1,"314":1,"315":1,"317":4,"359":1,"370":1,"515":1,"520":1,"521":1,"551":1,"554":1,"557":1,"623":1,"624":5,"674":7,"675":1,"701":1,"1272":1,"1273":1,"1279":3,"1311":1,"1312":3,"1316":2,"1317":1,"1318":3,"1320":1,"1326":2,"1327":1,"1330":2,"1334":1,"1335":2,"1396":1,"1718":1,"2078":1,"2291":1,"2303":4,"2342":2,"2470":1,"2477":2,"2482":1,"2483":1,"2501":1,"2516":8,"2526":5,"2545":1,"2552":1,"2592":2,"2605":3,"2711":1}}],["html",{"2":{"279":1,"551":1,"1279":1,"1317":1,"1327":1,"2342":1}}],["ht32",{"2":{"130":1,"134":1}}],["hd44780u",{"2":{"1627":1}}],["hd44780",{"0":{"1626":1,"1634":1,"1636":1,"1637":1,"1638":1,"1640":1,"1641":1,"1643":1,"1645":1,"1647":1,"1649":1,"1651":1,"1653":1,"1655":1,"1657":1,"1660":1,"1662":1,"1664":1,"1666":1},"1":{"1627":1,"1628":1,"1629":1,"1630":1,"1631":1,"1632":1,"1633":1,"1634":1,"1635":2,"1636":1,"1637":1,"1638":1,"1639":2,"1640":1,"1641":1,"1642":2,"1643":1,"1644":2,"1645":1,"1646":2,"1647":1,"1648":2,"1649":1,"1650":2,"1651":1,"1652":2,"1653":1,"1654":2,"1655":1,"1656":2,"1657":1,"1658":2,"1659":2,"1660":1,"1661":2,"1662":1,"1663":2,"1664":1,"1665":2,"1666":1,"1667":2},"2":{"64":1,"145":1,"1629":7,"1631":2,"1632":4,"1647":1,"1651":1,"1660":1,"2605":2}}],["hs60v2",{"0":{"1280":1}}],["hs60",{"2":{"277":1}}],["hs",{"2":{"211":1,"266":1}}],["hsv888",{"2":{"2636":1}}],["hsvs",{"2":{"191":1}}],["hsv",{"0":{"2054":2},"1":{"2055":2},"2":{"49":1,"114":1,"160":1,"1369":7,"1988":1,"1991":22,"1997":11,"1998":1,"2055":2,"2080":5,"2082":2,"2089":7,"2092":2,"2096":24,"2616":1,"2636":3,"2733":1,"2734":1}}],["hsgw",{"2":{"37":2}}],["hierarchies",{"2":{"2531":1,"2542":1}}],["hierarchy",{"2":{"176":1,"568":1}}],["hich",{"2":{"1921":1}}],["hiragana",{"2":{"1317":1,"2430":2}}],["himself",{"2":{"1302":1}}],["his",{"2":{"1302":1,"2309":1,"2320":1}}],["history",{"0":{"606":1},"2":{"2440":1,"2513":1}}],["historically",{"2":{"172":1,"189":1,"273":1,"276":1,"606":1,"2605":1}}],["historical",{"2":{"126":1,"127":1,"241":1,"245":1,"253":1,"270":1,"678":1,"2480":1}}],["hint",{"0":{"618":1},"1":{"619":1,"620":1},"2":{"618":1,"2513":1}}],["hineybush",{"2":{"530":4}}],["hinder",{"2":{"474":1}}],["hi",{"2":{"266":1,"1760":1}}],["hillside48",{"2":{"176":1}}],["hillside",{"2":{"160":1,"168":2,"181":6,"191":1}}],["hits",{"2":{"1366":1,"1766":4,"1987":5}}],["hitting",{"2":{"626":2,"1545":1,"2207":1,"2264":1,"2301":1,"2526":1,"2529":1,"2647":1,"2777":1}}],["hit",{"2":{"114":1,"137":1,"291":1,"505":1,"627":1,"1307":1,"1366":1,"1443":1,"1449":1,"1545":4,"1689":1,"1716":1,"1722":1,"1724":1,"1766":5,"1859":1,"1987":7,"2183":1,"2191":1,"2198":3,"2207":4,"2220":1,"2272":1,"2547":1,"2757":1}}],["highest",{"2":{"496":1,"688":1,"1366":1,"1369":1,"1375":1,"1378":2,"1380":1,"1381":1,"1443":1,"1488":1,"1489":1,"1563":1,"1760":1,"1851":1,"1960":1,"1962":1,"1977":2,"1978":2,"1996":3,"2175":1,"2210":1,"2442":1,"2644":1,"2683":1}}],["higher",{"2":{"114":1,"125":1,"185":1,"341":1,"502":1,"505":1,"688":1,"1136":1,"1372":1,"1375":2,"1377":1,"1859":1,"1943":1,"2208":1,"2440":2,"2442":4,"2445":1,"2603":2,"2613":1,"2615":1,"2644":1,"2759":1,"2776":1}}],["highlight",{"2":{"435":1}}],["highlights",{"2":{"381":1}}],["highlighted",{"2":{"272":1}}],["highly",{"2":{"182":1,"692":1,"1414":1,"2140":1,"2380":1,"2525":1,"2607":1}}],["high",{"2":{"49":2,"92":1,"114":1,"243":2,"279":1,"352":1,"502":3,"509":1,"510":2,"517":1,"556":1,"673":1,"688":4,"696":5,"1126":1,"1134":1,"1169":1,"1171":1,"1251":2,"1252":1,"1262":1,"1368":1,"1436":1,"1443":1,"1488":2,"1494":1,"1495":1,"1595":1,"1600":1,"1614":2,"1615":2,"1671":3,"1721":1,"1753":1,"1755":2,"1841":2,"2162":1,"2188":1,"2350":1,"2382":1,"2383":1,"2384":1,"2385":1,"2387":2,"2440":1,"2445":1,"2569":1,"2587":1,"2616":1,"2658":1,"2715":1,"2716":1,"2724":1,"2759":1,"2774":1,"2775":1,"2781":1}}],["hidden",{"2":{"2640":1,"2788":1}}],["hid4java",{"2":{"1925":1}}],["hidapi",{"2":{"1925":1}}],["hidraw",{"2":{"1291":1}}],["hidbootflash",{"2":{"2275":1}}],["hidboot",{"2":{"629":1}}],["hidusb",{"2":{"240":1,"626":1,"627":2,"629":4}}],["hides",{"2":{"2446":1}}],["hide",{"2":{"199":1,"1421":1}}],["hid",{"0":{"1286":1,"1291":1,"1922":1,"1929":1,"1931":1,"2276":1,"2678":1},"1":{"1923":1,"1924":1,"1925":1,"1926":1,"1927":1,"1928":1,"1929":1,"1930":2,"1931":1,"1932":2},"2":{"2":1,"34":1,"49":2,"50":1,"114":3,"154":2,"160":2,"199":2,"222":2,"236":1,"266":1,"371":1,"503":1,"516":1,"625":2,"629":1,"1286":1,"1291":4,"1292":1,"1309":1,"1310":1,"1315":1,"1528":1,"1715":1,"1752":1,"1870":2,"1905":1,"1922":2,"1924":4,"1925":7,"1926":2,"1927":11,"1929":1,"1931":1,"1950":3,"1956":4,"1986":1,"2072":1,"2273":1,"2275":1,"2276":6,"2277":1,"2301":2,"2353":1,"2354":1,"2394":1,"2424":1,"2440":1,"2445":1,"2605":1,"2610":1,"2678":1,"2688":1,"2699":2,"2740":1,"2777":1}}],["h7",{"2":{"49":1}}],["hhkbs",{"2":{"36":2}}],["hhkb",{"0":{"35":1,"36":1,"257":1,"258":1},"1":{"36":1},"2":{"35":3,"36":8,"211":2,"256":2,"257":1,"258":1,"1320":1}}],["hebrew",{"2":{"2742":2}}],["heir",{"2":{"1921":1}}],["heights",{"2":{"1858":1}}],["height",{"2":{"111":1,"114":1,"1855":2,"1858":3,"1859":3,"1860":1,"1939":2,"2179":2,"2180":3,"2615":15,"2616":9,"2626":2,"2633":1,"2654":1,"2725":1}}],["henkan",{"2":{"1317":1,"2430":1}}],["hence",{"2":{"685":1,"1366":1,"1438":1}}],["hey",{"2":{"343":1,"344":1,"345":1,"346":1,"349":1}}],["her",{"2":{"1603":1}}],["hertz",{"2":{"688":1}}],["herringbone",{"2":{"197":4}}],["here",{"0":{"1297":1},"2":{"31":1,"213":1,"233":1,"264":1,"274":1,"306":1,"316":1,"323":1,"324":2,"327":1,"329":1,"330":1,"331":1,"334":1,"335":2,"336":1,"391":1,"453":1,"485":1,"501":1,"515":1,"534":1,"554":5,"560":2,"562":1,"565":2,"566":2,"570":1,"586":1,"609":1,"614":1,"621":1,"629":1,"673":1,"688":1,"1272":1,"1273":1,"1279":1,"1299":1,"1305":1,"1308":1,"1324":1,"1334":1,"1337":1,"1368":1,"1369":1,"1383":1,"1388":1,"1396":2,"1414":2,"1416":1,"1420":1,"1442":1,"1467":1,"1468":1,"1487":1,"1490":1,"1501":2,"1534":1,"1555":4,"1560":1,"1561":1,"1568":1,"1600":1,"1706":1,"1763":1,"1921":1,"1925":2,"1927":1,"1933":1,"1956":1,"1960":1,"1977":1,"1978":1,"1984":1,"1997":1,"2078":1,"2079":1,"2157":1,"2164":1,"2198":1,"2199":1,"2202":1,"2207":2,"2208":2,"2209":1,"2219":1,"2280":1,"2299":1,"2300":1,"2301":1,"2303":2,"2307":1,"2311":1,"2314":1,"2316":2,"2317":1,"2318":1,"2337":1,"2350":2,"2352":1,"2353":1,"2357":1,"2387":2,"2390":1,"2406":1,"2413":1,"2446":1,"2449":1,"2463":1,"2470":1,"2480":1,"2482":1,"2498":1,"2512":1,"2513":1,"2514":1,"2516":1,"2523":1,"2524":1,"2545":1,"2547":1,"2552":1,"2561":1,"2594":1,"2605":1,"2607":2,"2640":1,"2651":1,"2709":1,"2741":1,"2749":1,"2760":1,"2764":1,"2767":1,"2778":1,"2780":2,"2785":1,"2787":1,"2789":1}}],["hecomi",{"2":{"154":2}}],["heated",{"2":{"2311":1}}],["heat",{"2":{"1988":1,"2309":1,"2311":3}}],["heating",{"2":{"1988":1,"2311":1,"2560":1}}],["heatmap",{"0":{"1988":1},"2":{"145":1,"176":2,"211":1,"1987":3,"1988":8,"2750":1}}],["heavily",{"2":{"1294":1,"1353":1,"1354":1,"1771":1,"1995":1}}],["heavy",{"2":{"160":1,"249":1,"251":1,"1256":1,"2493":1}}],["healthy",{"2":{"627":1}}],["headings",{"0":{"617":1},"2":{"617":3}}],["heading",{"2":{"616":3}}],["headroom",{"2":{"134":2}}],["head",{"2":{"99":1,"310":1,"319":1,"320":1,"347":1,"1296":1,"1301":1,"2513":6,"2543":1,"2546":1,"2548":1}}],["headers",{"2":{"94":1,"145":1,"199":1,"211":3,"249":2,"282":3,"294":1,"341":1,"559":1,"1863":1,"2603":2,"2740":1,"2741":1,"2742":1}}],["header",{"0":{"2609":1,"2625":1,"2632":1,"2742":1},"2":{"4":1,"134":1,"176":1,"191":6,"211":1,"222":2,"249":1,"277":1,"404":1,"453":1,"501":1,"534":1,"1592":1,"2348":1,"2367":1,"2378":2,"2391":1,"2489":1,"2603":4,"2624":2,"2625":2,"2626":3,"2627":3,"2628":2,"2631":2,"2632":8,"2633":3,"2634":2,"2635":3,"2636":2,"2637":2,"2638":2,"2740":1,"2741":3,"2742":4}}],["hexnumpad",{"2":{"2234":1,"2235":1,"2236":1}}],["hexadecimal",{"2":{"2129":1,"2131":1,"2133":1,"2135":1,"2219":1,"2738":2}}],["hex6c",{"2":{"211":1}}],["hex",{"2":{"94":1,"145":1,"199":1,"371":1,"387":1,"513":1,"612":2,"1275":1,"1324":6,"1422":1,"1927":1,"2113":1,"2221":2,"2267":1,"2268":1,"2269":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":2,"2291":1,"2300":3,"2301":4,"2316":1,"2317":1,"2385":1,"2386":6,"2387":1,"2388":4,"2464":3,"2466":1,"2476":1,"2491":3,"2492":1,"2508":3,"2713":1}}],["helios",{"0":{"1358":1},"2":{"199":1,"1348":2,"1352":4,"1359":4,"1669":1,"2584":1,"2751":1}}],["helix",{"0":{"55":1},"2":{"55":52,"114":1,"133":1,"134":1,"145":1,"160":1,"211":1,"266":1,"1852":1}}],["held",{"2":{"145":1,"194":3,"623":1,"1310":1,"1321":1,"1337":1,"1340":1,"1372":1,"1404":1,"1405":1,"1449":2,"1451":1,"1468":1,"1479":1,"1483":2,"1540":1,"1555":2,"1602":1,"1604":1,"1620":3,"1689":1,"1692":1,"1708":1,"1712":2,"1713":1,"1840":1,"1841":1,"1844":2,"1845":1,"1911":2,"1960":1,"1965":1,"1966":1,"1986":10,"2072":10,"2146":1,"2148":7,"2149":1,"2150":9,"2151":1,"2163":1,"2190":1,"2194":5,"2199":4,"2206":1,"2207":3,"2208":1,"2209":2,"2274":1,"2301":1,"2353":1,"2394":2,"2395":2,"2403":1,"2406":1,"2413":22,"2415":10,"2416":10,"2421":7,"2422":5,"2432":1,"2446":1,"2449":23,"2453":1,"2526":1,"2529":1,"2611":2,"2690":1,"2693":1,"2698":1,"2768":5,"2769":1,"2770":1,"2771":2,"2772":1,"2773":2,"2777":1}}],["helped",{"2":{"2515":1}}],["helper",{"2":{"49":1,"2168":1,"2308":1}}],["helpers",{"0":{"231":1},"2":{"49":1,"199":2,"211":1,"236":1}}],["helping",{"2":{"2305":1,"2457":1}}],["helpful",{"2":{"620":2,"1468":1,"1721":1,"1977":1,"2075":1,"2169":1,"2312":1,"2443":1,"2444":1,"2458":1,"2753":1}}],["help=",{"2":{"430":1,"441":2}}],["helps",{"2":{"173":1,"380":1,"477":1,"511":1,"1302":1,"1855":2,"2179":1,"2220":1,"2311":3,"2313":1,"2549":1,"2706":1,"2761":1}}],["help",{"0":{"356":1,"553":1,"2364":1,"2752":1},"1":{"2753":1,"2754":1,"2755":1},"2":{"132":1,"173":1,"228":1,"324":1,"393":2,"394":2,"395":2,"396":2,"402":2,"403":2,"411":2,"446":1,"485":1,"550":2,"553":1,"554":1,"556":1,"557":1,"567":1,"585":1,"613":1,"615":2,"623":1,"1374":1,"1377":1,"1390":1,"1443":1,"1453":1,"1474":1,"1568":4,"1771":1,"1995":1,"2161":1,"2214":1,"2289":1,"2300":1,"2306":1,"2307":1,"2312":1,"2319":1,"2325":2,"2350":1,"2361":1,"2364":1,"2365":1,"2394":2,"2431":2,"2439":1,"2489":1,"2494":1,"2507":1,"2513":3,"2549":2,"2560":1,"2603":1,"2605":1,"2607":1,"2614":6,"2676":1,"2744":1,"2745":1,"2752":1,"2753":1,"2766":1}}],["hello",{"0":{"1631":1,"2116":1},"2":{"23":1,"120":1,"426":1,"430":10,"432":1,"470":1,"1391":1,"1392":1,"1473":3,"1631":1,"1648":1,"2116":3,"2192":1,"2616":1}}],["hobbyist",{"2":{"2456":1}}],["hop",{"2":{"1295":1,"2787":1}}],["hopefully",{"2":{"560":1,"2791":1}}],["hope",{"2":{"245":1,"446":1,"1417":1,"2609":1}}],["hover",{"2":{"540":1,"2552":1}}],["housings",{"2":{"2311":1}}],["housekeeping",{"0":{"587":1,"588":1},"1":{"588":1},"2":{"75":1,"92":1,"277":1,"587":2,"588":2,"2168":2,"2616":7}}],["hours",{"2":{"358":1,"551":1}}],["home=",{"2":{"365":1,"366":1}}],["homebrew",{"0":{"365":1},"2":{"365":1,"2276":1,"2470":1,"2500":1,"2501":1}}],["home",{"0":{"1637":1},"2":{"277":1,"367":1,"373":1,"388":1,"393":1,"394":1,"397":4,"530":2,"1398":7,"1548":1,"1556":1,"1624":1,"1632":1,"1637":1,"1722":2,"1910":3,"2207":1,"2293":1,"2394":5,"2431":2,"2432":2,"2433":1,"2447":1,"2461":1,"2502":1,"2507":2,"2605":1,"2614":6,"2779":1}}],["hood",{"2":{"436":1,"611":1}}],["hoodrowg",{"2":{"211":1}}],["hooking",{"2":{"584":1,"585":1,"1891":1}}],["hooks",{"0":{"1594":1},"2":{"277":1,"567":1,"1594":1,"1761":1,"1982":1,"2105":1,"2188":1,"2190":2}}],["hook",{"0":{"1556":1,"1906":1},"2":{"199":1,"272":1,"584":1,"1423":1,"1563":1,"1891":2,"2568":1}}],["hooked",{"2":{"198":1,"506":1}}],["horizontally",{"2":{"1859":1,"1958":1,"1987":1}}],["horizontal",{"2":{"1845":1,"1859":1,"1937":1,"1945":1,"1956":1,"2616":1,"2725":1,"2727":1,"2734":1}}],["horrortroll",{"2":{"199":1}}],["horn",{"2":{"176":1}}],["hole",{"2":{"2305":1,"2567":1}}],["holiday",{"2":{"176":1}}],["holds",{"2":{"195":1,"1467":2,"1468":3,"1603":2,"1689":1,"2200":1,"2207":1,"2440":2,"2445":2,"2529":1,"2776":1}}],["holdings",{"2":{"211":1}}],["holding",{"0":{"1555":1},"2":{"137":2,"626":2,"1340":1,"1422":2,"1448":1,"1453":1,"1467":1,"1468":1,"1469":1,"1712":1,"1713":1,"1840":5,"1940":1,"1965":1,"1966":1,"2190":1,"2220":1,"2269":1,"2276":1,"2344":1,"2394":1,"2440":1,"2693":1,"2767":1,"2777":2,"2778":1}}],["hold",{"0":{"22":1,"195":1,"1345":1,"1469":1,"2206":1,"2453":1,"2454":1,"2765":1,"2768":1,"2774":1,"2775":1},"1":{"2766":1,"2767":1,"2768":1,"2769":2,"2770":2,"2771":2,"2772":2,"2773":2,"2774":2,"2775":2,"2776":1,"2777":1,"2778":1,"2779":1,"2780":1},"2":{"22":1,"112":4,"114":1,"134":2,"160":2,"176":2,"191":2,"194":8,"195":5,"199":3,"203":1,"206":3,"249":1,"505":18,"624":1,"626":2,"1307":1,"1321":1,"1336":19,"1345":1,"1372":1,"1390":1,"1405":2,"1446":1,"1448":1,"1449":2,"1451":1,"1453":1,"1460":1,"1468":5,"1469":2,"1483":2,"1532":1,"1537":1,"1553":3,"1555":5,"1559":1,"1567":1,"1689":1,"1691":1,"1692":1,"1708":1,"1711":3,"1712":2,"1713":2,"1843":1,"1844":1,"1940":3,"1965":2,"1972":1,"2150":1,"2206":33,"2207":16,"2208":4,"2209":6,"2217":2,"2234":2,"2275":1,"2287":2,"2301":1,"2308":1,"2311":2,"2405":1,"2412":19,"2418":1,"2449":1,"2453":4,"2454":3,"2455":1,"2489":4,"2529":2,"2537":1,"2605":2,"2713":4,"2730":1,"2763":1,"2765":2,"2766":1,"2767":1,"2768":10,"2769":1,"2770":4,"2771":6,"2772":4,"2774":19,"2775":14,"2776":2,"2779":1,"2793":4}}],["honor",{"2":{"176":1,"2480":1}}],["honeycomb",{"2":{"144":2}}],["hot",{"2":{"1987":1,"1988":1,"2156":1,"2171":1,"2306":1,"2312":2,"2319":1}}],["hotkey",{"2":{"1910":1}}],["hotkeys",{"2":{"1479":1,"1907":1,"1910":1}}],["hotdox76v2",{"2":{"191":1}}],["hotswap",{"2":{"122":1,"160":1,"191":1,"199":1,"207":2,"211":8,"222":1,"241":4,"266":1,"424":1}}],["hotfix",{"2":{"114":1,"134":1}}],["hosts",{"2":{"2676":1}}],["hosting",{"2":{"623":1,"2342":1,"2605":1}}],["host",{"0":{"1392":1,"1757":1,"2708":2},"2":{"113":1,"114":1,"134":1,"160":2,"182":1,"190":2,"191":3,"195":1,"199":2,"211":1,"222":1,"263":2,"334":1,"511":1,"515":1,"625":1,"1329":1,"1353":2,"1354":2,"1392":2,"1575":2,"1576":1,"1676":1,"1679":1,"1708":1,"1752":3,"1757":4,"1845":1,"1851":3,"1862":1,"1863":1,"1864":4,"1868":1,"1870":1,"1886":1,"1899":2,"1901":1,"1906":1,"1922":2,"1926":1,"1927":2,"1929":1,"1954":1,"1956":4,"1959":1,"1996":1,"1997":2,"2073":1,"2110":1,"2113":1,"2167":2,"2175":3,"2215":1,"2221":1,"2301":1,"2380":1,"2456":1,"2468":1,"2472":1,"2593":1,"2650":1,"2708":1,"2727":1,"2733":1,"2734":1,"2738":2,"2768":1,"2774":2,"2775":1,"2782":1}}],["hosted",{"2":{"93":1}}],["hostname",{"2":{"70":3}}],["however",{"2":{"496":1,"575":1,"584":1,"625":1,"630":1,"633":1,"643":1,"655":1,"679":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1170":1,"1181":1,"1212":1,"1233":1,"1250":1,"1254":1,"1262":1,"1310":1,"1315":1,"1362":1,"1368":1,"1420":1,"1422":1,"1442":2,"1453":1,"1468":1,"1495":1,"1500":1,"1529":1,"1536":1,"1600":1,"1602":1,"1620":3,"1723":1,"1844":1,"1858":1,"1859":2,"1924":1,"1925":1,"1977":1,"2111":1,"2151":1,"2156":2,"2164":1,"2166":1,"2172":1,"2207":1,"2210":1,"2216":1,"2220":1,"2221":1,"2281":1,"2366":1,"2367":1,"2383":1,"2389":1,"2447":1,"2490":1,"2493":1,"2536":2,"2546":1,"2555":1,"2556":1,"2557":1,"2580":1,"2603":1,"2630":1,"2740":1,"2743":1,"2774":1,"2785":1,"2789":1,"2795":1}}],["how",{"0":{"550":1,"554":1,"567":1,"1290":1,"1296":1,"1306":1,"1323":1,"1448":1,"1450":1,"1475":1,"1476":1,"1537":1,"1908":1,"1918":1,"1919":1,"1967":1,"1968":1,"2199":1,"2303":1,"2322":1,"2350":1,"2351":1,"2359":1,"2511":1,"2653":1,"2655":1,"2759":1,"2760":1},"1":{"551":1,"568":1,"1538":1,"1969":1,"1970":1,"1971":1,"1972":1,"2352":1,"2353":1,"2354":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"70":1,"76":1,"77":1,"90":1,"123":1,"138":2,"186":1,"188":1,"194":1,"263":1,"322":1,"337":1,"412":1,"430":1,"431":1,"453":1,"502":1,"505":6,"528":1,"545":1,"551":2,"554":1,"557":1,"561":2,"567":1,"588":1,"605":1,"606":1,"609":1,"611":1,"613":1,"641":1,"758":1,"787":1,"789":1,"819":1,"851":1,"854":1,"886":1,"888":1,"920":1,"922":1,"954":1,"956":1,"988":1,"990":1,"1022":1,"1024":1,"1056":1,"1058":1,"1090":1,"1092":1,"1146":1,"1183":1,"1273":1,"1280":2,"1298":1,"1299":1,"1307":1,"1369":1,"1371":1,"1377":2,"1378":2,"1380":1,"1381":1,"1393":1,"1397":2,"1398":1,"1414":1,"1442":1,"1453":1,"1475":1,"1487":2,"1595":1,"1611":4,"1701":1,"1706":1,"1710":1,"1711":1,"1712":1,"1713":1,"1754":1,"1762":1,"1768":1,"1845":2,"1858":1,"1910":1,"1918":1,"1919":1,"1943":1,"1961":1,"1974":1,"1983":1,"1987":3,"1988":1,"1992":1,"2071":1,"2076":3,"2078":6,"2079":1,"2149":1,"2156":1,"2164":2,"2166":1,"2169":2,"2198":1,"2200":1,"2207":1,"2210":1,"2264":2,"2298":1,"2307":1,"2313":2,"2319":1,"2320":1,"2322":1,"2328":1,"2329":1,"2330":1,"2344":1,"2350":2,"2351":1,"2364":1,"2448":1,"2456":1,"2457":1,"2462":1,"2463":2,"2465":1,"2493":1,"2495":1,"2507":1,"2511":1,"2513":1,"2518":1,"2531":1,"2542":2,"2561":1,"2592":1,"2595":1,"2603":1,"2605":1,"2607":1,"2615":2,"2616":3,"2617":1,"2652":1,"2653":2,"2702":1,"2710":1,"2727":1,"2734":1,"2762":1,"2763":1,"2764":2,"2767":1,"2779":1,"2781":2,"2785":1,"2786":2,"2790":1,"2792":2}}],["h",{"0":{"501":1,"1416":1,"1768":1,"1861":1,"1969":1,"1992":1,"2050":1,"2052":1,"2299":1,"2338":1,"2341":1,"2745":1},"1":{"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"2053":1},"2":{"4":2,"5":4,"14":1,"25":1,"28":1,"31":2,"34":2,"49":1,"50":8,"65":3,"70":12,"73":2,"74":1,"75":2,"76":1,"86":2,"94":1,"114":6,"119":1,"134":1,"160":3,"169":2,"170":2,"173":3,"176":12,"184":2,"191":3,"199":12,"201":4,"211":10,"220":1,"222":13,"236":7,"246":1,"249":1,"266":12,"273":1,"277":2,"282":1,"313":1,"314":1,"374":1,"384":1,"389":1,"390":1,"391":1,"393":2,"394":2,"395":2,"396":2,"401":1,"402":2,"403":2,"404":1,"411":2,"453":2,"496":2,"499":1,"501":2,"530":3,"534":1,"559":1,"588":1,"601":1,"606":3,"607":1,"608":1,"610":3,"613":2,"614":4,"631":1,"641":1,"643":1,"644":1,"656":1,"657":1,"673":1,"674":3,"675":3,"676":2,"679":2,"680":2,"681":2,"686":2,"687":2,"690":4,"694":2,"696":1,"697":1,"700":1,"702":1,"703":4,"704":1,"705":1,"731":1,"757":1,"758":1,"786":1,"787":1,"788":1,"789":1,"790":1,"818":1,"819":1,"820":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"885":1,"886":1,"887":1,"888":1,"889":1,"919":1,"920":1,"921":1,"922":1,"923":1,"953":1,"954":1,"955":1,"956":1,"957":1,"987":1,"988":1,"989":1,"990":1,"991":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1124":2,"1127":1,"1130":1,"1132":5,"1133":5,"1134":1,"1135":1,"1137":1,"1138":1,"1142":1,"1145":1,"1146":1,"1170":1,"1171":1,"1174":3,"1182":1,"1183":1,"1212":1,"1214":6,"1233":1,"1235":2,"1250":1,"1251":1,"1252":1,"1253":1,"1254":1,"1262":1,"1263":2,"1264":1,"1265":1,"1267":3,"1279":1,"1287":2,"1290":1,"1292":1,"1304":1,"1313":1,"1327":1,"1331":1,"1353":1,"1357":1,"1363":1,"1365":1,"1369":1,"1377":1,"1383":1,"1384":2,"1388":4,"1399":1,"1413":3,"1414":1,"1416":7,"1421":1,"1422":6,"1424":1,"1427":1,"1428":1,"1429":1,"1430":2,"1431":1,"1432":1,"1433":1,"1434":1,"1435":4,"1438":1,"1439":2,"1440":2,"1441":1,"1442":1,"1443":2,"1451":1,"1452":2,"1453":1,"1468":1,"1472":2,"1477":1,"1483":1,"1494":1,"1495":1,"1496":1,"1506":2,"1507":2,"1529":1,"1532":1,"1533":2,"1537":2,"1538":1,"1540":1,"1541":1,"1550":1,"1562":1,"1565":4,"1568":2,"1585":1,"1591":2,"1592":1,"1593":1,"1595":1,"1596":1,"1597":1,"1606":1,"1608":1,"1613":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1629":1,"1660":1,"1670":1,"1713":1,"1715":2,"1720":1,"1721":1,"1722":1,"1723":1,"1752":1,"1753":1,"1763":1,"1766":1,"1827":1,"1828":1,"1830":1,"1835":3,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1852":1,"1854":1,"1855":2,"1868":2,"1893":1,"1894":1,"1895":2,"1896":1,"1897":1,"1899":1,"1901":1,"1902":1,"1903":3,"1910":2,"1924":1,"1935":1,"1936":1,"1937":1,"1946":1,"1947":1,"1948":1,"1950":2,"1956":2,"1958":3,"1959":1,"1960":9,"1962":1,"1963":1,"1964":1,"1967":2,"1968":1,"1979":1,"1980":1,"1984":1,"1987":1,"1991":1,"2051":1,"2053":1,"2070":1,"2073":1,"2074":1,"2079":1,"2080":1,"2082":1,"2083":1,"2084":1,"2085":1,"2089":8,"2092":4,"2096":1,"2097":2,"2098":1,"2112":1,"2141":1,"2150":1,"2162":2,"2163":1,"2164":1,"2165":2,"2166":1,"2167":1,"2178":1,"2179":1,"2183":1,"2186":1,"2191":2,"2199":1,"2209":1,"2212":2,"2217":1,"2218":1,"2220":1,"2221":1,"2269":2,"2276":2,"2297":3,"2298":1,"2299":6,"2301":5,"2318":1,"2335":2,"2338":21,"2386":1,"2394":3,"2425":3,"2441":1,"2444":1,"2446":2,"2474":2,"2477":1,"2507":1,"2529":1,"2530":1,"2563":1,"2569":1,"2575":1,"2576":1,"2577":1,"2578":1,"2580":1,"2583":1,"2587":1,"2589":1,"2600":1,"2603":3,"2604":1,"2605":6,"2611":1,"2613":1,"2614":10,"2615":11,"2616":7,"2622":1,"2623":1,"2636":1,"2646":2,"2653":4,"2654":7,"2710":1,"2725":1,"2741":1,"2742":120,"2745":3,"2746":1,"2747":1,"2750":2,"2764":1,"2766":2,"2767":3,"2774":2,"2775":2,"2776":2,"2777":4}}],["hazards",{"0":{"2656":1},"1":{"2657":1,"2658":1,"2659":1}}],["hat",{"2":{"2470":1,"2503":1}}],["hate",{"2":{"401":1}}],["hamming",{"2":{"2190":1}}],["hammer",{"2":{"332":1}}],["habit",{"2":{"1453":1,"1474":1}}],["habits",{"2":{"195":1}}],["hargett",{"2":{"2792":1}}],["harmful",{"2":{"2312":1,"2313":1}}],["harming",{"2":{"481":1}}],["harr",{"2":{"1910":49}}],["harvest",{"2":{"1891":1}}],["hardwired",{"2":{"2310":1}}],["hardware",{"0":{"14":1,"502":1,"690":1,"1169":1,"1433":1,"1528":1,"1588":1,"1599":1,"1609":1,"1627":1,"1849":1,"2099":1,"2154":1,"2155":1,"2169":1,"2170":1,"2174":1,"2323":1,"2342":1,"2367":1,"2563":1,"2564":1,"2574":1,"2595":1,"2712":1},"1":{"1529":1,"1589":1,"1590":1,"2155":1,"2156":2,"2157":1,"2158":1,"2171":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2575":1,"2576":1,"2577":1},"2":{"14":2,"113":1,"114":1,"133":1,"141":1,"145":1,"163":2,"176":1,"191":4,"215":1,"236":1,"249":1,"277":1,"352":1,"499":1,"511":1,"563":1,"565":1,"566":3,"574":2,"575":2,"578":2,"624":2,"627":1,"671":1,"674":1,"675":1,"683":2,"684":1,"685":2,"690":2,"692":1,"693":1,"703":2,"1122":1,"1125":1,"1127":1,"1128":1,"1130":1,"1169":1,"1171":2,"1232":1,"1326":1,"1362":1,"1433":4,"1496":1,"1498":1,"1500":1,"1503":1,"1529":1,"1611":2,"1758":1,"1767":1,"1826":1,"1849":1,"1859":1,"1891":1,"1933":1,"1941":3,"1951":2,"1953":1,"1954":3,"1990":1,"2069":1,"2103":1,"2153":1,"2169":1,"2171":1,"2184":1,"2268":1,"2323":2,"2339":1,"2340":2,"2342":1,"2343":1,"2368":1,"2372":1,"2385":1,"2386":1,"2387":1,"2446":1,"2554":1,"2562":1,"2563":2,"2564":3,"2569":1,"2574":1,"2582":1,"2585":1,"2592":1,"2594":1,"2605":4,"2606":2,"2617":1,"2677":1,"2715":1,"2757":1,"2758":1,"2764":1,"2782":1}}],["hardline",{"2":{"2309":1}}],["hardcoding",{"2":{"674":1}}],["hardcoded",{"2":{"191":1,"1438":1}}],["harder",{"2":{"606":1,"2362":1,"2463":1}}],["hard",{"2":{"49":1,"92":1,"263":1,"349":1,"361":2,"457":1,"481":3,"560":1,"1722":1,"2080":1,"2331":1,"2344":2,"2456":1,"2516":1}}],["haierwangwei2005",{"2":{"160":1}}],["hacks",{"2":{"479":1}}],["hacking",{"2":{"321":1}}],["hackpad",{"2":{"222":1}}],["hacked",{"2":{"218":1}}],["hacky",{"2":{"145":1}}],["hack",{"2":{"114":2,"160":1}}],["happened",{"2":{"484":1,"560":1,"2109":1,"2773":1,"2796":1}}],["happen",{"2":{"373":1,"452":1,"593":1,"594":1,"627":1,"707":1,"1315":1,"1362":1,"1381":1,"2190":1,"2205":1,"2366":1,"2667":1}}],["happens",{"2":{"349":1,"520":1,"574":3,"588":1,"592":2,"1396":1,"1413":1,"1478":1,"1714":1,"2168":1,"2350":1,"2353":1,"2512":1,"2680":1,"2681":1,"2767":1,"2768":3,"2774":1}}],["happening",{"2":{"113":1,"592":1,"1551":1,"2269":1,"2276":1,"2777":2}}],["happy",{"2":{"119":1,"336":1,"1472":1,"2303":1,"2346":2,"2459":1}}],["haptics",{"2":{"221":1,"1560":1}}],["haptic",{"0":{"1607":1,"1608":1,"1610":1,"1618":1,"1619":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1},"1":{"1608":1,"1609":1,"1610":1,"1611":2,"1612":2,"1613":2,"1614":2,"1615":2,"1616":2,"1617":2,"1618":2,"1619":1,"1620":2,"1621":2,"1622":2,"1623":2,"1624":2,"1625":2},"2":{"64":1,"114":2,"134":3,"145":1,"188":1,"191":1,"199":1,"211":1,"221":2,"222":2,"266":1,"592":1,"1608":14,"1610":21,"1617":1,"1618":1,"1619":3,"1620":4,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"2167":2,"2736":3,"2788":1}}],["hankaku",{"2":{"2430":1}}],["hanja",{"2":{"2430":1}}],["hangul",{"2":{"2430":1}}],["hang",{"2":{"302":1}}],["hangs",{"2":{"236":1}}],["hannah65",{"2":{"102":1}}],["handwiring",{"2":{"2308":1,"2764":1}}],["handwire",{"2":{"2307":2,"2319":1}}],["handwired",{"0":{"2346":1},"2":{"43":3,"49":1,"67":1,"72":1,"102":1,"114":2,"120":1,"122":1,"134":1,"160":2,"168":2,"181":3,"191":5,"199":3,"207":1,"211":7,"217":14,"222":1,"226":2,"241":1,"249":1,"253":6,"266":1,"277":3,"380":2,"1391":1,"1392":1,"2283":1,"2285":1,"2287":1,"2297":1,"2320":1,"2346":2,"2552":1,"2553":1,"2605":1,"2606":1}}],["hand88",{"2":{"211":1}}],["handful",{"2":{"130":1,"134":1,"160":1,"198":1,"211":2,"222":1,"606":1,"2278":1,"2588":1,"2769":1}}],["hand",{"0":{"2304":1},"1":{"2305":1,"2306":1,"2307":1,"2308":1,"2309":1,"2310":1,"2311":1,"2312":1,"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1},"2":{"114":1,"160":1,"176":1,"249":2,"277":1,"331":2,"509":1,"510":8,"1337":1,"1373":2,"1449":1,"1533":1,"1722":2,"2162":3,"2163":3,"2164":1,"2192":1,"2193":3,"2194":6,"2195":1,"2306":2,"2307":1,"2309":1,"2311":1,"2320":2,"2409":2,"2422":6,"2435":2,"2441":1,"2703":1}}],["handedness",{"0":{"509":1,"510":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1},"1":{"510":1,"2162":1,"2163":1,"2164":1,"2165":1},"2":{"134":1,"176":1,"236":1,"509":2,"510":3,"1533":1,"1953":2,"2162":1,"2163":2,"2164":4,"2165":1,"2270":1,"2272":1,"2279":1,"2284":1,"2286":1,"2736":3}}],["handed",{"2":{"107":1,"199":1,"2192":1,"2450":2}}],["handy",{"2":{"99":1,"571":1,"1913":1,"2444":1,"2497":1,"2755":1}}],["hands",{"0":{"2192":1,"2422":1},"1":{"2193":1,"2194":1,"2195":1,"2196":1},"2":{"94":1,"191":1,"199":2,"211":2,"231":3,"249":1,"509":1,"510":2,"1483":4,"1533":1,"1722":4,"1953":1,"2164":1,"2192":3,"2194":9,"2195":1,"2196":9,"2305":1,"2409":4,"2422":8,"2435":4,"2456":1}}],["handles",{"2":{"436":1,"683":1,"1257":1,"1316":1,"1532":1,"1919":1,"1981":1,"2446":1}}],["handle",{"0":{"1918":1,"1919":1},"2":{"134":1,"145":1,"190":1,"191":3,"199":2,"203":1,"222":1,"231":1,"236":1,"341":1,"430":1,"466":2,"573":1,"586":1,"587":1,"1174":1,"1295":1,"1362":1,"1421":1,"1453":1,"1482":1,"1483":1,"1711":1,"1712":1,"1918":1,"1925":1,"1933":1,"1950":1,"1954":2,"1960":3,"1981":1,"2195":1,"2200":2,"2208":1,"2612":1,"2615":11,"2616":18,"2783":1,"2785":1,"2788":1}}],["handled",{"2":{"105":2,"196":1,"502":2,"511":1,"571":1,"1381":1,"1416":1,"1467":1,"1713":1,"1865":1,"1870":1,"1926":1,"1946":1,"1965":1,"2190":1,"2198":1,"2605":1,"2616":1,"2788":1}}],["handlers",{"2":{"191":1,"277":1,"1918":1,"1919":1}}],["handler",{"2":{"73":1,"191":1,"1134":1,"1258":1,"1499":1,"1860":1,"2168":4,"2181":1,"2623":1}}],["handling",{"0":{"16":1,"1975":1},"2":{"11":1,"50":2,"98":1,"114":1,"134":2,"160":1,"191":2,"199":2,"236":3,"266":4,"277":1,"344":1,"345":1,"505":8,"571":1,"1379":1,"1484":1,"1485":1,"1534":1,"1548":1,"1561":1,"1587":1,"1597":1,"1713":1,"1758":1,"1977":1,"2606":1,"2731":1,"2783":1}}],["halve",{"2":{"1130":1,"2164":1}}],["halves",{"2":{"32":1,"45":1,"506":1,"510":1,"511":2,"1121":2,"1533":1,"2154":1,"2155":1,"2158":2,"2167":2,"2168":1,"2169":1,"2733":1}}],["halt",{"2":{"203":1,"2392":2,"2788":1}}],["hal",{"2":{"174":1,"641":1,"686":2,"687":2,"690":2,"703":1,"1132":1,"1133":1,"1174":1,"1214":1,"1263":1,"1267":1,"1506":1,"1507":1,"2562":1}}],["halberd",{"2":{"154":2}}],["halconf",{"2":{"50":2,"86":1,"686":2,"687":2,"690":2,"703":1,"1124":1,"1132":1,"1133":1,"1174":1,"1214":1,"1263":1,"1267":1,"1506":1,"1507":1,"1895":1}}],["halfs",{"2":{"1987":1}}],["halfkay",{"0":{"2273":1},"2":{"371":1,"514":1,"625":1,"629":1,"2273":3,"2275":1,"2276":1,"2703":1}}],["half",{"0":{"1125":1},"1":{"1126":1,"1127":1},"2":{"45":3,"107":2,"114":2,"160":1,"176":2,"191":2,"211":1,"236":1,"277":1,"506":5,"509":8,"510":2,"511":4,"515":1,"1121":1,"1122":1,"1125":3,"1126":1,"1127":1,"1128":2,"1129":4,"1134":2,"1136":1,"1533":3,"1596":3,"1752":1,"1768":1,"1844":1,"1845":1,"1946":1,"1950":3,"1987":2,"1992":1,"1997":1,"2070":1,"2082":1,"2155":1,"2158":1,"2160":2,"2164":1,"2169":2,"2263":1,"2310":1,"2409":2,"2435":2,"2582":2,"2653":1,"2727":1,"2733":1,"2734":1,"2736":14,"2786":1}}],["having",{"2":{"23":1,"160":1,"234":1,"356":1,"505":2,"546":1,"596":1,"674":1,"1136":1,"1138":1,"1278":1,"1291":1,"1340":1,"1375":1,"1405":1,"1422":1,"1453":1,"1551":1,"1565":1,"1566":1,"1767":1,"1913":2,"1964":1,"1990":1,"2166":1,"2187":1,"2220":1,"2358":1,"2480":1,"2529":1,"2549":1,"2569":1,"2605":1,"2610":1,"2644":1,"2649":1,"2688":1,"2796":1}}],["haven",{"2":{"164":1,"537":1,"1274":1,"1303":1,"2496":1,"2543":1}}],["have",{"0":{"551":1,"1297":1,"1300":1},"1":{"1301":1},"2":{"0":1,"1":1,"4":1,"7":1,"8":1,"9":1,"10":1,"14":2,"16":1,"19":1,"28":1,"36":1,"38":1,"39":1,"43":1,"45":1,"49":3,"50":1,"52":1,"57":1,"67":2,"69":1,"83":1,"86":1,"94":1,"98":1,"102":1,"114":1,"118":1,"122":1,"124":3,"128":1,"134":2,"142":2,"144":1,"151":2,"154":1,"168":1,"169":1,"172":1,"173":1,"175":1,"181":1,"182":5,"183":1,"189":1,"191":1,"195":1,"197":1,"198":1,"201":3,"203":1,"209":1,"211":1,"213":1,"218":1,"219":1,"220":1,"221":1,"224":1,"228":1,"231":1,"238":1,"240":1,"254":1,"255":1,"262":1,"268":1,"276":1,"277":1,"327":1,"332":1,"337":1,"341":1,"349":1,"352":4,"356":1,"363":1,"365":1,"366":2,"367":1,"399":2,"429":1,"430":1,"431":1,"433":1,"435":1,"436":2,"440":1,"453":1,"454":1,"457":1,"468":1,"470":1,"478":1,"479":1,"487":1,"488":1,"496":1,"499":2,"502":1,"506":1,"508":1,"515":1,"530":2,"538":1,"540":1,"545":1,"554":2,"555":1,"556":2,"557":1,"558":1,"559":1,"560":1,"561":2,"568":1,"575":1,"578":1,"584":1,"587":4,"597":1,"602":1,"606":5,"614":1,"616":1,"617":1,"618":1,"621":2,"623":1,"624":1,"625":2,"626":1,"627":1,"635":2,"642":1,"678":1,"683":1,"692":1,"697":1,"699":1,"703":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1129":1,"1148":1,"1169":1,"1185":1,"1211":1,"1213":1,"1214":1,"1232":1,"1235":1,"1252":1,"1253":1,"1264":1,"1271":1,"1273":1,"1275":1,"1281":1,"1282":1,"1299":1,"1301":2,"1302":1,"1303":1,"1312":1,"1313":2,"1318":1,"1324":1,"1325":1,"1326":1,"1327":1,"1330":1,"1337":1,"1341":1,"1362":1,"1363":1,"1366":3,"1367":1,"1368":1,"1375":1,"1376":1,"1377":1,"1383":1,"1392":1,"1394":1,"1397":1,"1412":1,"1414":3,"1415":1,"1417":1,"1420":2,"1421":2,"1422":3,"1427":1,"1431":1,"1433":1,"1435":1,"1440":1,"1442":1,"1448":2,"1449":3,"1453":2,"1467":1,"1472":3,"1477":1,"1483":1,"1488":1,"1492":2,"1496":2,"1532":3,"1534":1,"1540":1,"1545":1,"1552":2,"1555":2,"1563":1,"1565":2,"1571":1,"1591":1,"1596":1,"1601":1,"1610":1,"1613":1,"1669":1,"1692":1,"1708":1,"1709":1,"1720":1,"1722":3,"1853":1,"1854":1,"1858":1,"1859":1,"1862":1,"1868":1,"1870":1,"1896":1,"1950":1,"1951":1,"1952":1,"1986":2,"1987":1,"2069":1,"2072":1,"2074":1,"2076":1,"2152":1,"2156":1,"2158":1,"2163":1,"2164":1,"2169":3,"2171":2,"2177":1,"2178":1,"2183":1,"2188":1,"2190":1,"2198":1,"2200":4,"2207":3,"2210":1,"2218":1,"2219":1,"2220":3,"2268":1,"2271":1,"2273":1,"2276":1,"2278":1,"2288":2,"2289":1,"2291":1,"2293":1,"2300":4,"2302":1,"2303":2,"2306":1,"2312":2,"2313":3,"2315":2,"2316":1,"2318":1,"2319":2,"2321":1,"2332":1,"2334":1,"2336":1,"2338":1,"2341":4,"2344":3,"2346":1,"2348":2,"2350":1,"2354":1,"2356":1,"2358":2,"2359":1,"2366":1,"2367":1,"2381":1,"2383":1,"2385":1,"2390":1,"2392":1,"2436":1,"2442":1,"2444":2,"2445":1,"2446":1,"2447":2,"2448":2,"2449":1,"2456":2,"2457":1,"2459":1,"2460":1,"2461":1,"2464":2,"2466":1,"2470":1,"2477":2,"2480":1,"2484":3,"2485":1,"2486":1,"2487":1,"2489":2,"2491":2,"2493":3,"2497":1,"2501":1,"2502":1,"2503":1,"2508":1,"2511":3,"2512":2,"2513":2,"2514":1,"2515":1,"2516":2,"2525":1,"2527":2,"2533":2,"2535":1,"2536":2,"2543":1,"2547":1,"2552":1,"2554":1,"2558":1,"2560":2,"2563":1,"2565":1,"2568":1,"2574":1,"2583":1,"2585":1,"2587":1,"2588":1,"2592":2,"2595":1,"2598":1,"2599":1,"2604":1,"2605":5,"2608":2,"2609":1,"2610":2,"2613":1,"2615":3,"2616":1,"2631":1,"2642":1,"2645":1,"2646":2,"2651":2,"2654":1,"2740":1,"2741":1,"2745":1,"2758":1,"2763":1,"2765":1,"2767":1,"2780":1,"2781":1,"2785":5,"2791":1,"2796":1}}],["had60",{"2":{"211":1}}],["hadron",{"2":{"134":1}}],["hades",{"2":{"114":1,"207":2,"211":1}}],["had",{"2":{"7":1,"67":1,"86":1,"102":1,"116":1,"122":1,"124":1,"125":1,"138":1,"144":1,"154":1,"168":1,"172":1,"174":1,"181":1,"182":1,"185":1,"197":1,"233":1,"243":1,"245":1,"537":1,"1302":1,"1375":1,"1478":1,"2151":1,"2188":1,"2318":1,"2603":1}}],["hashbrowns",{"2":{"616":1}}],["hash",{"2":{"316":1,"349":3,"453":1,"530":1,"610":1,"612":1,"1622":1,"2394":1,"2417":1,"2427":1,"2438":1}}],["hasn",{"2":{"138":1,"214":1,"505":1,"537":1}}],["has",{"0":{"338":1},"2":{"1":1,"3":1,"7":1,"8":1,"14":2,"15":1,"25":1,"28":1,"31":1,"34":1,"49":3,"56":1,"57":1,"60":1,"67":1,"70":3,"82":1,"84":1,"86":3,"87":1,"90":1,"98":1,"99":1,"103":1,"109":1,"113":1,"114":2,"118":2,"123":2,"124":1,"126":1,"132":1,"138":2,"139":1,"141":1,"145":1,"148":1,"153":1,"157":1,"163":1,"164":1,"166":1,"167":1,"169":1,"172":1,"174":1,"175":3,"182":2,"184":1,"194":3,"196":1,"198":2,"199":1,"201":2,"202":1,"206":1,"213":1,"214":1,"215":1,"218":1,"221":1,"228":1,"230":1,"232":1,"233":3,"240":2,"243":2,"249":1,"262":2,"265":1,"271":1,"273":2,"277":1,"312":1,"315":3,"316":1,"317":1,"341":1,"349":1,"357":1,"375":1,"400":1,"427":1,"465":1,"470":1,"479":1,"495":1,"497":1,"502":2,"505":1,"510":1,"513":1,"516":2,"522":1,"523":1,"524":1,"525":1,"529":1,"537":2,"540":1,"560":1,"565":2,"567":1,"575":1,"578":1,"582":1,"585":1,"587":1,"588":5,"596":1,"598":1,"600":1,"606":1,"626":2,"627":1,"629":1,"635":2,"636":1,"641":1,"659":1,"678":1,"695":1,"701":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1129":3,"1137":1,"1146":1,"1169":1,"1183":1,"1253":1,"1267":1,"1271":1,"1273":1,"1277":1,"1302":1,"1307":1,"1308":1,"1315":1,"1320":1,"1324":1,"1353":2,"1354":1,"1356":2,"1357":1,"1366":2,"1368":1,"1369":1,"1377":1,"1390":1,"1394":1,"1396":1,"1397":1,"1420":1,"1431":1,"1453":1,"1488":1,"1489":1,"1528":1,"1552":1,"1555":1,"1596":1,"1600":1,"1612":1,"1615":1,"1679":1,"1696":1,"1704":1,"1712":1,"1713":2,"1720":1,"1735":1,"1764":6,"1768":5,"1843":1,"1851":1,"1865":1,"1918":1,"1920":1,"1922":1,"1929":1,"1954":2,"1956":4,"1974":1,"1980":1,"1985":6,"1992":7,"1997":1,"2069":1,"2070":1,"2082":2,"2109":1,"2140":2,"2141":1,"2152":1,"2155":1,"2160":1,"2166":3,"2172":1,"2175":1,"2182":2,"2190":4,"2195":1,"2200":1,"2207":3,"2221":2,"2287":1,"2300":1,"2302":2,"2311":1,"2331":1,"2334":2,"2339":1,"2350":4,"2356":1,"2363":1,"2386":1,"2435":1,"2440":1,"2441":1,"2456":1,"2457":1,"2481":1,"2493":1,"2494":1,"2495":1,"2526":2,"2531":1,"2547":1,"2552":1,"2556":1,"2562":1,"2564":2,"2569":2,"2578":1,"2583":1,"2587":3,"2592":1,"2605":5,"2610":1,"2615":3,"2616":3,"2617":1,"2624":1,"2626":2,"2630":1,"2631":1,"2653":1,"2654":2,"2655":1,"2672":1,"2728":1,"2757":1,"2768":1,"2773":1,"2778":1,"2782":1,"2785":1,"2787":1,"2789":1,"2791":1,"2792":1}}],["c♯",{"2":{"1831":6,"2410":6}}],["cx",{"2":{"1763":1,"1984":1}}],["cx60",{"2":{"211":1}}],["cjoystick",{"2":{"1671":1,"1672":1}}],["c\\tuint16",{"2":{"1593":1}}],["cgram",{"0":{"1664":1},"1":{"1665":1},"2":{"1632":1,"1664":1,"1665":1}}],["cg",{"2":{"1337":1,"1435":4,"1436":4,"2409":7,"2435":7}}],["cédille",{"0":{"1314":1}}],["c8",{"0":{"1142":1}}],["c3²",{"2":{"635":2}}],["c3¹",{"2":{"635":2}}],["c3",{"2":{"633":1,"635":5,"1831":1,"1832":1,"2410":1,"2596":1}}],["c39",{"2":{"154":2}}],["c2²",{"2":{"635":2}}],["c2¹",{"2":{"635":2}}],["c2",{"2":{"633":1,"635":5,"1831":1,"2410":1,"2596":1,"2728":1}}],["c2json",{"0":{"380":1},"2":{"236":1,"380":3,"407":1}}],["c15",{"2":{"2558":1}}],["c14",{"2":{"2558":1}}],["c12832a1z",{"2":{"2174":1}}],["c13",{"2":{"1353":1,"1431":1,"2557":1,"2558":1,"2569":2}}],["c1²",{"2":{"635":2}}],["c1¹",{"2":{"635":2}}],["c1",{"2":{"633":1,"635":5,"702":1,"822":4,"1831":1,"2410":1,"2596":1,"2728":1}}],["c1ed",{"2":{"375":2}}],["c0²",{"2":{"635":2}}],["c0¹",{"2":{"635":2}}],["c0",{"2":{"633":1,"635":5,"639":2,"702":1,"2728":1}}],["ck",{"2":{"1443":6,"1445":6,"2396":6}}],["ckeyrecord",{"2":{"573":1}}],["ckled2001",{"2":{"160":1,"176":1,"221":4,"236":2,"1180":1}}],["c6",{"2":{"502":3,"684":2,"1424":1,"1503":1,"2269":1,"2276":1,"2301":1,"2569":1,"2597":1}}],["c5²",{"2":{"635":1}}],["c5¹",{"2":{"635":1}}],["c5",{"2":{"502":3,"633":1,"635":4,"684":2,"702":1,"1424":1,"1503":1,"1831":1,"2112":1,"2410":1}}],["c7",{"2":{"502":2,"511":1,"2169":1,"2597":1}}],["cdt",{"0":{"2536":1},"2":{"2535":1,"2536":2}}],["cdigitizer",{"2":{"1572":2}}],["cdeferred",{"2":{"598":1,"2616":1}}],["cd",{"0":{"373":1},"2":{"349":1,"360":5,"370":4,"373":1,"401":1,"2291":1,"2477":1,"2614":2}}],["cdc",{"2":{"50":1,"2383":1}}],["cfloat",{"2":{"1435":1}}],["cfgr",{"2":{"641":1}}],["cfgr1",{"2":{"641":1}}],["cfg",{"2":{"335":2,"445":1,"456":1,"2392":2}}],["cformat",{"2":{"1":1,"51":1,"65":1,"199":1}}],["csprintf",{"2":{"2744":1}}],["cs5",{"2":{"1831":1,"2410":1}}],["cs4",{"2":{"1831":1,"2410":1}}],["csr",{"2":{"1528":1}}],["csend",{"2":{"1398":4,"2117":2}}],["csg",{"2":{"1337":1}}],["csag",{"2":{"1337":1}}],["csa",{"2":{"1337":1,"1703":1,"2742":1}}],["cs3",{"2":{"659":2,"792":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1831":1,"2410":1}}],["cs2",{"2":{"659":2,"792":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1831":1,"2410":1}}],["cs1",{"2":{"659":2,"792":3,"857":3,"891":3,"925":3,"959":3,"993":3,"1027":3,"1061":3,"1095":3,"1831":1,"2410":1}}],["csx",{"2":{"657":1,"786":1,"789":4,"790":1,"850":1,"854":1,"855":1,"885":1,"888":1,"889":1,"919":1,"922":1,"923":1,"953":1,"956":1,"957":1,"987":1,"990":1,"991":1,"1021":1,"1024":1,"1055":1,"1058":1,"1089":1,"1092":1}}],["cstatic",{"2":{"588":1,"1397":1,"1852":1,"2176":1,"2615":1,"2616":2,"2620":1,"2651":1}}],["css",{"0":{"288":1}}],["cs",{"0":{"663":1,"669":1},"1":{"664":1,"670":1},"2":{"266":1,"656":2,"664":1,"670":1,"786":3,"789":15,"850":1,"854":2,"885":1,"888":2,"919":1,"922":2,"953":1,"956":2,"987":1,"990":2,"1021":2,"1024":6,"1055":2,"1058":6,"1089":2,"1092":6,"1337":2,"1529":1,"1703":2,"1831":1,"1857":2,"1935":2,"1936":2,"1943":2,"1949":2,"1950":16,"1952":3,"2410":1,"2615":4}}],["csy",{"2":{"236":1,"1024":3,"1025":1,"1058":3,"1059":1,"1092":3,"1093":1}}],["cccb1608",{"2":{"2303":1}}],["cc80",{"2":{"1830":3}}],["ccw",{"2":{"1597":8}}],["ccopyright",{"2":{"2348":3}}],["ccombo",{"2":{"1563":1}}],["cconst",{"2":{"272":2,"659":1,"734":2,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":1,"1185":2,"1442":1,"1545":1,"1546":1,"1547":1,"1632":1,"1701":1,"1703":1,"2082":1,"2193":1,"2220":2,"2445":1,"2462":1,"2786":1}}],["cchar",{"2":{"1400":2}}],["cc",{"0":{"1829":1},"2":{"222":3,"1330":2,"1829":1,"1830":7}}],["ccase",{"2":{"1958":1}}],["ccar",{"2":{"176":1}}],["ccache",{"2":{"133":1,"134":2}}],["cbbrowne",{"2":{"1324":3}}],["cb1",{"2":{"1185":5}}],["cb1800",{"2":{"211":1}}],["cb",{"0":{"1142":1},"2":{"597":2,"598":1,"2386":1}}],["cb87v2",{"2":{"211":1}}],["cb87rgb",{"2":{"211":1}}],["cb65",{"2":{"211":1}}],["cbool",{"2":{"90":1,"105":1,"125":2,"185":2,"194":2,"195":1,"534":1,"572":1,"593":1,"594":1,"1289":1,"1339":1,"1412":1,"1421":1,"1460":2,"1467":1,"1483":1,"1485":1,"1543":1,"1556":1,"1587":4,"1598":2,"1755":1,"1757":1,"1771":1,"1864":1,"1915":1,"1916":1,"1917":1,"1918":1,"1981":1,"1995":2,"1996":3,"1997":2,"2081":1,"2116":1,"2168":1,"2190":3,"2266":1,"2452":1,"2453":1,"2454":1,"2615":1,"2616":14,"2620":1,"2643":1,"2774":1,"2775":1,"2777":1}}],["cypress",{"2":{"2661":1}}],["cypher",{"2":{"211":2}}],["cycling",{"2":{"1766":1,"1987":2,"2074":1,"2078":1,"2213":1,"2217":1}}],["cycled",{"2":{"2221":1}}],["cycles",{"0":{"1335":1},"2":{"126":1,"156":1,"213":1,"224":1,"238":1,"677":1,"1172":1,"1335":1,"1363":7,"1439":2,"1440":1,"1445":3,"1632":1,"1859":1,"1948":2,"2071":1,"2396":3}}],["cycle",{"0":{"350":1,"1381":1},"2":{"63":1,"103":2,"105":1,"107":1,"116":1,"131":1,"141":1,"160":1,"163":1,"167":1,"172":1,"182":1,"184":1,"187":1,"190":1,"198":1,"201":1,"206":1,"211":1,"213":1,"224":1,"230":1,"233":1,"251":1,"262":1,"265":1,"268":1,"273":1,"275":1,"341":2,"343":1,"344":1,"345":1,"350":4,"502":1,"674":1,"704":2,"1252":1,"1324":1,"1381":12,"1412":1,"1434":1,"1491":1,"1493":1,"1494":1,"1496":1,"1513":1,"1605":1,"1765":2,"1766":9,"1771":1,"1986":4,"1987":21,"1992":1,"1995":1,"2072":2,"2073":1,"2166":1,"2217":1,"2221":1,"2222":2,"2386":1,"2399":1,"2408":2,"2415":2,"2416":2,"2423":2,"2716":1,"2727":1,"2734":1,"2750":7,"2759":2}}],["cyan",{"2":{"433":1,"435":1,"582":1,"1369":4,"1991":2,"2080":2,"2096":2}}],["cyberstar",{"2":{"211":1}}],["cncl",{"2":{"2394":1,"2431":1}}],["cname",{"2":{"279":1}}],["cn",{"2":{"199":1}}],["cmsis",{"2":{"2552":1}}],["cmt",{"2":{"2449":1}}],["cmousekey",{"2":{"1838":1}}],["cmu",{"2":{"1834":1}}],["cmb",{"2":{"1561":4}}],["cmd=",{"2":{"2300":1}}],["cmd=yes",{"2":{"2300":2}}],["cmd",{"2":{"628":1,"1603":1,"1724":1,"1860":2,"2413":1,"2449":1}}],["cmatrix",{"2":{"566":1}}],["cmp",{"2":{"199":1,"1378":1,"2081":3}}],["cm",{"2":{"191":1,"1549":3}}],["cwd",{"2":{"2552":2}}],["cw",{"2":{"188":1,"191":1,"1537":1,"1597":8,"2401":1}}],["cz",{"2":{"176":4}}],["czech",{"2":{"48":1,"266":1,"1392":1,"2742":9}}],["c4²",{"2":{"635":1}}],["c4¹",{"2":{"635":1}}],["c4",{"0":{"1357":1},"2":{"176":1,"189":1,"191":1,"502":3,"633":1,"635":4,"684":2,"702":1,"1348":1,"1352":6,"1357":1,"1424":1,"1503":1,"1831":1,"2410":1,"2596":1}}],["c++",{"0":{"2791":1},"2":{"176":1,"322":1,"331":4,"454":1,"552":1,"1925":1,"2535":1,"2536":2,"2541":1,"2549":1,"2791":3,"2792":1}}],["ctypedef",{"2":{"1369":1,"2168":1,"2206":1,"2207":1,"2626":1,"2628":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1}}],["cts",{"2":{"1232":1,"1234":1,"1235":4}}],["ct",{"2":{"1174":2,"2203":3,"2204":1,"2205":3,"2206":2}}],["ct16b1",{"2":{"1174":2}}],["ctl",{"2":{"505":1,"2203":1,"2207":3,"2409":3,"2413":1,"2435":3,"2449":1}}],["ctpc",{"2":{"145":2,"191":1,"199":2}}],["ctrl+g",{"2":{"2236":1}}],["ctrl+x",{"2":{"2234":1}}],["ctrl+y",{"2":{"1694":1}}],["ctrl+z",{"2":{"1545":1}}],["ctrl+delete",{"2":{"1340":1}}],["ctrl+shift+i",{"2":{"2605":1}}],["ctrl+shift+z",{"2":{"1694":1}}],["ctrl+shift+a",{"2":{"1451":2}}],["ctrl+shift+backspace",{"2":{"1340":1}}],["ctrl+shift+enter",{"2":{"628":1}}],["ctrl+c",{"2":{"196":1,"1718":1,"2117":1,"2272":1}}],["ctrl+alt+del",{"2":{"1340":1}}],["ctrl+alt+shift+backspace",{"2":{"1340":1}}],["ctrl+a",{"2":{"196":1,"1451":2,"1718":1,"2117":1}}],["ctrl",{"2":{"131":2,"134":2,"160":1,"199":1,"231":2,"291":1,"623":1,"1308":1,"1337":8,"1394":3,"1398":1,"1422":1,"1479":1,"1536":1,"1538":5,"1560":1,"1606":1,"1694":2,"1703":8,"1704":1,"1708":3,"1714":1,"1715":3,"1907":3,"1910":5,"1911":8,"2117":1,"2148":2,"2266":1,"2394":2,"2409":1,"2421":2,"2429":2,"2435":1,"2453":3,"2454":2,"2530":4,"2547":1,"2551":2,"2690":1,"2744":1,"2777":3}}],["cease",{"2":{"2758":1}}],["ce10f7642b0459e409839b23cc91498945119b4d",{"2":{"2303":1}}],["ceil",{"2":{"1937":1}}],["cells",{"2":{"1503":1}}],["celebrate",{"2":{"554":1}}],["centroid",{"2":{"2727":1,"2734":1}}],["centrally",{"2":{"1302":1}}],["centos",{"2":{"2470":1,"2503":1}}],["centered",{"2":{"1671":1,"1855":1,"2361":1}}],["center",{"2":{"191":1,"404":1,"1763":4,"1766":1,"1984":4,"1986":1,"1987":4,"2076":1,"2171":2,"2727":2,"2734":2}}],["cenum",{"2":{"532":1,"534":2,"557":1,"570":1,"1396":2,"1548":2,"1560":1,"1561":1,"1766":1,"1863":1,"1868":1,"1913":1,"1921":1,"1959":1,"1960":1,"1987":1,"2219":1,"2767":1}}],["certainly",{"2":{"276":1,"1933":1,"2367":1,"2603":1,"2606":1}}],["certain",{"0":{"1914":1,"1977":1},"1":{"1915":1,"1916":1,"1917":1},"2":{"160":1,"487":1,"512":1,"515":1,"516":1,"581":1,"592":1,"630":1,"685":1,"1214":1,"1280":1,"1331":1,"1405":1,"1421":2,"1491":1,"1763":2,"1832":1,"1852":1,"1916":1,"1977":1,"1984":2,"2176":1,"2185":1,"2188":1,"2190":1,"2266":1,"2634":1,"2640":1,"2727":1,"2734":1,"2741":2,"2795":1}}],["ce",{"2":{"134":1,"199":1,"266":1,"271":1,"1348":2,"1352":4,"1359":4,"1912":1,"2290":1}}],["cest73",{"2":{"114":1,"211":1}}],["cpainter",{"2":{"2615":9,"2616":3}}],["cpnl",{"2":{"2394":1,"2432":1}}],["cplay",{"2":{"1435":2}}],["cp",{"2":{"452":1}}],["cpp",{"2":{"380":1,"1316":1,"2792":1}}],["cpi",{"2":{"236":1,"249":1,"1935":2,"1936":2,"1939":2,"1943":1,"1947":2,"1949":2,"1950":8,"1951":3,"1954":4,"1955":2,"1962":2,"1963":4}}],["cpus",{"2":{"2300":2}}],["cpu",{"2":{"114":1,"514":2,"688":1,"1122":1,"1125":1,"1128":1,"1256":1,"1258":1,"1259":1,"1260":1,"1922":1,"2300":1,"2784":1}}],["cpuclock",{"2":{"114":1}}],["cptc",{"2":{"92":1}}],["crux",{"2":{"2766":1}}],["cryptographically",{"2":{"2650":1}}],["cryptographic",{"2":{"2589":2}}],["crystal",{"2":{"2560":1}}],["crsl",{"2":{"2394":1,"2431":1}}],["crsel",{"2":{"2394":2,"2431":2}}],["crgblight",{"2":{"2082":2,"2089":1,"2096":1}}],["crgb",{"2":{"1990":1}}],["credentials",{"2":{"2545":1}}],["credential",{"2":{"2545":1}}],["credits",{"0":{"1490":1,"1869":1}}],["credit",{"2":{"1390":1,"1490":1}}],["cream|",{"2":{"621":1}}],["cream||order",{"2":{"621":1}}],["cream",{"2":{"621":1}}],["creative",{"2":{"1377":1}}],["creating",{"0":{"1696":1,"2388":1,"2509":1},"1":{"1697":1,"1698":1,"1699":1,"1700":1},"2":{"363":1,"441":1,"559":1,"570":1,"1291":1,"1324":1,"1392":1,"1696":1,"1925":1,"1956":1,"2070":1,"2192":1,"2220":1,"2221":1,"2331":1,"2448":1,"2456":1,"2464":1,"2484":1,"2508":1,"2525":1,"2602":1,"2615":11,"2616":1}}],["creator",{"2":{"114":1}}],["creates",{"2":{"379":1,"380":1,"385":1,"386":1,"391":1,"401":1,"430":1,"1491":1,"2527":1,"2536":1}}],["created",{"2":{"114":1,"251":1,"315":1,"1302":1,"1340":1,"1369":2,"1374":1,"1591":1,"1979":1,"2198":1,"2316":1,"2317":1,"2348":1,"2461":1,"2485":1,"2487":1,"2513":3,"2518":1,"2552":2,"2592":1,"2605":1,"2616":3,"2792":1}}],["create",{"0":{"152":1,"2461":1,"2472":1,"2474":1},"2":{"76":1,"132":1,"134":2,"160":1,"172":1,"173":1,"175":1,"176":1,"249":1,"313":1,"341":1,"347":1,"350":1,"367":2,"441":1,"519":1,"529":1,"537":1,"538":1,"554":1,"569":1,"607":1,"614":1,"621":2,"623":1,"1271":1,"1309":1,"1315":1,"1369":1,"1413":1,"1421":1,"1422":1,"1435":1,"1436":1,"1450":1,"1452":1,"1477":1,"1563":1,"1591":1,"1694":1,"1700":1,"1708":1,"1767":2,"1979":1,"1990":2,"2188":2,"2207":1,"2208":1,"2219":1,"2220":1,"2303":3,"2315":1,"2357":1,"2390":1,"2439":1,"2454":1,"2456":1,"2461":2,"2472":1,"2474":2,"2475":1,"2484":2,"2509":1,"2514":1,"2515":1,"2527":1,"2592":1,"2615":2,"2616":1,"2617":1,"2620":1,"2642":1,"2655":1,"2710":1,"2762":1,"2764":1,"2792":2,"2796":1}}],["cribbit",{"2":{"2309":1,"2320":1}}],["criteria",{"2":{"341":1,"374":1,"1974":1,"2207":1,"2585":1}}],["critical",{"2":{"340":1,"345":1,"350":1,"433":1,"479":1,"628":1,"1508":1,"1862":1,"2605":1,"2606":2}}],["crin",{"2":{"211":1}}],["croatian",{"2":{"1392":1,"2742":3}}],["crossing",{"2":{"689":1}}],["cross",{"2":{"331":1,"1766":3,"1987":3,"2750":1}}],["cropped",{"2":{"114":1}}],["cradio",{"2":{"191":1}}],["craftwalk",{"2":{"134":1,"266":1}}],["crc8",{"2":{"114":1}}],["crc",{"2":{"107":1,"114":3,"176":1,"191":1}}],["crkbd",{"2":{"86":3,"94":1,"176":1,"211":1,"2164":3,"2479":1}}],["cvoid",{"2":{"34":1,"90":1,"105":1,"125":1,"185":1,"196":1,"565":1,"576":1,"582":1,"590":1,"698":1,"707":1,"1282":1,"1369":2,"1437":1,"1501":1,"1534":1,"1544":1,"1631":1,"1718":1,"1771":1,"1854":1,"1899":1,"1906":1,"1925":1,"1927":1,"1951":1,"1963":1,"1998":1,"2082":1,"2168":1,"2204":1,"2530":4,"2563":1,"2564":1,"2565":1,"2616":10,"2621":1,"2796":1}}],["c",{"0":{"272":1,"400":1,"411":1,"453":1,"1140":1,"1353":1,"1355":1,"1359":1,"1395":1,"1429":1,"1643":1,"1835":1,"2340":1,"2443":1,"2462":1,"2566":1,"2668":1},"1":{"1360":1,"1361":1,"1396":1,"1397":1,"1398":1,"1399":1,"1400":1,"1401":1,"1402":1,"1403":1,"1404":1,"1405":1,"1406":1,"1407":1,"1408":1,"1409":1,"1410":1,"1411":1,"1412":1,"1644":1,"2444":1,"2445":1,"2446":1,"2447":1,"2567":1,"2568":1,"2569":1},"2":{"28":1,"31":2,"34":3,"49":3,"50":6,"63":1,"64":1,"65":1,"74":1,"75":2,"77":1,"86":2,"92":1,"98":1,"105":2,"114":4,"134":5,"138":1,"145":2,"160":2,"169":1,"172":2,"176":3,"184":1,"189":3,"191":1,"196":1,"199":3,"211":4,"220":1,"231":2,"234":9,"236":2,"247":1,"249":1,"266":6,"272":1,"277":1,"292":2,"304":1,"313":1,"316":1,"318":1,"322":1,"331":4,"370":2,"371":2,"379":1,"380":4,"396":2,"400":5,"404":1,"411":9,"441":1,"453":3,"454":1,"470":1,"489":1,"501":1,"502":6,"509":1,"513":6,"529":2,"530":4,"532":1,"533":1,"534":2,"552":1,"555":2,"559":1,"564":3,"565":1,"566":2,"570":1,"588":3,"599":1,"600":1,"601":1,"607":1,"610":1,"631":1,"635":1,"655":1,"657":1,"659":1,"686":3,"687":2,"689":1,"690":4,"691":1,"692":1,"701":1,"703":3,"730":2,"734":1,"756":2,"760":1,"785":2,"788":1,"789":1,"790":1,"792":1,"817":2,"820":1,"822":1,"849":2,"853":1,"854":1,"855":1,"857":1,"884":2,"887":1,"888":1,"889":1,"891":1,"918":2,"921":1,"922":1,"923":1,"925":1,"952":2,"955":1,"956":1,"957":1,"959":1,"986":2,"989":1,"990":1,"991":1,"993":1,"1020":2,"1024":1,"1025":1,"1027":1,"1054":2,"1058":1,"1059":1,"1061":1,"1088":2,"1091":1,"1092":1,"1093":1,"1095":1,"1124":1,"1127":2,"1129":2,"1130":2,"1132":3,"1133":3,"1134":1,"1136":1,"1137":1,"1138":1,"1144":1,"1148":1,"1169":2,"1170":1,"1174":3,"1181":2,"1185":1,"1214":3,"1235":2,"1253":1,"1254":1,"1262":1,"1263":2,"1264":1,"1265":1,"1267":2,"1271":1,"1287":1,"1289":1,"1290":1,"1306":1,"1307":1,"1313":1,"1316":1,"1327":1,"1331":1,"1336":2,"1337":1,"1340":1,"1348":7,"1349":2,"1350":3,"1351":2,"1352":12,"1353":3,"1356":1,"1357":1,"1359":1,"1367":2,"1369":2,"1381":1,"1383":1,"1384":1,"1388":2,"1389":1,"1396":2,"1399":1,"1402":1,"1403":1,"1412":1,"1413":2,"1414":6,"1420":6,"1421":1,"1422":5,"1429":2,"1434":2,"1435":13,"1436":16,"1437":1,"1438":1,"1439":1,"1440":2,"1441":4,"1442":2,"1443":1,"1451":1,"1452":1,"1453":1,"1468":2,"1477":1,"1482":2,"1485":1,"1495":1,"1496":1,"1506":3,"1507":2,"1532":1,"1533":2,"1538":1,"1540":1,"1541":1,"1545":3,"1547":1,"1549":1,"1563":1,"1565":4,"1568":1,"1585":2,"1586":3,"1587":4,"1591":1,"1592":1,"1595":6,"1596":2,"1597":4,"1598":2,"1599":1,"1614":1,"1615":1,"1617":2,"1619":1,"1631":1,"1644":1,"1670":1,"1671":1,"1695":1,"1704":1,"1706":1,"1708":1,"1715":2,"1718":1,"1720":1,"1721":8,"1722":1,"1723":1,"1724":2,"1756":1,"1767":1,"1768":1,"1771":1,"1827":1,"1828":1,"1830":1,"1831":19,"1832":1,"1835":3,"1843":10,"1844":1,"1851":2,"1852":1,"1853":1,"1854":1,"1855":2,"1859":1,"1860":1,"1864":1,"1868":2,"1893":1,"1894":1,"1895":2,"1896":1,"1897":1,"1899":1,"1900":1,"1901":6,"1902":1,"1903":2,"1904":3,"1905":1,"1910":1,"1911":3,"1912":1,"1914":1,"1925":2,"1937":1,"1950":3,"1951":1,"1962":1,"1964":1,"1966":1,"1967":2,"1972":2,"1977":2,"1978":2,"1979":2,"1988":5,"1989":1,"1990":1,"1992":1,"1995":1,"2078":1,"2080":3,"2097":1,"2098":2,"2102":1,"2113":1,"2116":1,"2141":1,"2162":2,"2163":2,"2164":3,"2165":2,"2166":6,"2167":10,"2168":3,"2169":10,"2175":2,"2177":1,"2178":1,"2179":1,"2181":1,"2186":1,"2191":1,"2195":1,"2199":1,"2202":2,"2203":1,"2205":1,"2207":3,"2208":2,"2209":4,"2212":1,"2219":3,"2220":1,"2221":1,"2222":3,"2266":1,"2269":1,"2270":1,"2271":1,"2274":1,"2276":1,"2279":1,"2294":1,"2297":1,"2298":2,"2300":15,"2301":1,"2303":1,"2305":1,"2307":1,"2308":3,"2327":1,"2335":1,"2339":1,"2341":1,"2356":2,"2386":1,"2392":18,"2394":3,"2410":19,"2412":1,"2413":1,"2423":3,"2425":3,"2439":1,"2443":1,"2444":1,"2446":3,"2447":1,"2449":1,"2453":7,"2454":4,"2461":1,"2462":2,"2474":3,"2477":1,"2479":2,"2529":1,"2535":1,"2536":2,"2541":1,"2547":1,"2549":1,"2552":5,"2553":1,"2566":1,"2567":1,"2568":2,"2569":7,"2578":1,"2584":1,"2587":3,"2603":1,"2605":6,"2610":2,"2612":11,"2614":4,"2615":19,"2616":12,"2623":1,"2627":1,"2639":4,"2646":1,"2653":2,"2668":1,"2673":1,"2712":1,"2740":1,"2741":1,"2744":1,"2745":3,"2746":1,"2747":3,"2748":4,"2749":3,"2750":2,"2751":2,"2766":2,"2774":2,"2775":2,"2776":2,"2777":4,"2781":1,"2782":4,"2783":1,"2785":3,"2791":4,"2792":1}}],["cif",{"2":{"1721":1}}],["cint16",{"2":{"2616":2}}],["cint",{"2":{"292":1}}],["cipulot",{"2":{"249":1}}],["city42",{"2":{"222":1}}],["ciruitry",{"2":{"1611":1}}],["circ",{"2":{"2417":1,"2438":1}}],["circle",{"2":{"2071":1,"2616":4}}],["circles",{"2":{"138":1,"2616":2}}],["circumflex",{"2":{"2417":1,"2438":1}}],["circumstances",{"2":{"221":1,"679":2,"682":1,"1280":1,"1977":1,"2166":1,"2169":1,"2303":1,"2552":1,"2582":1,"2615":1,"2616":1}}],["circular",{"0":{"1265":1},"2":{"93":1,"175":2,"176":2,"236":1,"641":2,"1263":2,"1265":3,"1945":1,"2612":1}}],["circuitry",{"0":{"1892":1},"2":{"1891":1}}],["circuits",{"2":{"1495":1}}],["circuit",{"0":{"1326":1},"2":{"49":4,"1326":2,"1330":1,"1362":1,"1495":1,"1611":1,"2278":1,"2280":1,"2288":1,"2318":1,"2350":4,"2563":1,"2715":1,"2716":1}}],["cirque",{"0":{"1942":1},"1":{"1943":1,"1944":1,"1945":1,"1946":1},"2":{"118":4,"175":2,"176":7,"190":1,"191":4,"249":3,"1942":4,"1943":20,"1944":5,"1945":3,"1946":3,"1960":1,"1980":1}}],["cie1931",{"2":{"84":1,"93":1}}],["cie",{"2":{"49":1,"2616":1}}],["ci",{"2":{"17":1,"51":1,"76":1,"134":1,"160":1,"164":1,"199":1,"211":2,"249":2,"447":1,"556":1,"644":2,"2070":1,"2714":1}}],["caddy",{"2":{"2319":1}}],["cadence",{"2":{"337":1}}],["cadet",{"0":{"2146":1,"2421":1,"2700":1},"1":{"2147":1,"2148":1,"2149":1,"2150":1,"2151":1},"2":{"49":1,"188":1,"191":2,"249":1,"1537":1,"2146":1,"2148":7,"2149":1,"2150":3,"2151":3,"2421":8,"2700":1,"2744":1,"2788":1}}],["cag",{"2":{"1337":1}}],["ca",{"2":{"1337":1,"1565":1,"1703":1}}],["ca4",{"2":{"822":1}}],["ca3",{"2":{"822":1,"1148":2,"1185":2}}],["ca2",{"2":{"822":1,"1148":2,"1185":2}}],["ca1",{"2":{"822":1,"1148":2,"1185":3}}],["caveats",{"0":{"531":1,"1373":1,"1605":1,"1692":1,"1826":1,"2149":1,"2215":1,"2437":1,"2450":1},"1":{"532":1,"533":1,"534":1},"2":{"2554":1,"2605":1,"2644":1}}],["came",{"2":{"437":1,"504":1,"2725":1}}],["camps",{"2":{"173":1}}],["caution",{"2":{"541":1}}],["caught",{"2":{"356":1}}],["causing",{"2":{"141":1,"1435":1,"2382":1,"2555":1,"2623":1}}],["causes",{"2":{"556":1,"689":1,"1122":1,"1253":1,"1421":1,"1614":1,"2527":1}}],["caused",{"2":{"114":1,"134":1,"199":1,"222":1,"337":1,"1713":1}}],["cause",{"2":{"73":1,"88":2,"104":2,"127":2,"170":1,"201":1,"352":2,"556":1,"688":2,"1256":1,"1335":1,"1369":2,"1373":1,"1377":1,"1447":1,"1501":1,"1859":1,"1901":2,"1972":1,"1974":1,"1992":1,"2191":1,"2269":1,"2276":1,"2288":1,"2315":1,"2347":1,"2450":2,"2556":1,"2557":1,"2744":1,"2765":1}}],["cached",{"2":{"307":1}}],["cathodes",{"2":{"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1185":1}}],["cat24c512",{"2":{"674":2}}],["catb",{"2":{"551":1}}],["catch",{"2":{"466":1,"597":1,"1488":1}}],["catching",{"2":{"466":1}}],["caticorn",{"2":{"222":1}}],["category",{"2":{"1349":1}}],["categories",{"2":{"352":1}}],["categorize",{"2":{"110":1}}],["catered",{"2":{"322":1}}],["cater",{"2":{"182":1,"236":1,"1121":1}}],["caterina",{"0":{"2271":1,"2383":1},"1":{"2272":1},"2":{"70":1,"509":1,"514":1,"625":1,"629":11,"2164":1,"2271":3,"2272":1,"2386":5,"2387":1}}],["cain",{"2":{"211":1}}],["caffeinated",{"2":{"211":1}}],["cables",{"2":{"1129":1,"2156":6}}],["cable",{"2":{"211":1,"626":1,"1123":1,"1126":1,"1129":1,"1949":1,"2152":1,"2155":3,"2156":1,"2157":1,"2158":1,"2165":3,"2169":1,"2287":2,"2310":1,"2314":1,"2315":1}}],["casual",{"2":{"470":1}}],["cassini",{"2":{"211":1}}],["cassette42",{"2":{"154":2}}],["cases",{"2":{"25":1,"75":1,"176":1,"182":3,"194":1,"214":1,"234":1,"236":1,"246":1,"380":1,"452":1,"457":1,"483":1,"504":1,"584":1,"609":2,"610":1,"613":1,"643":1,"700":1,"1170":1,"1212":1,"1233":1,"1250":1,"1482":1,"1552":1,"1565":1,"1711":1,"1712":1,"1912":1,"1922":1,"1951":1,"2187":1,"2199":3,"2342":1,"2610":1,"2757":1,"2775":1}}],["case",{"0":{"2220":1},"2":{"11":1,"105":2,"145":1,"194":3,"195":2,"202":1,"222":1,"231":4,"273":1,"335":1,"478":1,"534":6,"538":1,"572":2,"573":1,"598":2,"626":2,"707":1,"726":1,"1214":1,"1295":1,"1313":1,"1327":1,"1337":1,"1339":1,"1340":2,"1363":1,"1369":8,"1380":4,"1381":1,"1396":5,"1397":4,"1412":1,"1421":2,"1422":1,"1441":2,"1451":1,"1453":5,"1460":6,"1467":3,"1472":2,"1477":1,"1483":15,"1487":1,"1495":1,"1532":1,"1543":6,"1548":2,"1552":1,"1555":7,"1556":1,"1560":3,"1561":4,"1563":3,"1566":1,"1587":4,"1600":1,"1672":5,"1711":1,"1830":1,"1851":3,"1864":5,"1865":1,"1868":2,"1911":3,"1912":5,"1913":4,"1915":1,"1916":1,"1918":2,"1919":2,"1921":14,"1951":1,"1958":1,"1960":1,"1962":1,"1972":2,"1977":1,"1978":1,"1979":1,"1996":2,"1997":1,"2069":1,"2082":5,"2116":1,"2140":1,"2175":3,"2200":2,"2205":4,"2206":1,"2207":12,"2208":6,"2209":7,"2220":1,"2291":2,"2301":1,"2306":1,"2309":1,"2314":1,"2333":1,"2350":1,"2366":1,"2389":1,"2452":1,"2453":3,"2454":1,"2493":1,"2513":1,"2568":1,"2603":1,"2643":2,"2745":1,"2766":2,"2767":7,"2774":1,"2775":1,"2776":1,"2777":1}}],["carries",{"2":{"2156":1}}],["carryover",{"2":{"2150":1}}],["carefully",{"2":{"1172":1,"2312":1,"2791":1}}],["careful",{"2":{"474":1,"584":1,"586":1,"628":1,"1441":1,"2312":1,"2313":1,"2462":1}}],["care",{"2":{"236":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1226":1,"1229":1,"1244":1,"1246":1,"1374":1,"1487":1,"1714":1,"2604":1,"2787":1}}],["carbo65",{"2":{"211":1}}],["car",{"2":{"211":1}}],["carve",{"2":{"113":1,"114":1,"133":1,"134":1}}],["card",{"2":{"111":2,"154":4,"1390":1}}],["captioning",{"2":{"2182":1}}],["capture",{"2":{"154":2,"194":1,"203":2,"1441":1}}],["cap",{"2":{"1851":1,"2175":1}}],["capitalized",{"2":{"1536":2}}],["capitalization",{"2":{"176":1,"1916":1}}],["capitals",{"2":{"1536":1}}],["capital",{"2":{"211":1,"1449":2,"2529":1,"2653":1}}],["capacitors",{"2":{"1627":1}}],["capacity",{"2":{"145":1}}],["capability",{"2":{"164":1,"277":1,"402":1,"1498":1,"1528":1,"2605":1}}],["capabilities",{"0":{"278":1,"279":1},"1":{"279":1,"280":2,"281":2,"282":2,"283":2,"284":2,"285":2,"286":2,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1},"2":{"145":1,"278":1,"1121":1,"2605":1,"2757":1}}],["capable",{"2":{"49":1,"138":2,"486":1,"684":1,"1125":1,"1331":1,"1424":1,"1427":1,"1503":1,"1668":1,"2278":1,"2366":1,"2389":1,"2582":1,"2605":4,"2624":1,"2631":1,"2692":1}}],["capswrd",{"2":{"188":1,"191":1}}],["capsunlocked",{"2":{"154":3,"160":1,"217":4,"222":1,"249":1}}],["caps",{"0":{"137":1,"1536":1,"1537":1,"1539":1,"1544":1,"2202":1,"2401":1,"2719":1},"1":{"1537":1,"1538":2,"1539":1,"1540":2,"1541":2,"1542":2,"1543":2,"1544":2},"2":{"137":2,"145":2,"160":2,"176":5,"188":2,"191":3,"199":2,"211":2,"222":2,"231":2,"249":1,"313":1,"505":2,"506":1,"511":1,"530":2,"1306":3,"1308":1,"1313":1,"1405":3,"1483":1,"1494":2,"1496":4,"1536":18,"1537":9,"1538":2,"1540":6,"1541":6,"1542":9,"1543":8,"1544":6,"1546":1,"1568":1,"1623":1,"1689":2,"1752":1,"1753":2,"1755":1,"1756":13,"1757":3,"1771":1,"1851":1,"1854":1,"1995":1,"1996":2,"1997":4,"2079":1,"2080":2,"2081":1,"2167":1,"2175":1,"2178":1,"2202":5,"2203":1,"2205":2,"2220":1,"2222":1,"2394":5,"2401":3,"2409":17,"2423":1,"2428":5,"2435":17,"2446":1,"2713":1,"2716":2,"2719":7,"2724":2,"2783":1,"2788":1}}],["capslock",{"2":{"112":1,"137":1,"160":1,"1271":2,"2080":2,"2713":1}}],["calc",{"2":{"2394":1,"2432":1}}],["calculator",{"2":{"2387":1,"2394":2,"2432":2}}],["calculate",{"2":{"1763":4,"1859":1,"1960":1,"1984":4,"2076":1,"2267":1}}],["calculated",{"2":{"674":1,"679":2,"1218":1,"1676":1,"1859":1,"2264":2,"2615":1}}],["calculating",{"2":{"211":1,"1327":1,"2264":2}}],["calculation",{"0":{"2263":1},"1":{"2264":1,"2265":1,"2266":1},"2":{"50":1,"114":1,"222":3,"1939":2,"2264":1,"2266":2}}],["calibrating",{"2":{"1944":1}}],["calibration",{"2":{"249":1,"1944":1}}],["california",{"2":{"211":1,"378":1}}],["calice",{"2":{"211":1}}],["caller",{"2":{"1396":1}}],["called",{"2":{"49":1,"94":1,"187":1,"194":1,"203":1,"307":1,"335":1,"564":1,"566":2,"568":1,"571":2,"572":1,"574":1,"578":1,"584":1,"586":1,"587":2,"589":1,"592":1,"646":1,"663":1,"707":2,"738":1,"764":1,"796":1,"826":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1152":1,"1189":1,"1216":2,"1237":2,"1249":1,"1291":1,"1309":1,"1362":1,"1369":1,"1378":3,"1396":1,"1501":1,"1534":1,"1543":1,"1600":1,"1616":1,"1634":2,"1636":1,"1637":1,"1638":1,"1706":1,"1708":1,"1752":1,"1754":1,"1860":2,"1915":1,"1974":2,"1977":1,"1980":1,"2069":2,"2181":6,"2182":1,"2190":4,"2199":1,"2200":8,"2220":1,"2221":1,"2302":2,"2350":2,"2366":1,"2444":1,"2461":1,"2512":1,"2529":1,"2530":1,"2587":1,"2592":1,"2644":1,"2778":1,"2783":1,"2788":2,"2790":1}}],["calling",{"2":{"160":1,"613":1,"636":1,"1372":1,"1405":1,"1537":1,"1692":1,"1853":1,"1860":1,"1965":1,"1967":2,"2177":1,"2181":1,"2200":2,"2615":1,"2616":3}}],["callback",{"0":{"185":1,"203":1,"601":1,"1481":1,"1972":1},"1":{"1482":1,"1483":1,"1484":1,"1485":1,"1486":1},"2":{"160":1,"185":1,"191":1,"196":1,"203":2,"211":1,"596":1,"597":4,"598":8,"687":1,"691":1,"1258":1,"1378":6,"1431":1,"1482":2,"1483":1,"1485":1,"1486":1,"1543":4,"1587":1,"1598":1,"1727":1,"1728":1,"1781":1,"1783":1,"1814":1,"1816":1,"1817":1,"1818":1,"1821":1,"1823":1,"1911":1,"1915":1,"1917":1,"1919":1,"1929":1,"1953":1,"1954":5,"1955":2,"1959":1,"1971":3,"2008":1,"2010":1,"2059":1,"2061":1,"2062":1,"2063":1,"2066":1,"2068":1,"2196":1,"2206":1,"2230":1,"2232":1,"2479":1,"2530":5}}],["callbacks",{"0":{"90":1,"105":1,"229":1,"597":1,"1564":1,"1587":1,"1598":1,"1718":1,"1770":1,"1864":1,"1954":1,"1955":1,"1971":1,"1994":1,"2266":1,"2530":1},"1":{"1771":1,"1972":1,"1995":1,"1996":1,"1997":1,"1998":1},"2":{"93":1,"105":1,"114":2,"160":2,"191":4,"229":1,"236":2,"249":1,"277":3,"515":1,"566":1,"597":1,"601":1,"691":1,"1124":2,"1378":2,"1544":1,"1718":1,"1754":1,"1758":1,"1895":1,"1955":1,"2301":1,"2530":1,"2606":2}}],["call",{"0":{"1593":1},"2":{"114":1,"134":2,"176":1,"191":1,"249":2,"266":1,"315":1,"340":1,"343":1,"344":1,"515":1,"534":1,"539":1,"568":1,"574":1,"576":1,"582":1,"588":1,"597":1,"614":1,"643":1,"647":1,"665":1,"700":1,"701":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1170":1,"1195":1,"1199":1,"1203":1,"1205":1,"1212":1,"1233":1,"1247":1,"1250":1,"1309":1,"1369":1,"1378":1,"1543":1,"1591":1,"1592":2,"1593":1,"1594":1,"1752":1,"1758":1,"1767":1,"1851":1,"1860":2,"1863":1,"1899":1,"1926":1,"1974":2,"1990":1,"2089":2,"2168":1,"2175":1,"2181":2,"2341":1,"2345":1,"2357":1,"2529":3,"2530":1,"2531":1,"2542":1,"2616":3,"2653":1,"2749":1,"2783":2,"2796":3}}],["calls",{"2":{"50":1,"114":1,"133":1,"134":1,"191":2,"199":1,"266":2,"277":1,"474":1,"587":1,"2089":1,"2119":1,"2199":2,"2345":1,"2623":1,"2788":1,"2796":4}}],["cannot",{"2":{"629":1,"635":3,"680":1,"702":1,"1453":1,"1535":1,"1553":1,"1565":1,"1653":1,"1708":1,"1845":1,"1860":2,"1952":1,"1986":1,"2072":1,"2273":1,"2278":1,"2288":1,"2293":1,"2366":1,"2380":1,"2389":1,"2437":1,"2452":1,"2466":1,"2479":1,"2554":1,"2555":2,"2557":1,"2616":2,"2644":1,"2741":1,"2767":3}}],["cannonkeys",{"2":{"191":1,"199":1,"211":22}}],["candidate",{"2":{"341":1,"397":1,"2605":1}}],["candidates",{"2":{"341":1}}],["candybar",{"2":{"43":4}}],["canonical",{"2":{"317":1}}],["canada",{"2":{"2742":1}}],["canadian",{"2":{"160":1,"249":1,"1392":1,"2742":5}}],["canary60rgb",{"2":{"253":2}}],["canary",{"2":{"253":2}}],["canceling",{"2":{"1340":1}}],["cancelled",{"2":{"1340":1,"1692":1}}],["cancelling",{"0":{"600":1},"2":{"1483":1}}],["canceled",{"2":{"600":1}}],["cancel",{"0":{"2236":1,"2260":1},"2":{"160":1,"598":1,"600":3,"1692":2,"2236":1,"2260":1,"2394":2,"2431":2,"2529":2}}],["can",{"0":{"503":1,"504":1,"505":1,"532":1,"553":1,"1275":1,"1291":1,"1292":1,"1296":1,"1304":1,"1306":1,"1327":1,"2197":1,"2293":1,"2358":1},"1":{"1276":1,"1277":1,"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"0":1,"1":1,"9":1,"19":1,"39":1,"45":1,"49":1,"50":2,"52":1,"60":1,"70":3,"73":1,"74":1,"80":1,"83":1,"98":1,"112":2,"119":2,"120":2,"124":1,"137":1,"149":1,"173":1,"179":1,"191":1,"194":1,"195":2,"199":1,"203":2,"206":1,"210":1,"228":1,"231":1,"233":1,"240":1,"262":1,"263":1,"291":1,"311":1,"312":1,"313":2,"315":1,"317":1,"318":2,"322":1,"324":1,"327":2,"331":4,"334":3,"335":1,"337":1,"340":1,"341":1,"352":1,"353":1,"354":1,"355":1,"365":1,"366":1,"370":2,"371":2,"374":5,"376":1,"377":1,"378":1,"384":1,"400":1,"401":1,"402":1,"403":1,"414":1,"415":1,"417":1,"418":2,"423":1,"424":1,"429":1,"430":1,"432":2,"433":1,"435":3,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1,"445":1,"446":4,"448":1,"449":1,"450":1,"451":1,"452":1,"453":3,"454":1,"455":1,"456":1,"474":1,"479":1,"481":1,"483":2,"484":1,"485":1,"488":1,"498":1,"499":1,"500":2,"501":1,"502":2,"503":1,"504":1,"506":2,"509":1,"510":1,"511":2,"513":1,"516":6,"519":2,"520":1,"521":2,"522":1,"533":1,"534":1,"541":1,"546":1,"551":1,"553":1,"554":1,"557":1,"558":1,"559":1,"560":1,"561":1,"566":1,"568":1,"570":1,"571":1,"586":2,"587":2,"589":2,"592":1,"597":1,"598":3,"599":1,"600":1,"601":2,"606":2,"609":1,"610":1,"611":1,"612":1,"613":4,"614":1,"616":1,"618":1,"621":1,"623":1,"626":2,"627":3,"628":1,"630":2,"633":1,"635":1,"639":1,"641":3,"643":1,"671":1,"673":1,"674":2,"675":2,"676":1,"684":1,"686":1,"688":3,"689":4,"690":2,"691":1,"693":1,"694":1,"697":1,"698":1,"700":1,"701":1,"702":1,"703":1,"707":2,"726":1,"788":1,"852":1,"853":1,"887":1,"921":1,"955":1,"989":1,"1023":1,"1057":1,"1091":1,"1125":1,"1126":1,"1127":1,"1130":1,"1132":1,"1133":1,"1134":2,"1135":1,"1136":2,"1137":1,"1138":1,"1142":1,"1170":1,"1172":1,"1212":1,"1213":1,"1214":2,"1216":1,"1218":1,"1233":1,"1235":1,"1237":1,"1249":2,"1250":1,"1252":1,"1254":1,"1255":1,"1262":2,"1265":1,"1271":1,"1272":1,"1273":2,"1276":2,"1278":1,"1279":2,"1280":1,"1282":1,"1284":1,"1285":1,"1286":1,"1287":1,"1289":1,"1290":1,"1291":2,"1297":1,"1299":1,"1302":2,"1307":2,"1312":1,"1313":1,"1316":1,"1317":1,"1323":1,"1324":1,"1325":1,"1327":1,"1330":1,"1332":1,"1336":1,"1337":6,"1338":1,"1339":1,"1340":1,"1347":1,"1349":2,"1350":1,"1353":1,"1354":1,"1357":2,"1365":1,"1366":1,"1368":5,"1369":5,"1372":3,"1373":2,"1375":1,"1377":4,"1378":4,"1379":1,"1381":1,"1383":2,"1384":1,"1386":1,"1388":2,"1390":1,"1391":2,"1392":1,"1396":1,"1397":1,"1398":6,"1400":2,"1401":2,"1402":1,"1405":1,"1413":2,"1414":2,"1415":2,"1417":2,"1418":1,"1420":7,"1421":3,"1422":4,"1423":3,"1424":2,"1427":1,"1430":1,"1431":2,"1432":1,"1433":1,"1434":1,"1435":6,"1437":1,"1438":2,"1439":1,"1440":2,"1441":2,"1442":1,"1443":1,"1448":1,"1449":1,"1450":1,"1451":1,"1452":2,"1453":3,"1467":1,"1468":1,"1476":2,"1477":1,"1478":1,"1479":1,"1482":1,"1483":1,"1485":1,"1488":2,"1491":1,"1500":1,"1501":2,"1504":1,"1508":1,"1529":2,"1531":1,"1534":2,"1536":1,"1537":1,"1543":1,"1548":2,"1549":1,"1550":1,"1551":1,"1552":3,"1553":3,"1555":2,"1556":1,"1560":2,"1561":3,"1563":1,"1564":1,"1565":2,"1568":1,"1572":2,"1585":1,"1587":1,"1591":4,"1592":1,"1594":2,"1595":6,"1596":2,"1597":1,"1598":1,"1600":2,"1606":1,"1616":2,"1617":1,"1632":1,"1634":1,"1668":3,"1669":1,"1670":1,"1671":2,"1689":1,"1692":2,"1693":2,"1697":1,"1704":2,"1706":2,"1708":2,"1711":2,"1714":2,"1715":1,"1718":1,"1720":1,"1721":1,"1722":3,"1755":1,"1757":1,"1761":1,"1763":3,"1766":2,"1767":2,"1771":1,"1781":1,"1783":1,"1836":1,"1839":1,"1841":3,"1842":1,"1843":2,"1844":2,"1845":1,"1846":1,"1847":1,"1852":2,"1853":2,"1854":1,"1858":2,"1859":1,"1860":2,"1862":1,"1863":1,"1864":1,"1865":1,"1866":1,"1868":2,"1870":1,"1894":1,"1895":1,"1897":1,"1899":1,"1900":1,"1901":1,"1902":1,"1903":2,"1907":1,"1912":2,"1913":1,"1915":1,"1916":1,"1917":1,"1918":1,"1921":1,"1924":1,"1925":3,"1926":1,"1933":2,"1934":1,"1937":2,"1939":1,"1943":2,"1945":3,"1946":1,"1950":2,"1952":3,"1954":3,"1955":2,"1956":4,"1964":1,"1965":1,"1967":2,"1970":1,"1974":1,"1977":2,"1980":1,"1982":1,"1984":3,"1986":1,"1987":3,"1989":1,"1990":2,"1991":1,"1995":1,"1997":2,"1998":1,"2008":1,"2010":1,"2069":1,"2072":1,"2073":1,"2074":1,"2075":1,"2078":1,"2079":2,"2080":3,"2081":1,"2082":2,"2096":1,"2097":2,"2098":3,"2104":1,"2105":1,"2113":1,"2114":1,"2140":1,"2141":1,"2142":1,"2149":1,"2150":2,"2151":1,"2152":1,"2155":1,"2156":1,"2162":2,"2163":2,"2164":3,"2165":1,"2166":3,"2167":1,"2168":4,"2169":2,"2170":1,"2171":1,"2177":2,"2178":1,"2181":2,"2182":1,"2183":2,"2184":3,"2185":1,"2187":1,"2188":2,"2190":1,"2191":1,"2194":1,"2195":1,"2198":2,"2206":1,"2207":2,"2208":1,"2209":2,"2212":1,"2214":1,"2216":1,"2218":1,"2219":2,"2220":4,"2221":3,"2234":1,"2235":1,"2236":1,"2266":1,"2275":1,"2280":1,"2283":1,"2285":1,"2287":1,"2291":2,"2295":1,"2297":2,"2300":4,"2301":5,"2303":5,"2306":1,"2307":3,"2309":2,"2310":1,"2311":2,"2313":4,"2314":2,"2315":2,"2316":3,"2319":2,"2323":1,"2325":1,"2329":1,"2334":1,"2337":1,"2338":3,"2339":3,"2340":1,"2342":1,"2344":1,"2345":1,"2347":1,"2348":1,"2350":4,"2351":2,"2353":2,"2354":2,"2357":2,"2358":1,"2359":1,"2364":1,"2365":1,"2366":1,"2367":1,"2370":1,"2385":1,"2386":2,"2387":2,"2388":1,"2389":1,"2390":1,"2392":3,"2406":1,"2440":2,"2441":2,"2443":1,"2444":6,"2445":1,"2449":2,"2450":3,"2452":2,"2453":1,"2456":3,"2457":1,"2460":4,"2461":2,"2463":1,"2464":1,"2468":1,"2469":1,"2479":2,"2480":3,"2482":3,"2483":1,"2484":2,"2486":1,"2487":2,"2489":1,"2491":1,"2493":1,"2494":1,"2495":1,"2496":1,"2505":2,"2507":2,"2508":2,"2513":4,"2514":1,"2515":1,"2516":1,"2526":4,"2527":7,"2529":3,"2530":2,"2536":2,"2540":1,"2547":2,"2551":1,"2552":4,"2555":1,"2556":4,"2557":4,"2558":1,"2560":1,"2561":1,"2563":2,"2564":1,"2569":3,"2572":1,"2573":2,"2578":1,"2579":1,"2580":1,"2581":1,"2583":1,"2587":2,"2588":1,"2589":3,"2592":1,"2594":1,"2596":2,"2599":1,"2603":1,"2604":1,"2605":6,"2606":2,"2607":1,"2608":2,"2609":1,"2612":1,"2613":4,"2614":2,"2615":37,"2616":13,"2622":1,"2623":2,"2626":1,"2633":1,"2641":1,"2646":2,"2647":2,"2649":2,"2650":1,"2670":1,"2678":1,"2693":1,"2710":1,"2711":2,"2732":1,"2740":1,"2741":1,"2744":2,"2745":3,"2746":1,"2747":3,"2749":3,"2750":2,"2755":1,"2757":2,"2758":1,"2762":1,"2766":5,"2767":7,"2774":3,"2775":3,"2776":2,"2777":3,"2782":2,"2785":2,"2787":1,"2788":2,"2789":1,"2791":2,"2792":2,"2793":2,"2794":2,"2796":8}}],["chunks",{"2":{"2181":1}}],["chunder",{"2":{"292":1}}],["chnu",{"2":{"1831":1,"2410":1}}],["chnd",{"2":{"1831":1,"2410":1}}],["ch9",{"2":{"1831":1,"2410":1}}],["ch8",{"2":{"1831":1,"2410":1}}],["ch7",{"2":{"1831":1,"2410":1}}],["ch6",{"2":{"1831":1,"2410":1}}],["ch5",{"2":{"1831":1,"2410":1}}],["ch4",{"2":{"690":1,"1831":1,"2410":1}}],["ch3",{"2":{"690":1,"1506":1,"1831":1,"2410":1}}],["chyn",{"2":{"690":1,"1267":2}}],["chy",{"2":{"690":1,"1433":1}}],["ch2",{"2":{"686":2,"687":2,"690":1,"1831":1,"2410":1}}],["ch16",{"2":{"1831":1,"2410":1}}],["ch15",{"2":{"1831":1,"2410":1}}],["ch14",{"2":{"1831":1,"2410":1}}],["ch13",{"2":{"1831":1,"2410":1}}],["ch12",{"2":{"1831":1,"2410":1}}],["ch11",{"2":{"1831":1,"2410":1}}],["ch10",{"2":{"1831":1,"2410":1}}],["ch1",{"2":{"685":2,"686":2,"687":2,"690":1,"691":1,"1433":1,"1831":1,"2410":1}}],["ch",{"2":{"199":1,"222":1,"559":1,"1392":2}}],["chrome",{"2":{"2466":1}}],["chromeos",{"2":{"191":1}}],["chromatic",{"2":{"1435":2,"1436":3,"1440":5}}],["chromatonemini",{"2":{"236":1}}],["christmas",{"2":{"49":2,"154":2,"181":2,"2072":1,"2074":2,"2075":2,"2076":4,"2415":1,"2750":1}}],["chose",{"2":{"1309":1,"1432":1,"2468":1,"2496":1}}],["chosen",{"2":{"703":1,"1126":1,"1128":1,"1133":1,"1214":1,"1235":1,"1610":1,"1843":2,"2167":1,"2298":1,"2580":1,"2581":1,"2583":2,"2703":1}}],["choosing",{"0":{"1131":1,"2585":1},"1":{"1132":1,"1133":1,"1134":1,"2586":1,"2587":1,"2588":1,"2589":1,"2590":1,"2591":1},"2":{"1122":1,"1127":1,"1130":1,"2545":1}}],["chooses",{"2":{"1362":1}}],["choose",{"2":{"453":2,"455":1,"538":1,"566":1,"641":1,"1125":1,"1128":1,"1214":1,"1362":1,"1430":1,"1715":1,"1843":1,"2219":1,"2303":1,"2349":2,"2475":1,"2484":1,"2530":1,"2534":1,"2536":1,"2579":1,"2757":1,"2774":1,"2777":1}}],["chord",{"2":{"1394":1,"1548":1,"1555":3,"1558":1,"1565":1,"2188":1,"2190":12}}],["chorded",{"2":{"1340":1,"2182":1,"2190":1}}],["chording",{"2":{"515":1,"1339":1,"1545":1}}],["chords",{"2":{"505":1,"1434":1,"1917":1,"2187":1,"2188":1,"2190":1}}],["chore",{"2":{"145":1,"211":1,"249":1}}],["choc",{"2":{"154":2}}],["choco60",{"2":{"154":2}}],["choices",{"2":{"560":1,"2456":1,"2457":1,"2725":1}}],["choice",{"2":{"74":1,"124":1,"1504":1,"1556":1,"1706":1,"1925":1,"2151":1,"2187":1,"2190":1,"2207":1,"2536":1,"2537":1,"2553":1,"2554":1,"2585":1,"2592":2}}],["children",{"2":{"1488":1}}],["child",{"2":{"1488":5,"2606":1}}],["chili",{"2":{"154":2,"211":1}}],["chime",{"2":{"592":1,"1436":1}}],["chimera",{"2":{"154":8,"160":1,"2333":1}}],["chiffre",{"2":{"154":2,"222":1,"236":1}}],["chidori",{"2":{"154":2}}],["chipid",{"2":{"2392":2}}],["chip",{"2":{"130":1,"276":1,"488":1,"560":2,"656":2,"664":1,"670":1,"671":2,"692":1,"1330":1,"1528":2,"1529":3,"1611":1,"1855":1,"1858":1,"1935":1,"1936":1,"1943":1,"1950":4,"2069":1,"2315":1,"2330":1,"2386":2,"2489":1,"2557":3,"2583":2,"2606":1,"2613":1,"2615":11,"2677":1}}],["chipsets",{"2":{"1530":1}}],["chipset",{"2":{"1529":1}}],["chips",{"2":{"123":1,"560":1,"671":4,"674":2,"675":2,"693":1,"694":1,"1168":1,"1280":1,"1356":1,"1528":1,"2274":1,"2288":1,"2374":2,"2583":1,"2589":1}}],["chibios",{"0":{"10":2,"11":1,"69":1,"77":1,"263":1,"357":1,"358":1,"359":1,"361":2,"658":1,"703":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1173":1,"1184":1,"1214":1,"1235":1,"1261":1,"1505":1,"1895":1,"2562":1},"1":{"358":1,"359":1,"360":1,"361":1,"704":1,"705":1,"1174":1,"1262":1,"1263":1,"1264":1,"1265":1,"1266":1,"1267":1,"1506":1,"1507":1,"2563":1,"2564":1,"2565":1},"2":{"10":6,"11":1,"24":1,"49":5,"50":5,"65":4,"69":4,"73":1,"74":1,"77":1,"93":1,"108":2,"113":1,"114":9,"133":1,"134":8,"145":4,"160":6,"163":1,"176":11,"191":7,"199":6,"211":2,"222":6,"236":6,"249":3,"266":3,"277":1,"349":5,"357":3,"358":2,"359":8,"360":7,"488":1,"495":1,"552":1,"635":1,"636":1,"641":1,"658":1,"685":2,"690":2,"692":1,"697":1,"726":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1124":1,"1125":1,"1128":1,"1132":2,"1133":2,"1147":1,"1174":1,"1184":1,"1263":1,"1267":2,"1506":1,"1507":1,"1862":1,"1895":1,"2169":1,"2170":1,"2300":1,"2303":2,"2349":1,"2562":4,"2563":2,"2564":2,"2565":3,"2574":2,"2575":1,"2576":1,"2585":10,"2587":4,"2588":3,"2589":1,"2590":2,"2591":2,"2603":1,"2605":5,"2712":1,"2782":1}}],["chevron",{"2":{"1987":4,"2750":1}}],["cherry",{"2":{"2745":1}}],["cherryb",{"2":{"211":4}}],["chere",{"2":{"2547":1}}],["cherish",{"2":{"176":1}}],["cheap",{"2":{"114":1,"134":1,"2389":1}}],["checkmark",{"2":{"2608":1}}],["checklist",{"2":{"2602":1}}],["checklists",{"0":{"342":1,"2602":1},"1":{"343":1,"344":1,"345":1,"346":1,"347":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1}}],["checkbox",{"2":{"2537":1}}],["checker",{"2":{"2318":1}}],["checkerboards",{"2":{"154":3,"160":1,"211":1}}],["checked",{"2":{"349":1,"367":1,"447":1,"1468":1,"1562":1,"1978":1,"1980":1,"2164":1,"2303":4,"2527":2,"2644":1}}],["checkout",{"2":{"304":1,"347":2,"349":3,"359":2,"360":4,"361":2,"554":1,"1371":1,"1419":2,"2476":4,"2526":1,"2527":3,"2545":1}}],["checking",{"0":{"315":1,"1337":1},"1":{"1338":1,"1339":1,"1340":1},"2":{"176":1,"199":2,"476":1,"484":1,"527":1,"529":1,"1340":1,"1401":1,"1917":2,"2185":1,"2209":1,"2464":1,"2492":2,"2508":1,"2587":1,"2602":1,"2779":1}}],["check",{"2":{"49":1,"87":1,"112":1,"114":2,"134":2,"145":2,"163":1,"176":6,"199":3,"211":2,"214":1,"222":2,"234":1,"236":1,"249":3,"254":1,"266":1,"277":2,"282":3,"303":1,"312":1,"315":2,"316":1,"321":1,"341":1,"376":3,"381":1,"515":2,"548":1,"556":2,"588":7,"626":1,"627":1,"628":1,"635":1,"679":1,"1264":1,"1275":1,"1292":1,"1297":1,"1323":1,"1329":2,"1330":1,"1337":2,"1378":2,"1381":3,"1396":1,"1401":1,"1414":1,"1418":1,"1421":1,"1467":1,"1475":1,"1478":1,"1492":1,"1562":1,"1564":1,"1565":1,"1737":1,"1738":1,"1740":1,"1741":2,"1743":1,"1744":3,"1746":1,"1747":4,"1749":1,"1750":5,"1767":3,"1884":1,"1943":2,"1956":1,"1960":1,"1962":1,"1978":1,"1990":3,"2070":1,"2074":1,"2109":3,"2166":2,"2200":1,"2209":2,"2210":1,"2300":2,"2318":7,"2332":5,"2342":1,"2350":1,"2364":1,"2386":1,"2387":1,"2392":2,"2493":1,"2494":1,"2516":1,"2526":1,"2545":1,"2558":1,"2562":1,"2642":1,"2644":1,"2718":1,"2738":2,"2744":1,"2792":1}}],["checksum",{"2":{"176":1,"2300":1,"2392":2}}],["checks",{"2":{"36":2,"160":1,"199":1,"236":1,"263":1,"282":3,"303":1,"341":1,"381":1,"400":1,"588":1,"1339":1,"1378":3,"1475":1,"1977":1,"2200":2,"2207":1,"2270":1,"2272":1,"2277":1,"2476":1,"2527":1}}],["chconf",{"2":{"50":2,"86":1}}],["challenge",{"2":{"606":1,"1392":1}}],["chatter",{"0":{"1362":1},"1":{"1363":1,"1364":1,"1365":1,"1366":1,"1367":1},"2":{"1172":1,"1362":1}}],["chat",{"0":{"2753":1},"2":{"553":1,"560":1,"585":1,"2365":1,"2494":1}}],["chains",{"2":{"1256":1,"1488":2,"2567":1}}],["chained",{"2":{"1249":1,"2069":1}}],["chain",{"2":{"331":1,"644":2,"648":1,"651":1,"1251":2,"1269":1,"1336":1,"1488":7,"1489":1,"2352":1,"2714":2,"2733":1,"2739":1,"2774":1,"2788":2}}],["chapter1",{"2":{"266":1}}],["charging",{"2":{"2563":1}}],["charge",{"2":{"49":2}}],["charlieplex",{"2":{"2328":1}}],["charlieplexed",{"2":{"816":1}}],["chartreuse",{"2":{"1991":2,"2096":2}}],["chars",{"2":{"249":1,"266":1,"1860":2,"2181":2}}],["character",{"0":{"1632":1},"2":{"453":1,"461":1,"1292":1,"1436":1,"1446":1,"1477":1,"1536":1,"1603":2,"1632":3,"1643":4,"1644":1,"1649":1,"1650":2,"1651":1,"1652":2,"1656":1,"1658":1,"1659":1,"1855":2,"1860":5,"2110":1,"2112":2,"2113":1,"2121":1,"2122":1,"2125":1,"2126":1,"2127":1,"2128":1,"2137":1,"2179":2,"2181":5,"2207":1,"2214":1,"2219":1,"2220":4,"2221":1,"2237":1,"2238":1,"2257":1,"2301":1,"2333":1,"2356":2,"2529":1,"2614":2,"2650":1,"2740":1,"2741":2}}],["characters",{"0":{"1314":1,"2358":1,"2359":1},"2":{"211":1,"556":1,"1396":2,"1449":2,"1455":1,"1458":1,"1465":1,"1477":1,"1478":1,"1485":2,"1629":2,"1632":3,"1645":1,"1647":1,"1664":1,"1666":1,"1713":2,"1852":1,"1860":1,"2110":1,"2113":1,"2114":1,"2119":1,"2121":1,"2123":1,"2125":1,"2176":1,"2181":1,"2219":1,"2220":5,"2221":1,"2239":1,"2252":1,"2266":2,"2301":4,"2318":1,"2354":1,"2358":1,"2359":1,"2436":1,"2437":1,"2450":1,"2603":1,"2627":1,"2628":2,"2705":1,"2711":2,"2715":1,"2740":1,"2741":4,"2767":1}}],["charactermatrix",{"2":{"31":1,"1861":1}}],["charon",{"2":{"211":1}}],["charue",{"2":{"211":2}}],["charybdis",{"2":{"176":2}}],["char",{"0":{"1245":1,"1643":1,"1645":1,"1647":1,"1649":1,"1651":1,"2119":1,"2121":1,"2123":1,"2125":1,"2127":2,"2239":1},"1":{"1246":1,"1644":1,"1646":1,"1648":1,"1650":1,"1652":1,"2120":1,"2122":1,"2124":1,"2126":1,"2128":2,"2240":1},"2":{"114":1,"134":1,"462":1,"1484":3,"1485":6,"1632":1,"1644":1,"1646":1,"1648":1,"1651":1,"1852":1,"1853":4,"1860":12,"1861":6,"2120":1,"2122":1,"2124":1,"2126":1,"2128":1,"2176":1,"2177":4,"2181":12,"2221":1,"2240":1,"2604":1,"2616":4,"2749":1}}],["chance",{"2":{"537":1,"1279":1,"1558":1,"2354":1,"2603":1}}],["chances",{"2":{"537":1,"2456":1,"2525":1,"2745":1}}],["changing",{"0":{"2097":1,"2452":1,"2453":1,"2454":1,"2623":1},"2":{"194":1,"214":1,"233":1,"236":1,"502":1,"539":1,"598":1,"1362":1,"1369":2,"1974":1,"2071":3,"2080":1,"2264":1,"2351":1,"2359":1,"2363":1,"2615":12}}],["changelist",{"0":{"114":1,"134":1,"145":1,"160":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"249":1,"266":1,"277":1}}],["changelogs",{"2":{"266":1,"351":1}}],["changelog",{"0":{"9":1,"19":1,"39":1,"52":1,"66":1,"78":1,"96":1,"115":1,"135":1,"146":1,"161":1,"177":1,"192":1,"200":1,"212":1,"223":1,"237":1,"250":1,"267":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"99":1,"160":2,"341":3,"347":1,"355":2,"2760":1}}],["changed",{"2":{"14":1,"90":1,"114":1,"141":1,"145":1,"169":1,"176":1,"182":1,"186":1,"191":1,"199":1,"214":1,"215":1,"240":1,"256":1,"341":1,"400":4,"440":1,"554":2,"565":2,"566":4,"1127":1,"1130":1,"1134":1,"1365":1,"1369":1,"1379":1,"1551":1,"1605":1,"1670":1,"1706":1,"1763":1,"1857":1,"1860":2,"1924":1,"1954":2,"1956":4,"1965":1,"1984":1,"2164":1,"2194":1,"2218":1,"2220":1,"2230":1,"2232":1,"2303":1,"2447":1,"2527":3,"2530":7,"2767":2,"2796":3}}],["changesets",{"2":{"182":1}}],["changes",{"0":{"5":1,"20":1,"40":1,"46":1,"47":1,"53":1,"61":1,"66":1,"67":1,"68":1,"72":1,"78":1,"79":1,"85":1,"91":1,"96":1,"101":1,"106":1,"115":1,"121":1,"129":1,"131":1,"135":1,"140":1,"146":1,"150":1,"155":1,"161":1,"165":1,"171":1,"177":1,"180":1,"187":1,"192":1,"193":1,"194":1,"198":1,"200":1,"201":1,"205":1,"206":1,"208":1,"212":1,"213":1,"216":1,"223":1,"225":1,"227":1,"237":1,"239":1,"240":1,"242":1,"244":1,"250":1,"252":1,"261":1,"267":1,"269":1,"337":1,"338":1,"341":1,"351":1,"352":1,"355":1,"541":1,"2513":1,"2515":1,"2527":1,"2528":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"48":1,"49":1,"50":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"62":1,"63":1,"64":1,"67":1,"68":1,"69":2,"70":2,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":2,"81":2,"82":2,"83":2,"84":2,"85":1,"86":2,"87":2,"88":2,"89":2,"90":2,"91":1,"92":2,"93":2,"94":2,"95":2,"97":1,"98":1,"99":1,"100":1,"101":1,"102":2,"103":2,"104":2,"105":2,"106":1,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":2,"123":2,"124":2,"125":2,"126":2,"127":2,"128":2,"129":1,"130":2,"131":2,"132":2,"133":2,"134":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":2,"142":2,"143":2,"144":2,"145":1,"147":1,"148":1,"149":1,"150":1,"151":2,"152":2,"153":2,"154":2,"155":1,"156":2,"157":2,"158":2,"159":2,"160":1,"162":1,"163":1,"164":1,"165":1,"166":2,"167":2,"168":2,"169":2,"170":2,"171":1,"172":2,"173":2,"174":2,"175":2,"176":1,"178":1,"179":1,"180":1,"181":2,"182":2,"183":2,"184":2,"185":2,"186":2,"187":1,"188":2,"189":2,"190":2,"191":1,"193":1,"194":2,"195":2,"196":2,"197":2,"198":1,"199":1,"201":1,"202":2,"203":2,"204":2,"205":1,"206":2,"207":2,"208":1,"209":2,"210":2,"211":1,"213":1,"214":2,"215":2,"216":1,"217":2,"218":2,"219":2,"220":2,"221":2,"222":1,"224":1,"225":1,"226":2,"227":1,"228":2,"229":2,"230":2,"231":2,"232":2,"233":2,"234":2,"235":2,"236":1,"238":1,"239":1,"240":2,"241":2,"242":1,"243":2,"244":2,"245":2,"246":2,"247":2,"248":2,"249":1,"251":1,"252":1,"253":2,"254":2,"255":2,"256":2,"257":2,"258":2,"259":2,"260":2,"261":1,"262":2,"263":2,"264":1,"265":1,"266":1,"268":1,"269":1,"270":2,"271":2,"272":2,"273":2,"274":1,"275":1,"276":1,"277":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"353":1,"354":1,"355":1,"356":1},"2":{"0":3,"2":1,"9":2,"19":3,"22":1,"25":1,"28":1,"31":4,"32":1,"34":4,"36":1,"39":2,"45":1,"52":2,"67":1,"74":1,"86":1,"87":1,"103":2,"105":1,"107":1,"114":2,"116":1,"125":1,"126":2,"131":2,"133":1,"134":2,"141":1,"160":1,"163":2,"167":1,"172":1,"175":1,"176":3,"182":1,"184":1,"185":1,"187":2,"188":1,"191":4,"198":2,"199":1,"201":3,"206":1,"211":1,"213":3,"222":2,"224":3,"231":1,"233":3,"236":2,"238":2,"247":1,"251":1,"254":1,"262":1,"263":1,"265":3,"272":1,"273":1,"275":1,"276":1,"337":1,"338":1,"341":5,"342":1,"343":3,"344":3,"345":3,"346":2,"349":3,"350":4,"351":1,"352":9,"354":2,"355":1,"407":1,"411":1,"474":1,"505":1,"521":1,"550":1,"554":6,"556":1,"558":1,"560":4,"561":1,"581":1,"607":1,"627":1,"686":1,"687":1,"690":1,"1363":1,"1366":5,"1378":1,"1440":3,"1595":1,"1611":1,"1754":1,"1825":2,"1858":6,"1960":1,"1987":4,"2081":1,"2166":1,"2169":1,"2213":3,"2264":1,"2289":1,"2301":1,"2303":4,"2348":1,"2463":1,"2464":1,"2470":1,"2479":1,"2480":1,"2487":1,"2512":2,"2513":8,"2515":1,"2516":2,"2525":1,"2527":6,"2528":1,"2530":2,"2603":1,"2605":2,"2606":5,"2607":1,"2616":1,"2659":1,"2667":1,"2706":1,"2758":1,"2759":2,"2760":1,"2767":3,"2783":1,"2787":1,"2796":2}}],["change",{"0":{"0":1,"9":1,"19":1,"39":1,"52":1,"57":1,"71":1,"272":1,"339":1,"603":1,"1379":1,"1829":1,"2090":1,"2092":1,"2787":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"340":1,"1380":1,"1381":1,"1382":1},"2":{"0":3,"9":2,"19":2,"23":1,"31":2,"39":2,"45":1,"49":1,"52":2,"64":2,"87":1,"90":2,"93":1,"94":1,"95":1,"105":3,"114":4,"118":1,"133":1,"134":3,"145":2,"160":2,"176":2,"182":1,"188":1,"191":7,"198":2,"199":4,"201":1,"211":2,"213":1,"215":1,"249":4,"255":1,"257":1,"258":1,"259":2,"262":1,"263":4,"266":5,"271":1,"272":2,"277":2,"282":6,"317":1,"337":5,"339":1,"341":4,"347":1,"349":1,"352":1,"353":1,"354":1,"355":1,"435":1,"440":1,"453":2,"454":1,"485":1,"498":1,"554":1,"556":2,"569":1,"603":1,"626":1,"641":1,"686":1,"691":1,"830":1,"865":1,"899":1,"933":1,"967":1,"1001":1,"1035":1,"1069":1,"1103":1,"1124":1,"1127":2,"1130":2,"1136":1,"1137":1,"1156":1,"1193":1,"1253":1,"1308":1,"1321":1,"1363":4,"1366":9,"1369":14,"1372":1,"1378":1,"1399":1,"1434":1,"1437":2,"1440":1,"1441":1,"1452":1,"1494":1,"1501":1,"1506":1,"1529":1,"1548":2,"1552":1,"1560":1,"1566":1,"1568":1,"1572":2,"1596":2,"1669":1,"1694":1,"1704":2,"1713":1,"1715":1,"1720":1,"1723":1,"1753":1,"1843":1,"1860":1,"1900":1,"1910":1,"1914":1,"1960":1,"1965":1,"1974":3,"1978":2,"1988":1,"1989":1,"2070":1,"2085":2,"2090":4,"2144":2,"2145":2,"2149":1,"2166":2,"2212":2,"2228":1,"2229":1,"2266":1,"2299":1,"2366":1,"2437":1,"2441":3,"2450":1,"2463":2,"2527":1,"2529":1,"2530":2,"2541":2,"2547":1,"2552":1,"2569":1,"2595":2,"2603":2,"2606":1,"2644":2,"2767":2,"2777":1,"2796":1}}],["channels",{"0":{"632":1},"1":{"633":1,"634":1,"635":1,"636":1},"2":{"633":1,"635":2,"641":2,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1171":2,"1185":1,"1254":1,"2315":1}}],["channel",{"2":{"14":2,"228":1,"633":1,"635":2,"636":1,"639":5,"659":1,"662":3,"685":1,"686":1,"690":2,"734":1,"737":3,"750":3,"760":1,"763":3,"777":3,"792":1,"795":3,"809":3,"822":1,"825":3,"841":3,"857":1,"860":3,"876":3,"891":1,"894":3,"910":3,"925":1,"928":3,"944":3,"959":1,"962":3,"978":3,"993":1,"996":3,"1012":3,"1027":1,"1030":3,"1046":3,"1061":1,"1064":3,"1080":3,"1095":1,"1098":3,"1114":3,"1151":3,"1163":3,"1169":1,"1171":3,"1185":1,"1188":3,"1204":3,"1254":1,"1267":4,"1427":2,"1433":1,"1495":2,"1506":2,"1508":1,"1825":1,"1830":2,"1831":36,"1832":1,"2410":36}}],["cumbersome",{"2":{"1565":1}}],["cuint32",{"2":{"597":1}}],["cuint16",{"2":{"195":1,"1453":1,"1555":1,"1911":2,"1912":1,"1919":1,"2616":4,"2766":1,"2767":1,"2776":1}}],["cu80",{"2":{"154":2,"160":1,"217":4,"222":1,"249":1}}],["cu75",{"2":{"154":2,"160":1}}],["cu24",{"2":{"154":2,"160":1}}],["cutters",{"2":{"2305":1,"2312":1}}],["cutoff",{"2":{"1937":1}}],["cut",{"2":{"116":1,"1436":1,"1937":1,"2171":1,"2315":1,"2394":2,"2431":2,"2453":1}}],["currency",{"2":{"2358":1}}],["currentreport",{"2":{"1958":8}}],["currently",{"2":{"7":1,"65":1,"103":1,"203":1,"221":1,"262":1,"315":1,"317":1,"382":1,"511":2,"630":1,"674":1,"675":2,"678":1,"680":1,"682":2,"684":1,"694":2,"1171":1,"1232":1,"1337":1,"1351":2,"1352":1,"1353":1,"1354":1,"1356":1,"1359":1,"1363":1,"1373":1,"1383":1,"1394":1,"1408":1,"1409":1,"1410":1,"1431":1,"1433":1,"1486":1,"1528":2,"1529":1,"1530":1,"1531":1,"1542":1,"1569":1,"1591":1,"1608":1,"1627":1,"1653":1,"1766":1,"1769":1,"1781":1,"1783":1,"1785":1,"1787":1,"1793":1,"1794":1,"1813":1,"1815":1,"1820":1,"1860":2,"1865":1,"1870":1,"1925":1,"1945":1,"1950":1,"1980":1,"1986":2,"1987":1,"1993":1,"2008":1,"2010":1,"2012":1,"2014":1,"2020":1,"2021":1,"2058":1,"2060":1,"2065":1,"2069":1,"2079":1,"2084":1,"2101":1,"2102":1,"2103":1,"2109":3,"2145":1,"2152":2,"2167":1,"2181":1,"2190":1,"2196":1,"2199":1,"2207":1,"2221":1,"2225":1,"2234":1,"2235":1,"2236":1,"2250":1,"2269":1,"2273":1,"2276":2,"2283":1,"2285":1,"2380":1,"2402":1,"2450":1,"2481":1,"2489":1,"2490":1,"2502":1,"2527":1,"2612":2,"2656":1,"2725":3,"2784":1}}],["current",{"0":{"4":1,"657":1,"790":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1},"2":{"30":1,"33":1,"49":1,"50":1,"88":1,"104":1,"114":1,"119":3,"176":2,"199":1,"266":1,"273":1,"341":1,"343":1,"350":3,"370":1,"395":1,"401":1,"405":1,"416":1,"483":1,"504":1,"506":1,"511":4,"515":1,"533":1,"560":1,"565":1,"566":1,"580":6,"599":1,"641":1,"656":2,"657":2,"786":2,"790":2,"830":1,"850":2,"855":2,"865":1,"885":2,"889":2,"899":1,"919":2,"923":2,"933":1,"953":2,"957":2,"967":1,"987":2,"991":2,"1001":1,"1021":2,"1025":2,"1035":1,"1055":2,"1059":2,"1069":1,"1089":2,"1093":2,"1103":1,"1156":1,"1193":1,"1231":1,"1337":4,"1340":1,"1372":1,"1377":2,"1378":2,"1381":4,"1392":1,"1422":1,"1471":1,"1473":1,"1483":1,"1489":1,"1508":1,"1518":1,"1519":1,"1520":1,"1525":1,"1543":1,"1544":1,"1548":1,"1563":3,"1567":1,"1568":1,"1575":1,"1608":1,"1611":2,"1658":1,"1659":2,"1676":1,"1779":1,"1799":1,"1800":1,"1809":1,"1810":1,"1812":1,"1814":1,"1816":1,"1818":1,"1821":1,"1853":3,"1854":1,"1860":10,"1917":1,"1954":3,"1956":1,"1960":1,"1965":1,"1966":1,"1970":1,"1974":4,"1987":2,"2006":1,"2026":1,"2027":1,"2032":1,"2033":1,"2038":1,"2039":1,"2048":1,"2049":1,"2054":1,"2055":1,"2057":1,"2059":1,"2061":1,"2063":1,"2066":1,"2074":1,"2095":6,"2145":2,"2150":1,"2167":4,"2177":3,"2178":1,"2181":9,"2185":3,"2190":1,"2208":1,"2209":1,"2213":3,"2217":1,"2224":1,"2253":1,"2265":4,"2307":1,"2350":2,"2366":1,"2394":1,"2397":1,"2414":3,"2432":1,"2441":1,"2456":1,"2491":1,"2513":10,"2526":1,"2528":1,"2530":1,"2536":1,"2548":1,"2558":3,"2570":1,"2606":1,"2612":1,"2616":2,"2635":1,"2736":1,"2738":2,"2744":1,"2749":3,"2767":6,"2784":1,"2787":2}}],["cur",{"2":{"2207":3,"2208":3,"2209":4}}],["curious",{"2":{"1487":1}}],["curly",{"2":{"2117":1,"2208":1,"2417":2,"2438":2,"2547":1}}],["curl",{"2":{"314":1,"315":1,"317":3}}],["cursorstyle",{"2":{"2547":1}}],["cursor",{"0":{"1634":1,"1638":1,"1641":1},"1":{"1635":1,"1639":1,"1642":1},"2":{"62":1,"114":1,"175":1,"176":2,"1569":1,"1572":1,"1631":1,"1632":1,"1635":3,"1637":1,"1638":1,"1639":3,"1641":1,"1643":1,"1658":2,"1666":1,"1839":8,"1840":8,"1841":10,"1842":14,"1843":12,"1844":6,"1845":8,"1846":2,"1854":1,"1860":19,"1910":2,"1945":1,"1952":5,"1959":2,"2117":1,"2181":19,"2301":1,"2411":8,"2691":1}}],["curved",{"2":{"1943":3}}],["curves",{"2":{"84":1,"1845":1}}],["curve",{"2":{"49":1,"74":1,"93":1,"1840":1,"1842":1,"1845":1,"2076":1,"2616":1}}],["customer",{"2":{"549":1}}],["customarily",{"2":{"255":1}}],["customary",{"2":{"179":1,"255":1}}],["custommk",{"2":{"102":3,"1352":1}}],["customising",{"0":{"2479":1},"2":{"2479":1}}],["customise",{"2":{"1282":1,"1482":1,"2475":1}}],["customisations",{"2":{"24":1}}],["customize",{"0":{"567":1,"1968":1,"1980":1,"2463":1},"1":{"568":1,"1969":1,"1970":1,"1971":1,"1972":1},"2":{"496":1,"537":1,"567":1,"584":1,"1697":1,"1700":1,"1711":1,"2345":1,"2531":1,"2592":1,"2748":1}}],["customized",{"0":{"1420":1},"2":{"45":2,"49":1,"1422":1,"1476":1,"1771":1,"1980":1,"1995":1}}],["customizing",{"0":{"1477":1,"1539":1,"2302":1},"1":{"1478":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1},"2":{"236":1,"1396":1,"2345":1}}],["customizability",{"2":{"1467":1,"2530":1}}],["customizable",{"0":{"1560":1,"1561":1},"2":{"145":1}}],["customization",{"0":{"1592":1},"1":{"1593":1,"1594":1},"2":{"191":1,"574":1,"592":1,"1372":1,"1592":1,"1594":1,"1700":1,"1704":1,"1708":1,"1956":1,"2610":1,"2779":1}}],["custom",{"0":{"533":1,"534":1,"563":1,"569":1,"1306":1,"1421":1,"1467":1,"1501":1,"1632":1,"1767":1,"1858":1,"1951":1,"1958":1,"1975":1,"1979":1,"1981":1,"1990":1,"2168":1,"2180":1,"2345":1},"1":{"564":1,"565":1,"566":1,"570":1,"571":1,"572":1,"573":1,"1859":1},"2":{"3":1,"7":1,"15":1,"49":1,"76":1,"80":1,"112":2,"114":2,"134":1,"145":2,"160":4,"176":2,"191":3,"211":3,"236":2,"265":1,"266":2,"277":2,"312":1,"318":1,"479":1,"508":2,"511":2,"515":3,"519":1,"534":21,"564":1,"565":3,"567":1,"570":3,"572":1,"586":2,"679":1,"688":1,"1255":1,"1287":1,"1294":1,"1306":2,"1337":1,"1340":1,"1367":2,"1369":1,"1379":1,"1381":1,"1396":7,"1401":1,"1412":1,"1422":2,"1435":1,"1460":3,"1467":1,"1477":1,"1483":3,"1497":1,"1501":2,"1529":2,"1537":1,"1545":1,"1548":4,"1560":1,"1561":2,"1568":1,"1594":1,"1632":3,"1649":1,"1650":1,"1651":1,"1652":1,"1664":1,"1693":2,"1694":2,"1706":1,"1708":3,"1714":1,"1716":1,"1718":1,"1754":1,"1767":10,"1771":1,"1829":1,"1830":1,"1855":3,"1858":3,"1864":1,"1868":2,"1870":2,"1911":1,"1913":2,"1918":2,"1919":1,"1921":1,"1933":1,"1934":1,"1937":1,"1951":3,"1958":1,"1959":1,"1960":1,"1979":3,"1980":1,"1981":3,"1986":1,"1990":10,"1995":1,"2072":1,"2116":1,"2159":2,"2179":3,"2187":1,"2199":3,"2208":1,"2209":1,"2220":1,"2221":1,"2281":1,"2297":1,"2301":6,"2306":1,"2309":1,"2340":1,"2345":3,"2444":2,"2446":1,"2452":1,"2453":2,"2454":1,"2456":1,"2459":1,"2468":1,"2488":1,"2489":1,"2494":1,"2496":1,"2530":1,"2540":1,"2604":1,"2605":8,"2610":2,"2612":1,"2649":1,"2658":1,"2713":1,"2716":1,"2717":1,"2722":2,"2727":1,"2728":4,"2733":1,"2734":1,"2736":1,"2739":1,"2763":1,"2764":1,"2767":2}}],["cl",{"2":{"2409":5,"2435":5,"2444":2,"2447":1}}],["cln",{"2":{"2203":1,"2206":2}}],["clk",{"2":{"1892":2,"2179":1,"2379":1,"2731":1}}],["cled",{"2":{"1763":1,"1767":1,"1984":1}}],["clearpageremainder",{"2":{"1860":1,"2181":1}}],["clears",{"2":{"1378":1,"1564":1,"1860":1,"2181":1,"2616":1}}],["clearing",{"2":{"1308":1,"1467":1,"1494":3,"2073":6}}],["cleared",{"2":{"592":1,"2563":1,"2564":1}}],["clearer",{"2":{"16":1}}],["clear",{"0":{"1408":1,"1409":1,"1410":1,"1636":1,"1874":1},"2":{"160":2,"188":1,"191":5,"199":1,"231":1,"561":1,"592":1,"1307":3,"1335":1,"1337":2,"1378":1,"1408":1,"1409":1,"1410":1,"1422":2,"1548":6,"1568":2,"1636":1,"1660":1,"1662":1,"1854":1,"1860":1,"1861":3,"1874":1,"1960":1,"2144":1,"2181":1,"2392":1,"2394":5,"2395":1,"2428":1,"2431":4,"2529":2,"2585":1,"2605":1,"2611":1,"2616":2,"2791":1}}],["cleaner",{"2":{"2320":1}}],["cleaned",{"2":{"198":1}}],["cleaning",{"2":{"224":1,"251":1,"2311":1,"2541":1}}],["clean",{"0":{"50":1,"64":1,"75":1,"94":1,"387":1},"2":{"94":1,"114":3,"133":1,"134":2,"145":1,"191":6,"199":2,"211":5,"222":2,"236":3,"249":1,"387":1,"396":1,"401":1,"411":1,"559":1,"1362":1,"2300":3,"2541":1,"2605":1,"2789":1}}],["cleans",{"2":{"13":1,"387":1,"2300":1}}],["cleanups",{"2":{"2":1,"50":1,"160":1,"191":2,"211":3,"222":7,"236":10,"249":1,"277":1}}],["cleanup",{"0":{"2":1,"25":1,"27":1,"113":1,"133":1,"229":1,"233":1},"2":{"12":1,"25":1,"64":2,"94":1,"114":3,"160":1,"187":1,"191":2,"198":1,"199":1,"201":1,"211":4,"213":1,"224":1,"233":1,"235":1,"236":2,"249":2,"268":1,"277":1,"592":1,"2788":1}}],["clr",{"2":{"1307":1,"1369":1,"1565":1,"2164":1,"2394":1,"2395":1,"2431":1,"2611":1,"2649":1}}],["clunker",{"2":{"236":1}}],["clutter",{"2":{"2536":1}}],["cluttered",{"2":{"204":1}}],["cluttering",{"2":{"28":1}}],["club",{"2":{"114":1,"154":4,"160":1,"236":2,"2281":2}}],["cluecard",{"2":{"111":1,"2788":1}}],["clueboards",{"2":{"2268":1}}],["clueboard",{"0":{"1280":1},"2":{"111":3,"160":1,"286":1,"313":1,"370":2,"375":2,"378":1,"395":1,"396":1,"414":2,"415":1,"425":1,"426":2,"623":3,"2297":2,"2332":2,"2333":1,"2334":6,"2443":1,"2446":1,"2460":2,"2461":1,"2508":7,"2604":1,"2710":4,"2711":3}}],["clag",{"2":{"2394":1,"2431":1}}],["clayer",{"2":{"1369":1,"1380":1,"2645":2}}],["classname",{"2":{"460":1}}],["class",{"2":{"457":1,"475":1,"2480":1}}],["classic",{"2":{"210":1,"1327":1,"1528":1,"2767":1}}],["clarification",{"2":{"160":1,"191":1}}],["clarify",{"2":{"134":1,"2210":1}}],["claw44",{"2":{"154":2}}],["clawsome",{"2":{"102":3}}],["clangd",{"2":{"2549":1,"2551":4}}],["clang",{"0":{"1":1,"454":1},"2":{"1":1,"114":1,"132":2,"134":2,"160":1,"400":1,"454":8}}],["clogged",{"2":{"2613":1}}],["cloning",{"2":{"2303":2,"2484":1}}],["cloned",{"2":{"2502":1,"2540":1,"2543":1,"2550":1}}],["clones",{"2":{"271":2,"487":1,"2271":1,"2370":1,"2383":1,"2694":1}}],["clone",{"2":{"93":1,"359":1,"365":1,"366":1,"554":2,"1383":1,"2271":1,"2289":1,"2291":1,"2303":3,"2479":1,"2482":2,"2483":2,"2502":1,"2507":1}}],["closing",{"2":{"453":2,"2117":1,"2146":1,"2318":1}}],["closely",{"2":{"2171":1}}],["closest",{"2":{"1488":1}}],["closes",{"2":{"341":2}}],["closed",{"2":{"340":1,"341":1,"343":1,"344":1,"345":2,"346":2,"350":2,"2182":1,"2273":1,"2350":1,"2605":1}}],["close",{"2":{"331":2,"335":1,"1575":1,"1925":1,"1927":1,"2147":3,"2148":3,"2421":3,"2499":1,"2616":6}}],["cloudline",{"2":{"211":1}}],["clocks",{"2":{"2562":1,"2563":1,"2564":1}}],["clock",{"2":{"114":1,"334":1,"502":1,"675":3,"694":3,"702":1,"704":1,"1218":5,"1260":1,"1264":1,"1855":2,"1893":1,"1894":3,"1895":2,"1896":5,"1897":2,"1935":1,"1936":2,"1943":2,"1947":1,"1949":1,"1950":2,"2070":2,"2179":1,"2387":2,"2714":1,"2731":1}}],["clockwise",{"2":{"13":2,"90":10,"588":1,"1595":1,"1598":9,"1904":1}}],["clipping",{"0":{"2098":1},"2":{"2086":3,"2098":5}}],["client",{"2":{"306":2,"1257":1,"2384":1,"2470":1,"2489":1}}],["clients",{"2":{"303":1}}],["click4",{"2":{"1616":1}}],["click3",{"2":{"1616":2}}],["click2",{"2":{"1616":2}}],["click1",{"2":{"1616":2}}],["clicking",{"2":{"540":3,"2303":2,"2365":1}}],["clicks",{"2":{"266":1,"1443":3,"1445":2,"1468":1,"1847":1,"2301":1,"2396":2}}],["clicky",{"2":{"236":1,"1435":1,"1443":18,"1445":9,"1587":2,"2396":9,"2715":2,"2788":2}}],["click",{"0":{"1443":1},"2":{"160":1,"291":2,"331":3,"335":2,"537":1,"557":1,"626":1,"627":2,"1337":1,"1443":3,"1616":15,"1937":1,"1940":3,"1945":1,"1946":2,"1958":1,"2188":3,"2303":1,"2317":1,"2437":1,"2450":1,"2491":1,"2492":1,"2537":3,"2540":2,"2547":2,"2550":2,"2552":1,"2654":1,"2691":1,"2732":1}}],["cli",{"0":{"173":1,"362":1,"368":1,"412":1,"416":1,"427":1,"433":1,"434":1,"1285":1,"2614":1},"1":{"363":1,"364":1,"365":1,"366":1,"367":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1},"2":{"1":1,"94":1,"95":1,"114":6,"132":1,"134":4,"138":1,"143":2,"145":2,"160":1,"164":1,"173":1,"176":5,"191":1,"199":7,"211":3,"222":1,"236":3,"249":2,"266":1,"277":1,"282":2,"292":1,"363":1,"364":1,"372":1,"407":2,"413":1,"428":2,"429":1,"430":18,"431":1,"432":3,"433":7,"434":2,"436":3,"437":6,"438":2,"439":2,"440":1,"441":8,"448":1,"466":1,"470":4,"484":3,"485":1,"606":1,"607":2,"609":1,"613":1,"614":3,"1285":1,"2267":1,"2268":1,"2273":1,"2275":1,"2276":2,"2279":2,"2282":3,"2283":2,"2285":2,"2287":2,"2392":1,"2461":1,"2470":1,"2476":1,"2481":1,"2493":1,"2497":1,"2500":2,"2502":1,"2504":1,"2505":1,"2506":1,"2507":1,"2612":1,"2616":4,"2762":1,"2764":2}}],["coating",{"2":{"2311":1}}],["coarser",{"2":{"2143":1}}],["coarse",{"2":{"102":2,"217":1}}],["coil",{"2":{"1611":1,"1615":1}}],["coworkers",{"2":{"1438":1,"1443":1}}],["cowfish",{"2":{"191":1}}],["coffee|",{"2":{"621":1}}],["coffee||make",{"2":{"621":1}}],["coffee",{"2":{"616":1,"621":1}}],["coseyfannitutti",{"2":{"2385":1}}],["cosmetic",{"2":{"2167":3}}],["cosmo",{"2":{"1316":1}}],["costing",{"2":{"1488":1,"2703":1}}],["cost",{"2":{"479":1,"1591":1,"1952":1,"2264":1,"2694":1,"2703":1,"2789":1}}],["cospad",{"2":{"102":2}}],["coding",{"0":{"453":1,"455":1,"555":1},"2":{"352":1,"454":1,"550":1,"555":2,"560":1,"1925":1,"2549":1,"2764":2}}],["coders",{"2":{"2789":1}}],["codepoints",{"2":{"2705":1}}],["code16",{"0":{"1407":4},"2":{"160":1,"176":1,"196":1,"1407":1,"1467":4,"1548":3,"1561":1,"1718":1,"1986":1,"2072":1,"2206":4,"2208":5,"2452":1,"2453":3,"2454":2}}],["codes",{"0":{"1971":1},"1":{"1972":1},"2":{"32":1,"176":1,"1369":3,"1422":2,"1443":1,"1830":1,"2150":1,"2221":1,"2301":1,"2437":2,"2479":1,"2529":1,"2740":1}}],["codebases",{"0":{"44":1,"59":1,"86":1,"102":1,"122":1,"144":1,"154":1,"168":1,"181":1,"197":1,"207":1,"217":1,"226":1,"241":1,"253":1,"270":1},"1":{"45":1,"60":1},"2":{"2791":1}}],["codebase",{"0":{"18":1,"113":1,"133":1},"2":{"18":1,"21":1,"35":1,"60":1,"86":1,"262":1,"455":1,"479":1,"483":1,"2603":2,"2758":1,"2793":1,"2796":1}}],["code",{"0":{"1":1,"4":1,"27":1,"33":1,"218":1,"220":1,"292":1,"480":1,"533":1,"562":1,"574":1,"575":1,"578":1,"581":1,"584":1,"589":1,"592":1,"603":1,"613":1,"614":1,"1367":1,"1379":1,"1403":1,"1404":1,"1405":1,"1406":1,"1413":1,"1830":1,"2127":1,"2190":1,"2237":1,"2244":1,"2473":1,"2542":1,"2543":1,"2546":1,"2550":1,"2551":1,"2552":1,"2781":1},"1":{"34":1,"575":1,"576":2,"577":2,"578":1,"579":2,"580":2,"581":1,"582":2,"583":2,"585":1,"586":1,"590":1,"591":1,"593":1,"594":1,"595":1,"1380":1,"1381":1,"1382":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"2128":1,"2238":1,"2245":1,"2246":1,"2474":1,"2475":1,"2476":1,"2477":1,"2478":1,"2544":1,"2545":1,"2546":1,"2547":2,"2548":1,"2549":1,"2551":1,"2782":1,"2783":1,"2784":1,"2785":1,"2786":1,"2787":1,"2788":1},"2":{"2":1,"3":1,"10":1,"15":1,"21":1,"22":1,"24":1,"25":1,"28":1,"31":1,"49":2,"50":4,"57":2,"64":1,"65":1,"70":1,"74":2,"75":1,"76":1,"90":13,"92":1,"93":2,"94":2,"105":6,"112":1,"113":3,"114":11,"123":1,"125":7,"132":1,"133":5,"134":10,"145":2,"160":6,"173":1,"174":1,"175":3,"176":8,"185":7,"190":2,"191":5,"194":2,"199":2,"201":1,"206":1,"211":1,"215":1,"218":1,"220":1,"222":4,"229":1,"231":1,"236":5,"243":1,"245":1,"249":1,"266":4,"268":1,"272":1,"282":1,"291":1,"292":4,"302":2,"312":1,"316":1,"318":1,"331":1,"354":2,"384":1,"388":1,"400":3,"406":1,"407":1,"411":1,"430":1,"442":1,"445":2,"446":2,"447":2,"453":5,"454":2,"456":1,"457":1,"466":1,"469":1,"473":1,"478":1,"479":3,"480":1,"481":3,"482":4,"483":1,"496":1,"503":1,"504":1,"505":3,"517":1,"550":1,"556":2,"557":1,"560":1,"562":3,"563":1,"565":1,"567":1,"569":1,"574":1,"576":1,"582":1,"584":2,"586":1,"588":1,"590":2,"603":1,"607":1,"613":2,"614":1,"631":1,"643":2,"655":1,"678":1,"679":1,"681":1,"682":1,"700":2,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1170":2,"1181":1,"1212":2,"1233":2,"1250":2,"1282":1,"1287":1,"1289":1,"1290":1,"1300":1,"1302":1,"1307":1,"1316":1,"1320":1,"1337":1,"1339":2,"1340":3,"1349":1,"1350":3,"1353":1,"1354":1,"1363":2,"1369":1,"1378":1,"1379":1,"1381":1,"1388":1,"1390":1,"1397":3,"1401":1,"1404":1,"1405":4,"1406":1,"1412":4,"1413":1,"1417":1,"1421":2,"1422":1,"1436":1,"1437":1,"1482":1,"1483":1,"1484":1,"1485":2,"1490":1,"1534":2,"1536":1,"1537":1,"1560":1,"1561":3,"1597":1,"1598":5,"1611":1,"1643":1,"1668":1,"1671":1,"1694":1,"1754":2,"1755":1,"1829":1,"1852":1,"1855":1,"1859":1,"1925":1,"1937":1,"1950":1,"1954":2,"1955":2,"1960":1,"1972":1,"1977":1,"1978":1,"1979":4,"1981":3,"1986":1,"1992":1,"2072":1,"2073":1,"2085":1,"2098":1,"2128":1,"2168":1,"2172":1,"2176":1,"2179":1,"2187":3,"2190":1,"2195":1,"2207":11,"2208":1,"2209":4,"2219":4,"2220":3,"2221":7,"2222":3,"2234":1,"2235":1,"2236":1,"2238":2,"2244":1,"2246":1,"2247":1,"2261":1,"2264":1,"2280":1,"2295":1,"2296":1,"2297":1,"2298":1,"2299":2,"2301":7,"2325":1,"2334":1,"2340":2,"2345":1,"2348":2,"2423":3,"2440":6,"2445":1,"2447":1,"2450":1,"2452":1,"2453":2,"2457":1,"2469":1,"2472":1,"2479":1,"2520":2,"2531":5,"2540":2,"2542":8,"2545":2,"2546":1,"2548":1,"2549":4,"2551":5,"2552":6,"2563":2,"2564":1,"2592":1,"2605":8,"2606":1,"2608":1,"2616":1,"2620":2,"2628":2,"2644":1,"2668":2,"2670":2,"2695":1,"2748":2,"2749":3,"2752":1,"2757":1,"2758":1,"2762":1,"2767":1,"2768":1,"2782":1,"2783":2,"2790":1,"2791":1,"2796":5}}],["copper",{"2":{"2309":1}}],["copied",{"2":{"513":1,"2603":1}}],["copies",{"2":{"249":1,"1396":1}}],["copying",{"2":{"2464":1,"2508":1,"2615":1}}],["copyrighted",{"2":{"1435":1}}],["copyrights",{"2":{"559":1}}],["copyright",{"0":{"2348":1},"2":{"352":1,"1417":1,"2348":2,"2592":2,"2609":2,"2758":1}}],["copypasta",{"2":{"114":1,"1390":1}}],["copy",{"0":{"452":1},"2":{"31":1,"114":1,"191":1,"304":1,"452":1,"554":1,"1307":1,"1417":1,"1482":1,"2283":2,"2285":2,"2287":2,"2291":2,"2303":1,"2394":2,"2431":2,"2453":1,"2454":1,"2461":1,"2479":1,"2480":1,"2481":1,"2482":1,"2483":1,"2484":1,"2491":1,"2603":1,"2605":1,"2609":1,"2615":1,"2654":2}}],["covered",{"0":{"1297":1},"2":{"1271":1,"2387":1}}],["cover",{"2":{"673":1,"1295":1,"1842":1,"2301":1,"2599":1}}],["covers",{"2":{"528":1,"616":1,"1274":1,"1301":1,"1303":1,"1482":1,"1840":1,"2172":1,"2219":1,"2301":1,"2542":1,"2652":1}}],["covering",{"2":{"222":1,"556":1,"2518":1}}],["coverage",{"2":{"134":2,"236":1}}],["co",{"2":{"211":1,"701":1,"1996":1,"2711":1}}],["cocoa40",{"2":{"154":2}}],["coordinate",{"2":{"1575":2,"1763":1,"1984":1,"2616":2}}],["coordinates",{"2":{"100":2,"114":1,"176":1,"277":1,"1569":1,"1571":2,"1572":1,"1860":1,"1943":1,"2181":1,"2615":1}}],["cooperating",{"2":{"674":1}}],["cooler",{"2":{"2146":1}}],["cool",{"2":{"616":1,"621":5,"1413":2,"1414":2,"1767":10,"1990":10,"2146":1,"2311":1,"2312":2}}],["cook",{"2":{"154":2,"211":1}}],["coexist",{"2":{"98":1}}],["cozykeys",{"2":{"56":3}}],["col1",{"2":{"2350":13}}],["col0",{"2":{"2350":14}}],["col2row",{"2":{"502":3,"563":1,"580":3,"2269":2,"2276":2,"2558":2,"2596":1,"2728":1,"2732":2}}],["colons",{"2":{"2793":1}}],["colon",{"0":{"285":2},"2":{"2198":1,"2207":1,"2417":1,"2438":1}}],["coloured",{"2":{"1491":1}}],["colour",{"2":{"222":1,"1491":1}}],["color=false",{"2":{"2300":2}}],["colored",{"2":{"626":1}}],["colorizing",{"0":{"435":1},"2":{"432":1}}],["colorize",{"2":{"431":1,"432":1,"435":1}}],["colors",{"0":{"1991":1,"2096":1},"2":{"160":1,"214":1,"435":3,"1253":1,"1560":1,"1991":1,"1998":1,"2071":1,"2076":1,"2080":1,"2096":1,"2613":1,"2614":4,"2616":1,"2635":4}}],["color",{"0":{"647":1,"649":1,"665":1,"667":1,"741":1,"743":1,"768":1,"770":1,"800":1,"802":1,"832":1,"834":1,"867":1,"869":1,"901":1,"903":1,"935":1,"937":1,"969":1,"971":1,"1003":1,"1005":1,"1037":1,"1039":1,"1071":1,"1073":1,"1105":1,"1107":1,"1158":1,"1160":1,"1176":1,"1178":1,"1195":1,"1197":1,"2008":1,"2010":1,"2071":1},"1":{"648":1,"650":1,"666":1,"668":1,"742":1,"744":1,"769":1,"771":1,"801":1,"803":1,"833":1,"835":1,"868":1,"870":1,"902":1,"904":1,"936":1,"938":1,"970":1,"972":1,"1004":1,"1006":1,"1038":1,"1040":1,"1072":1,"1074":1,"1106":1,"1108":1,"1159":1,"1161":1,"1177":1,"1179":1,"1196":1,"1198":1,"2009":1,"2011":1},"2":{"114":1,"191":1,"199":1,"236":1,"435":10,"582":1,"593":2,"594":2,"647":1,"649":1,"654":1,"665":1,"667":1,"729":1,"730":1,"734":1,"737":1,"741":1,"743":1,"745":1,"747":1,"751":1,"755":1,"756":1,"760":1,"763":1,"768":1,"770":1,"772":1,"774":1,"778":1,"784":1,"785":1,"792":1,"795":1,"800":1,"802":1,"804":1,"806":1,"810":1,"816":1,"817":1,"822":1,"825":1,"832":1,"834":1,"836":1,"838":1,"842":1,"848":1,"849":1,"857":1,"860":1,"867":1,"869":1,"871":1,"873":1,"877":1,"883":1,"884":1,"891":1,"894":1,"901":1,"903":1,"905":1,"907":1,"911":1,"917":1,"918":1,"925":1,"928":1,"935":1,"937":1,"939":1,"941":1,"945":1,"951":1,"952":1,"959":1,"962":1,"969":1,"971":1,"973":1,"975":1,"979":1,"985":1,"986":1,"993":1,"996":1,"1003":1,"1005":1,"1007":1,"1009":1,"1013":1,"1019":1,"1020":1,"1027":1,"1030":1,"1037":1,"1039":1,"1041":1,"1043":1,"1047":1,"1053":1,"1054":1,"1061":1,"1064":1,"1071":1,"1073":1,"1075":1,"1077":1,"1081":1,"1087":1,"1088":1,"1095":1,"1098":1,"1105":1,"1107":1,"1109":1,"1111":1,"1115":1,"1143":1,"1151":1,"1158":1,"1160":1,"1171":1,"1176":1,"1178":1,"1180":1,"1181":1,"1185":1,"1188":1,"1195":1,"1197":1,"1199":1,"1201":1,"1205":1,"1249":2,"1253":2,"1254":1,"1369":3,"1864":4,"1982":1,"1987":2,"1988":1,"1989":2,"1990":2,"1991":1,"1995":3,"1996":4,"1997":4,"1998":1,"2008":1,"2010":1,"2056":1,"2069":2,"2071":2,"2074":3,"2078":1,"2085":1,"2090":1,"2096":1,"2300":2,"2328":1,"2613":2,"2614":6,"2615":12,"2616":7,"2636":1,"2734":1}}],["col",{"0":{"1641":1},"1":{"1642":1},"2":{"199":1,"222":1,"502":1,"511":3,"573":1,"580":4,"1169":1,"1171":2,"1289":8,"1585":1,"1590":1,"1642":1,"1763":3,"1860":1,"1984":3,"1996":4,"2169":2,"2181":1,"2193":1,"2269":1,"2276":1,"2728":2}}],["colemak",{"0":{"2669":1},"2":{"191":1,"370":2,"401":2,"1375":1,"1392":2,"1399":2,"1562":1,"2441":1,"2445":1,"2646":2,"2742":3}}],["coled",{"2":{"31":1,"34":1}}],["coln",{"2":{"176":3,"2206":1,"2417":1,"2438":1}}],["collectively",{"2":{"2526":1}}],["collection",{"2":{"1288":1}}],["collected",{"2":{"2458":1}}],["collect",{"2":{"1868":1}}],["collector",{"2":{"1169":2}}],["collaborator",{"2":{"521":1,"561":1,"2602":1,"2606":1}}],["collaborators",{"2":{"163":1,"201":1,"341":2,"2361":1,"2602":1,"2603":2,"2606":2,"2608":1}}],["collisions",{"2":{"141":1,"167":1,"1381":1}}],["collision",{"2":{"134":1,"186":1,"679":1,"1279":1}}],["cols",{"2":{"111":1,"114":2,"502":1,"530":1,"580":2,"1169":1,"1171":2,"1327":1,"1396":2,"1442":1,"1629":1,"1763":2,"1830":1,"1984":2,"1996":1,"2193":1,"2202":1,"2440":1,"2445":3,"2462":1,"2558":1,"2596":3,"2597":1,"2605":1,"2728":1,"2786":1}}],["columnn",{"2":{"1533":1}}],["columner",{"2":{"241":2}}],["columns",{"0":{"2313":1},"2":{"211":1,"249":1,"453":1,"455":1,"502":3,"511":1,"1171":2,"1172":1,"1327":1,"1366":1,"1440":1,"1442":1,"2160":1,"2169":2,"2307":2,"2313":1,"2315":1,"2318":1,"2350":4,"2596":1,"2597":1,"2653":1,"2687":1,"2728":2}}],["column",{"0":{"1327":1},"2":{"55":1,"222":1,"266":1,"289":2,"580":2,"1171":1,"1532":2,"1533":1,"1534":1,"1642":1,"1650":1,"1652":1,"1766":4,"1855":1,"1860":2,"1987":4,"2160":1,"2179":1,"2181":2,"2193":4,"2307":1,"2313":5,"2315":2,"2318":2,"2350":16,"2440":1,"2558":2,"2597":1,"2653":1,"2725":1,"2732":1,"2769":1,"2784":1}}],["court",{"2":{"2182":1}}],["courtesy",{"2":{"562":1}}],["course",{"2":{"120":1,"123":1,"546":1,"1706":1,"2366":1,"2796":1}}],["couldn",{"0":{"2709":1}}],["could",{"0":{"1694":1},"2":{"211":1,"352":1,"374":1,"401":1,"414":1,"481":2,"628":1,"639":1,"641":1,"1366":1,"1373":1,"1375":1,"1407":1,"1420":1,"1421":2,"1432":1,"1484":1,"1488":1,"1548":1,"1556":1,"1560":1,"1600":2,"1841":1,"1917":1,"1927":1,"1949":1,"1979":2,"2156":1,"2319":1,"2358":1,"2448":1,"2450":2,"2514":1,"2530":1,"2616":1,"2644":2,"2709":1,"2774":2,"2779":1,"2785":1}}],["couple",{"2":{"156":1,"346":1,"1308":1,"1398":1,"1435":1,"1479":1,"1913":1,"2166":1,"2184":1,"2312":1,"2315":1,"2644":1}}],["coupled",{"2":{"48":1,"119":1,"131":1}}],["count=6",{"2":{"2339":1}}],["count=30",{"2":{"2339":1}}],["counting",{"2":{"2303":2,"2653":1}}],["countries",{"2":{"1376":1}}],["counts",{"2":{"236":2,"277":1,"1918":1,"1950":1,"2200":1}}],["counteract",{"2":{"1715":1,"2777":1}}],["counterparts",{"2":{"1407":1}}],["counterpart",{"2":{"1373":1}}],["counters",{"2":{"461":1,"1366":1}}],["counter",{"2":{"114":1,"336":1,"1506":1,"1598":1,"2200":1}}],["count",{"0":{"2252":1},"1":{"2253":1},"2":{"49":2,"70":1,"111":1,"112":1,"166":1,"183":6,"191":4,"199":1,"222":3,"236":4,"249":4,"292":2,"506":1,"611":2,"659":1,"674":1,"675":1,"679":1,"680":3,"734":2,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":1,"1185":2,"1251":1,"1289":8,"1363":1,"1483":2,"1488":1,"1537":1,"1670":2,"1671":1,"1672":1,"1676":1,"1768":1,"1782":1,"1853":1,"1858":3,"1918":5,"1919":3,"1920":2,"1948":1,"1966":2,"1974":2,"1992":1,"2009":1,"2070":1,"2076":1,"2077":2,"2089":4,"2097":1,"2098":1,"2177":1,"2180":2,"2194":1,"2199":1,"2206":1,"2264":1,"2266":4,"2452":1,"2453":3,"2454":1,"2513":2,"2616":4,"2633":1,"2727":2,"2733":3,"2734":2}}],["corp",{"2":{"2489":1,"2492":2}}],["coral",{"2":{"1991":2,"2096":2}}],["corrupted",{"2":{"2366":1}}],["corruption",{"2":{"249":1,"2796":1}}],["corresponds",{"2":{"1488":1,"1832":1,"2188":1,"2207":1,"2386":1}}],["correspond",{"2":{"659":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1185":1,"1671":1,"2393":1,"2436":1,"2725":1}}],["corresponding",{"2":{"118":1,"166":1,"430":1,"641":1,"690":1,"1129":1,"1305":1,"1337":1,"1468":1,"1488":1,"1567":1,"1855":1,"2185":1,"2301":1,"2307":1,"2317":1,"2350":1,"2606":1,"2614":1,"2635":2,"2638":1,"2639":1,"2741":1,"2774":1,"2775":1}}],["corrected",{"2":{"399":1,"1484":1,"1485":2,"2616":1}}],["correctness",{"2":{"263":1,"2606":1}}],["corrections",{"2":{"199":1,"266":1,"1477":2}}],["correction",{"2":{"49":1,"222":1,"236":1,"249":2,"1171":3,"1477":3,"1488":1,"1489":1}}],["correct",{"2":{"11":1,"114":2,"132":1,"134":1,"160":1,"176":4,"194":1,"199":2,"211":2,"222":2,"236":1,"249":2,"428":1,"537":1,"538":1,"566":2,"626":1,"627":1,"629":1,"674":1,"690":1,"1129":1,"1132":1,"1133":1,"1280":1,"1368":1,"1422":1,"1442":1,"1467":1,"1474":1,"1475":1,"1478":2,"1484":2,"1485":3,"1488":1,"1533":1,"1708":1,"1862":1,"1897":1,"1953":1,"1986":1,"2164":1,"2221":1,"2350":1,"2475":1,"2497":1,"2547":1,"2551":1,"2552":1,"2561":1,"2589":1,"2605":1,"2616":2}}],["correctly",{"2":{"11":1,"31":1,"34":1,"48":1,"73":1,"132":1,"191":2,"199":1,"263":2,"277":2,"323":1,"332":1,"377":1,"674":1,"1289":1,"1340":1,"1367":1,"1478":1,"1598":1,"1868":1,"2188":1,"2318":2,"2437":1,"2450":1,"2477":1,"2480":1,"2484":1,"2546":1,"2552":3,"2605":1,"2606":1,"2615":4}}],["cor65",{"2":{"249":1}}],["cor",{"2":{"211":1}}],["corner",{"2":{"1946":1,"2725":2}}],["corne",{"2":{"86":1,"92":1,"93":1,"191":1,"211":1}}],["cortex",{"2":{"50":1,"134":1,"191":1,"222":1,"2552":4,"2567":1}}],["cored",{"2":{"2305":1,"2313":2}}],["cores",{"2":{"1895":1}}],["core",{"0":{"1":1,"20":1,"46":1,"47":1,"61":1,"68":1,"91":1,"106":1,"129":1,"155":1,"171":1,"187":1,"198":1,"208":1,"227":1,"242":1,"261":1,"560":1,"568":1,"2606":1,"2640":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"48":1,"49":1,"50":1,"62":1,"63":1,"64":1,"69":1,"70":1,"92":1,"93":1,"94":1,"95":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"130":1,"131":1,"132":1,"133":1,"156":1,"157":1,"158":1,"159":1,"172":1,"173":1,"174":1,"175":1,"188":1,"189":1,"190":1,"209":1,"210":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"262":1,"263":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1},"2":{"1":2,"75":2,"113":5,"114":7,"118":1,"130":1,"133":3,"134":6,"145":5,"151":1,"157":1,"160":3,"176":3,"179":1,"187":1,"191":2,"198":1,"199":4,"211":3,"213":1,"222":2,"236":2,"249":2,"266":1,"277":1,"341":2,"354":1,"400":3,"556":1,"559":1,"560":2,"568":1,"607":1,"683":1,"686":1,"1312":1,"1324":1,"1366":1,"1434":1,"1598":1,"1767":1,"1990":1,"2216":1,"2295":1,"2349":1,"2361":1,"2585":1,"2603":2,"2605":5,"2606":5,"2764":1,"2782":2,"2784":1}}],["congrats",{"2":{"2494":1}}],["congratulations",{"2":{"545":1}}],["conjunction",{"2":{"2209":1}}],["conu",{"2":{"1610":1}}],["conducted",{"2":{"2311":1}}],["conductors",{"2":{"1123":1,"1126":1,"1129":1}}],["conduct",{"0":{"562":1},"2":{"550":1,"562":2,"2752":1}}],["cond",{"2":{"473":1,"1610":1}}],["conditions",{"0":{"1917":1},"2":{"674":1,"1556":1,"1600":1,"1917":1,"1980":2,"2207":1}}],["conditional",{"0":{"473":1,"1350":1},"2":{"473":1}}],["condition",{"2":{"211":1,"277":1,"453":4,"1337":1,"1352":1,"1359":1,"2768":1}}],["concurrent",{"2":{"2613":1}}],["concurrently",{"2":{"2525":1}}],["concept",{"2":{"2562":1}}],["conceptually",{"2":{"2447":1}}],["concepts",{"2":{"113":1,"552":1,"2351":1,"2496":1,"2512":1,"2514":1,"2725":1,"2761":1,"2781":1}}],["conceived",{"2":{"2198":1}}],["concerns",{"2":{"2759":1}}],["concerning",{"2":{"1383":1}}],["concern",{"2":{"479":1,"2443":1,"2608":1}}],["concerned",{"2":{"263":1}}],["concrete",{"2":{"234":1}}],["confuse",{"2":{"2343":1,"2656":1}}],["confused",{"2":{"1396":1}}],["confusion",{"2":{"271":1,"1598":1,"2653":1}}],["confusingly",{"2":{"1310":1}}],["confusing",{"2":{"243":1,"347":1,"474":1,"482":1,"556":1,"2193":1,"2740":1}}],["conforms",{"2":{"2614":1}}],["conform",{"2":{"244":1,"560":1,"2331":1,"2344":1,"2598":1}}],["conf",{"2":{"134":1,"360":1,"1276":1,"2622":1}}],["conflicted",{"2":{"2513":1}}],["conflicting",{"0":{"1386":1},"2":{"2513":7}}],["conflicts",{"0":{"2512":1},"1":{"2513":1},"2":{"191":1,"341":2,"1420":1,"2188":1,"2511":1,"2513":1,"2525":1,"2603":4,"2605":1}}],["conflict",{"2":{"92":1,"191":1,"367":1,"455":1,"1504":1,"1538":1,"2149":1,"2512":2,"2513":7}}],["confirm",{"2":{"347":1,"626":1,"627":1,"635":1,"679":1,"2587":1}}],["confirmed",{"2":{"32":1,"2319":1}}],["confident",{"2":{"337":1,"2706":1}}],["confidence",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"182":1,"337":1,"2587":1,"2606":1}}],["conficts",{"2":{"114":1}}],["configparser",{"2":{"436":2}}],["configuring",{"0":{"331":1,"335":1,"496":1,"1452":1,"1840":1,"2188":1,"2551":1},"1":{"497":1,"498":1,"499":1,"500":1,"1453":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1465":1,"1466":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1846":1},"2":{"580":1,"830":1,"865":1,"899":1,"933":1,"967":1,"1001":1,"1035":1,"1069":1,"1103":1,"1156":1,"1193":1,"1499":1,"2160":1,"2598":1,"2762":1}}],["configures",{"2":{"1436":2,"1541":1,"1608":2,"1611":3,"1671":1,"1941":3,"2166":1,"2714":1,"2715":1,"2716":1,"2717":1,"2718":1,"2719":1,"2720":1,"2721":1,"2722":1,"2723":1,"2724":1,"2726":1,"2727":1,"2729":1,"2730":1,"2731":1,"2733":1,"2734":1,"2735":1,"2736":1,"2737":1,"2739":1}}],["configured",{"0":{"505":1},"2":{"134":1,"236":1,"255":1,"256":1,"266":1,"433":1,"468":1,"502":1,"566":2,"606":1,"674":1,"684":1,"685":1,"689":1,"852":3,"1023":3,"1057":3,"1126":2,"1129":1,"1142":1,"1169":1,"1231":1,"1251":1,"1255":1,"1262":1,"1312":1,"1413":1,"1424":1,"1428":1,"1437":1,"1497":1,"1535":1,"1553":1,"1608":1,"1671":2,"1703":2,"1865":1,"1899":1,"1901":1,"1912":1,"1987":1,"1996":1,"2073":1,"2081":1,"2084":1,"2104":1,"2105":1,"2108":1,"2166":1,"2441":1,"2461":1,"2471":1,"2487":1,"2493":1,"2516":3,"2546":1,"2563":2,"2564":1,"2578":1,"2579":1,"2581":1,"2599":1,"2605":1,"2615":13,"2620":1,"2740":1,"2767":1,"2776":1,"2782":1}}],["configure",{"0":{"1543":1,"2460":1,"2539":1,"2550":1},"1":{"2540":1,"2541":1,"2551":1},"2":{"76":1,"112":2,"124":1,"139":1,"186":1,"195":1,"211":1,"221":1,"372":1,"515":1,"564":1,"565":1,"566":1,"658":1,"690":1,"702":1,"733":1,"749":1,"751":1,"758":1,"759":1,"776":1,"778":1,"787":1,"791":1,"808":1,"810":1,"819":1,"821":1,"840":1,"842":1,"851":1,"856":1,"875":1,"877":1,"886":1,"890":1,"909":1,"911":1,"920":1,"924":1,"943":1,"945":1,"954":1,"958":1,"977":1,"979":1,"988":1,"992":1,"1011":1,"1013":1,"1022":1,"1026":1,"1045":1,"1047":1,"1056":1,"1060":1,"1079":1,"1081":1,"1090":1,"1094":1,"1113":1,"1115":1,"1124":1,"1127":1,"1130":1,"1146":1,"1147":1,"1162":1,"1169":1,"1174":1,"1183":1,"1184":1,"1203":1,"1205":1,"1262":2,"1368":1,"1369":2,"1434":1,"1443":1,"1495":1,"1496":1,"1501":1,"1533":1,"1536":1,"1538":1,"1541":1,"1543":1,"1552":3,"1555":1,"1597":1,"1693":1,"1706":1,"1722":1,"1753":1,"1762":1,"1901":1,"1914":1,"1950":1,"1953":1,"1983":1,"2162":1,"2163":1,"2169":1,"2188":2,"2218":1,"2298":1,"2338":1,"2339":2,"2460":1,"2461":1,"2464":1,"2493":2,"2542":1,"2575":1,"2576":1,"2581":1,"2594":1,"2597":1,"2618":1,"2646":1,"2763":1,"2764":1,"2765":1,"2767":2}}],["configurability",{"2":{"1704":1}}],["configurables",{"2":{"124":1,"201":1,"213":1}}],["configurable",{"2":{"74":1,"109":1,"134":1,"137":1,"176":1,"198":1,"210":1,"211":1,"246":1,"496":1,"673":1,"676":1,"679":1,"680":1,"681":1,"686":1,"1536":1,"1946":1,"1989":1,"2563":1,"2605":1,"2613":1,"2616":2}}],["configuratorexport",{"2":{"370":1,"371":1}}],["configurator",{"0":{"517":1,"520":1,"528":1,"536":1,"544":1,"1271":1,"2466":1,"2652":1,"2653":1,"2655":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"545":1,"546":1,"547":1,"548":1,"549":1,"1272":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1},"2":{"35":1,"114":1,"120":2,"139":1,"209":1,"349":1,"370":1,"371":2,"379":1,"388":1,"393":2,"394":2,"405":1,"441":2,"517":3,"519":2,"520":3,"521":1,"523":1,"524":1,"528":1,"529":3,"530":1,"532":1,"533":2,"534":1,"535":2,"536":1,"537":1,"541":1,"545":2,"549":1,"1271":1,"1295":1,"1323":1,"1391":1,"2297":2,"2318":1,"2334":1,"2337":1,"2361":1,"2362":1,"2466":6,"2475":1,"2476":1,"2494":1,"2588":1,"2605":2,"2652":1,"2653":4,"2654":3,"2655":3,"2656":1,"2658":1,"2710":1,"2725":1}}],["configurations",{"0":{"1469":1},"2":{"76":1,"265":1,"335":1,"374":1,"436":1,"495":1,"499":1,"560":1,"635":2,"674":1,"675":1,"684":1,"685":1,"694":1,"1469":1,"1849":1,"1937":1,"1942":1,"1954":1,"1955":1,"2206":2,"2323":1,"2552":1,"2558":1,"2582":1,"2757":1,"2778":1,"2793":4}}],["configuration",{"0":{"28":1,"112":1,"183":1,"412":1,"417":1,"418":1,"419":1,"423":1,"425":1,"426":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"506":1,"604":1,"605":1,"640":1,"644":1,"656":1,"658":1,"671":1,"672":1,"673":1,"674":1,"675":1,"676":1,"677":1,"678":1,"679":1,"680":1,"681":1,"682":1,"693":1,"694":1,"702":1,"703":1,"731":1,"733":1,"757":1,"759":1,"786":1,"791":1,"818":1,"821":1,"850":1,"856":1,"885":1,"890":1,"919":1,"924":1,"953":1,"958":1,"987":1,"992":1,"1021":1,"1026":1,"1055":1,"1060":1,"1089":1,"1094":1,"1123":1,"1126":1,"1129":1,"1135":1,"1145":1,"1147":1,"1169":1,"1171":1,"1173":1,"1182":1,"1184":1,"1213":1,"1214":1,"1234":1,"1235":1,"1251":1,"1255":1,"1261":1,"1345":1,"1350":1,"1368":1,"1416":1,"1494":1,"1497":1,"1502":1,"1505":1,"1550":1,"1568":1,"1606":1,"1629":1,"1670":1,"1719":1,"1753":1,"1762":1,"1763":1,"1832":1,"1855":1,"1856":1,"1857":1,"1867":1,"1924":1,"1952":1,"1953":1,"1983":1,"1984":1,"2073":1,"2102":1,"2108":1,"2112":1,"2150":1,"2151":1,"2154":1,"2159":1,"2169":1,"2179":1,"2193":1,"2212":1,"2217":1,"2264":1,"2595":1,"2596":1,"2599":1,"2600":1,"2613":1,"2712":1,"2713":1,"2765":1},"1":{"419":1,"420":1,"421":1,"422":1,"437":1,"438":1,"439":1,"440":1,"441":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"657":1,"672":1,"673":2,"674":1,"675":1,"676":1,"677":1,"679":1,"680":1,"681":1,"682":1,"694":1,"704":1,"705":1,"732":1,"758":1,"787":1,"788":1,"789":1,"790":1,"819":1,"820":1,"851":1,"852":1,"853":1,"854":1,"855":1,"886":1,"887":1,"888":1,"889":1,"920":1,"921":1,"922":1,"923":1,"954":1,"955":1,"956":1,"957":1,"988":1,"989":1,"990":1,"991":1,"1022":1,"1023":1,"1024":1,"1025":1,"1056":1,"1057":1,"1058":1,"1059":1,"1090":1,"1091":1,"1092":1,"1093":1,"1136":1,"1137":1,"1146":1,"1174":1,"1183":1,"1252":1,"1253":1,"1254":1,"1256":1,"1257":1,"1258":1,"1259":1,"1260":1,"1262":1,"1263":1,"1264":1,"1265":1,"1266":1,"1267":1,"1369":1,"1370":1,"1495":1,"1496":1,"1498":1,"1499":1,"1500":1,"1501":1,"1503":1,"1504":1,"1506":1,"1507":1,"1551":1,"1552":1,"1553":1,"1554":1,"1555":1,"1556":1,"1557":1,"1558":1,"1559":1,"1560":1,"1561":1,"1562":1,"1563":1,"1671":1,"1672":1,"1720":1,"1721":1,"1722":1,"1723":1,"1856":1,"1857":1,"2155":1,"2156":1,"2157":1,"2158":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2218":1,"2597":1,"2600":1,"2601":1,"2766":1,"2767":1,"2768":1,"2769":1,"2770":1,"2771":1,"2772":1,"2773":1,"2774":1,"2775":1,"2776":1,"2777":1,"2778":1,"2779":1,"2780":1},"2":{"28":1,"45":1,"50":1,"65":1,"69":1,"74":1,"83":2,"114":2,"118":1,"134":2,"149":1,"152":1,"160":2,"176":1,"183":4,"194":3,"198":1,"199":1,"206":1,"211":1,"233":1,"236":3,"238":1,"251":1,"262":2,"335":2,"372":1,"401":1,"413":1,"414":2,"415":1,"416":3,"417":2,"418":2,"423":2,"424":1,"430":2,"436":4,"437":1,"438":1,"439":1,"440":3,"441":1,"445":1,"454":2,"496":4,"499":1,"505":1,"511":1,"515":1,"582":1,"604":1,"605":1,"606":1,"607":1,"658":1,"674":2,"675":2,"677":3,"679":1,"680":1,"682":1,"686":1,"690":2,"692":1,"694":2,"703":2,"704":1,"705":1,"733":1,"759":1,"791":1,"821":1,"850":4,"856":1,"890":1,"924":1,"953":2,"958":1,"987":2,"992":1,"1021":6,"1026":1,"1055":6,"1060":1,"1089":2,"1094":1,"1100":1,"1122":1,"1123":1,"1126":1,"1127":1,"1129":2,"1130":1,"1135":1,"1142":1,"1147":1,"1169":1,"1174":1,"1184":1,"1214":2,"1235":1,"1262":1,"1263":1,"1267":2,"1345":1,"1353":1,"1354":1,"1416":1,"1435":1,"1452":1,"1500":1,"1506":1,"1507":1,"1550":1,"1555":2,"1598":1,"1600":2,"1752":1,"1754":1,"1763":1,"1811":1,"1832":2,"1840":1,"1852":1,"1855":1,"1943":2,"1953":4,"1984":1,"1987":1,"2056":1,"2070":1,"2090":1,"2102":1,"2150":1,"2167":1,"2169":1,"2193":1,"2207":1,"2316":1,"2338":1,"2455":1,"2493":1,"2507":1,"2546":1,"2552":2,"2561":1,"2580":1,"2581":1,"2582":1,"2587":1,"2594":1,"2599":1,"2605":12,"2710":2,"2727":1,"2734":1,"2763":1,"2767":1}}],["configs",{"2":{"50":1,"77":1,"191":1,"199":1,"249":2,"360":1,"1952":3}}],["config",{"0":{"69":1,"77":1,"83":1,"372":1,"416":1,"501":1,"688":1,"1416":1,"1436":1,"1677":1,"1768":1,"1969":1,"1992":1,"2299":1,"2338":1,"2745":1},"1":{"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"689":1,"1678":1},"2":{"4":2,"14":1,"25":1,"28":1,"31":2,"34":2,"49":1,"50":1,"70":12,"74":1,"75":1,"76":1,"77":2,"83":2,"92":1,"93":2,"95":2,"114":5,"119":1,"133":2,"134":3,"145":4,"160":1,"169":2,"170":2,"176":4,"183":6,"184":2,"191":10,"199":21,"201":1,"211":16,"222":3,"224":1,"236":10,"246":1,"249":27,"262":2,"266":5,"273":1,"277":2,"282":1,"335":3,"370":2,"372":5,"401":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":2,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"429":1,"430":4,"436":4,"437":5,"438":2,"439":2,"440":2,"456":1,"496":2,"498":1,"499":1,"501":2,"520":1,"588":1,"601":1,"606":3,"607":2,"608":1,"610":4,"613":4,"614":4,"644":1,"656":1,"657":1,"673":1,"674":2,"675":2,"676":1,"679":2,"680":2,"681":2,"686":1,"687":1,"690":2,"694":2,"702":1,"703":1,"704":1,"705":1,"731":1,"757":1,"758":1,"786":1,"787":1,"788":1,"789":1,"790":1,"818":1,"819":1,"820":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"885":1,"886":1,"887":1,"888":1,"889":1,"919":1,"920":1,"921":1,"922":1,"923":1,"953":1,"954":1,"955":1,"956":1,"957":1,"987":1,"988":1,"989":1,"990":1,"991":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1124":1,"1127":1,"1130":1,"1132":1,"1133":1,"1134":1,"1135":1,"1137":1,"1138":1,"1142":1,"1145":1,"1146":1,"1171":2,"1182":1,"1183":1,"1214":3,"1235":1,"1251":1,"1252":1,"1253":1,"1254":1,"1262":1,"1264":1,"1265":1,"1272":1,"1273":1,"1277":1,"1279":1,"1290":1,"1313":1,"1331":1,"1353":1,"1357":1,"1363":1,"1365":1,"1369":21,"1383":1,"1413":1,"1416":3,"1424":1,"1427":1,"1428":1,"1429":1,"1430":2,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1437":1,"1438":1,"1439":1,"1440":2,"1441":1,"1442":1,"1443":1,"1451":1,"1452":2,"1453":1,"1468":1,"1472":2,"1494":1,"1495":1,"1496":1,"1529":1,"1532":1,"1533":1,"1537":2,"1538":1,"1540":1,"1541":1,"1550":1,"1555":1,"1562":1,"1568":2,"1585":1,"1591":1,"1592":1,"1593":1,"1595":1,"1596":1,"1597":1,"1606":1,"1608":1,"1610":1,"1613":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1629":1,"1670":1,"1671":1,"1672":1,"1713":1,"1715":2,"1720":1,"1721":1,"1722":1,"1723":1,"1752":1,"1753":2,"1763":4,"1766":1,"1827":1,"1828":1,"1830":2,"1832":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1855":1,"1868":1,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1902":1,"1903":2,"1910":1,"1924":1,"1935":1,"1936":1,"1937":1,"1946":1,"1947":1,"1948":1,"1950":2,"1952":2,"1964":1,"1967":2,"1968":1,"1979":1,"1984":4,"1987":1,"1988":1,"1996":2,"1997":1,"2070":1,"2073":1,"2079":1,"2080":1,"2082":2,"2083":1,"2084":1,"2097":2,"2098":1,"2112":1,"2141":1,"2150":1,"2162":2,"2163":2,"2164":1,"2165":2,"2166":1,"2167":1,"2183":1,"2191":1,"2192":1,"2193":3,"2195":1,"2199":1,"2209":1,"2212":3,"2217":1,"2218":1,"2220":1,"2221":1,"2269":2,"2276":2,"2297":2,"2298":1,"2299":7,"2301":5,"2335":1,"2338":23,"2441":1,"2460":3,"2474":1,"2476":1,"2477":1,"2482":1,"2483":1,"2484":1,"2529":1,"2530":1,"2563":1,"2569":1,"2572":1,"2578":1,"2580":1,"2583":1,"2600":2,"2601":1,"2605":4,"2611":1,"2613":1,"2615":11,"2616":2,"2623":1,"2646":1,"2710":1,"2736":4,"2745":3,"2746":1,"2747":1,"2748":2,"2750":2,"2764":1,"2766":2,"2767":3,"2774":2,"2775":2,"2776":2,"2777":4}}],["connector",{"2":{"2156":1,"2378":1}}],["connects",{"0":{"1589":1},"2":{"1585":1,"2350":1}}],["connectivity",{"2":{"2552":1,"2555":1}}],["connecting",{"0":{"334":1},"2":{"334":1,"852":1,"1023":1,"1057":1,"1273":1,"2156":1,"2311":2,"2367":1,"2471":1}}],["connection",{"2":{"92":1,"511":1,"515":1,"1121":1,"1122":1,"1126":1,"1528":1,"1857":3,"2097":2,"2152":1,"2156":2,"2166":4,"2169":1,"2170":1,"2309":1,"2437":2,"2450":2,"2529":1,"2555":1,"2556":1,"2736":3}}],["connected",{"2":{"92":1,"160":1,"182":1,"249":1,"502":1,"506":1,"644":2,"656":3,"664":1,"670":1,"685":1,"690":1,"731":1,"734":1,"757":1,"758":1,"760":1,"786":1,"787":1,"792":1,"818":1,"819":1,"822":1,"850":1,"851":1,"857":1,"885":1,"886":1,"891":1,"919":1,"920":1,"925":1,"953":1,"954":1,"959":1,"987":1,"988":1,"993":1,"1021":1,"1022":1,"1027":1,"1055":1,"1056":1,"1061":1,"1089":1,"1090":1,"1095":1,"1129":2,"1145":1,"1146":1,"1148":1,"1171":2,"1182":1,"1183":1,"1185":1,"1213":1,"1251":1,"1260":1,"1273":1,"1415":1,"1424":1,"1425":1,"1436":3,"1495":1,"1496":1,"1508":2,"1529":1,"1589":1,"1611":2,"1612":1,"1629":4,"1768":1,"1857":1,"1935":3,"1936":1,"1943":3,"1947":2,"1949":3,"1950":4,"1992":1,"2070":6,"2099":1,"2152":1,"2158":1,"2163":1,"2165":3,"2166":2,"2169":1,"2179":3,"2275":1,"2307":1,"2350":4,"2392":1,"2489":1,"2492":1,"2557":1,"2560":1,"2565":1,"2568":2,"2573":1,"2596":1,"2597":1,"2598":1,"2714":2,"2715":2,"2716":2,"2721":1,"2723":2,"2724":5,"2728":3,"2731":2,"2732":4,"2736":1,"2739":1}}],["connect",{"0":{"1590":1},"2":{"82":1,"92":1,"375":2,"702":1,"1213":1,"1234":1,"1271":1,"1273":1,"1528":1,"1585":1,"1590":1,"2154":1,"2157":1,"2158":1,"2312":1,"2313":1,"2314":2,"2318":1,"2367":1,"2369":1,"2371":1,"2373":1,"2378":1,"2391":1,"2392":1}}],["cons",{"2":{"2219":1,"2309":1}}],["consecutive",{"2":{"1940":5,"2210":1}}],["consequence",{"2":{"1373":1,"1478":1,"1536":1}}],["consequently",{"2":{"598":1}}],["consult",{"2":{"327":1,"641":1,"679":1,"685":1,"697":1,"2606":1}}],["consulted",{"2":{"142":1}}],["consuming",{"2":{"2467":1}}],["consumes",{"2":{"1859":1}}],["consume",{"2":{"1324":1,"1363":1}}],["consumed",{"2":{"529":1}}],["consumer",{"2":{"231":1,"236":1,"1310":1,"1316":1,"2174":1,"2432":1}}],["consumer2rn42",{"2":{"50":1}}],["consumer2bluefruit",{"2":{"50":1}}],["consumption",{"2":{"134":1,"211":1,"502":1,"589":1,"2338":3}}],["consist",{"2":{"2186":1}}],["consisting",{"2":{"1393":1,"2333":1}}],["consists",{"2":{"303":1,"413":1,"2340":1,"2725":1}}],["consistency",{"2":{"50":1,"114":2,"145":1,"183":1,"233":1,"453":1,"462":1,"470":1,"557":1,"564":1,"2603":2}}],["consistently",{"2":{"94":1,"176":2,"190":1,"191":1,"1253":1}}],["consistent",{"2":{"49":1,"191":1,"199":1,"453":1,"502":1,"597":1,"615":1,"2615":1,"2713":1}}],["considers",{"2":{"2774":1}}],["considering",{"2":{"1540":1,"2635":1}}],["considerations",{"0":{"1324":1,"2156":1,"2170":1},"1":{"2171":1},"2":{"2554":1}}],["considerably",{"2":{"113":1}}],["consider",{"0":{"354":1},"2":{"354":1,"391":1,"481":1,"554":1,"560":1,"1367":1,"1565":1,"2315":1,"2316":1,"2344":1,"2562":1,"2563":1,"2564":1,"2590":1,"2591":1,"2751":1}}],["considered",{"2":{"241":1,"253":1,"270":1,"350":2,"510":1,"600":1,"1362":1,"1363":1,"1543":1,"1689":1,"1904":1,"1937":3,"1945":2,"2266":1,"2334":1,"2608":1,"2616":1,"2631":1,"2635":1,"2774":1,"2775":1}}],["construction",{"2":{"2615":2}}],["constructed",{"2":{"1927":1}}],["constraint",{"2":{"2757":1}}],["constraints",{"0":{"2757":1},"2":{"123":1,"134":1,"138":1,"689":1,"1264":1,"2220":1,"2743":1,"2757":2,"2758":1}}],["constraining",{"2":{"1377":1}}],["constrain",{"2":{"176":1,"374":1,"1478":1,"1950":3}}],["constrained",{"2":{"123":1,"2624":1,"2631":1,"2743":1}}],["const",{"0":{"1225":1,"1243":1,"1645":1,"1647":1,"1651":1,"2119":1,"2121":1,"2123":1,"2125":1,"2239":1},"1":{"1226":1,"1227":1,"1244":1,"1646":1,"1648":1,"1652":1,"2120":1,"2122":1,"2124":1,"2126":1,"2240":1},"2":{"247":1,"272":1,"530":1,"1226":1,"1244":1,"1396":2,"1477":1,"1484":1,"1485":2,"1545":1,"1546":1,"1547":1,"1548":6,"1560":1,"1561":1,"1586":1,"1597":1,"1646":1,"1648":1,"1652":1,"1695":1,"1701":1,"1703":6,"1704":3,"1706":1,"1830":1,"1852":1,"1853":1,"1860":13,"2078":7,"2080":6,"2082":3,"2120":1,"2122":1,"2124":1,"2126":1,"2168":5,"2176":1,"2177":1,"2181":10,"2195":1,"2202":1,"2219":1,"2240":1,"2440":1,"2445":1,"2616":7}}],["constantly",{"2":{"2185":1}}],["constant",{"0":{"1843":1},"2":{"191":1,"198":1,"460":1,"1400":1,"1448":1,"1536":1,"1840":3,"1841":2,"1843":2,"1844":1,"1845":1,"2626":2,"2633":2,"2767":1}}],["constants",{"0":{"317":1},"2":{"76":1,"188":1,"191":1,"317":10,"641":1,"1373":1,"1536":1,"1715":1,"2777":1}}],["constellation",{"2":{"102":3,"114":1,"211":1}}],["consoles",{"2":{"82":1,"375":1}}],["console",{"0":{"82":1,"375":1,"1292":1},"2":{"50":1,"70":1,"82":2,"93":1,"111":1,"114":4,"119":2,"134":3,"249":1,"277":1,"375":9,"515":2,"516":1,"566":1,"1138":1,"1282":1,"1285":1,"1289":2,"1291":2,"1292":2,"1324":1,"1335":1,"1378":2,"1485":1,"1535":1,"1567":1,"1568":7,"1868":1,"1944":1,"1964":1,"2301":1,"2613":2,"2794":1}}],["consolidating",{"2":{"251":1}}],["consolidation",{"0":{"42":1,"221":1},"2":{"50":2,"198":1,"224":1,"233":1,"266":1,"2606":1}}],["consolidated",{"0":{"1422":1},"2":{"220":1}}],["consolidate",{"0":{"204":1},"2":{"191":1,"199":1,"204":1,"211":1,"222":1,"236":1,"249":1,"1422":1}}],["consolidates",{"2":{"50":1}}],["contiguous",{"2":{"2098":1}}],["continous",{"2":{"1610":2}}],["continually",{"2":{"1324":1}}],["continuations",{"2":{"199":1}}],["continuing",{"2":{"347":1}}],["continued",{"2":{"238":1,"262":1}}],["continues",{"2":{"133":1,"251":1,"1540":1,"1543":1,"1952":1,"2190":1,"2513":1,"2743":1}}],["continue",{"2":{"64":1,"145":1,"240":1,"246":1,"354":1,"1396":1,"1543":2,"1817":1,"1823":1,"1846":1,"2062":1,"2068":1,"2151":1,"2221":1,"2476":1,"2513":2,"2605":1}}],["continuously",{"2":{"1956":1}}],["continuous",{"0":{"1618":1},"2":{"32":1,"1610":4,"1618":1,"1952":1,"2089":2}}],["cont",{"2":{"1610":1}}],["contoller",{"2":{"1126":1}}],["contacts",{"2":{"1363":1,"2313":1,"2318":1,"2350":1}}],["contact",{"0":{"1362":2},"1":{"1363":2,"1364":2,"1365":2,"1366":2,"1367":2},"2":{"537":1,"1362":5,"1575":4,"1583":1,"1584":2,"1952":1,"2311":1,"2312":3,"2350":1}}],["contained",{"2":{"428":1,"609":1,"1767":1,"1990":1,"2710":1}}],["container",{"2":{"211":1,"627":1,"628":1,"2291":1,"2476":1,"2479":1,"2628":1,"2636":1}}],["contains",{"2":{"374":3,"496":2,"498":1,"500":1,"573":1,"661":1,"736":1,"762":1,"794":1,"824":1,"859":1,"893":1,"927":1,"961":1,"995":1,"1029":1,"1063":1,"1097":1,"1150":1,"1187":1,"1247":1,"1249":1,"1321":4,"1383":3,"1574":1,"1675":1,"1693":1,"1950":1,"2069":1,"2186":1,"2190":1,"2311":1,"2337":1,"2386":1,"2480":1,"2527":1,"2530":1,"2605":1,"2624":2,"2627":1,"2628":1,"2629":2,"2631":2,"2636":1,"2638":1,"2654":3,"2710":2,"2725":2,"2727":1,"2734":1}}],["contain",{"2":{"236":1,"268":1,"485":1,"522":1,"529":3,"641":1,"690":1,"1383":1,"1530":1,"1611":1,"1735":1,"1927":1,"2219":1,"2336":1,"2477":1,"2595":1,"2603":2,"2628":1,"2793":1}}],["containing",{"0":{"361":1},"2":{"141":1,"191":2,"211":1,"265":1,"316":1,"416":1,"505":1,"1650":1,"1652":1,"1676":1,"1925":1,"1926":1,"1927":1,"2208":1,"2239":1,"2358":1,"2462":1,"2487":1,"2605":1,"2606":1,"2624":1,"2631":1,"2638":1,"2741":1,"2792":1}}],["context",{"2":{"597":1,"1121":1,"1706":1,"1708":4,"2394":2,"2431":1,"2443":1}}],["contexts",{"2":{"481":1}}],["content",{"0":{"2321":1},"1":{"2322":1},"2":{"160":1,"266":1,"295":1,"296":1,"297":1,"298":1,"299":5,"300":1,"314":1,"335":1,"674":1,"1291":1,"1422":1,"1852":1,"1854":2,"1897":1,"2178":2,"2321":1,"2474":1,"2476":1,"2513":1,"2547":1,"2623":2}}],["contents",{"2":{"50":1,"230":1,"554":2,"616":1,"617":2,"1718":1,"1860":3,"2080":1,"2097":1,"2181":1,"2388":1,"2445":1,"2513":1,"2603":1,"2615":2,"2626":1,"2633":1,"2634":1,"2654":2}}],["contrast",{"2":{"1716":1,"2074":1,"2174":1,"2179":2}}],["control+click",{"2":{"2547":1}}],["control+shift",{"2":{"1715":1,"2777":1}}],["control+shift+escape",{"2":{"1606":1}}],["control+a",{"2":{"1398":1}}],["control+alt+delete",{"2":{"1336":1}}],["control+right",{"2":{"626":1}}],["controls",{"0":{"1703":1},"2":{"515":1,"630":1,"657":1,"790":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1136":1,"1349":1,"1453":1,"1494":1,"1496":1,"1555":3,"1668":1,"1753":5,"1980":1,"1987":2,"2166":1,"2462":1,"2613":2,"2616":1,"2674":1}}],["controllable",{"2":{"430":1,"1496":1}}],["controlling",{"2":{"166":1,"654":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1,"1143":1,"1171":2,"1180":1,"1708":1,"1709":1,"1968":1}}],["controlled",{"2":{"45":1,"589":1,"601":1,"1169":1,"1612":1,"1713":1,"1952":1,"1989":1,"2101":1,"2529":1,"2616":4}}],["controllerwords",{"2":{"191":1}}],["controllerworks",{"2":{"191":1}}],["controllers",{"2":{"50":1,"134":1,"211":1,"506":1,"690":1,"1126":1,"1347":1,"1352":1,"1359":1,"1826":1,"1859":1,"1938":1,"2070":1,"2080":1,"2152":2,"2154":1,"2156":2,"2164":5,"2169":1,"2314":1,"2584":1}}],["controller",{"0":{"1892":1,"2314":1},"1":{"2315":1},"2":{"36":2,"50":1,"92":1,"93":1,"114":1,"134":1,"176":2,"204":1,"210":1,"211":2,"222":2,"688":1,"1128":1,"1271":1,"1275":1,"1368":1,"1415":1,"1440":1,"1592":1,"1668":1,"1829":1,"1855":1,"1858":1,"1866":2,"1891":1,"1892":1,"1939":1,"1942":1,"1950":1,"2156":1,"2162":2,"2163":1,"2164":6,"2169":2,"2172":1,"2213":1,"2287":1,"2307":1,"2308":2,"2310":1,"2314":1,"2315":5,"2317":1,"2319":1,"2350":2,"2369":1,"2371":1,"2373":1,"2466":2,"2553":1,"2557":2,"2560":2,"2615":2,"2616":1,"2739":1,"2743":1,"2751":1}}],["control",{"0":{"265":1,"275":1,"657":1,"695":1,"749":1,"751":1,"754":1,"776":1,"778":1,"782":1,"790":1,"840":1,"842":1,"846":1,"855":1,"875":1,"877":1,"881":1,"889":1,"909":1,"911":1,"915":1,"923":1,"943":1,"945":1,"949":1,"957":1,"977":1,"979":1,"983":1,"991":1,"1025":1,"1059":1,"1093":1,"1162":1,"1166":1,"1203":1,"1205":1,"1209":1,"1328":1,"1829":1,"1846":1,"1900":1,"1973":1,"1974":1,"1976":1,"1979":1},"1":{"696":1,"697":1,"698":1,"750":1,"752":1,"777":1,"779":1,"783":1,"841":1,"843":1,"847":1,"876":1,"878":1,"882":1,"910":1,"912":1,"916":1,"944":1,"946":1,"950":1,"978":1,"980":1,"984":1,"1163":1,"1167":1,"1204":1,"1206":1,"1210":1,"1974":1,"1975":1,"1976":1,"1977":2,"1978":2,"1979":1},"2":{"63":1,"114":1,"160":1,"195":1,"199":2,"231":1,"236":3,"249":1,"265":1,"268":1,"275":1,"277":1,"430":1,"431":1,"435":2,"466":1,"514":1,"515":2,"566":1,"610":1,"626":2,"630":1,"656":1,"695":2,"696":1,"749":2,"751":2,"754":1,"776":2,"778":2,"782":1,"786":1,"789":1,"840":2,"842":2,"846":1,"850":1,"854":1,"875":2,"877":2,"881":1,"885":1,"888":1,"909":2,"911":2,"915":1,"919":1,"922":1,"943":2,"945":2,"949":1,"953":1,"956":1,"977":2,"979":2,"983":1,"987":1,"990":1,"1021":1,"1024":1,"1055":1,"1058":1,"1089":1,"1092":1,"1162":2,"1166":1,"1171":2,"1203":2,"1205":2,"1209":1,"1232":1,"1249":1,"1267":1,"1271":1,"1276":1,"1328":2,"1336":7,"1337":3,"1369":1,"1393":1,"1398":2,"1407":1,"1414":1,"1422":1,"1436":4,"1441":1,"1448":1,"1453":1,"1460":1,"1491":1,"1496":1,"1501":1,"1535":1,"1606":1,"1620":1,"1703":1,"1754":1,"1761":1,"1829":1,"1846":2,"1901":1,"1933":1,"1937":1,"1968":1,"1973":1,"1977":1,"1979":1,"1982":1,"1992":3,"2069":2,"2073":2,"2078":1,"2100":1,"2101":1,"2146":1,"2147":4,"2148":2,"2188":1,"2199":1,"2207":1,"2208":1,"2209":1,"2221":1,"2264":2,"2301":2,"2311":1,"2329":1,"2344":1,"2387":1,"2394":7,"2395":1,"2409":17,"2412":9,"2413":9,"2421":2,"2429":2,"2432":4,"2435":17,"2449":15,"2450":2,"2489":1,"2529":1,"2595":1,"2611":1,"2691":1,"2715":1,"2738":1,"2744":2,"2748":1,"2766":1,"2774":1,"2775":1,"2776":1,"2777":1}}],["contributor",{"2":{"2656":1}}],["contributors",{"2":{"163":1,"550":2,"2605":1}}],["contribution",{"0":{"554":1},"2":{"550":1,"554":1,"2591":1}}],["contributions",{"2":{"550":1,"554":1,"556":1}}],["contributing",{"2":{"354":1,"557":1,"2303":1,"2511":2,"2607":1}}],["contribute",{"0":{"550":1},"1":{"551":1},"2":{"284":1,"374":1,"429":1,"483":1,"550":1,"552":1,"556":1,"2221":1,"2331":1,"2365":2}}],["contributed",{"2":{"123":1,"2198":1,"2342":1}}],["contrib",{"0":{"10":1,"359":1,"361":1},"2":{"10":2,"69":1,"108":1,"114":2,"134":2,"145":1,"163":1,"176":4,"191":2,"199":1,"222":1,"249":1,"349":1,"357":1,"359":2,"360":1,"495":1,"2303":1,"2585":3,"2588":1,"2591":2}}],["convenience",{"2":{"2113":1,"2449":1,"2616":1}}],["convenient",{"2":{"1540":1,"1759":1,"1910":1,"1952":1,"2531":1,"2542":1}}],["conveniently",{"2":{"1488":1}}],["convention",{"2":{"249":1,"532":1,"1363":5,"2526":1,"2574":1,"2604":1}}],["conventions",{"0":{"4":1,"453":1,"455":1,"555":1},"2":{"134":2,"243":1,"352":1,"454":1,"550":1,"555":2,"557":1,"560":1,"1363":2,"2549":1,"2764":2}}],["convey",{"2":{"188":1,"435":1}}],["conversation",{"2":{"485":1,"609":1}}],["conversions",{"2":{"65":1,"77":1,"189":1,"266":25,"1351":1}}],["conversion",{"0":{"1861":1,"2569":1},"2":{"49":1,"172":1,"211":3,"636":1,"686":1,"687":1,"1254":1}}],["converts",{"2":{"167":1,"408":1,"409":1,"410":1,"1997":1,"2614":3,"2654":1}}],["converters",{"0":{"172":1,"189":1,"1347":1,"1348":1},"1":{"1348":1,"1349":1,"1350":1,"1351":1,"1352":1,"1353":1,"1354":1,"1355":1,"1356":1,"1357":1,"1358":1,"1359":1,"1360":1,"1361":1},"2":{"145":2,"172":1,"176":2,"189":4,"191":2,"199":1,"1348":1,"2466":1}}],["converter",{"0":{"271":1},"2":{"114":1,"133":1,"134":1,"145":2,"176":4,"181":2,"189":2,"191":3,"199":3,"207":3,"211":1,"249":1,"271":1,"277":1,"630":1,"1349":1,"1350":1,"1352":1,"1353":1,"1354":1,"1359":1,"1608":1,"1627":1,"2615":1,"2654":1,"2656":1}}],["converted",{"2":{"22":1,"50":1,"201":1,"249":1,"384":1,"388":1,"611":1,"1369":1,"1529":1,"2479":1,"2605":1,"2614":1,"2659":1}}],["convert",{"0":{"408":1,"410":1},"2":{"93":1,"114":1,"134":1,"138":1,"145":3,"160":4,"172":1,"176":1,"211":2,"236":3,"266":3,"277":2,"405":1,"1254":1,"1349":4,"1350":2,"1352":39,"1353":1,"1359":15,"1373":1,"2114":1,"2569":2,"2612":1,"2614":4,"2616":2,"2654":2,"2749":1}}],["converting",{"0":{"21":1},"2":{"138":1,"189":1,"251":1,"409":1,"1347":1,"1490":1,"2614":2}}],["com4",{"2":{"2552":1}}],["comx",{"2":{"2386":1}}],["com>",{"2":{"2348":4}}],["comfortably",{"2":{"1722":1}}],["comfortable",{"2":{"613":1,"1907":1,"2207":1,"2303":1,"2766":1}}],["comformable",{"2":{"606":1}}],["coming",{"2":{"228":1,"1271":4,"1555":1,"1869":1,"2350":1}}],["come",{"2":{"479":1,"1331":1,"2069":1,"2190":1,"2216":1,"2278":1,"2280":1,"2281":1,"2288":1,"2311":1,"2359":1}}],["comet46",{"2":{"154":2,"160":1,"176":1}}],["comes",{"2":{"99":1,"233":1,"435":1,"458":1,"623":1,"1429":1,"1449":1,"1616":1,"1710":1,"2168":1,"2268":1,"2273":1,"2318":1,"2468":1,"2496":1,"2535":1,"2616":1}}],["comb",{"2":{"231":1,"1565":5}}],["combination",{"2":{"483":1,"484":1,"502":1,"606":1,"626":1,"639":2,"1373":1,"1538":3,"1545":1,"1567":1,"1568":1,"1597":1,"1693":1,"1697":1,"1708":2,"1714":1,"1950":1,"2541":1}}],["combinations",{"2":{"99":1,"685":1,"698":1,"1349":1,"1606":1,"1693":2,"1714":1,"1849":1,"1910":1,"1917":1,"2266":1,"2300":1,"2449":1,"2529":1}}],["combining",{"2":{"176":1,"516":1,"1337":1,"1468":1,"1561":1,"2269":1,"2276":1,"2741":1}}],["combines",{"2":{"1466":1,"1552":1}}],["combinedmap",{"2":{"2191":1}}],["combined",{"0":{"1844":1,"1963":1},"2":{"176":1,"496":1,"516":3,"1372":1,"1591":1,"1840":1,"1844":3,"1845":1,"1907":1,"1953":2,"1955":9,"1963":2,"1965":1,"2069":1,"2191":2,"2309":1,"2383":1,"2388":1,"2710":2}}],["combinedkeys",{"2":{"114":1}}],["combine",{"2":{"64":1,"249":1,"424":1,"459":1,"606":1,"1336":1,"1398":1,"1901":1,"1955":2,"1963":1,"2080":1,"2449":1}}],["combo\`",{"2":{"1556":1}}],["combo2",{"2":{"1545":2,"1546":1,"1547":2}}],["combo1",{"2":{"1545":2,"1546":1,"1547":2}}],["combos",{"0":{"1545":1,"1547":1,"1553":1,"1562":1,"1714":1},"1":{"1546":1,"1547":1,"1548":1,"1549":1,"1550":1,"1551":1,"1552":1,"1553":1,"1554":1,"1555":1,"1556":1,"1557":1,"1558":1,"1559":1,"1560":1,"1561":1,"1562":1,"1563":2,"1564":1,"1565":1},"2":{"46":1,"98":3,"114":2,"176":1,"211":1,"505":2,"1545":1,"1546":1,"1547":3,"1548":5,"1551":2,"1552":10,"1553":1,"1554":1,"1555":5,"1556":3,"1557":1,"1558":2,"1559":1,"1560":2,"1561":2,"1562":3,"1565":6,"1714":3,"1716":1,"1862":1,"2763":1}}],["combo",{"0":{"98":1,"1551":1,"1555":1,"1556":1,"1557":1,"1558":1,"1559":1,"1563":1,"2720":1},"1":{"1558":1,"1559":1},"2":{"46":7,"98":3,"112":2,"114":1,"145":1,"160":2,"188":1,"191":1,"199":2,"203":1,"211":3,"222":1,"505":20,"515":2,"1537":1,"1545":9,"1546":3,"1547":6,"1548":36,"1549":7,"1551":2,"1552":5,"1553":7,"1554":1,"1555":63,"1556":12,"1557":1,"1558":2,"1559":1,"1560":19,"1561":23,"1562":1,"1563":16,"1564":9,"1565":7,"2301":1,"2485":1,"2605":1,"2614":2,"2720":3,"2788":1}}],["compensating",{"2":{"1904":1}}],["compensated",{"2":{"2608":1}}],["compensate",{"2":{"1363":1,"1443":1,"1904":4}}],["comprising",{"2":{"2535":1,"2725":1,"2735":1}}],["comprise",{"2":{"2462":1}}],["comprises",{"2":{"334":1}}],["compression",{"2":{"2303":1,"2624":1,"2626":3,"2631":1,"2635":4}}],["compressing",{"2":{"2303":2}}],["comprehensions",{"0":{"471":1},"2":{"471":1,"472":1}}],["comprehensive",{"2":{"446":1,"483":1}}],["composite",{"2":{"1891":1}}],["composed",{"2":{"1552":1}}],["compose",{"2":{"222":1,"1337":1,"1752":1,"1753":2,"1755":1,"2724":2}}],["component",{"2":{"1571":2,"2636":3,"2733":1,"2734":1,"2790":1}}],["components",{"2":{"130":1,"1253":1,"1273":1,"2311":1,"2606":1}}],["computationally",{"2":{"1366":1}}],["computed",{"2":{"2263":1}}],["compute",{"2":{"191":1,"2263":1}}],["computers",{"0":{"2351":1},"1":{"2352":1,"2353":1,"2354":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1}}],["computer",{"2":{"62":1,"541":1,"567":1,"627":1,"1329":1,"1392":1,"1393":1,"1396":1,"1403":1,"1404":1,"1443":1,"1473":3,"1568":1,"1693":1,"1715":1,"1757":1,"1844":1,"1845":1,"1868":1,"1922":1,"1956":2,"1987":1,"2163":1,"2301":1,"2303":4,"2361":1,"2394":2,"2432":2,"2437":1,"2450":1,"2456":4,"2467":1,"2474":1,"2516":1,"2526":1,"2529":2,"2650":1,"2672":1,"2705":1,"2708":1,"2776":1,"2777":1,"2782":1,"2787":1,"2793":1}}],["computing",{"2":{"154":9,"160":1,"181":2,"270":2,"277":1}}],["companies",{"2":{"2661":1}}],["companying",{"2":{"1556":1}}],["company",{"0":{"42":1},"2":{"43":1}}],["compact",{"2":{"479":1,"624":1,"1377":1,"2449":1}}],["comparing",{"2":{"2185":1,"2787":1}}],["comparisons",{"2":{"211":1}}],["comparison",{"0":{"2769":1},"1":{"2770":1,"2771":1,"2772":1},"2":{"190":1,"191":2,"248":1}}],["compares",{"2":{"1954":1,"2787":1}}],["compared",{"2":{"1943":1,"2493":1,"2605":1,"2775":1}}],["compare",{"2":{"51":1,"349":1,"2526":1,"2769":1}}],["compatible",{"0":{"486":1},"1":{"487":1,"488":1,"489":1,"490":1,"491":1,"492":1,"493":1,"494":1,"495":1},"2":{"132":3,"134":1,"160":1,"172":1,"199":1,"303":1,"322":1,"486":1,"495":1,"519":2,"1249":1,"1284":1,"1351":1,"1352":1,"1417":1,"1595":1,"1849":1,"1942":1,"2152":2,"2154":1,"2164":4,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":1,"2285":1,"2287":1,"2288":1,"2305":1,"2389":1,"2466":1,"2558":1,"2568":1,"2583":3,"2584":1,"2587":2,"2592":2,"2603":1,"2615":11,"2712":1,"2751":1,"2764":1}}],["compatiblitly",{"2":{"75":1}}],["compatibility",{"0":{"1332":1,"1333":1,"1351":1,"2153":1},"1":{"1334":1},"2":{"31":1,"34":1,"98":1,"114":1,"176":1,"249":1,"262":1,"273":1,"276":1,"455":1,"457":1,"516":1,"689":1,"1349":1,"1351":4,"1500":1,"2151":1,"2221":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2283":1,"2285":1,"2287":1,"2288":1,"2585":1,"2587":1,"2603":1,"2605":2}}],["compilable",{"2":{"2334":6}}],["compilation",{"0":{"132":1,"401":1},"2":{"36":1,"88":2,"104":2,"114":2,"127":2,"132":3,"134":6,"160":4,"170":1,"176":6,"191":2,"199":2,"211":5,"222":5,"236":2,"249":1,"254":1,"266":1,"315":3,"370":3,"401":3,"479":1,"513":2,"522":1,"527":1,"542":1,"564":2,"2300":2,"2487":1,"2551":1,"2760":1}}],["compiling",{"0":{"2486":1},"2":{"58":1,"73":2,"92":1,"134":1,"312":2,"315":1,"363":1,"370":4,"396":1,"411":1,"512":1,"513":1,"524":1,"533":1,"539":1,"556":1,"1296":1,"1356":1,"1414":1,"1422":2,"1850":1,"2101":1,"2175":1,"2187":1,"2294":1,"2300":7,"2462":1,"2616":2}}],["compiledfirmware",{"2":{"371":1}}],["compiledb",{"2":{"132":1,"134":1}}],["compiled",{"2":{"50":1,"182":1,"211":2,"308":1,"371":1,"375":1,"513":1,"520":1,"530":1,"533":1,"1388":1,"1422":1,"2316":1,"2318":1,"2457":1,"2464":1,"2478":1,"2552":2,"2743":1,"2744":1,"2763":1,"2782":2,"2793":1}}],["compiles",{"2":{"49":1,"176":1,"199":1,"396":1,"556":1,"1418":1,"1422":1,"2300":1,"2464":1,"2792":1}}],["compile",{"0":{"306":1,"307":1,"308":1,"309":1,"314":1,"370":1,"396":1,"523":1,"524":1,"525":1,"542":1,"548":1,"2670":1},"2":{"24":1,"28":1,"36":2,"37":1,"43":1,"73":1,"114":8,"120":1,"132":2,"134":3,"145":1,"160":1,"176":2,"191":1,"199":3,"291":1,"303":4,"306":1,"311":1,"314":3,"315":1,"316":2,"318":1,"322":1,"360":1,"370":16,"371":1,"389":1,"390":1,"391":1,"396":2,"401":4,"414":8,"420":1,"421":1,"422":2,"424":5,"426":2,"437":2,"458":3,"504":1,"519":3,"522":4,"527":1,"529":1,"534":1,"542":1,"560":3,"1325":1,"1349":1,"1356":1,"1391":1,"1416":1,"1450":1,"1453":1,"1471":1,"1472":1,"1538":1,"2187":1,"2276":1,"2282":1,"2291":1,"2297":1,"2300":7,"2303":1,"2316":3,"2385":1,"2395":1,"2464":3,"2467":1,"2476":1,"2480":1,"2484":1,"2486":3,"2493":1,"2495":1,"2508":2,"2533":1,"2547":1,"2551":2,"2552":1,"2561":1,"2592":1,"2611":2,"2686":2,"2710":1,"2762":1,"2795":1}}],["compiler",{"0":{"302":1,"527":1},"2":{"21":1,"73":1,"160":1,"191":1,"199":1,"302":1,"304":1,"320":1,"523":1,"526":2,"527":1,"1396":1,"1420":1,"2339":1,"2467":1,"2791":1,"2793":1}}],["comply",{"2":{"522":1,"2349":1}}],["complicated",{"2":{"481":1,"1368":2,"1373":1,"1419":1,"1442":1,"1548":1,"2199":1,"2307":1,"2447":1,"2450":1,"2489":1}}],["compliance",{"2":{"222":1,"263":1}}],["compliant",{"2":{"24":1}}],["compliation",{"2":{"114":1}}],["complaints",{"2":{"139":1}}],["complements",{"2":{"1912":1}}],["complementary",{"2":{"93":1,"249":1,"690":2,"1267":4}}],["completing",{"2":{"2312":1,"2318":1}}],["completion",{"0":{"448":1},"1":{"449":1,"450":1,"451":1,"452":1},"2":{"448":1,"449":1,"451":1,"698":1,"2531":1,"2542":1}}],["completes",{"2":{"1724":1,"2350":1,"2768":1,"2787":1}}],["completed",{"2":{"522":1,"525":1,"1252":1,"1347":1,"2303":2,"2312":1,"2477":1,"2487":1,"2499":1,"2552":1,"2565":1,"2680":1,"2760":1}}],["complete",{"0":{"127":1},"2":{"70":1,"126":1,"236":2,"263":1,"282":3,"304":1,"315":2,"341":1,"448":1,"450":1,"451":3,"452":2,"613":1,"624":1,"678":1,"1134":1,"1137":1,"1214":1,"1302":1,"1442":1,"1484":1,"1716":1,"1720":1,"2209":1,"2235":1,"2259":1,"2312":1,"2314":1,"2392":1,"2463":1,"2464":1,"2481":1,"2512":1,"2537":1,"2541":1,"2594":1,"2603":1,"2605":1,"2726":1}}],["completely",{"2":{"49":1,"195":2,"262":1,"266":1,"505":1,"1372":1,"1435":1,"1440":1,"1472":1,"1559":1,"1591":1,"1693":2,"1706":1,"2306":1,"2312":1,"2386":1,"2441":1,"2463":1,"2505":1}}],["complex",{"0":{"464":1,"1306":1,"2203":1},"1":{"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"134":1,"471":1,"567":1,"612":1,"1369":1,"1401":1,"1545":1,"1587":1,"1708":1,"1767":5,"1922":1,"1990":5,"2203":1,"2307":1}}],["complexity",{"2":{"3":1,"15":1,"138":1,"211":1,"471":1,"2612":1}}],["commercial",{"2":{"2282":1,"2585":1,"2605":2}}],["commenting",{"2":{"355":1}}],["commented",{"2":{"199":1,"2605":2}}],["comment",{"2":{"92":1,"160":2,"191":2,"356":1,"367":1,"453":1,"455":1,"2605":1}}],["comments",{"2":{"77":1,"114":1,"176":1,"211":1,"355":1,"446":1,"453":2,"455":2,"562":1,"1591":1,"1592":1,"1832":1,"2605":2}}],["comm",{"2":{"313":1,"530":2,"1536":1,"2394":1,"2427":1,"2446":1}}],["committee",{"2":{"2584":1}}],["committed",{"2":{"2303":1,"2478":1,"2514":1,"2527":1}}],["committing",{"2":{"556":1,"2607":1}}],["commits",{"2":{"560":1,"2513":5,"2514":1,"2516":2,"2527":1,"2545":1}}],["commit",{"0":{"2473":1,"2477":1,"2525":1},"1":{"2474":1,"2475":1,"2476":1,"2477":1,"2478":1,"2526":1,"2527":1,"2528":1},"2":{"199":1,"347":1,"349":4,"360":1,"520":1,"529":3,"530":2,"554":1,"556":2,"2303":2,"2467":1,"2469":1,"2470":1,"2472":1,"2477":3,"2478":1,"2479":1,"2485":1,"2511":1,"2512":1,"2513":9,"2514":1,"2525":1,"2527":5,"2545":1,"2607":2}}],["comms",{"2":{"176":1,"191":2,"2612":1}}],["comma",{"2":{"467":1,"468":3,"612":2,"1478":1,"1622":1,"2168":1,"2207":1,"2217":1,"2394":2,"2427":1,"2433":1,"2462":1,"2547":1}}],["commas",{"2":{"145":1,"211":1,"2462":1,"2604":1}}],["command+option+escape",{"2":{"1606":1}}],["command+",{"2":{"286":1,"1605":1}}],["commands",{"0":{"368":1,"369":1,"392":1,"398":1,"2431":1,"2614":1},"1":{"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1},"2":{"55":1,"93":1,"114":2,"132":2,"134":1,"138":1,"143":1,"160":1,"173":1,"199":1,"347":2,"349":1,"363":1,"396":1,"401":3,"407":2,"415":2,"440":1,"484":2,"502":1,"515":2,"1276":1,"1292":1,"1422":1,"1478":1,"1660":1,"1859":1,"1860":1,"2182":1,"2300":2,"2301":2,"2333":1,"2339":1,"2387":1,"2470":1,"2474":2,"2477":1,"2481":1,"2491":1,"2496":1,"2503":1,"2519":2,"2526":1,"2551":2,"2616":2}}],["command",{"0":{"82":1,"83":1,"173":1,"1538":1,"1566":1,"1660":2,"2344":1,"2493":1,"2519":1},"1":{"1567":1,"1568":1,"1661":2},"2":{"1":1,"10":2,"18":2,"65":1,"70":3,"82":1,"83":1,"93":1,"111":1,"114":1,"143":1,"145":1,"173":1,"176":1,"199":1,"211":2,"291":1,"292":2,"325":1,"331":3,"363":1,"366":1,"370":2,"371":3,"372":1,"373":1,"374":1,"375":1,"376":1,"378":1,"381":1,"382":1,"383":2,"384":1,"385":1,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"399":1,"400":2,"401":2,"402":2,"403":2,"404":1,"405":1,"406":1,"407":1,"408":2,"409":2,"410":2,"411":1,"414":2,"415":2,"416":1,"424":1,"430":1,"437":2,"454":1,"484":1,"502":1,"515":1,"530":1,"558":1,"626":2,"628":1,"703":1,"1275":2,"1282":1,"1285":1,"1308":1,"1325":2,"1349":1,"1385":1,"1418":1,"1422":2,"1535":2,"1537":1,"1538":7,"1566":3,"1567":3,"1568":6,"1660":2,"1661":2,"2149":3,"2164":1,"2179":1,"2192":1,"2221":1,"2268":2,"2271":1,"2273":2,"2274":1,"2275":1,"2278":1,"2280":1,"2281":1,"2282":1,"2288":1,"2291":1,"2300":7,"2301":1,"2303":2,"2344":4,"2386":2,"2387":1,"2392":3,"2394":2,"2429":2,"2449":2,"2460":1,"2461":1,"2464":1,"2466":1,"2477":1,"2480":1,"2484":2,"2485":1,"2486":1,"2490":2,"2493":3,"2496":1,"2507":5,"2508":1,"2513":2,"2519":1,"2526":2,"2527":1,"2531":1,"2533":1,"2542":1,"2547":1,"2551":4,"2605":1,"2614":5,"2675":1,"2744":1,"2792":1,"2796":2}}],["communicate",{"2":{"1213":1,"1276":1,"1922":1,"2155":1,"2271":1,"2390":1}}],["communicates",{"2":{"453":1,"2185":1}}],["communicated",{"0":{"2760":1},"2":{"352":1,"2759":1,"2760":1}}],["communicating",{"2":{"244":1,"1238":1,"1627":1,"1849":1,"1925":1,"2174":1,"2310":1}}],["communications",{"2":{"2166":1}}],["communication",{"0":{"2166":1},"2":{"30":1,"352":1,"508":1,"511":3,"1121":3,"1125":1,"1126":1,"1127":1,"1128":1,"1134":1,"1136":2,"1137":1,"1138":2,"1252":1,"1356":2,"1851":2,"1922":1,"1935":1,"1936":1,"1939":1,"1943":2,"1947":1,"1948":1,"1949":1,"1950":1,"2152":1,"2156":2,"2159":1,"2166":8,"2167":1,"2169":4,"2170":1,"2301":2,"2736":1}}],["community",{"0":{"1358":1,"1361":1,"2505":1,"2584":1},"2":{"70":2,"116":1,"145":1,"176":1,"199":1,"201":1,"211":25,"213":1,"236":3,"249":1,"266":2,"352":1,"370":1,"455":1,"559":1,"1302":4,"1358":1,"1361":1,"1383":4,"1386":1,"2198":1,"2331":1,"2361":3,"2365":1,"2505":1,"2517":1,"2584":1,"2605":3,"2608":1,"2711":1,"2725":2,"2752":1}}],["commonly",{"2":{"69":1,"187":1,"232":1,"467":1,"2069":1,"2085":1,"2156":1,"2207":1,"2307":1,"2703":1}}],["common",{"0":{"30":1,"32":1,"33":1,"80":1,"1763":1,"1943":1,"1952":1,"1984":1,"2308":1},"1":{"31":1,"34":1},"2":{"5":1,"8":1,"30":2,"32":1,"74":3,"75":1,"86":1,"92":1,"93":1,"94":3,"107":1,"113":1,"114":5,"133":4,"134":5,"145":1,"160":2,"176":2,"191":1,"199":2,"201":1,"204":1,"211":2,"222":1,"236":2,"248":1,"381":1,"502":1,"505":1,"515":1,"532":1,"569":1,"597":1,"683":1,"699":1,"1169":1,"1211":1,"1232":1,"1238":1,"1281":1,"1292":1,"1296":1,"1324":1,"1374":1,"1390":1,"1396":1,"1420":1,"1447":1,"1453":1,"1555":1,"1558":1,"1599":1,"1854":1,"1858":1,"1910":1,"1921":1,"1953":2,"1959":1,"2170":1,"2178":1,"2207":1,"2216":1,"2301":1,"2317":1,"2323":1,"2339":4,"2344":1,"2350":1,"2392":15,"2449":1,"2493":1,"2526":1,"2592":1,"2605":1,"2614":1,"2665":1,"2667":1,"2685":1,"2707":1,"2710":1,"2782":1,"2788":1,"2792":1}}],["com",{"2":{"2":1,"21":1,"196":1,"211":1,"236":1,"358":1,"359":2,"515":1,"541":1,"551":1,"554":1,"623":1,"624":5,"674":7,"675":1,"1279":2,"1311":1,"1312":2,"1316":2,"1318":3,"1320":1,"1335":1,"1548":2,"1718":1,"1858":10,"2078":1,"2272":1,"2291":1,"2303":3,"2342":1,"2386":1,"2390":1,"2477":3,"2482":1,"2483":1,"2516":8,"2526":5,"2552":2,"2605":3,"2754":1}}],["4bpp",{"2":{"2635":2}}],["4+i",{"2":{"2616":2}}],["4t",{"2":{"2143":1}}],["4=25",{"2":{"1860":1}}],["4×",{"2":{"1595":1}}],["49",{"2":{"1477":1,"1616":1,"1937":1}}],["470ω",{"2":{"1508":1}}],["47",{"2":{"1442":1,"1616":1}}],["479b",{"2":{"315":1}}],["43",{"2":{"1442":1,"1616":1,"1937":1}}],["432",{"2":{"1440":1}}],["4352",{"2":{"554":1}}],["44",{"2":{"1442":1,"1477":1,"1616":1,"1937":1}}],["440",{"2":{"1440":1,"1443":1}}],["44100u",{"2":{"688":1}}],["42",{"0":{"1318":1},"2":{"1318":1,"1433":1,"1442":1,"1477":1,"1528":5,"1616":1,"2186":1}}],["4226",{"2":{"49":1}}],["4kib",{"2":{"2077":1}}],["4k2",{"2":{"853":1,"887":1,"921":1}}],["4k",{"2":{"788":1,"789":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1092":2}}],["4key",{"2":{"154":2}}],["451",{"2":{"2198":1}}],["453",{"2":{"1091":2}}],["45",{"2":{"784":1,"1442":1,"1616":1,"1859":1,"1983":1}}],["45pm",{"2":{"350":1}}],["412",{"2":{"2333":1}}],["41",{"2":{"1442":1,"1616":1,"1937":1}}],["4173",{"2":{"403":1}}],["4198",{"2":{"93":1}}],["4a7b",{"2":{"314":1,"315":1}}],["4pplet",{"2":{"211":3}}],["460800",{"2":{"1136":1}}],["46",{"2":{"181":2,"1442":1,"1616":1,"1937":1,"2308":1}}],["4800",{"2":{"1238":1}}],["48",{"2":{"168":1,"181":2,"211":1,"236":1,"816":1,"917":1,"1053":1,"1616":1,"1763":2,"1832":1,"1842":1,"1937":1,"1983":3,"1984":2,"2168":2,"2727":1,"2734":1}}],["4871",{"2":{"2":1}}],["40kb",{"2":{"2567":1}}],["400",{"2":{"1842":1,"1947":2,"2338":1,"2394":1,"2433":1}}],["400000",{"2":{"702":1}}],["400000l",{"2":{"502":1}}],["4000",{"2":{"606":1}}],["40ms",{"2":{"1551":1}}],["403",{"2":{"1318":2}}],["4095u",{"2":{"688":2,"1438":2}}],["4096",{"2":{"131":1,"134":1}}],["40percentclub",{"2":{"266":1}}],["40",{"2":{"160":1,"176":1,"211":1,"481":1,"624":1,"1442":1,"1551":1,"1616":5,"1841":1,"1843":1,"1845":1,"1937":1,"1943":1,"1988":1,"2076":1,"2572":1,"2623":1}}],["401",{"2":{"114":1}}],["4x4",{"2":{"1386":3,"2598":2,"2605":1}}],["4x5",{"2":{"222":1}}],["4x8",{"2":{"154":2}}],["4x7",{"2":{"154":2}}],["4x6",{"2":{"154":2,"160":1,"222":1}}],["4x",{"2":{"114":1,"1614":1,"1615":1,"1943":3}}],["4x12",{"2":{"70":1,"1386":3,"1389":1,"1442":1}}],["4",{"0":{"108":1,"343":1,"540":1,"2207":1,"2356":1,"2508":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"70":1,"93":1,"108":1,"111":1,"114":5,"134":2,"188":1,"191":3,"211":2,"222":1,"236":1,"249":1,"266":2,"286":1,"292":2,"313":1,"350":4,"358":5,"360":1,"448":1,"453":2,"455":1,"511":1,"530":2,"633":1,"635":22,"636":1,"656":1,"688":1,"694":1,"703":2,"707":2,"757":1,"786":1,"788":1,"789":2,"818":1,"850":2,"853":2,"854":2,"885":1,"887":2,"888":2,"919":1,"921":2,"922":2,"953":1,"956":2,"987":1,"990":2,"1021":2,"1024":2,"1055":2,"1058":2,"1089":1,"1092":2,"1136":1,"1145":1,"1182":1,"1213":1,"1218":1,"1264":1,"1368":1,"1373":2,"1381":1,"1400":2,"1403":1,"1442":1,"1488":1,"1533":4,"1552":2,"1568":2,"1595":2,"1596":2,"1611":1,"1614":1,"1615":1,"1616":1,"1627":1,"1632":2,"1673":3,"1763":5,"1768":1,"1831":31,"1832":1,"1839":2,"1843":1,"1859":2,"1860":1,"1872":3,"1892":3,"1937":3,"1940":1,"1984":5,"1992":1,"2074":3,"2076":1,"2080":4,"2097":1,"2098":3,"2130":1,"2131":1,"2143":1,"2155":2,"2156":3,"2158":3,"2166":1,"2179":1,"2185":1,"2186":2,"2191":1,"2193":5,"2205":2,"2207":1,"2299":1,"2303":3,"2334":2,"2338":3,"2339":2,"2350":1,"2391":1,"2394":9,"2404":3,"2410":31,"2411":2,"2419":3,"2425":2,"2430":2,"2433":2,"2446":1,"2450":1,"2507":2,"2573":1,"2610":1,"2613":2,"2614":2,"2616":3,"2624":1,"2631":1,"2635":2,"2654":4,"2723":1,"2725":4,"2733":1,"2735":1,"2749":1,"2784":1,"2796":2}}],["p>need",{"2":{"2513":2}}],["p>",{"2":{"2513":3}}],["p>for",{"2":{"2513":1}}],["p9",{"2":{"2394":1,"2433":1,"2786":1}}],["p7",{"2":{"2394":1,"2433":1,"2786":1}}],["p5",{"2":{"2394":1,"2433":1,"2786":1}}],["p3",{"2":{"2394":1,"2433":1,"2786":1}}],["p3d",{"0":{"255":1},"2":{"211":1,"241":5,"249":1,"266":1}}],["ppls",{"2":{"2394":1,"2433":1,"2786":1}}],["pp",{"2":{"2207":1}}],["p6",{"2":{"1672":1,"2394":1,"2433":1,"2786":1}}],["p4",{"2":{"1672":1,"2394":1,"2433":1,"2786":1}}],["p2",{"2":{"1672":1,"2394":1,"2433":1,"2786":1}}],["p8",{"2":{"1672":1,"2394":1,"2433":1,"2786":1}}],["p0",{"2":{"1672":2,"2394":1,"2433":1,"2786":1}}],["p1",{"2":{"2394":1,"2433":1,"2786":1}}],["p146279",{"2":{"1327":1}}],["p1800fl",{"2":{"102":2,"114":1}}],["pqrs",{"2":{"1317":1}}],["pbr",{"2":{"2191":1}}],["pb",{"2":{"1872":32,"2419":32}}],["pb11",{"2":{"1140":1,"1141":1,"1142":1}}],["pb10",{"2":{"1140":1,"1141":1,"1142":1}}],["pb4",{"2":{"1140":1}}],["pb3",{"2":{"1140":1}}],["pb7",{"2":{"1140":1,"1141":1,"1142":1}}],["pb6",{"2":{"1140":1,"1141":1,"1142":1}}],["pdot",{"2":{"2394":1,"2433":1,"2786":1}}],["pd3",{"2":{"2157":1}}],["pd1",{"2":{"2157":1,"2158":1}}],["pd0",{"2":{"1330":1,"2157":1,"2158":1}}],["pdfs",{"2":{"1540":1}}],["pdf",{"2":{"1326":1,"1330":2}}],["pd9",{"2":{"1140":1,"1141":1,"1142":1}}],["pd8",{"2":{"1140":1,"1141":1,"1142":1}}],["pd6",{"2":{"1140":1,"1142":1}}],["pd5",{"2":{"1140":1,"1142":1,"1896":1}}],["pdr",{"2":{"850":1,"854":8,"885":1,"888":9,"919":1,"922":9,"953":1,"956":9,"987":1,"990":9,"1021":1,"1024":9,"1055":1,"1058":9,"1089":1,"1092":9}}],["pd2",{"2":{"191":1,"1896":1,"2157":1}}],["pnp",{"2":{"1169":2,"1495":1}}],["pnputil",{"2":{"628":2}}],["png",{"2":{"623":1,"2612":1,"2614":4}}],["photos",{"2":{"2489":1}}],["phonetic",{"2":{"2182":1}}],["phone",{"2":{"2156":1}}],["phrases",{"2":{"1390":1,"1396":1}}],["phpshop",{"2":{"1279":1}}],["php",{"2":{"1279":1,"1312":1,"1326":1,"1334":1,"1335":1}}],["physically",{"2":{"1253":1,"1415":1,"2341":1,"2718":1,"2769":1}}],["physical",{"0":{"1759":1,"2785":1},"1":{"1760":1},"2":{"540":2,"624":1,"1253":1,"1321":3,"1363":1,"1383":2,"1384":1,"1532":1,"1759":1,"1763":7,"1984":7,"1988":1,"2169":1,"2190":1,"2309":1,"2341":1,"2446":1,"2489":1,"2598":3,"2653":3,"2654":2,"2682":1,"2725":1,"2769":1,"2770":2,"2771":3,"2772":2,"2785":2,"2786":1}}],["phapbgs",{"2":{"2185":1,"2186":1}}],["phantagom",{"2":{"211":1}}],["phantom",{"2":{"211":1}}],["phase",{"2":{"191":1,"1218":1,"1251":3,"1261":2}}],["pjrc",{"2":{"487":2,"491":4,"625":1,"1286":1,"2273":1,"2276":1,"2372":1,"2678":1}}],["pwl",{"2":{"2191":1}}],["pwr",{"2":{"1310":1,"1892":1,"2186":1,"2191":1,"2394":1,"2432":1}}],["pw88",{"2":{"222":1,"241":2}}],["pwmd4",{"2":{"1506":1}}],["pwmd2",{"2":{"1267":1}}],["pwmd1",{"2":{"690":1,"691":1,"1433":1}}],["pwmd11tim1",{"2":{"685":1}}],["pwm3360",{"2":{"160":1}}],["pwm",{"0":{"14":1,"669":1,"690":1,"691":1,"753":1,"780":1,"788":1,"812":1,"844":1,"853":1,"879":1,"887":1,"913":1,"921":1,"947":1,"955":1,"981":1,"989":1,"1015":1,"1049":1,"1083":1,"1091":1,"1117":1,"1164":1,"1174":1,"1207":1,"1259":1,"1267":1,"1431":1,"1433":1,"1498":1,"1503":1,"1506":1},"1":{"670":1,"781":1,"813":1,"845":1,"880":1,"914":1,"948":1,"982":1,"1016":1,"1050":1,"1084":1,"1118":1,"1165":1,"1208":1,"1432":1},"2":{"14":4,"49":1,"50":1,"93":1,"134":3,"145":1,"176":3,"191":2,"222":1,"236":4,"249":8,"266":1,"593":1,"594":1,"651":1,"661":1,"662":3,"665":1,"669":1,"684":2,"685":5,"690":10,"691":2,"692":2,"736":1,"737":4,"741":1,"745":1,"753":1,"762":1,"763":4,"768":1,"772":1,"780":1,"786":3,"788":11,"794":1,"795":4,"800":1,"804":1,"812":1,"824":1,"825":4,"832":1,"836":1,"844":1,"850":3,"853":8,"859":1,"860":4,"867":1,"871":1,"879":1,"885":3,"887":8,"893":1,"894":4,"901":1,"905":1,"913":1,"919":3,"921":8,"927":1,"928":4,"935":1,"939":1,"947":1,"953":3,"955":7,"961":1,"962":4,"969":1,"973":1,"981":1,"987":3,"989":7,"995":1,"996":4,"1003":1,"1007":1,"1015":1,"1029":1,"1030":4,"1037":1,"1041":1,"1049":1,"1063":1,"1064":4,"1071":1,"1075":1,"1083":1,"1089":3,"1091":10,"1097":1,"1098":4,"1105":1,"1109":1,"1117":1,"1150":1,"1151":4,"1158":1,"1164":1,"1168":1,"1169":3,"1171":8,"1174":8,"1187":1,"1188":4,"1195":1,"1199":1,"1207":1,"1255":1,"1259":2,"1267":16,"1353":1,"1354":1,"1424":2,"1431":3,"1433":7,"1491":2,"1496":2,"1497":1,"1498":2,"1499":2,"1500":1,"1503":2,"1504":1,"1506":11,"2315":1,"2567":1,"2573":1,"2715":2,"2716":3,"2739":2}}],["pt",{"2":{"222":3}}],["pmns",{"2":{"2394":1,"2433":1,"2786":1}}],["pmeg2005eh",{"2":{"2171":1}}],["pm2040",{"2":{"176":2,"277":1,"1348":1,"1352":5}}],["pmw3320",{"0":{"1949":1},"2":{"211":1,"1949":6}}],["pmw33xx",{"0":{"273":1,"276":1},"2":{"175":2,"176":3,"199":1,"236":1,"249":1,"273":3,"276":1,"277":1,"1950":23}}],["pmw3389",{"2":{"160":2,"199":1,"1950":1}}],["pmw3360",{"2":{"114":3,"118":1,"145":1,"160":4,"1950":1,"1952":1,"2605":1}}],["pmw",{"0":{"1950":2},"2":{"118":1,"1950":6}}],["pcmm",{"2":{"2394":1,"2433":1}}],["pcint",{"2":{"1894":1}}],["pc",{"2":{"1317":3}}],["pc13",{"2":{"2392":1}}],["pc11",{"2":{"1140":1,"1141":1,"1142":1}}],["pc10",{"2":{"1140":1,"1141":1,"1142":1}}],["pc5",{"2":{"1140":1,"1141":1}}],["pc4",{"2":{"1140":1,"1141":1}}],["pca9505",{"2":{"176":1}}],["pca9555",{"2":{"160":1}}],["pcba",{"2":{"2751":3}}],["pcbheaven",{"2":{"2350":1}}],["pcb1",{"2":{"2287":2}}],["pcb",{"2":{"18":2,"114":1,"134":2,"176":2,"211":2,"222":2,"624":2,"1125":1,"1129":1,"1289":1,"1324":1,"2268":1,"2271":1,"2273":1,"2274":2,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":1,"2306":1,"2341":1,"2342":1,"2367":1,"2489":4,"2568":1,"2573":1,"2605":1,"2653":1,"2704":1,"2711":1}}],["pcbs",{"2":{"18":1,"37":2,"114":1,"249":1,"2268":1,"2568":3}}],["pseudocode",{"2":{"2639":1}}],["pseudorandomly",{"2":{"2650":1}}],["pseudorandom",{"2":{"2137":1}}],["pste",{"2":{"2394":1,"2431":1}}],["pstr",{"2":{"1485":1,"1631":1,"1632":1,"1648":1,"1851":11,"1854":2,"2138":1,"2139":1,"2175":11,"2749":2}}],["psls",{"2":{"2394":1,"2433":1,"2786":1}}],["psi",{"2":{"1632":3}}],["pscr",{"2":{"313":1,"530":2,"2394":1,"2431":1,"2447":1}}],["ps",{"0":{"1326":1,"1847":1,"1891":1,"1899":1,"2731":1},"1":{"1892":1,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1898":1,"1899":1,"1900":1,"1901":1,"1902":1,"1903":1,"1904":1,"1905":1,"1906":1},"2":{"133":1,"134":1,"175":1,"176":1,"191":1,"211":3,"236":1,"266":1,"1847":1,"1891":2,"1899":1,"2731":6}}],["psp",{"2":{"118":1}}],["ps2avrgb",{"0":{"2384":1},"2":{"235":1,"1257":1,"2275":1,"2384":1,"2489":1}}],["ps2",{"2":{"114":2,"133":1,"134":1,"160":1,"222":1,"1893":5,"1894":9,"1895":5,"1896":17,"1897":3,"1899":17,"1900":4,"1901":10,"1902":1,"1903":4,"1904":3,"1905":2,"1906":1,"2731":1}}],["punctuation",{"0":{"1622":1,"2427":1},"2":{"1536":1,"1622":1,"2266":1}}],["pulsing",{"2":{"1616":6,"1987":2}}],["pulses",{"2":{"1595":2,"1766":9,"1987":2}}],["pulse",{"2":{"1252":3,"1491":1,"1616":1,"1987":10,"1989":1}}],["pulled",{"2":{"1611":1,"2269":1,"2276":1,"2558":1}}],["pulldown",{"2":{"786":3,"789":12,"850":2,"854":3,"885":2,"888":3,"919":2,"922":3,"953":2,"956":3,"987":2,"990":3,"1021":2,"1024":3,"1055":2,"1058":3,"1089":2,"1092":3,"1508":1}}],["pulls",{"2":{"304":1,"307":1,"2605":1}}],["pullup",{"2":{"134":1,"236":1,"707":2,"786":3,"789":12,"850":2,"854":3,"885":2,"888":3,"919":2,"922":3,"953":2,"956":3,"987":2,"990":3,"1021":2,"1024":3,"1055":2,"1058":3,"1089":2,"1092":3,"1262":3}}],["pulling",{"2":{"10":1,"24":1,"49":1,"1262":1,"2603":1}}],["pull",{"0":{"352":1,"1262":1,"2695":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"2":1,"38":1,"45":1,"69":1,"87":1,"103":1,"126":1,"243":1,"347":2,"349":2,"352":3,"355":1,"356":1,"359":1,"360":1,"537":1,"550":2,"554":9,"558":1,"560":1,"623":1,"674":1,"696":5,"1126":2,"1134":2,"1142":1,"1262":2,"1273":1,"1298":1,"1300":1,"1302":1,"1367":1,"1418":1,"2155":1,"2158":2,"2303":3,"2365":1,"2512":1,"2514":2,"2525":1,"2526":2,"2527":2,"2556":3,"2558":1,"2560":1,"2569":1,"2607":1,"2608":1,"2695":1,"2709":1,"2758":1,"2796":1}}],["pupdr",{"2":{"707":2}}],["puzzle",{"2":{"614":1}}],["pumps",{"2":{"1597":1}}],["pumpkinpad",{"2":{"241":1}}],["pumpkin",{"2":{"191":1,"241":1,"249":1}}],["pumkinpad",{"2":{"249":1}}],["public",{"0":{"2265":1},"2":{"249":1,"1417":3,"2349":1,"2609":3}}],["publishing",{"0":{"2528":1}}],["published",{"2":{"182":2,"317":1,"628":1,"1417":1,"2336":1,"2609":1,"2699":1}}],["publish",{"2":{"176":1,"188":1,"191":2,"199":1,"317":1,"2528":1}}],["pushed",{"2":{"520":1,"701":1,"1366":4,"1597":1,"2616":1}}],["pushbutton",{"2":{"255":1}}],["push",{"0":{"1262":1},"2":{"243":1,"262":1,"340":1,"347":3,"349":3,"358":2,"359":2,"360":2,"361":2,"554":2,"696":3,"1142":1,"1262":1,"1428":1,"2303":2,"2312":1,"2470":1,"2476":1,"2477":2,"2480":1,"2485":1,"2487":2,"2516":6,"2526":4,"2527":5,"2528":2}}],["putc",{"0":{"1643":1},"1":{"1644":1}}],["puts",{"0":{"1645":1,"1647":1},"1":{"1646":1,"1648":1},"2":{"1631":1,"1632":1,"1647":1,"2395":1,"2611":1}}],["putting",{"2":{"417":1,"2301":1,"2343":1,"2358":1,"2711":1}}],["put",{"0":{"2489":1},"2":{"134":1,"182":1,"184":1,"450":1,"526":1,"540":1,"550":1,"556":1,"560":1,"574":1,"586":1,"626":2,"1434":1,"1902":1,"1903":2,"2190":1,"2205":1,"2207":2,"2220":1,"2296":1,"2318":1,"2395":1,"2456":1,"2489":1,"2605":1,"2608":1,"2610":1,"2611":1,"2654":1}}],["puca",{"2":{"134":1}}],["purely",{"2":{"2216":1}}],["purejavahidapi",{"2":{"1925":1}}],["purchased",{"2":{"2389":1}}],["purchase",{"2":{"2183":1}}],["purple",{"2":{"1991":2,"2080":2,"2096":2,"2499":2}}],["purposes",{"2":{"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1853":1,"1927":1,"2177":1,"2334":1,"2388":1,"2552":1,"2654":1,"2683":1}}],["purpose",{"2":{"355":2,"432":1,"1267":1,"1417":1,"1507":1,"2167":8,"2531":1,"2542":1,"2609":1,"2613":1}}],["pur",{"2":{"850":1,"854":10,"885":1,"888":9,"919":1,"922":9,"953":1,"956":9,"987":1,"990":9,"1021":1,"1024":9,"1055":1,"1058":9,"1089":1,"1092":9}}],["purge",{"2":{"134":1,"238":1}}],["pursuit40",{"2":{"154":2}}],["pursuit",{"2":{"109":1}}],["peer",{"2":{"2665":2}}],["peej",{"2":{"211":1}}],["peql",{"2":{"2394":1,"2433":1}}],["pepper",{"2":{"2207":3}}],["pep8",{"2":{"455":1}}],["pent",{"2":{"2394":1,"2433":1,"2786":1}}],["penalize",{"2":{"2266":1}}],["pendulum",{"2":{"1987":3,"2750":1}}],["pending",{"2":{"599":1,"600":1}}],["pen",{"2":{"1943":1}}],["pedal",{"2":{"1831":1,"2410":1}}],["peaks",{"2":{"2311":1}}],["peak",{"2":{"1614":1,"1615":2}}],["pearl",{"2":{"211":5}}],["pe1",{"2":{"1140":1}}],["pe0",{"2":{"1140":1}}],["pegasushoof",{"2":{"199":2}}],["petruziamini",{"2":{"266":1}}],["pet",{"2":{"191":1}}],["people",{"2":{"119":2,"164":2,"172":2,"173":1,"221":1,"231":1,"244":2,"367":1,"446":1,"481":1,"482":1,"556":1,"559":1,"560":1,"567":1,"574":1,"602":1,"606":2,"615":1,"623":1,"1281":1,"1294":1,"1303":1,"1306":1,"1335":1,"1341":1,"1371":1,"1377":1,"1447":1,"2289":1,"2301":1,"2319":1,"2321":1,"2331":2,"2341":1,"2365":1,"2447":1,"2460":2,"2466":1,"2512":1,"2607":1,"2694":1,"2753":1,"2765":1,"2766":1,"2779":1,"2795":1}}],["peiorisboards",{"2":{"102":1}}],["perpetually",{"2":{"2758":1}}],["perhaps",{"2":{"1706":1}}],["permitted",{"2":{"1715":1,"2603":1,"2604":1,"2777":1}}],["permissions",{"2":{"1275":1}}],["permission",{"2":{"199":1}}],["permissive",{"0":{"2774":1},"2":{"112":2,"176":1,"505":4,"1469":1,"2206":1,"2207":1,"2713":2,"2768":1,"2770":2,"2771":3,"2772":2,"2774":11,"2775":2}}],["permanently",{"2":{"1620":1}}],["perks",{"2":{"1340":1}}],["perfectly",{"2":{"481":1,"2494":1}}],["perfect",{"2":{"228":1,"554":1,"1453":1}}],["perform",{"2":{"580":2,"636":1,"1545":1,"1693":1,"1714":1,"1853":1,"1864":1,"1909":1,"1912":1,"1960":1,"2104":1,"2107":1,"2108":1,"2171":1,"2177":1,"2289":1,"2367":1,"2420":1,"2530":1,"2552":1,"2563":1,"2615":12,"2735":1,"2774":2,"2775":2}}],["performed",{"2":{"515":1,"592":1,"680":1,"681":1,"1671":1,"2386":1}}],["performs",{"2":{"169":1,"428":1,"527":1,"679":1,"680":1,"681":1,"682":1,"1907":2,"1910":2,"2269":1,"2276":1,"2782":1}}],["performing",{"2":{"134":1,"2107":2}}],["performance",{"2":{"93":1,"175":1,"176":1,"215":1,"236":1,"479":1,"584":2,"585":1,"1290":1,"1363":3,"1366":1,"1501":1,"1855":1,"1859":1,"1952":1,"2070":1,"2613":1}}],["perceptible",{"2":{"2784":1}}],["percent",{"2":{"470":1,"2417":1,"2438":1}}],["perc",{"2":{"176":2,"2417":1,"2438":1}}],["person",{"2":{"1453":1,"2740":1}}],["personal",{"2":{"145":1,"191":1,"1279":1,"1311":1,"2303":1,"2344":1,"2467":2,"2471":1,"2472":1,"2477":1,"2507":1,"2509":1,"2545":1,"2604":1}}],["perspective",{"2":{"331":6,"336":1,"2518":1,"2585":1}}],["persisted",{"2":{"1832":1}}],["persistence",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1182":1}}],["persistent",{"0":{"604":1,"1368":1,"2646":1,"2649":1},"1":{"1369":1,"1370":1},"2":{"131":1,"604":1,"1368":1,"1372":2,"1378":2,"1436":1,"1476":1,"1632":1,"1868":1,"2164":1,"2213":1,"2395":1,"2611":1,"2613":1,"2646":2,"2649":1,"2767":1}}],["persists",{"2":{"1372":1}}],["persist",{"2":{"134":1,"474":1,"501":1,"1956":1,"2217":2,"2221":1,"2301":1}}],["perimeter",{"2":{"1945":1}}],["periodic",{"2":{"2353":1}}],["periodically",{"2":{"312":1,"452":1,"522":1,"1501":1,"2200":1}}],["periods",{"2":{"2207":1,"2264":3}}],["period",{"2":{"112":1,"199":1,"236":1,"264":1,"265":1,"274":1,"337":2,"350":1,"413":1,"502":1,"596":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1222":1,"1224":1,"1227":1,"1230":1,"1448":2,"1467":1,"1478":1,"1494":1,"1506":2,"1551":1,"1611":1,"1689":1,"2264":1,"2529":1,"2623":1,"2716":1}}],["peripherals",{"0":{"2574":1},"1":{"2575":1,"2576":1,"2577":1},"2":{"118":2,"157":1,"163":1,"211":1,"229":2,"234":3,"244":1,"678":1,"685":1,"703":1,"1129":1,"1134":1,"1139":1,"1142":1,"1214":1,"1235":1,"1427":1,"1933":1,"2562":1,"2570":1,"2573":1,"2574":1,"2606":1}}],["peripheral",{"0":{"234":1},"2":{"49":1,"176":1,"191":2,"199":1,"234":1,"675":1,"680":3,"681":1,"683":1,"685":1,"694":1,"703":3,"1122":1,"1126":1,"1128":1,"1132":3,"1133":3,"1134":5,"1142":1,"1174":1,"1214":3,"1219":1,"1235":3,"1259":1,"1260":2,"1266":1,"1267":1,"1427":1,"1897":4,"2573":1,"2575":1,"2576":1,"2577":1,"2585":2,"2589":2}}],["per",{"0":{"1460":1,"1555":1,"1721":1,"1830":1,"2263":1,"2302":1,"2779":1},"1":{"2264":1,"2265":1,"2266":1},"2":{"0":1,"9":1,"19":1,"22":1,"39":1,"52":1,"63":2,"92":1,"93":1,"112":6,"114":2,"160":1,"176":1,"184":1,"191":1,"194":3,"195":2,"198":1,"199":4,"201":1,"211":1,"213":1,"224":1,"238":1,"457":1,"459":1,"468":1,"505":16,"529":1,"562":1,"584":1,"674":1,"686":1,"703":1,"1214":2,"1235":1,"1249":2,"1273":1,"1292":1,"1363":8,"1366":10,"1396":1,"1421":1,"1425":1,"1427":1,"1434":1,"1437":1,"1448":2,"1453":1,"1468":2,"1491":1,"1537":1,"1555":5,"1595":1,"1600":1,"1721":3,"1768":1,"1771":1,"1841":1,"1842":3,"1843":8,"1845":1,"1855":1,"1950":3,"1992":1,"1995":1,"2069":1,"2143":6,"2166":1,"2195":1,"2199":2,"2209":2,"2263":1,"2605":1,"2614":1,"2616":3,"2624":1,"2628":1,"2631":1,"2713":4,"2727":1,"2734":1,"2740":1,"2750":1,"2759":1,"2766":1,"2767":2,"2774":1,"2775":1,"2776":1,"2777":1,"2779":1,"2784":2}}],["pkg",{"2":{"2506":1}}],["pk",{"2":{"94":1,"114":1,"199":1,"1363":1,"1366":3,"2713":3}}],["pgm",{"2":{"145":1,"1555":1}}],["pgup",{"2":{"90":2,"209":1,"313":2,"530":2,"1598":2,"1910":1,"2394":1,"2431":1,"2446":1,"2447":1}}],["pgdn",{"2":{"90":2,"120":1,"209":1,"313":2,"530":2,"1391":1,"1598":2,"1910":1,"2394":1,"2431":1,"2446":1,"2447":1}}],["pywinusb",{"2":{"1925":1}}],["pyhidapi",{"2":{"1925":1,"1927":1}}],["pytest",{"0":{"407":1},"2":{"277":1,"407":5,"442":1,"443":1,"447":1,"483":1}}],["pythonimport",{"2":{"1927":1}}],["pythonistas",{"2":{"455":1}}],["pythonfrom",{"2":{"292":1}}],["python3",{"2":{"143":1,"366":1,"429":1,"1478":1,"2503":4}}],["python",{"0":{"23":1,"406":1,"455":1},"2":{"23":1,"70":2,"76":1,"143":1,"145":2,"160":1,"282":3,"364":1,"366":1,"406":2,"407":2,"430":4,"432":1,"442":1,"444":1,"446":2,"455":2,"457":1,"461":1,"466":1,"479":1,"483":1,"484":1,"485":2,"555":2,"607":3,"613":2,"614":3,"1478":1,"1925":1,"1927":1,"2276":1,"2500":1,"2503":4,"2614":1}}],["pyformat",{"2":{"199":1}}],["py",{"2":{"76":1,"114":1,"222":1,"282":3,"430":1,"460":1,"484":1,"485":1,"607":3,"613":1,"614":3,"2506":2}}],["pirate",{"0":{"2378":1},"1":{"2379":1},"2":{"2378":2,"2379":1}}],["piezos",{"2":{"1428":1}}],["piezo",{"2":{"685":2,"691":1,"1425":1,"1428":1,"1429":1,"1432":2}}],["piece",{"2":{"481":1,"614":1,"1337":1,"2318":1,"2356":1}}],["pieces",{"2":{"249":1,"481":1,"2311":2,"2496":1,"2789":1}}],["pitch",{"2":{"231":1,"1440":3,"1831":4,"2410":4}}],["pi50",{"2":{"211":2}}],["piantor",{"2":{"211":1}}],["piggy60",{"2":{"207":4,"211":2}}],["pizza65",{"2":{"191":1}}],["pizzakeyboards",{"2":{"191":1}}],["pi60",{"2":{"191":1,"236":1}}],["pio0",{"2":{"1134":1,"1266":1,"1897":1}}],["pio1",{"2":{"249":1,"1134":2,"1266":2,"1897":2}}],["pio",{"0":{"1134":1,"1258":1,"1266":1,"1897":1},"2":{"176":2,"191":3,"211":1,"249":1,"1126":1,"1127":3,"1130":3,"1134":7,"1258":2,"1261":2,"1266":2,"1354":2,"1897":4,"2570":2,"2582":4}}],["pi",{"0":{"163":1,"492":1,"1358":1,"2287":1,"2570":1},"1":{"2571":1,"2572":1,"2573":1,"2574":1,"2575":1,"2576":1,"2577":1,"2578":1,"2579":1,"2580":1,"2581":1,"2582":1,"2583":1,"2584":1},"2":{"163":1,"176":1,"189":1,"191":1,"199":1,"1127":1,"1130":1,"1134":1,"1348":2,"1352":6,"1359":6,"1897":1,"2572":1,"2573":1,"2584":1,"2751":1}}],["pipe",{"2":{"1715":1,"2417":1,"2438":1,"2777":1}}],["pipes",{"2":{"334":1}}],["pipeline",{"2":{"198":1,"1597":1,"2606":1}}],["pip",{"0":{"366":1},"2":{"143":2,"366":2,"429":1,"1478":1,"2503":6,"2504":1}}],["pillow",{"0":{"143":1},"2":{"143":2,"145":1,"2614":1}}],["pistachio",{"2":{"134":1,"154":6,"222":1}}],["picture",{"2":{"2605":1}}],["picro",{"2":{"2584":1}}],["pic",{"2":{"2378":1}}],["picks",{"2":{"2299":1}}],["picky",{"2":{"455":1}}],["picking",{"2":{"141":1}}],["picked",{"2":{"130":2,"156":1,"163":1,"210":1,"232":1,"248":1,"523":1,"1477":1}}],["pick",{"2":{"120":1,"428":1,"435":1,"453":1,"526":1,"555":1,"627":1,"639":1,"1279":1,"1433":1,"1533":1,"1690":1,"1908":1,"1939":2,"1953":3,"2592":1,"2595":1,"2757":1}}],["picolibc",{"2":{"134":1}}],["pico",{"2":{"55":15,"163":1,"191":1,"199":1,"236":1,"241":4,"681":1,"2287":1,"2572":2}}],["pimoroni",{"0":{"1948":1},"2":{"114":2,"118":2,"176":1,"1948":9}}],["pixdata",{"2":{"2613":1,"2616":3}}],["pixels",{"2":{"1842":2,"1845":2,"1853":3,"1855":1,"1860":5,"1940":5,"2177":3,"2179":1,"2181":5,"2616":9,"2626":2,"2633":2,"2635":2}}],["pixel",{"2":{"134":1,"160":1,"176":1,"199":1,"222":2,"248":1,"277":1,"1842":1,"1860":2,"1987":9,"2181":2,"2613":1,"2614":2,"2615":5,"2616":7,"2624":2,"2631":2,"2635":8,"2637":4,"2750":3}}],["pix",{"2":{"74":2}}],["pid>",{"2":{"375":1}}],["pid",{"0":{"1279":1},"1":{"1280":1},"2":{"70":1,"111":1,"169":1,"176":1,"184":1,"249":2,"266":1,"375":1,"502":1,"628":1,"629":1,"1279":1,"1315":1,"2338":1,"2595":3,"2605":1,"2738":1}}],["pink",{"2":{"1991":2,"2096":2}}],["pinky",{"2":{"1447":1}}],["pinwheels",{"2":{"1987":3,"2750":1}}],["pinwheel",{"2":{"1766":4,"1986":2,"1987":12,"2750":3}}],["pings",{"2":{"726":1}}],["ping",{"0":{"726":1},"1":{"727":1,"728":1},"2":{"726":1,"2605":1}}],["pintomux",{"2":{"199":1,"638":1,"639":1}}],["pinouts",{"2":{"1356":1,"1596":1,"2308":1,"2392":1}}],["pinout",{"2":{"176":1,"511":2,"633":1,"1358":1,"1596":1,"2308":1,"2314":1,"2391":1,"2572":1,"2584":2}}],["pinnacle",{"2":{"118":2,"175":1,"176":2,"191":1,"1942":3,"1943":19,"1944":5,"1945":3,"1946":3,"1980":1}}],["pinxx",{"2":{"114":1}}],["pins>",{"2":{"2169":2}}],["pins",{"0":{"1496":1,"2555":1,"2556":1},"2":{"49":1,"70":1,"111":2,"112":2,"114":2,"134":1,"176":2,"191":2,"199":2,"211":1,"236":2,"249":1,"277":1,"334":2,"502":14,"511":12,"563":1,"575":1,"576":2,"580":11,"606":1,"609":1,"630":1,"633":1,"635":4,"656":1,"657":1,"684":1,"690":1,"691":1,"692":1,"702":2,"703":2,"707":1,"734":1,"757":1,"760":1,"786":1,"789":1,"790":1,"792":1,"818":1,"822":1,"850":1,"851":1,"852":1,"854":1,"855":1,"857":1,"885":1,"886":1,"888":1,"889":1,"891":1,"919":1,"922":1,"923":1,"925":1,"953":1,"956":1,"957":1,"959":1,"987":1,"990":1,"991":1,"993":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1027":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1061":1,"1089":1,"1090":1,"1092":1,"1093":1,"1095":1,"1125":1,"1127":1,"1129":2,"1130":2,"1139":1,"1142":4,"1145":1,"1148":1,"1169":4,"1171":5,"1182":1,"1185":1,"1213":2,"1214":3,"1232":1,"1234":2,"1235":2,"1260":1,"1271":1,"1331":1,"1351":1,"1356":1,"1360":1,"1361":1,"1424":2,"1427":1,"1428":1,"1431":1,"1432":1,"1436":1,"1496":3,"1501":1,"1503":1,"1508":2,"1529":1,"1585":3,"1595":5,"1596":7,"1600":9,"1611":4,"1612":1,"1629":3,"1753":1,"1755":1,"1858":7,"1895":1,"1897":1,"1950":8,"2099":3,"2163":1,"2169":9,"2275":1,"2307":1,"2311":1,"2314":2,"2315":3,"2317":1,"2325":1,"2367":3,"2391":1,"2392":1,"2489":1,"2553":1,"2554":1,"2555":2,"2557":2,"2558":5,"2560":1,"2564":1,"2568":2,"2569":1,"2571":1,"2572":2,"2573":1,"2579":1,"2581":2,"2582":1,"2596":5,"2597":7,"2605":1,"2615":2,"2677":1,"2687":1,"2715":1,"2716":2,"2721":2,"2723":1,"2728":6,"2736":3}}],["pin",{"0":{"243":1,"663":2,"669":2,"1123":1,"1126":1,"1129":1,"1217":1,"1273":1,"1351":1,"1589":1,"2162":1,"2163":1,"2554":1,"2572":1,"2597":1},"1":{"664":2,"670":2,"1218":1,"1219":1,"2555":1,"2556":1,"2557":1,"2558":1},"2":{"28":2,"45":1,"70":2,"93":1,"111":1,"112":2,"114":5,"134":1,"145":4,"160":1,"172":1,"175":1,"176":2,"190":1,"191":1,"199":4,"201":3,"211":8,"222":1,"236":1,"243":33,"249":3,"266":1,"277":10,"495":1,"502":26,"506":4,"509":3,"510":7,"511":1,"576":5,"580":3,"635":1,"636":1,"638":5,"639":9,"644":6,"656":8,"664":3,"670":3,"674":5,"675":2,"685":1,"690":5,"691":4,"694":2,"695":1,"696":34,"703":4,"707":2,"731":3,"757":2,"758":1,"786":2,"787":1,"792":1,"818":2,"819":1,"822":1,"850":2,"857":1,"885":2,"891":1,"919":2,"920":1,"925":1,"953":2,"954":1,"959":1,"987":2,"988":1,"993":1,"1021":2,"1027":1,"1055":2,"1061":1,"1089":2,"1095":1,"1122":1,"1123":3,"1124":2,"1126":5,"1127":3,"1129":12,"1130":7,"1134":2,"1140":2,"1141":2,"1142":6,"1145":2,"1146":1,"1148":1,"1182":2,"1183":1,"1185":1,"1213":3,"1214":13,"1218":3,"1231":1,"1235":8,"1251":3,"1260":2,"1262":4,"1263":4,"1267":1,"1271":13,"1272":4,"1273":5,"1330":2,"1349":1,"1351":3,"1356":2,"1357":2,"1362":1,"1415":1,"1423":1,"1424":10,"1425":2,"1427":4,"1428":3,"1429":3,"1430":2,"1431":5,"1432":4,"1433":5,"1436":9,"1494":4,"1495":2,"1496":4,"1499":2,"1503":1,"1504":1,"1506":2,"1508":3,"1529":4,"1533":1,"1585":1,"1589":1,"1600":1,"1608":5,"1611":8,"1629":6,"1668":1,"1669":1,"1671":4,"1678":3,"1753":11,"1755":9,"1857":7,"1858":3,"1891":1,"1892":2,"1893":2,"1894":4,"1895":2,"1896":2,"1897":3,"1935":12,"1936":3,"1937":6,"1943":3,"1947":8,"1949":12,"1950":11,"1952":16,"2070":11,"2099":2,"2157":2,"2158":2,"2162":4,"2163":3,"2166":2,"2169":1,"2179":6,"2269":2,"2276":2,"2301":3,"2315":1,"2369":3,"2371":3,"2373":3,"2378":2,"2383":1,"2391":1,"2555":3,"2556":4,"2557":4,"2560":1,"2563":2,"2568":1,"2569":1,"2572":2,"2573":2,"2578":1,"2580":15,"2582":2,"2597":4,"2605":1,"2615":70,"2712":1,"2714":4,"2715":3,"2716":2,"2723":6,"2724":5,"2728":1,"2731":4,"2732":4,"2736":4,"2739":2}}],["pliers",{"2":{"2305":1,"2312":1}}],["pl",{"2":{"2191":3}}],["ply2",{"2":{"1591":2,"2402":1}}],["ply1",{"2":{"1591":2,"2402":1}}],["plywrks",{"2":{"211":1}}],["plover",{"0":{"2183":1,"2184":1},"1":{"2185":1,"2186":1,"2187":1},"2":{"1369":1,"1380":1,"1587":4,"2182":1,"2183":5,"2184":6,"2188":2,"2189":2,"2742":4}}],["ploopyco",{"2":{"266":1}}],["ploopy",{"2":{"134":1,"199":1}}],["plump",{"2":{"2318":1}}],["plunger",{"2":{"1611":1}}],["pluggable",{"2":{"2156":1}}],["plugging",{"2":{"1307":1,"1532":1,"2152":1,"2156":1,"2275":1,"2344":2,"2489":1,"2595":1}}],["plugged",{"2":{"509":4,"626":1,"1291":1,"2215":1,"2708":1}}],["plug",{"2":{"624":1,"626":1,"1337":1,"1591":1,"2317":1,"2386":1,"2392":1,"2489":2}}],["plugins",{"0":{"2535":1,"2538":1},"1":{"2536":1,"2537":1,"2538":1},"2":{"2535":1,"2538":1}}],["plugin",{"2":{"445":1,"454":1,"2287":2,"2531":1,"2536":1,"2538":1,"2552":1}}],["plus",{"2":{"154":2,"176":2,"211":2,"222":1,"226":1,"241":4,"1860":1,"2181":1,"2307":1,"2394":1,"2417":1,"2433":1,"2438":1}}],["plenty",{"2":{"488":1,"1722":1}}],["plexus75",{"2":{"154":2}}],["pleased",{"2":{"224":1}}],["please",{"2":{"14":1,"16":1,"37":1,"43":1,"49":1,"195":1,"196":1,"228":1,"240":1,"273":1,"276":1,"329":1,"367":1,"446":2,"453":1,"455":1,"479":1,"485":1,"535":1,"540":1,"543":1,"547":1,"548":1,"549":1,"551":2,"556":1,"557":1,"560":3,"585":1,"623":1,"641":1,"1129":1,"1172":1,"1256":1,"1297":2,"1298":1,"1367":1,"1413":1,"1417":1,"1538":1,"1591":1,"1592":1,"1614":1,"1615":1,"1715":1,"1868":1,"1891":1,"1893":1,"1925":1,"2070":1,"2080":1,"2221":1,"2298":1,"2325":1,"2336":1,"2339":1,"2345":1,"2448":1,"2456":1,"2466":1,"2492":1,"2505":1,"2512":1,"2514":1,"2574":1,"2575":1,"2576":1,"2592":2,"2593":2,"2604":1,"2608":1,"2617":1,"2618":1,"2620":1,"2752":1,"2777":1,"2790":1}}],["plastic",{"2":{"2313":1}}],["placing",{"2":{"2073":1,"2350":1}}],["placement",{"2":{"2158":1,"2207":1}}],["placeholder",{"2":{"1420":1,"2748":2}}],["placed",{"2":{"314":1,"481":1,"1491":1,"1508":1,"1569":1,"1855":1,"2158":1,"2171":1,"2318":1,"2338":1,"2339":1,"2350":1,"2479":1,"2486":1,"2594":1,"2605":2}}],["place",{"2":{"114":1,"176":2,"182":1,"194":1,"249":1,"404":1,"452":1,"453":1,"474":1,"575":1,"621":2,"631":1,"1276":1,"1307":2,"1312":1,"1315":1,"1381":1,"1417":1,"1435":1,"1477":1,"1496":1,"1546":1,"2164":1,"2171":1,"2202":1,"2207":1,"2283":1,"2285":1,"2287":1,"2296":1,"2306":1,"2309":1,"2312":3,"2314":1,"2315":1,"2319":1,"2352":1,"2444":2,"2527":1,"2593":1,"2659":1,"2740":1,"2749":1,"2753":1,"2767":1,"2796":1}}],["places",{"2":{"111":1,"331":1,"470":1,"557":1,"610":1,"1565":1,"1572":1,"2207":1,"2389":1,"2653":1,"2785":1}}],["plates",{"2":{"2342":1}}],["plate",{"2":{"2305":2,"2306":4,"2309":1}}],["plat",{"2":{"133":1,"134":1}}],["platforms",{"2":{"50":1,"93":1,"141":1,"145":1,"148":1,"176":1,"191":1,"222":1,"455":1,"560":1,"695":1,"696":1,"1122":1,"1124":1,"1284":1,"2782":2}}],["platform",{"2":{"50":2,"65":1,"75":1,"111":1,"113":4,"114":4,"123":1,"133":5,"134":5,"145":1,"160":1,"163":2,"189":1,"191":1,"199":7,"211":1,"683":1,"696":1,"1121":1,"1500":1,"1506":1,"1849":1,"2615":2,"2662":1,"2782":4,"2793":1}}],["plans",{"2":{"2795":1}}],["planning",{"0":{"2307":1},"1":{"2308":1},"2":{"2306":1,"2310":1,"2315":1,"2316":1}}],["planned",{"2":{"88":1,"560":1,"2101":1,"2305":1,"2309":1}}],["plan",{"2":{"154":2,"561":1,"617":1,"2307":2,"2495":1}}],["planck",{"0":{"17":1,"1280":1},"2":{"17":1,"270":2,"277":2,"331":2,"370":2,"378":1,"383":1,"393":2,"394":2,"395":1,"396":1,"624":7,"1280":1,"1302":1,"1324":4,"1380":1,"1388":4,"1389":2,"1413":2,"1430":2,"1442":2,"1477":1,"1925":1,"2140":1,"2183":1,"2184":1,"2193":1,"2269":2,"2276":2,"2291":2,"2300":8,"2303":1,"2307":2,"2320":1,"2333":1,"2464":4,"2479":1,"2491":2}}],["plain",{"2":{"1537":1,"1986":2,"2072":1,"2415":1,"2446":1,"2468":2,"2496":2,"2531":1,"2542":1}}],["plain60",{"2":{"57":2}}],["plaid",{"2":{"37":2,"249":1}}],["player",{"2":{"2394":1,"2432":1}}],["played",{"2":{"688":2,"1437":1,"1616":2}}],["plays",{"2":{"1435":12,"1436":16}}],["playback",{"2":{"1394":1,"1440":2,"2144":1,"2145":1,"2394":1}}],["playing",{"2":{"572":1,"683":1,"688":1,"1434":1,"1440":2,"1473":3,"1544":1,"2145":1}}],["play",{"0":{"27":2},"2":{"27":2,"222":1,"336":1,"479":1,"572":2,"1369":2,"1394":1,"1423":1,"1435":3,"1440":1,"1453":1,"1485":2,"1548":1,"1587":2,"1591":2,"1594":2,"1703":9,"1710":1,"1724":5,"1756":3,"2112":1,"2218":6,"2394":2,"2402":2,"2432":2,"2552":2,"2646":1,"2715":1,"2789":1}}],["p",{"0":{"1647":1,"1651":1,"2123":1,"2125":1},"1":{"1648":1,"1652":1,"2124":1,"2126":1},"2":{"14":1,"211":1,"266":3,"292":1,"313":1,"374":4,"530":2,"633":2,"702":1,"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1213":1,"1234":1,"1485":3,"1488":1,"1489":1,"1495":1,"1503":1,"1504":1,"1540":1,"1631":1,"1632":2,"1851":8,"1852":1,"1854":2,"1860":7,"1861":6,"1910":1,"1986":1,"2072":1,"2138":1,"2139":1,"2175":8,"2176":1,"2181":3,"2186":2,"2191":2,"2207":2,"2271":2,"2274":1,"2386":3,"2394":3,"2415":1,"2425":3,"2446":1,"2474":1,"2551":4,"2749":2}}],["paper",{"2":{"2188":2}}],["paw",{"0":{"1947":1},"2":{"1947":2}}],["paw3204",{"2":{"176":1,"1947":3}}],["pam8302",{"2":{"1436":1}}],["pa0",{"2":{"1141":1}}],["pa3",{"2":{"1140":1,"1141":1,"1142":1}}],["pa2",{"2":{"1140":1,"1141":1,"1142":1}}],["pa1",{"2":{"1141":1}}],["pa15",{"2":{"1140":1,"1141":1}}],["pa14",{"2":{"1140":1,"1141":1}}],["pa11",{"2":{"690":1}}],["pa10",{"2":{"690":1,"1140":1,"1141":1,"1142":1}}],["pa9",{"2":{"690":1,"1140":1,"1141":1,"1142":1}}],["pa8",{"2":{"690":1,"1433":2}}],["pasted",{"2":{"2605":1}}],["paste",{"2":{"2303":1,"2388":1,"2394":2,"2431":2,"2453":1,"2454":1,"2476":1,"2605":1,"2654":1}}],["past",{"0":{"338":1,"351":1},"2":{"1451":1,"2394":1,"2433":1,"2778":1,"2786":1}}],["password",{"2":{"2477":1}}],["passwords",{"2":{"1390":1,"2650":1}}],["passes",{"2":{"1378":1,"1484":1,"2069":1}}],["passed",{"2":{"194":1,"374":2,"385":1,"387":1,"396":2,"411":3,"588":2,"597":1,"598":1,"1213":1,"1214":1,"1249":1,"1467":1,"1482":2,"1708":1,"1713":2,"1860":2,"1954":1,"1955":1,"1991":1,"2096":1,"2166":1,"2181":2,"2200":2,"2332":1,"2350":1,"2651":2}}],["passing",{"2":{"506":1,"1860":1,"1955":1,"2181":1,"2208":1,"2332":1,"2456":1}}],["pass",{"2":{"22":1,"114":1,"130":1,"134":1,"160":2,"282":3,"341":1,"400":1,"432":2,"441":1,"447":1,"454":1,"474":1,"476":4,"1372":1,"1440":1,"1488":1,"1489":1,"2350":2,"2392":1,"2616":1,"2741":1}}],["pauses",{"2":{"689":1}}],["pause",{"2":{"336":1,"502":1,"1394":1,"1624":1,"1703":8,"2394":4,"2431":2,"2432":2,"2489":1}}],["paus",{"2":{"313":1,"530":2,"2394":1,"2431":1,"2447":1}}],["pay",{"2":{"2163":1}}],["payloads",{"2":{"1925":1}}],["payload",{"0":{"313":1},"2":{"313":1,"314":1,"1925":1}}],["paying",{"2":{"198":1}}],["pain",{"2":{"2315":1}}],["painter",{"0":{"138":1,"232":1,"248":1,"408":1,"409":1,"410":1,"2612":1,"2613":1,"2614":1,"2615":1,"2616":1,"2617":1,"2619":1,"2620":1,"2621":1},"1":{"2613":1,"2614":1,"2615":1,"2616":1,"2618":1,"2619":1,"2620":2,"2621":2,"2622":1,"2623":1},"2":{"138":5,"143":1,"145":1,"176":1,"199":2,"211":2,"232":5,"248":3,"249":1,"408":1,"409":1,"410":1,"2612":21,"2613":12,"2614":11,"2615":47,"2616":44,"2617":2,"2618":5,"2620":3}}],["paid",{"2":{"551":1,"2608":1}}],["pairs",{"0":{"2220":1},"2":{"529":1,"612":1,"1585":1,"1912":1,"2221":1,"2710":1}}],["pair",{"2":{"202":1,"1600":1,"1897":1,"2237":1,"2241":1}}],["pachi",{"2":{"211":2,"277":1}}],["packaging",{"0":{"367":1},"2":{"2311":1}}],["package",{"2":{"324":1,"358":2,"367":2,"460":1,"461":1,"1278":1,"1478":1,"2390":1,"2505":2,"2506":1,"2535":1,"2536":2,"2537":1,"2585":1,"2588":1,"2686":1}}],["packages",{"0":{"2505":1},"2":{"167":1,"331":1,"364":1,"2390":1,"2501":1,"2505":1,"2548":1,"2585":1}}],["pack",{"2":{"331":1,"2303":1,"2549":2}}],["packs",{"2":{"331":3,"2169":1}}],["packed",{"2":{"236":2,"1676":1,"1715":2,"2624":1,"2626":1,"2627":1,"2628":2,"2631":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2777":2}}],["packets",{"2":{"263":1,"1868":2,"2185":2,"2186":2,"2190":1}}],["packet",{"2":{"236":2,"263":1,"502":1,"2185":5,"2186":3,"2190":2,"2738":1}}],["packing",{"2":{"199":1}}],["packrat",{"2":{"154":2}}],["pacman",{"2":{"145":1,"2390":1,"2470":1,"2503":1,"2505":1}}],["pal2",{"2":{"2614":3}}],["pal256",{"2":{"2614":3}}],["pal4",{"2":{"2614":3}}],["pal16",{"2":{"2614":3}}],["palsetpadmode",{"2":{"707":2}}],["palettes",{"2":{"2613":1}}],["palette",{"0":{"2629":1,"2636":1},"2":{"145":1,"249":1,"2551":2,"2613":1,"2614":6,"2624":2,"2626":1,"2629":3,"2631":3,"2635":14,"2636":8}}],["paladinpad",{"2":{"134":1}}],["paladin64",{"2":{"122":2,"211":1}}],["pal",{"2":{"133":1,"134":1,"211":1,"690":2,"697":1,"703":2,"707":6,"1124":2,"1127":1,"1129":2,"1130":1,"1214":3,"1235":4,"1263":2,"1267":1,"1357":1,"1433":1,"1506":1,"1895":1}}],["patience",{"2":{"2608":1}}],["patient",{"2":{"551":1}}],["patching",{"2":{"2513":1}}],["patch",{"2":{"211":1,"2513":3}}],["patterns",{"2":{"381":1,"606":2,"1921":1,"2331":1}}],["pattern",{"2":{"118":1,"125":1,"185":1,"198":1,"428":1,"2687":1,"2767":1}}],["path=",{"2":{"2507":1}}],["path=raw",{"2":{"1927":1}}],["pathlib",{"2":{"292":1}}],["paths",{"2":{"132":1,"134":1,"160":1,"176":1,"199":1,"331":1,"554":1,"2548":1}}],["path",{"2":{"6":1,"50":1,"114":1,"211":1,"292":3,"331":2,"335":1,"393":1,"394":1,"405":1,"407":1,"425":1,"426":2,"450":1,"655":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1170":1,"1181":1,"1413":2,"1475":1,"1927":1,"2291":1,"2300":4,"2303":4,"2316":1,"2386":1,"2392":3,"2460":1,"2474":1,"2476":2,"2484":1,"2485":1,"2507":2,"2508":1,"2527":3,"2547":3,"2552":7,"2614":1}}],["padding",{"2":{"2624":1,"2631":1,"2744":1}}],["paddlegame",{"2":{"114":1}}],["pads",{"2":{"624":1,"1600":1,"2171":2}}],["pad",{"0":{"2433":1},"2":{"114":2,"191":1,"236":1,"241":5,"249":2,"266":1,"1214":1,"1422":1,"1595":2,"1980":1,"2169":1,"2171":3,"2311":1}}],["pans",{"2":{"1860":1,"2181":1}}],["pan",{"2":{"211":1,"1860":1,"2181":1}}],["panel",{"2":{"138":1,"248":1,"1851":2,"2221":1,"2394":2,"2432":2,"2612":2,"2615":33,"2616":4}}],["panels",{"2":{"123":1,"138":2,"248":1,"2606":1,"2615":3,"2616":3}}],["pandora",{"2":{"114":1,"211":1}}],["pancake",{"2":{"37":2}}],["paren",{"2":{"2417":2,"2438":2}}],["parens",{"2":{"2208":1}}],["parenthesis",{"2":{"2146":1,"2147":6,"2148":6,"2421":6}}],["parentheses",{"0":{"469":1},"2":{"469":2,"2150":1,"2208":1}}],["parent",{"2":{"72":1,"160":1,"249":1,"266":1,"373":1,"559":1,"2537":1}}],["parity",{"2":{"1896":1,"2188":1}}],["paryz",{"2":{"199":1}}],["parse",{"2":{"160":1,"612":1}}],["parsing",{"2":{"76":1,"92":1,"176":1,"191":1,"199":1,"211":1,"236":1,"380":1,"430":1,"436":1,"2548":1,"2626":1,"2632":1,"2633":1}}],["paragraph",{"2":{"616":2}}],["params",{"2":{"199":1,"1767":11,"1990":11}}],["parameter",{"2":{"191":1,"460":1,"598":1,"1252":1,"1363":1,"1406":1,"1754":1,"2164":2,"2291":1,"2616":2}}],["parameters",{"2":{"70":1,"249":1,"1219":1,"1324":1,"2291":3,"2441":1,"2605":1}}],["parallel",{"2":{"114":1,"134":1,"236":1,"370":3,"396":5,"411":5,"1404":1,"1508":1,"2312":1,"2615":1}}],["participating",{"2":{"2752":1}}],["particularly",{"2":{"467":1,"552":1,"609":1,"2169":1}}],["particular",{"0":{"1978":1},"2":{"453":1,"455":1,"460":1,"500":1,"559":3,"635":2,"707":1,"726":1,"1325":1,"1378":1,"1381":1,"1417":1,"1435":1,"1488":1,"1506":1,"1643":1,"1919":1,"1962":1,"1977":1,"2210":1,"2266":1,"2302":2,"2313":2,"2352":1,"2387":1,"2390":1,"2462":1,"2533":1,"2587":1,"2609":1,"2679":1}}],["parties",{"2":{"2585":1}}],["partialremap",{"2":{"1142":2}}],["partially",{"2":{"176":1,"199":1,"236":2,"692":1}}],["partial",{"2":{"49":1,"1353":1,"1354":1,"1484":1,"2264":1,"2615":1}}],["party",{"2":{"317":1,"457":1,"550":1,"2221":1,"2341":1,"2759":1}}],["parts",{"0":{"2305":1},"2":{"172":1,"303":1,"482":1,"552":1,"703":1,"1214":1,"1235":1,"1960":2,"2313":1,"2387":2,"2512":1,"2792":1}}],["part",{"2":{"67":1,"76":1,"86":1,"114":2,"134":1,"145":1,"176":2,"188":5,"191":5,"199":1,"211":8,"236":1,"262":1,"266":32,"292":1,"454":1,"469":1,"470":1,"560":1,"574":1,"602":1,"613":1,"623":1,"641":1,"1138":1,"1291":1,"1341":1,"1368":1,"1377":1,"1401":1,"1420":2,"1422":1,"1441":1,"1475":1,"1482":1,"1483":1,"1496":1,"1591":1,"1723":1,"1763":2,"1984":2,"2110":1,"2166":5,"2169":1,"2187":1,"2266":1,"2288":1,"2303":1,"2316":1,"2318":2,"2321":1,"2367":1,"2432":1,"2445":2,"2470":2,"2511":3,"2513":2,"2525":1,"2529":1,"2546":1,"2552":1,"2562":1,"2587":1,"2647":1,"2699":1,"2782":1,"2792":1}}],["page=shop",{"2":{"1279":1}}],["pagesize",{"2":{"2392":1}}],["pages",{"2":{"277":1,"279":1,"520":1,"602":1,"1341":1,"2342":2,"2392":3,"2458":1,"2574":1}}],["page",{"0":{"616":1,"830":2,"865":2,"899":2,"933":2,"967":2,"1001":2,"1035":2,"1069":2,"1103":2,"1156":2,"1193":2},"1":{"831":2,"866":2,"900":2,"934":2,"968":2,"1002":2,"1036":2,"1070":2,"1104":2,"1157":2,"1194":2},"2":{"13":1,"124":1,"163":1,"164":1,"194":1,"206":1,"210":1,"249":1,"278":2,"279":1,"302":1,"311":1,"322":1,"330":1,"351":1,"492":1,"496":2,"517":1,"519":1,"528":1,"536":1,"557":2,"567":1,"602":2,"605":1,"615":1,"616":4,"617":1,"621":3,"622":1,"659":1,"674":2,"675":2,"694":2,"704":1,"705":1,"792":1,"822":1,"830":1,"831":2,"857":1,"865":1,"866":2,"891":1,"899":1,"900":2,"925":1,"933":1,"934":2,"959":1,"967":1,"968":2,"993":1,"1001":1,"1002":2,"1027":1,"1035":1,"1036":2,"1061":1,"1069":1,"1070":2,"1095":1,"1103":1,"1104":2,"1148":1,"1156":1,"1157":2,"1185":1,"1193":1,"1194":2,"1274":1,"1281":1,"1296":1,"1301":2,"1303":1,"1310":2,"1316":2,"1337":1,"1338":1,"1341":2,"1347":1,"1362":1,"1624":2,"1627":1,"1859":2,"1860":7,"1870":1,"1891":1,"1910":2,"1924":3,"1925":1,"1927":4,"2181":7,"2294":1,"2301":4,"2303":1,"2321":3,"2326":1,"2327":1,"2328":1,"2329":1,"2330":1,"2337":1,"2364":1,"2365":1,"2374":1,"2392":8,"2393":2,"2394":6,"2424":1,"2431":4,"2432":3,"2433":2,"2478":1,"2499":1,"2531":1,"2542":1,"2562":1,"2585":1,"2592":1,"2594":1,"2600":1,"2601":1,"2603":1,"2610":1,"2640":1,"2652":1,"2710":1,"2711":3,"2761":1}}],["pong",{"2":{"2605":1}}],["podman",{"2":{"2290":2,"2291":3}}],["poop",{"2":{"2220":1}}],["poor",{"2":{"2207":1,"2758":2}}],["pop",{"2":{"2318":1}}],["populated",{"2":{"2785":1}}],["populates",{"2":{"2160":1}}],["populate",{"2":{"1369":1,"2592":1,"2785":1}}],["popularity",{"2":{"2669":1}}],["popular",{"2":{"236":1,"263":1,"1991":1,"2096":1,"2553":1,"2673":1,"2751":1}}],["popping",{"2":{"236":1}}],["policies",{"0":{"2756":1},"1":{"2757":1,"2758":1,"2759":1,"2760":1}}],["policy",{"0":{"2758":1},"1":{"2759":1,"2760":1},"2":{"1276":1,"2759":1}}],["policy=default",{"2":{"1276":1}}],["polish",{"2":{"2742":2}}],["polilla",{"2":{"253":2}}],["polarity",{"2":{"1218":1,"2563":1}}],["polaris",{"2":{"211":1,"388":4}}],["pololu",{"2":{"629":1,"2271":1,"2383":1}}],["polled",{"2":{"176":1,"1952":1}}],["poll",{"2":{"176":1,"511":2,"522":1,"1896":1,"2169":2,"2738":1}}],["polling",{"0":{"148":1},"2":{"112":1,"114":1,"148":1,"160":2,"502":2,"1952":1,"2736":2,"2738":1}}],["potentiometer",{"2":{"630":1,"1668":1,"1829":1}}],["potential",{"2":{"21":1,"153":1,"160":1,"262":1,"376":1,"397":1,"1922":1,"1925":1}}],["potentially",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"130":1,"337":1,"587":1,"628":1,"1368":1,"1373":1,"1536":1,"1907":1,"1925":1,"2156":1,"2264":1,"2450":1,"2741":1}}],["potato65s",{"2":{"211":1}}],["pocketavr",{"0":{"2374":1},"1":{"2375":1},"2":{"2374":3}}],["pocket",{"2":{"226":1,"236":1}}],["pockettype",{"2":{"57":2}}],["poc",{"2":{"176":1}}],["poker",{"2":{"122":1}}],["port>",{"2":{"2386":1}}],["portmento",{"2":{"1831":1,"2410":1}}],["portc",{"2":{"1424":1}}],["portuguese",{"2":{"1392":2,"2742":7}}],["portb",{"2":{"1349":1,"1424":1}}],["porting",{"2":{"1289":1,"2590":1,"2605":1}}],["portions",{"2":{"1723":1}}],["portion",{"2":{"228":1,"2301":1,"2569":1,"2725":1}}],["portamento",{"2":{"1831":1,"2410":1}}],["portability",{"2":{"699":1,"1211":1,"1232":1}}],["portal",{"2":{"122":2}}],["port",{"2":{"114":1,"134":2,"402":1,"403":1,"509":3,"625":1,"1332":2,"1831":1,"2184":3,"2188":2,"2272":1,"2368":1,"2370":1,"2372":1,"2374":1,"2376":1,"2378":1,"2383":1,"2386":2,"2410":1,"2552":3,"2555":1,"2567":1}}],["ports",{"0":{"1758":1},"2":{"114":1,"191":2,"1501":1,"2386":1,"2567":1,"2587":1}}],["powering",{"2":{"1508":1}}],["powerful",{"2":{"1371":1,"2206":1,"2362":1,"2456":1,"2553":1}}],["powers",{"2":{"1121":1,"2592":1,"2689":1}}],["powered",{"2":{"334":1,"537":1,"1611":1,"2579":1}}],["poweron",{"2":{"249":1}}],["poweroff",{"2":{"211":1}}],["power",{"0":{"479":1,"590":1,"1310":1,"1335":1},"2":{"70":1,"112":1,"134":3,"211":1,"222":1,"231":1,"262":1,"266":1,"502":2,"589":2,"590":1,"591":2,"606":1,"638":1,"671":1,"674":2,"689":1,"1218":1,"1262":1,"1310":3,"1329":1,"1335":1,"1368":1,"1372":1,"1436":5,"1508":1,"1608":1,"1632":1,"2099":1,"2191":1,"2213":2,"2221":1,"2301":1,"2338":4,"2394":4,"2431":2,"2432":2,"2456":1,"2568":1,"2605":1,"2616":7,"2715":2,"2738":1}}],["pose",{"2":{"1262":1}}],["possibility",{"2":{"1913":1,"2183":1,"2318":1}}],["possibilities",{"2":{"1693":1,"1700":1,"1763":1,"1984":1,"2319":1}}],["possibly",{"2":{"28":1,"50":1,"1263":2}}],["possible",{"2":{"11":1,"98":1,"99":1,"151":1,"224":1,"282":3,"315":1,"341":1,"355":1,"370":1,"466":1,"483":1,"496":2,"529":1,"551":1,"584":1,"587":1,"588":1,"678":1,"684":1,"685":1,"689":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1128":1,"1146":1,"1183":1,"1260":1,"1267":1,"1275":1,"1315":1,"1374":1,"1378":1,"1383":2,"1390":1,"1453":1,"1528":2,"1545":1,"1547":1,"1548":1,"1555":1,"1563":1,"1566":1,"1591":1,"1593":1,"1606":1,"1760":1,"1829":2,"1841":1,"1842":1,"1844":1,"1870":1,"1891":1,"1893":1,"1901":1,"1914":1,"1921":1,"1943":1,"1952":1,"1988":1,"1998":1,"2080":1,"2152":1,"2158":1,"2166":2,"2190":1,"2199":1,"2200":1,"2206":1,"2207":1,"2208":1,"2219":1,"2220":1,"2221":3,"2267":1,"2299":1,"2301":2,"2307":1,"2312":1,"2313":1,"2341":2,"2345":1,"2366":1,"2388":1,"2450":1,"2456":1,"2497":1,"2507":1,"2536":1,"2545":1,"2552":1,"2563":1,"2564":1,"2588":1,"2605":6,"2635":3,"2651":1,"2725":1,"2757":1,"2758":1,"2760":1,"2790":1,"2795":1,"2796":1}}],["possess",{"2":{"702":1,"1254":1,"1257":1,"2389":1}}],["possesses",{"2":{"633":1}}],["positive",{"2":{"465":2,"1860":1,"2181":1}}],["positives",{"2":{"199":1,"1453":1}}],["positioning",{"0":{"1571":1},"2":{"2616":1}}],["positional",{"2":{"393":1,"394":1}}],["positions",{"2":{"176":1,"211":1,"222":1,"1562":1,"1632":1,"1763":2,"1937":2,"1984":2,"2341":1,"2605":2,"2653":1,"2725":1,"2746":1}}],["position",{"0":{"1289":1,"1583":1},"1":{"1584":1},"2":{"62":1,"211":1,"1289":1,"1312":1,"1489":1,"1571":2,"1572":1,"1583":1,"1584":2,"1595":1,"1600":1,"1637":1,"1641":1,"1658":1,"1722":2,"1763":9,"1853":1,"1860":9,"1937":1,"1943":3,"1984":9,"1988":1,"2177":1,"2181":9,"2183":1,"2312":1,"2598":2,"2718":1,"2725":5,"2727":3,"2734":3,"2736":1,"2784":1}}],["pos",{"2":{"176":1,"1595":1,"2086":1,"2088":1}}],["postage",{"2":{"2308":2}}],["postprocess",{"2":{"176":1}}],["post",{"0":{"306":1,"348":1,"581":1,"582":1,"583":1,"2564":1},"1":{"349":1,"350":1,"582":1,"583":1},"2":{"74":1,"133":2,"134":3,"176":3,"266":2,"306":1,"312":1,"314":2,"343":1,"344":1,"574":2,"582":2,"583":2,"588":3,"1282":1,"1369":3,"1397":2,"1631":1,"1632":1,"1963":1,"1998":1,"2080":1,"2082":4,"2168":1,"2190":1,"2338":10,"2339":8,"2516":2,"2564":2,"2605":1,"2607":1,"2615":2,"2616":4,"2620":1,"2788":6}}],["posted",{"2":{"49":1,"2606":1}}],["points",{"2":{"453":1,"1488":1,"1708":1,"2190":1,"2200":1,"2219":3,"2220":3,"2221":5,"2301":3,"2318":1,"2562":1}}],["pointer",{"2":{"709":1,"712":1,"715":1,"718":1,"1226":1,"1229":1,"1244":1,"1246":1,"1270":1,"1485":1,"1836":1,"1853":5,"1860":1,"1925":1,"1926":1,"1930":1,"1932":1,"1933":1,"1937":1,"2177":5,"2181":1,"2200":2}}],["pointers",{"2":{"114":1,"222":1,"522":1,"1695":1}}],["pointed",{"2":{"21":1}}],["point",{"0":{"2237":1,"2244":1},"1":{"2238":1,"2245":1,"2246":1},"2":{"94":2,"215":2,"236":1,"340":1,"347":1,"349":1,"350":1,"581":1,"598":1,"602":1,"626":1,"627":2,"1307":1,"1341":1,"1467":1,"1478":1,"1488":1,"1552":1,"1600":1,"1686":1,"1763":2,"1965":1,"1984":2,"2163":1,"2200":2,"2207":1,"2209":1,"2219":1,"2221":1,"2222":3,"2238":2,"2244":1,"2246":1,"2247":1,"2261":1,"2301":1,"2315":1,"2321":1,"2346":1,"2423":3,"2447":1,"2482":1,"2513":2,"2516":1,"2552":2,"2563":1,"2592":1,"2596":1,"2615":1,"2628":2,"2727":1,"2734":1,"2743":1,"2769":1,"2782":1}}],["pointless",{"2":{"50":1,"94":1,"211":1,"236":1,"277":1}}],["pointing",{"0":{"118":1,"149":1,"175":1,"190":1,"1847":1,"1933":1,"1962":1,"1963":1,"1981":1},"1":{"1934":1,"1935":1,"1936":1,"1937":1,"1938":1,"1939":1,"1940":1,"1941":1,"1942":1,"1943":1,"1944":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":1,"1951":1,"1952":1,"1953":1,"1954":1,"1955":1},"2":{"6":1,"63":1,"118":12,"134":3,"149":4,"160":4,"175":5,"176":8,"190":4,"191":6,"211":3,"249":1,"266":1,"273":1,"505":1,"1569":1,"1847":1,"1933":2,"1934":1,"1935":3,"1936":1,"1943":2,"1945":2,"1946":1,"1947":2,"1949":3,"1950":7,"1951":5,"1952":22,"1953":16,"1954":11,"1955":11,"1956":9,"1958":3,"1959":2,"1960":1,"1961":1,"1962":5,"1963":6,"1964":2,"1965":3,"1967":2,"1969":1,"1980":2,"1981":10,"2167":5,"2323":1,"2728":1,"2764":1}}],["pryce",{"2":{"2789":1}}],["prune",{"2":{"359":1,"360":2}}],["pr12345",{"2":{"341":1}}],["practical",{"2":{"2350":1,"2453":1,"2758":1,"2759":1}}],["practically",{"2":{"337":1,"2214":1,"2387":1}}],["practice",{"2":{"1337":1,"1449":1,"1473":1,"2347":1,"2616":1}}],["practices",{"0":{"615":1,"2510":1},"1":{"2511":1},"2":{"352":1,"367":1,"455":1,"615":1,"2603":1,"2607":1}}],["pragma",{"2":{"134":1,"199":1,"211":1,"453":1,"1422":1,"1452":1,"1767":1,"1990":1,"2299":2,"2603":1,"2653":2}}],["pr20584",{"2":{"211":1}}],["pristine",{"2":{"2605":2}}],["private",{"2":{"2605":1}}],["privileged",{"2":{"2300":1}}],["privileges",{"2":{"1276":1,"1291":1}}],["price",{"2":{"2553":1}}],["prir",{"2":{"2394":1,"2431":1}}],["principle",{"2":{"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1185":1,"1840":1,"2591":1}}],["println",{"2":{"2530":12}}],["printed",{"2":{"1138":1,"1927":1,"1964":1,"2301":1,"2319":1,"2391":1,"2506":1,"2572":1,"2740":1}}],["printedpad",{"2":{"277":1}}],["printer",{"2":{"191":1}}],["prints",{"2":{"145":1,"1292":1,"1378":2,"2613":1}}],["print",{"2":{"75":2,"114":1,"119":1,"160":1,"199":1,"249":1,"374":6,"378":1,"434":1,"470":1,"503":1,"566":2,"1287":9,"1289":1,"1292":3,"1400":1,"1568":5,"1624":1,"1643":1,"1644":1,"1645":1,"1646":1,"1647":1,"1648":1,"1868":4,"1927":7,"2301":13,"2394":2,"2414":1,"2431":2,"2767":1,"2796":1}}],["printing",{"0":{"432":1,"434":1},"1":{"433":1,"434":1,"435":1},"2":{"49":1,"211":1,"432":1,"503":1,"1535":1,"1666":1}}],["printf",{"0":{"24":1},"2":{"145":1,"176":4,"334":1,"432":1,"467":1,"470":1,"1276":1,"1485":1,"2744":1}}],["prioritized",{"2":{"341":1}}],["priority",{"2":{"236":1,"496":2,"703":4,"2442":1}}],["prior",{"2":{"251":1,"552":1,"2394":2,"2431":2}}],["primitives",{"2":{"2612":1}}],["primarily",{"2":{"575":1,"1128":1,"1305":2,"2384":1}}],["primary",{"2":{"191":1,"685":1,"1425":1,"1569":1,"1849":1,"2167":1,"2174":1,"2289":1,"2736":2}}],["primekb",{"2":{"211":1}}],["primus75",{"2":{"211":1}}],["prnt",{"2":{"119":1,"2414":1,"2767":3}}],["preamble",{"0":{"2322":1}}],["prerequisite",{"2":{"2290":1}}],["prerequisites",{"0":{"564":1,"2468":1,"2496":1,"2498":1,"2499":1,"2501":1,"2503":1,"2532":1,"2545":1},"1":{"2533":1,"2534":1},"2":{"402":1,"403":1}}],["preloaded",{"2":{"1616":1,"2278":1,"2288":1}}],["pregenerated",{"2":{"688":1}}],["precompiled",{"2":{"2385":1}}],["precomputed",{"2":{"1438":1}}],["precalculated",{"2":{"1858":2,"1859":3,"2180":1}}],["precedence",{"0":{"2442":1},"2":{"509":1,"2080":2,"2161":1,"2302":1,"2440":2,"2683":1,"2774":1}}],["precision",{"2":{"222":2,"630":1,"1611":1,"1672":12}}],["precisely",{"2":{"1696":1}}],["precise",{"2":{"134":1,"1842":1,"1845":1,"1846":1}}],["pretty=oneline",{"2":{"529":1,"530":1}}],["pretty",{"2":{"378":1,"453":1,"555":1,"560":1,"1287":1,"1299":1,"1301":1,"1323":1,"1420":1,"1895":1,"2309":1,"2350":1,"2493":1,"2494":1}}],["pretend",{"2":{"100":1}}],["predetermined",{"2":{"1533":1}}],["predefined",{"0":{"1463":1,"1464":1,"1465":1,"1466":1},"2":{"231":1,"688":1,"1430":1,"1463":1,"1464":1,"1465":1,"1466":1,"1870":1,"1911":1,"2646":1}}],["predicted",{"2":{"337":1}}],["preonic",{"2":{"211":1,"1280":1}}],["preflashed",{"2":{"2273":1}}],["preformatted",{"2":{"292":1}}],["preferring",{"2":{"2605":1}}],["preferred",{"2":{"116":1,"389":1,"390":1,"391":1,"2291":1,"2316":1,"2342":1,"2507":2,"2587":1,"2592":1,"2604":2,"2605":2,"2623":1,"2653":1}}],["prefers",{"2":{"2595":1}}],["preference",{"2":{"2475":1,"2605":2,"2768":1}}],["preferences",{"2":{"291":1,"435":1,"1605":1,"2221":1,"2547":1}}],["preferable",{"2":{"1363":1,"1611":1,"1975":1}}],["preferably",{"2":{"522":1,"1384":1,"2537":1,"2605":1}}],["prefer",{"2":{"282":3,"341":1,"432":1,"434":1,"440":1,"453":1,"457":2,"468":1,"470":1,"476":1,"479":1,"480":1,"481":1,"1285":1,"1363":1,"2483":1,"2604":1,"2605":2,"2789":1}}],["prefix=",{"2":{"358":1}}],["prefixed",{"2":{"236":1,"435":2,"1372":1,"1394":1,"2435":1,"2446":1,"2449":1,"2740":1}}],["prefix",{"2":{"199":3,"236":1,"249":1,"266":1,"1394":1,"1398":1,"1568":1,"2113":1,"2219":1,"2792":1}}],["prebuilt",{"0":{"164":1},"2":{"164":2,"1286":1,"2280":1}}],["preinstalled",{"2":{"2069":1}}],["preinstall",{"2":{"145":1}}],["preprocess",{"2":{"2200":1,"2788":1}}],["preprocessor",{"2":{"211":1,"453":3,"496":1,"1396":1,"2300":2,"2610":1}}],["prepend",{"2":{"1767":1,"1990":1}}],["prep",{"2":{"114":1,"160":1,"236":1}}],["preparing",{"2":{"396":1,"1418":1}}],["prepare",{"0":{"2497":1},"1":{"2498":1,"2499":1,"2500":1,"2501":1,"2502":1,"2503":1,"2504":1,"2505":1,"2506":1},"2":{"160":1,"222":1,"249":1,"346":1,"2098":1,"2221":1,"2309":1,"2497":1}}],["prepared",{"2":{"134":1,"560":1}}],["prepares",{"2":{"56":1}}],["preparation",{"2":{"86":1,"153":1,"1860":1,"2181":1}}],["presumably",{"2":{"1279":1}}],["presc",{"2":{"705":1}}],["presence",{"2":{"249":1,"1337":1,"1943":1,"2339":1}}],["presents",{"2":{"522":1,"625":1,"1392":1,"2273":1,"2275":1}}],["present",{"2":{"34":1,"201":2,"206":1,"228":1,"229":1,"236":1,"374":2,"387":1,"405":1,"462":1,"508":1,"535":1,"548":1,"633":1,"635":1,"671":1,"679":1,"693":1,"1363":1,"1415":1,"2184":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":2,"2280":2,"2283":1,"2285":1,"2287":1,"2288":2,"2358":1,"2489":1,"2513":1,"2587":2,"2595":1,"2605":3,"2625":1,"2632":1,"2636":1,"2741":1}}],["presets",{"2":{"145":3,"688":1,"1858":3}}],["pressure",{"2":{"1569":1,"1943":1}}],["presses",{"2":{"505":1,"567":2,"689":1,"1381":1,"1398":2,"1475":1,"1552":1,"1561":1,"1603":2,"1672":1,"1714":1,"1839":1,"1847":1,"1954":1,"1989":1,"2163":1,"2167":1,"2207":1,"2353":2,"2456":2,"2682":1,"2684":1,"2692":1,"2740":1}}],["pressed",{"0":{"1402":1},"2":{"46":2,"98":1,"194":2,"199":1,"202":1,"222":1,"505":1,"515":2,"534":6,"571":1,"572":5,"573":1,"588":1,"1289":9,"1336":1,"1339":1,"1340":1,"1362":2,"1369":6,"1372":2,"1381":1,"1396":8,"1397":4,"1402":2,"1408":1,"1409":1,"1410":1,"1412":1,"1421":2,"1422":1,"1440":1,"1448":1,"1449":1,"1467":1,"1488":1,"1534":1,"1536":1,"1540":1,"1541":2,"1547":1,"1548":3,"1554":1,"1555":4,"1558":1,"1561":2,"1602":1,"1604":1,"1606":4,"1617":1,"1620":1,"1672":5,"1691":2,"1693":1,"1694":2,"1697":2,"1699":1,"1701":1,"1703":1,"1708":4,"1709":4,"1711":5,"1712":3,"1713":4,"1714":2,"1718":1,"1720":1,"1721":1,"1829":1,"1830":1,"1846":1,"1868":2,"1885":1,"1901":1,"1907":1,"1909":1,"1910":1,"1911":1,"1918":4,"1919":5,"1921":2,"1954":1,"1958":1,"1959":1,"1960":3,"1965":4,"1966":2,"1969":1,"1972":1,"1975":3,"1979":2,"1988":2,"2082":1,"2116":2,"2150":1,"2183":1,"2185":1,"2190":6,"2191":1,"2192":1,"2199":3,"2200":3,"2206":1,"2207":4,"2210":1,"2318":1,"2350":6,"2353":1,"2403":1,"2405":2,"2406":2,"2420":1,"2452":1,"2453":3,"2454":2,"2456":1,"2529":3,"2563":1,"2643":2,"2680":1,"2688":1,"2719":1,"2728":3,"2767":4,"2768":4,"2775":3,"2784":2,"2787":2}}],["press",{"0":{"1554":1,"1555":1,"2353":1,"2775":1},"2":{"99":1,"114":1,"134":1,"191":2,"194":7,"199":1,"202":2,"206":2,"235":1,"266":1,"331":1,"336":2,"505":9,"541":1,"542":2,"572":1,"573":1,"588":1,"624":2,"628":1,"1307":1,"1323":1,"1324":1,"1336":19,"1337":1,"1362":1,"1369":1,"1396":1,"1398":1,"1405":1,"1435":5,"1436":5,"1448":2,"1451":1,"1467":2,"1468":1,"1472":3,"1473":3,"1475":1,"1479":1,"1543":3,"1554":1,"1555":4,"1557":2,"1558":1,"1567":2,"1591":4,"1681":1,"1689":2,"1693":1,"1713":1,"1714":1,"1723":1,"1836":1,"1843":1,"1876":1,"1880":1,"1907":2,"1913":1,"1915":1,"1937":1,"1940":2,"1948":1,"1988":1,"2163":1,"2183":1,"2187":1,"2190":2,"2194":1,"2200":1,"2207":2,"2209":2,"2220":1,"2268":2,"2271":2,"2273":2,"2274":2,"2276":2,"2281":1,"2282":1,"2317":1,"2344":1,"2350":4,"2353":1,"2355":1,"2412":19,"2422":1,"2447":1,"2489":3,"2494":1,"2551":2,"2605":1,"2650":1,"2693":2,"2702":1,"2711":1,"2713":2,"2767":1,"2768":1,"2770":2,"2771":3,"2772":2,"2773":1,"2774":6,"2775":9,"2776":3}}],["pressing",{"2":{"73":1,"99":1,"202":2,"211":1,"332":1,"540":1,"541":1,"626":1,"1292":1,"1329":1,"1340":1,"1362":1,"1390":1,"1468":1,"1536":1,"1537":3,"1540":1,"1551":1,"1561":1,"1694":2,"1841":2,"1842":1,"1845":1,"1907":1,"1914":1,"1918":1,"1919":1,"1959":1,"1965":1,"2344":1,"2350":1,"2529":3,"2530":2,"2693":1,"2698":1,"2701":1,"2719":2,"2768":1,"2774":1,"2777":2}}],["pre",{"0":{"203":1,"575":1,"576":1,"577":1,"2563":1,"2579":1},"1":{"576":1,"577":1,"2580":1,"2581":1},"2":{"34":2,"176":1,"194":1,"203":4,"211":2,"266":1,"371":1,"380":1,"574":1,"576":2,"577":2,"674":1,"675":1,"1356":1,"2307":1,"2313":1,"2354":1,"2563":2,"2564":1,"2579":1,"2581":1,"2605":4,"2785":1,"2788":3}}],["prev",{"2":{"1439":1,"1445":1,"1597":1,"1610":1,"1703":2,"1765":1,"2072":1,"2221":1,"2222":1,"2394":1,"2396":1,"2408":1,"2415":1,"2423":1,"2432":2}}],["preview",{"2":{"558":1,"2549":2,"2605":2}}],["previewing",{"0":{"558":1}}],["previous",{"2":{"24":2,"56":1,"57":1,"58":1,"98":1,"107":1,"124":1,"126":1,"156":1,"160":1,"191":1,"206":1,"231":1,"344":1,"349":2,"351":1,"500":1,"628":1,"629":1,"1312":1,"1340":1,"1439":1,"1445":1,"1610":2,"1703":1,"1765":1,"1791":1,"1792":1,"1910":2,"1927":1,"2018":1,"2019":1,"2072":1,"2090":2,"2091":2,"2185":1,"2199":1,"2209":1,"2222":1,"2229":1,"2299":2,"2312":1,"2335":1,"2350":1,"2394":2,"2396":1,"2408":1,"2415":1,"2423":1,"2432":2,"2460":1,"2476":1,"2478":1,"2513":1,"2605":1,"2616":1,"2787":1}}],["previously",{"2":{"14":1,"50":1,"166":1,"169":1,"170":1,"182":1,"184":1,"234":1,"276":1,"682":1,"2104":1,"2163":1,"2185":1,"2596":1,"2616":1}}],["prevention",{"2":{"818":1}}],["preventing",{"2":{"190":2,"191":1,"229":1,"1966":1,"1974":2}}],["prevent",{"2":{"186":1,"191":2,"199":1,"211":1,"222":1,"249":1,"347":1,"505":1,"516":1,"533":1,"597":1,"617":1,"679":1,"698":1,"1712":1,"1966":1,"1979":1,"2103":1,"2151":1,"2188":1,"2301":1,"2462":1,"2556":1,"2561":1,"2603":1,"2653":1,"2741":1}}],["prevented",{"2":{"103":1}}],["prevents",{"2":{"6":1,"1405":1,"1713":1,"1956":1,"2767":1}}],["pros",{"2":{"2219":1,"2309":1}}],["professional",{"2":{"2182":1}}],["profiles",{"2":{"1939":1,"2547":1}}],["profile",{"2":{"450":1,"451":1,"452":1}}],["profiler",{"2":{"211":1}}],["proficient",{"2":{"352":1,"2761":1}}],["prone",{"2":{"1375":1,"1474":1,"1553":1,"1557":1}}],["provisions",{"2":{"1169":1}}],["providing",{"2":{"557":1,"614":1,"1430":1,"2341":1,"2345":1,"2545":1,"2562":1,"2589":1,"2617":1}}],["provided",{"2":{"70":1,"125":1,"164":1,"185":1,"363":1,"385":1,"430":2,"511":7,"671":2,"678":1,"682":3,"1264":1,"1286":1,"1302":1,"1396":1,"1478":1,"1611":1,"1668":1,"1671":2,"1708":1,"1939":2,"1950":1,"1951":1,"2168":1,"2188":1,"2190":1,"2332":1,"2387":1,"2517":1,"2589":1,"2605":3,"2606":1}}],["provides",{"2":{"24":1,"45":1,"69":1,"164":1,"174":1,"318":1,"402":1,"495":1,"559":1,"563":1,"565":1,"570":1,"642":1,"692":1,"1123":1,"1126":1,"1129":1,"1168":1,"1249":1,"1668":1,"1721":1,"1752":1,"1763":1,"1845":1,"1926":1,"1952":3,"1984":1,"2085":1,"2182":1,"2497":1,"2531":1,"2542":1,"2545":1,"2549":1,"2676":1,"2740":1}}],["provide",{"2":{"4":1,"145":1,"199":1,"213":1,"234":1,"436":1,"456":1,"516":1,"566":1,"696":1,"1351":1,"1353":1,"1354":1,"1467":1,"1476":1,"1477":1,"1611":1,"1671":1,"1752":1,"1754":1,"1759":1,"1760":1,"1829":1,"1952":1,"2156":1,"2301":1,"2344":1,"2390":1,"2579":1,"2581":1,"2585":1,"2610":1}}],["proves",{"2":{"481":1}}],["probe",{"2":{"2392":1,"2552":5}}],["probability",{"2":{"2076":1}}],["probably",{"2":{"233":1,"331":1,"472":1,"626":1,"1320":1,"1324":1,"1716":1,"1863":1,"2300":1,"2313":2,"2318":1,"2386":1,"2536":1,"2540":1,"2795":1}}],["problem",{"0":{"1335":1,"1715":1},"2":{"1279":1,"1311":1,"1318":1,"1330":1,"1377":1,"1420":1,"1447":1,"1453":1,"1536":1,"2344":1,"2350":1,"2791":1}}],["problems",{"0":{"549":1},"2":{"211":1,"254":1,"337":1,"376":4,"381":1,"397":1,"541":1,"554":1,"1332":1,"1374":1,"1435":1,"2300":1,"2332":1,"2463":1,"2493":1,"2505":1,"2555":1,"2794":1}}],["problematic",{"2":{"123":1,"254":1}}],["proceed",{"2":{"626":1,"2472":1}}],["procedures",{"2":{"2457":1}}],["procedure",{"0":{"357":1},"1":{"358":1,"359":1,"360":1,"361":1},"2":{"176":1,"191":1,"2160":1,"2168":1,"2605":1}}],["processes",{"2":{"342":1}}],["processed",{"2":{"114":1,"1375":1,"1396":2,"1414":1,"1416":1,"1441":2,"1555":1,"1870":1,"2190":2,"2210":1,"2445":1,"2644":1,"2682":1}}],["processors",{"2":{"552":1,"2188":1,"2349":2,"2782":1}}],["processor=stm32f411",{"2":{"374":3}}],["processor",{"2":{"70":1,"111":2,"191":1,"199":1,"380":1,"609":1,"1842":1,"2456":2,"2567":1,"2689":1,"2712":1}}],["processing",{"0":{"98":1,"1723":1},"2":{"4":1,"98":1,"112":1,"125":1,"185":1,"191":1,"199":1,"203":3,"249":1,"505":1,"571":1,"572":1,"587":1,"588":1,"698":1,"1258":1,"1259":1,"1260":1,"1369":1,"1422":1,"1483":2,"1485":1,"1552":1,"1553":1,"1561":1,"1597":1,"1653":1,"1723":1,"1933":1,"1966":1,"1979":1,"1981":1,"2190":2,"2338":1,"2442":1,"2452":1,"2453":3,"2623":2,"2726":1,"2788":1}}],["process",{"0":{"16":1,"23":1,"203":1,"572":1,"573":1,"1396":1,"1482":1,"1483":1,"2608":1,"2788":1},"1":{"1397":1,"1398":1,"1399":1,"1400":1,"1483":1},"2":{"0":1,"1":1,"3":1,"7":1,"9":1,"15":1,"19":1,"39":1,"46":3,"52":1,"76":1,"94":1,"114":1,"141":1,"176":2,"201":1,"203":6,"211":3,"222":3,"235":1,"236":1,"266":1,"277":1,"337":1,"342":1,"351":1,"353":1,"354":1,"355":1,"513":1,"534":5,"550":1,"560":1,"571":3,"572":2,"573":2,"574":3,"581":1,"584":1,"588":1,"592":1,"594":1,"607":2,"627":1,"628":1,"698":2,"1289":1,"1339":3,"1340":2,"1347":2,"1369":4,"1372":1,"1381":2,"1396":4,"1397":5,"1412":1,"1421":2,"1422":5,"1435":6,"1436":12,"1468":1,"1477":1,"1482":4,"1483":2,"1548":3,"1560":3,"1561":6,"1565":1,"1591":2,"1593":2,"1597":1,"1598":1,"1611":1,"1672":1,"1684":1,"1768":2,"1829":1,"1830":1,"1835":2,"1855":1,"1864":4,"1865":1,"1868":1,"1906":1,"1913":1,"1918":2,"1919":1,"1921":5,"1959":1,"1960":1,"1975":1,"1979":1,"1981":2,"1986":1,"1992":2,"2072":1,"2082":3,"2116":1,"2168":1,"2190":3,"2200":5,"2206":2,"2215":1,"2281":1,"2312":2,"2313":1,"2325":1,"2340":1,"2345":1,"2350":1,"2442":1,"2452":2,"2453":1,"2454":1,"2457":1,"2475":1,"2479":2,"2481":1,"2489":1,"2498":2,"2501":1,"2502":1,"2511":1,"2592":1,"2599":1,"2605":1,"2606":1,"2643":1,"2670":1,"2727":2,"2734":2,"2736":1,"2767":1,"2784":1,"2787":1,"2788":45}}],["props",{"2":{"2394":1,"2431":1}}],["proposed",{"2":{"282":3,"341":1,"352":1}}],["prophet",{"2":{"211":1}}],["property",{"2":{"475":1,"1329":1,"2616":2}}],["properties",{"0":{"475":1},"2":{"331":2,"475":1,"628":1,"1638":1,"1956":1,"2541":1,"2725":2}}],["properly",{"2":{"191":1,"222":1,"249":1,"502":1,"505":1,"1312":1,"1558":1,"1722":1,"1860":1,"1986":1,"1992":1,"2171":1,"2188":1,"2354":1,"2374":1,"2382":1,"2529":1,"2540":1,"2652":1}}],["proper",{"2":{"174":1,"399":1,"1275":1,"1276":1,"2476":1,"2554":1,"2556":1,"2589":1}}],["propagated",{"2":{"441":1}}],["propagate",{"2":{"160":1}}],["prologues",{"2":{"145":1}}],["prompts",{"2":{"2507":4}}],["prompt",{"2":{"376":1,"385":2,"628":1,"2386":1,"2394":1,"2477":1,"2499":1,"2545":1}}],["prompted",{"2":{"172":1,"2537":1}}],["promote",{"2":{"199":1}}],["prominent",{"2":{"2656":1}}],["prominently",{"2":{"131":1}}],["promicro",{"0":{"2325":1,"2694":1},"2":{"138":1,"222":1,"271":2,"277":1,"380":2,"1273":1,"1348":13,"1351":2,"2325":1,"2712":2}}],["promethium",{"2":{"114":1}}],["programatically",{"2":{"2187":1}}],["programs",{"0":{"2655":1},"2":{"1715":2,"1910":1,"2459":1,"2582":1,"2777":2,"2782":1}}],["program",{"0":{"1275":1},"1":{"1276":1,"1277":1},"2":{"336":1,"430":1,"432":2,"481":1,"560":1,"606":1,"679":1,"1134":1,"1258":1,"1271":1,"1417":3,"1536":1,"1548":1,"1922":1,"2142":1,"2182":1,"2301":1,"2316":1,"2456":2,"2468":3,"2496":3,"2609":3,"2666":1,"2782":3,"2793":1}}],["programmed",{"2":{"2494":1}}],["programmer>",{"2":{"2386":1}}],["programmers",{"2":{"470":1,"2374":1,"2386":1,"2392":1}}],["programmer",{"0":{"327":1},"2":{"327":1,"1275":3,"1473":3,"1834":1,"2268":4,"2271":1,"2274":2,"2300":1,"2368":1,"2370":1,"2372":1,"2374":1,"2376":1,"2378":1,"2386":2,"2457":1,"2492":3,"2742":3}}],["programmatically",{"2":{"1671":1,"1767":1,"1990":1,"2216":1}}],["programmatic",{"2":{"1616":1}}],["programmable",{"0":{"1870":1,"1874":1,"1875":1,"1877":1,"1879":1,"1881":1,"1883":1,"1886":1,"1887":1,"1889":1,"2419":1},"1":{"1871":1,"1872":1,"1873":1,"1874":1,"1875":1,"1876":2,"1877":1,"1878":2,"1879":1,"1880":2,"1881":1,"1882":2,"1883":1,"1884":2,"1885":2,"1886":1,"1887":1,"1888":2,"1889":1,"1890":2},"2":{"134":4,"160":1,"188":1,"190":1,"191":3,"231":3,"1258":1,"1870":2,"1872":64,"1874":1,"1886":1,"1887":1,"1888":1,"1889":1,"1890":1,"2344":1,"2419":65,"2582":1,"2788":1}}],["programming",{"0":{"571":1,"2345":1},"1":{"572":1,"573":1},"2":{"552":1,"1922":1,"1925":1,"2362":1,"2387":1,"2456":1,"2466":1,"2492":1,"2542":1,"2668":1,"2677":2,"2781":1}}],["progressively",{"2":{"213":1}}],["progress",{"2":{"113":1,"315":1,"683":1,"2109":1}}],["progressed",{"2":{"109":1}}],["progmem",{"2":{"94":1,"114":1,"160":1,"247":1,"530":1,"659":1,"734":2,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":1,"1185":2,"1396":2,"1477":1,"1485":1,"1490":1,"1545":2,"1546":2,"1547":2,"1548":6,"1560":1,"1561":1,"1586":1,"1597":1,"1632":1,"1647":1,"1648":1,"1651":1,"1652":1,"1830":1,"1852":1,"1860":3,"2078":7,"2080":5,"2082":3,"2123":1,"2125":1,"2176":1,"2181":3,"2193":1,"2195":1,"2202":1,"2219":1,"2220":1,"2440":1,"2445":2,"2462":1,"2786":1}}],["pro",{"0":{"271":1,"1352":1,"1355":2,"2368":1,"2580":1},"1":{"1353":1,"1354":1,"1355":1,"1356":1,"1357":1,"1358":1,"2369":1},"2":{"77":1,"86":2,"102":3,"114":12,"134":2,"144":4,"145":2,"154":2,"160":2,"163":1,"172":1,"176":4,"189":1,"191":2,"197":2,"199":1,"222":3,"236":2,"271":2,"487":1,"509":1,"625":1,"629":2,"1277":1,"1348":1,"1350":1,"1352":8,"1357":1,"1360":1,"1361":1,"2152":1,"2154":1,"2157":1,"2158":1,"2164":2,"2170":1,"2271":1,"2272":1,"2305":1,"2307":1,"2308":2,"2368":2,"2369":3,"2370":1,"2383":3,"2387":1,"2466":1,"2566":1,"2568":1,"2569":6,"2578":2,"2580":2,"2581":1,"2584":1,"2694":1,"2742":4,"2751":3}}],["producing",{"2":{"93":1,"2069":1}}],["production",{"0":{"2346":1,"2388":1},"2":{"2269":3,"2276":3,"2346":1,"2388":2}}],["products",{"2":{"153":1,"674":3,"1279":1,"2710":1}}],["product",{"2":{"70":1,"134":2,"169":2,"184":2,"191":2,"502":2,"629":1,"674":4,"675":1,"1279":4,"1291":1,"1925":2,"1927":5,"2269":2,"2276":2,"2338":1,"2367":1,"2605":1,"2711":2,"2738":1}}],["produces",{"2":{"1430":1,"1540":2,"1722":1,"1913":2,"1921":2}}],["produced",{"2":{"371":1,"502":1,"1913":2,"2281":1,"2282":1,"2661":1,"2662":1}}],["produce",{"2":{"49":1,"170":1,"209":1,"266":1,"690":1,"1468":3,"1477":1,"1545":1,"1832":1,"2313":1,"2358":1,"2466":1}}],["protozoa",{"2":{"211":2}}],["prototypist",{"2":{"154":2,"160":1,"211":3,"222":2}}],["prototypes",{"2":{"133":1,"134":1,"2346":1,"2605":1}}],["prototype",{"2":{"114":1,"191":1,"2346":1,"2603":1}}],["proto",{"2":{"114":1,"134":1,"253":1}}],["protocol=serial",{"2":{"266":1,"277":1}}],["protocols",{"0":{"2187":1},"2":{"133":1,"134":1,"1528":1,"2184":2,"2187":3,"2188":1}}],["protocol",{"0":{"2184":1},"1":{"2185":1,"2186":1,"2187":1},"2":{"50":1,"75":1,"111":2,"112":1,"113":1,"114":1,"133":3,"134":3,"145":1,"176":2,"191":1,"199":2,"222":1,"236":2,"249":1,"263":1,"265":1,"266":1,"334":1,"511":1,"516":1,"1249":1,"1252":1,"1528":1,"1612":1,"1899":1,"1935":1,"1947":1,"1949":1,"2069":1,"2167":1,"2184":1,"2185":2,"2186":2,"2187":6,"2188":2,"2190":4,"2271":1,"2281":1,"2353":1,"2665":2,"2736":4,"2737":2,"2782":2,"2783":1}}],["proton",{"0":{"1140":1,"1353":1,"1429":1,"2566":1},"1":{"2567":1,"2568":1,"2569":1},"2":{"49":3,"50":2,"77":1,"134":2,"145":1,"172":2,"189":2,"489":1,"509":1,"692":1,"703":1,"1129":2,"1214":1,"1235":1,"1271":1,"1348":1,"1350":2,"1352":4,"1353":2,"1356":1,"1429":1,"1506":1,"2164":1,"2279":1,"2305":1,"2307":1,"2308":1,"2552":2,"2566":1,"2568":2,"2569":6,"2751":1}}],["protected",{"2":{"2666":1}}],["protect",{"2":{"26":1,"674":1,"2350":1}}],["project¹",{"2":{"2540":1}}],["projectcain",{"2":{"249":1}}],["projects",{"0":{"1271":1,"2346":1},"1":{"1272":1},"2":{"204":1,"502":2,"606":1,"2267":1,"2295":1,"2336":1,"2338":1,"2536":1,"2537":1}}],["project",{"0":{"42":1,"552":1,"2297":1,"2333":1,"2540":1},"2":{"211":2,"213":1,"291":1,"331":1,"352":1,"460":1,"501":1,"550":1,"554":1,"562":1,"1271":1,"1302":1,"1869":1,"2182":1,"2289":2,"2294":1,"2295":2,"2297":2,"2318":1,"2346":3,"2348":1,"2537":1,"2540":5,"2541":6,"2592":2,"2676":1}}],["pr",{"0":{"354":1,"361":1,"2602":1},"1":{"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1},"2":{"1":1,"14":1,"32":1,"36":1,"49":1,"130":1,"134":1,"160":2,"191":1,"198":1,"199":1,"229":1,"236":1,"255":1,"256":1,"265":1,"273":1,"275":1,"282":12,"341":11,"344":1,"345":1,"346":1,"347":1,"354":1,"360":1,"446":1,"447":2,"556":2,"559":1,"560":2,"1363":1,"1366":3,"1383":1,"1548":1,"2187":1,"2191":3,"2603":8,"2605":8,"2606":6,"2608":2,"2713":2}}],["prs",{"0":{"38":1,"2603":1,"2604":1,"2605":1,"2606":1},"2":{"1":1,"21":1,"134":1,"188":1,"199":1,"213":1,"224":1,"233":1,"251":2,"265":1,"268":2,"275":1,"337":1,"340":4,"341":4,"343":3,"344":1,"345":1,"350":9,"399":1,"556":1,"560":1,"2602":1,"2603":1,"2604":1,"2605":4,"2606":3,"2607":1,"2608":3}}],["tft",{"2":{"2323":1,"2615":1}}],["tbd",{"2":{"2276":1}}],["tbk",{"2":{"277":1}}],["tsr",{"2":{"2191":1}}],["tsangan",{"2":{"211":2}}],["tl",{"2":{"2191":3,"2211":2}}],["td",{"2":{"1546":2,"2199":1,"2202":4,"2203":1,"2205":1,"2206":1,"2207":41,"2208":26,"2209":25}}],["tps65",{"2":{"1938":1,"1939":2}}],["tps43",{"2":{"1938":1,"1939":2}}],["tpyo",{"2":{"1484":1}}],["tpm754",{"2":{"1326":2}}],["t6181",{"2":{"1327":1}}],["t1l",{"2":{"1261":1}}],["t1h",{"2":{"1251":1,"1252":1,"1261":1}}],["tmpu",{"2":{"2144":1}}],["tmpd",{"2":{"2144":1}}],["tm023023",{"2":{"1942":1}}],["tm035035",{"2":{"1942":1}}],["tm040040",{"2":{"1942":1}}],["tm1812",{"2":{"1253":1}}],["tmk",{"0":{"560":1,"1302":1},"2":{"1":1,"38":1,"49":1,"75":2,"113":4,"114":5,"133":3,"134":3,"176":1,"199":1,"222":2,"515":2,"1279":2,"1294":1,"1302":6,"1311":2,"1312":4,"1318":2,"1320":2,"1324":1,"1330":1,"1335":2,"1528":1,"2295":3,"2440":1,"2445":1,"2489":1,"2662":1,"2782":1}}],["t0l",{"2":{"293":1,"1261":1}}],["t0h",{"2":{"293":1,"1251":1,"1252":1,"1261":1}}],["tty",{"2":{"2386":1}}],["ttyacmx",{"2":{"2386":1}}],["ttf",{"2":{"409":1,"2612":1,"2614":3,"2616":1}}],["tt",{"2":{"194":1,"505":1,"1372":2,"1620":1,"1966":1,"2194":2,"2406":1,"2422":1,"2776":1}}],["txbolt",{"2":{"2185":1,"2737":1}}],["txen1",{"2":{"1896":1}}],["txled",{"2":{"1353":1,"1357":1}}],["tx",{"0":{"2185":1},"2":{"277":1,"1126":4,"1127":3,"1129":8,"1130":6,"1134":1,"1140":11,"1141":9,"1142":8,"1234":2,"1235":4,"1351":1,"2184":1,"2185":3,"2186":1,"2188":1,"2191":4,"2569":2,"2580":3,"2582":2}}],["txt",{"2":{"191":1,"364":1,"405":2,"429":1,"1477":1,"1479":1,"2513":4}}],["txuu",{"2":{"154":2}}],["tube",{"2":{"2309":1}}],["tuning",{"2":{"1918":1,"2776":1}}],["tuned",{"2":{"1943":1,"2599":1}}],["tunes",{"2":{"1423":1}}],["tune",{"2":{"176":2,"1696":1,"1714":1,"1919":1,"2646":1,"2779":1}}],["tuple",{"2":{"467":2,"469":1}}],["tuples",{"0":{"467":1},"2":{"467":1}}],["tutorial",{"0":{"2456":1},"1":{"2457":1,"2458":1},"2":{"327":1,"701":1,"2466":1,"2467":2,"2519":1,"2521":1,"2533":1,"2762":2}}],["tuv",{"2":{"266":1}}],["tuvw",{"2":{"249":1}}],["turquoise",{"2":{"1991":2,"2096":2}}],["turing",{"2":{"1974":2}}],["turkish",{"2":{"134":1,"1392":2,"2742":6}}],["turnaround",{"2":{"265":1,"2481":1}}],["turn",{"0":{"2205":1},"2":{"92":1,"124":1,"137":1,"222":1,"347":1,"588":1,"610":1,"615":1,"687":1,"1124":1,"1136":1,"1254":1,"1282":1,"1435":1,"1493":2,"1495":1,"1499":1,"1511":1,"1512":1,"1523":1,"1524":1,"1610":2,"1638":1,"1640":1,"1707":2,"1760":2,"1765":2,"1768":1,"1775":1,"1776":1,"1777":1,"1778":1,"1831":2,"1853":1,"1860":2,"1979":1,"1987":3,"1992":1,"2002":1,"2003":1,"2004":1,"2005":1,"2082":2,"2091":4,"2101":1,"2140":1,"2177":1,"2181":2,"2183":1,"2194":5,"2205":2,"2301":1,"2344":1,"2399":2,"2406":3,"2408":2,"2410":2,"2422":5,"2447":1,"2582":1,"2605":1,"2644":1,"2715":1,"2716":1,"2724":1,"2727":1,"2733":1,"2734":1,"2783":1}}],["turned",{"2":{"77":1,"504":3,"560":2,"1441":1,"1496":1,"1572":1,"1600":1,"1756":1,"2082":1,"2220":1,"2599":1}}],["turns",{"2":{"31":1,"34":1,"137":1,"502":1,"1369":1,"1378":10,"1435":2,"1440":2,"1443":2,"1445":6,"1471":2,"1480":2,"1486":2,"1536":1,"1537":4,"1538":2,"1540":1,"1541":1,"1542":2,"1544":1,"1549":2,"1755":2,"1768":1,"1854":1,"1855":1,"1860":3,"1992":1,"2179":1,"2181":4,"2196":2,"2199":1,"2300":2,"2396":6,"2397":2,"2398":2,"2406":2,"2418":2,"2529":2,"2614":1,"2642":2,"2719":2}}],["turning",{"2":{"13":1,"25":1,"134":1,"195":1,"592":1,"1435":1,"1853":1,"1978":1,"2177":1,"2301":1,"2670":1,"2783":1}}],["tzarc",{"2":{"174":1,"176":1}}],["typ65+",{"2":{"211":1}}],["typists",{"2":{"1363":1,"2774":1,"2775":1}}],["typically",{"2":{"613":1,"1254":1,"1302":1,"1305":1,"1375":1,"1448":1,"1671":1,"1857":1,"2207":1,"2301":1,"2340":2,"2445":1,"2664":1,"2666":1,"2704":1,"2784":1,"2785":1}}],["typical",{"2":{"194":1,"430":1,"1372":1,"1508":1,"1536":1,"2445":1}}],["typing",{"0":{"1913":1,"1988":1},"2":{"137":1,"195":1,"211":1,"246":1,"586":1,"1375":1,"1443":1,"1472":1,"1479":2,"1485":1,"1540":2,"1721":1,"1722":2,"1907":1,"1913":2,"1921":2,"1965":1,"1987":3,"1988":6,"2100":1,"2122":1,"2126":1,"2182":1,"2192":1,"2207":5,"2221":1,"2264":5,"2318":1,"2551":2,"2690":1,"2750":1,"2779":1,"2793":1}}],["typographic",{"2":{"199":1}}],["typos",{"2":{"134":2,"249":1,"1474":1,"1475":3,"1477":1,"1478":2,"1482":1}}],["typo",{"2":{"114":4,"134":4,"160":3,"176":1,"191":1,"249":1,"1475":3,"1477":3,"1478":4,"1479":2,"1482":2,"1483":4,"1484":4,"1485":4,"1488":4,"1489":1}}],["typeid",{"2":{"2624":2,"2626":1,"2627":1,"2628":1,"2629":2,"2630":2,"2631":2,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1}}],["typed",{"2":{"1393":2,"1473":1,"1474":1,"1568":1,"1711":1,"1712":1,"1713":9,"1912":2,"1913":1,"2207":1,"2220":1,"2767":1}}],["typedef",{"2":{"236":1,"1859":1,"1860":1,"2168":1,"2181":1,"2207":1,"2208":1,"2209":2,"2627":1}}],["typewriter",{"2":{"236":1}}],["typenames",{"2":{"176":1}}],["types",{"0":{"612":1,"1363":1},"2":{"114":2,"119":1,"160":1,"191":1,"196":2,"236":1,"496":2,"556":1,"612":1,"1608":1,"1718":2,"1858":1,"1907":1,"1913":1,"2116":1,"2117":2,"2267":2,"2414":1,"2614":2,"2700":1,"2767":1}}],["type",{"0":{"480":1,"1851":1},"2":{"49":2,"111":1,"112":1,"114":2,"132":1,"137":2,"145":1,"154":2,"160":1,"199":1,"211":1,"222":1,"236":4,"249":3,"273":1,"277":1,"314":1,"324":1,"373":1,"445":1,"480":1,"496":1,"515":1,"541":1,"556":1,"580":1,"610":1,"627":2,"628":1,"641":1,"1148":1,"1327":2,"1362":1,"1363":1,"1366":2,"1367":1,"1390":1,"1392":2,"1394":1,"1396":2,"1422":1,"1440":1,"1443":1,"1472":2,"1479":2,"1488":1,"1489":2,"1528":1,"1536":2,"1545":1,"1558":1,"1572":1,"1689":1,"1693":2,"1695":1,"1722":2,"1763":3,"1858":4,"1859":1,"1935":1,"1947":1,"1949":1,"1950":1,"1951":1,"1974":1,"1975":1,"1980":1,"1984":3,"2100":1,"2119":1,"2120":1,"2121":1,"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2132":1,"2133":1,"2134":1,"2135":1,"2136":1,"2137":1,"2164":1,"2180":3,"2192":2,"2193":1,"2207":4,"2208":2,"2209":1,"2217":1,"2220":1,"2300":1,"2301":1,"2333":1,"2339":6,"2352":1,"2386":1,"2489":1,"2529":3,"2552":1,"2553":1,"2612":1,"2615":2,"2624":1,"2626":2,"2627":2,"2628":2,"2631":1,"2632":4,"2633":2,"2634":2,"2635":2,"2636":2,"2637":2,"2638":2,"2700":1,"2713":1,"2727":1,"2734":1,"2779":1,"2793":1}}],["tweezers",{"2":{"2305":1,"2312":1}}],["tweak",{"2":{"119":1,"1988":1,"2076":1,"2455":1}}],["tweaks",{"0":{"2749":1},"2":{"94":1,"160":1,"277":1,"2554":1}}],["tw40",{"2":{"241":2}}],["tw",{"2":{"93":1,"2072":1,"2415":1}}],["twisting",{"2":{"2311":1}}],["twinkling",{"2":{"2076":1}}],["twinkle",{"2":{"74":1,"93":1,"114":1,"231":1,"2072":2,"2074":2,"2075":2,"2076":3,"2078":2,"2415":2,"2750":1}}],["twi",{"2":{"249":1}}],["twig50",{"2":{"191":1}}],["twice",{"2":{"92":1,"1448":1,"2143":1,"2198":1,"2199":1,"2202":1,"2271":1,"2383":1,"2719":1}}],["two",{"0":{"297":1,"298":1,"1740":1},"1":{"1741":1,"1742":1},"2":{"18":1,"31":1,"34":1,"35":1,"49":1,"114":1,"160":1,"196":2,"203":1,"222":1,"255":1,"277":1,"282":1,"297":1,"298":1,"334":1,"414":1,"432":1,"479":1,"496":1,"556":1,"560":1,"572":1,"589":1,"606":1,"614":2,"625":1,"633":1,"684":2,"691":1,"1121":3,"1129":2,"1218":1,"1310":1,"1337":1,"1340":2,"1356":1,"1363":1,"1372":1,"1383":1,"1396":1,"1414":1,"1424":1,"1428":1,"1432":1,"1436":1,"1453":1,"1467":1,"1488":3,"1489":1,"1552":1,"1557":1,"1560":1,"1586":1,"1591":1,"1597":1,"1600":3,"1627":1,"1670":1,"1671":1,"1672":1,"1718":2,"1724":1,"1825":1,"1829":1,"1850":1,"1854":1,"1859":2,"1892":1,"1895":1,"1921":1,"1926":1,"1938":1,"1940":3,"1981":1,"1987":1,"2077":1,"2080":1,"2099":1,"2101":1,"2117":1,"2133":1,"2152":3,"2154":2,"2157":1,"2158":1,"2178":1,"2185":2,"2190":1,"2191":1,"2200":1,"2207":2,"2311":3,"2344":1,"2441":1,"2450":1,"2491":1,"2513":1,"2525":1,"2552":1,"2569":1,"2579":1,"2582":1,"2608":1,"2639":1,"2748":1,"2774":2,"2789":2,"2796":1}}],["tgr",{"2":{"122":2,"134":1}}],["tg",{"2":{"38":1,"1372":2,"1966":3,"1979":2,"2199":1,"2209":3,"2406":1}}],["tkm",{"2":{"114":1,"211":1}}],["tkc",{"2":{"43":4,"211":3}}],["tkc1800",{"0":{"33":1,"34":1},"1":{"34":1},"2":{"33":2,"34":1,"43":2,"2656":1}}],["tkl87",{"2":{"270":1,"277":1}}],["tklfrlnrlmlao",{"2":{"211":1}}],["tkl",{"2":{"18":2,"110":1,"197":6,"211":5,"226":2,"236":1,"253":2,"2191":1,"2484":1,"2592":1,"2605":1}}],["tate",{"2":{"1921":1}}],["talking",{"2":{"560":1,"2152":1}}],["talk",{"2":{"554":1,"560":2,"561":1,"1218":1,"2303":1,"2392":1}}],["tandem",{"2":{"357":1}}],["tag+=",{"2":{"1291":1}}],["tagging",{"2":{"358":1}}],["tagged",{"2":{"340":1}}],["tag",{"2":{"211":1,"228":1,"292":1,"347":2,"349":1,"358":2,"359":1,"559":1,"2552":1,"2553":1}}],["tags",{"0":{"110":1},"2":{"110":5,"358":2,"359":1,"360":2,"2526":1,"2654":1,"2711":2}}],["tabbing",{"2":{"1339":1}}],["tabs",{"0":{"294":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1},"2":{"294":1,"453":1,"455":1,"2316":1,"2604":1}}],["tabsification",{"2":{"191":1}}],["tab",{"0":{"295":1,"298":1,"299":1,"448":1,"1339":1,"1455":1},"1":{"296":1,"297":1,"449":1,"450":1,"451":1,"452":1},"2":{"222":1,"294":1,"313":1,"331":3,"335":1,"448":2,"449":1,"450":1,"451":4,"452":2,"520":1,"521":1,"530":2,"628":1,"1306":3,"1329":1,"1339":4,"1412":14,"1454":1,"1455":1,"1460":2,"1466":1,"1547":1,"1548":3,"1561":4,"1565":2,"1911":9,"2113":2,"2188":2,"2207":2,"2266":1,"2394":2,"2427":2,"2437":1,"2440":1,"2446":1,"2450":1,"2478":1,"2529":1,"2541":2,"2654":1}}],["tables",{"0":{"289":1},"2":{"2114":1,"2574":1,"2699":1,"2741":1}}],["tablet",{"2":{"100":1,"1371":1}}],["table",{"0":{"404":1,"2627":1,"2628":1},"2":{"55":1,"145":1,"191":1,"199":1,"247":1,"404":3,"616":1,"617":2,"621":1,"628":1,"635":1,"688":3,"692":1,"1127":1,"1130":1,"1430":1,"1503":1,"1504":1,"1763":1,"1965":1,"1984":1,"2074":1,"2193":1,"2219":2,"2220":7,"2262":1,"2301":2,"2311":1,"2356":1,"2570":1,"2583":1,"2616":2,"2626":6,"2627":4,"2628":3}}],["taking",{"2":{"284":1,"352":1,"550":1,"1921":1,"2080":1,"2352":1,"2513":1,"2541":1,"2774":1}}],["takashicompany",{"2":{"249":2,"390":2}}],["takashiski",{"2":{"154":4,"160":2}}],["takai",{"2":{"160":1}}],["taken",{"2":{"352":1,"430":1,"1374":1,"1572":1,"2199":1,"2363":1}}],["take",{"0":{"1290":1},"2":{"134":1,"191":2,"194":1,"222":1,"236":1,"331":1,"335":1,"358":1,"415":1,"513":1,"551":1,"560":1,"606":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1226":1,"1229":1,"1244":1,"1246":1,"1310":1,"1398":1,"1710":1,"1713":1,"1714":1,"1860":1,"2080":1,"2101":1,"2160":1,"2209":1,"2302":1,"2312":1,"2345":1,"2456":1,"2501":1,"2585":1,"2608":1,"2617":1,"2744":1,"2757":1,"2786":1,"2792":1,"2796":1}}],["takes",{"2":{"49":1,"415":1,"673":1,"1172":1,"1315":1,"1331":1,"1362":1,"1562":1,"1611":1,"1698":1,"1699":1,"1700":1,"1713":1,"1863":1,"2187":1,"2199":1,"2207":1,"2303":1,"2446":1,"2512":1,"2683":1,"2749":1}}],["taurus",{"2":{"114":1}}],["ta65",{"2":{"57":2}}],["taro",{"2":{"154":2}}],["targeted",{"2":{"2589":1}}],["targetted",{"2":{"2170":1}}],["target2initiator",{"2":{"2168":4}}],["targets",{"0":{"2270":1,"2272":1,"2277":1,"2279":1,"2284":1,"2286":1,"2485":1,"2486":1},"2":{"173":1,"176":1,"199":1,"204":1,"213":1,"236":1,"374":5,"393":2,"394":2,"395":2,"396":1,"552":1,"2164":1,"2170":1,"2300":1,"2485":1,"2486":2,"2487":1,"2552":3,"2606":1}}],["targeting",{"2":{"160":1,"350":3,"1125":1,"1128":1,"2590":1,"2604":1,"2605":1}}],["target",{"0":{"1966":1,"1974":1,"1978":1,"1980":1},"2":{"49":2,"94":1,"114":3,"145":1,"160":1,"198":1,"236":1,"240":1,"266":23,"292":1,"361":4,"371":1,"374":2,"396":1,"455":1,"690":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"1127":1,"1130":1,"1264":1,"1349":2,"1350":1,"1352":2,"1359":2,"1377":1,"1422":1,"1858":4,"1965":6,"1966":12,"1967":1,"1969":1,"1972":1,"1974":8,"1975":1,"1977":4,"1978":6,"1979":1,"1980":3,"1981":1,"2268":1,"2269":2,"2271":1,"2273":1,"2274":1,"2275":1,"2276":2,"2278":1,"2280":1,"2281":1,"2282":1,"2288":1,"2291":4,"2300":5,"2339":1,"2359":1,"2367":2,"2378":1,"2386":1,"2392":1,"2493":2,"2535":1,"2541":2,"2552":3,"2603":1,"2606":1,"2615":3}}],["tartan",{"2":{"37":2}}],["tasks",{"2":{"76":1,"160":1,"363":1,"515":1,"592":1,"1500":1,"1545":1,"2782":1}}],["task",{"0":{"125":1,"588":1,"1981":1,"2623":1},"2":{"31":2,"34":1,"49":1,"64":1,"84":1,"93":1,"113":1,"114":1,"125":4,"134":5,"160":2,"211":1,"266":2,"277":1,"569":1,"581":1,"587":2,"588":2,"597":1,"1353":1,"1354":1,"1501":1,"1768":1,"1851":2,"1852":1,"1853":1,"1854":1,"1860":5,"1861":4,"1943":1,"1950":2,"1952":2,"1954":2,"1955":3,"1956":2,"1959":2,"1960":1,"1962":1,"1963":1,"1980":1,"1981":8,"1992":1,"2168":2,"2175":2,"2177":1,"2178":1,"2181":4,"2200":1,"2457":1,"2511":1,"2613":4,"2616":7,"2623":5,"2727":1,"2734":1,"2783":3}}],["tapdance",{"2":{"2208":11}}],["tape",{"2":{"2188":2,"2309":2,"2319":2}}],["tapped",{"2":{"505":1,"1340":1,"1372":1,"1373":1,"1412":1,"1483":2,"1537":1,"1555":2,"1620":3,"1966":1,"2148":7,"2150":7,"2151":3,"2194":2,"2198":1,"2199":4,"2207":2,"2208":3,"2394":1,"2406":2,"2413":22,"2421":7,"2422":2,"2432":1,"2449":23,"2450":1,"2529":1,"2768":1,"2774":3}}],["tapping",{"0":{"119":1,"195":1,"1555":1,"2414":1,"2766":1,"2767":1,"2777":1},"1":{"2767":1,"2778":1},"2":{"22":2,"49":1,"63":1,"112":11,"119":11,"134":2,"145":1,"160":1,"176":1,"188":1,"191":1,"194":1,"195":6,"199":3,"203":1,"222":3,"503":2,"505":12,"515":2,"1372":2,"1416":1,"1448":1,"1449":2,"1453":1,"1468":6,"1469":1,"1472":1,"1483":2,"1488":1,"1537":6,"1553":1,"1620":1,"1715":2,"1907":2,"1945":3,"1946":1,"1966":2,"1969":1,"2150":1,"2194":2,"2199":9,"2200":4,"2207":4,"2208":1,"2209":7,"2274":1,"2414":9,"2529":1,"2700":1,"2713":1,"2745":2,"2766":9,"2767":50,"2768":6,"2769":2,"2773":6,"2774":6,"2775":4,"2776":8,"2777":11,"2778":2,"2788":1}}],["taps",{"0":{"2204":1,"2451":1,"2770":1},"1":{"2452":1,"2453":1,"2454":1},"2":{"98":1,"176":1,"191":1,"194":7,"211":1,"505":2,"689":1,"1372":2,"1405":1,"1468":2,"1469":1,"1537":2,"1715":1,"1721":1,"1723":2,"1943":2,"2117":1,"2194":1,"2199":1,"2200":1,"2206":1,"2207":2,"2437":2,"2605":1,"2767":2,"2777":1}}],["tap",{"0":{"15":1,"22":1,"194":1,"195":1,"206":1,"1343":1,"1345":1,"1398":1,"1405":1,"1406":1,"1407":2,"1469":1,"2137":1,"2197":1,"2199":1,"2202":2,"2206":1,"2207":1,"2208":3,"2209":1,"2413":1,"2449":1,"2452":1,"2454":1,"2578":1,"2650":1,"2701":1,"2702":1,"2765":1,"2768":1,"2771":1,"2776":1},"1":{"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1,"2450":1,"2451":1,"2452":1,"2453":1,"2454":1,"2455":1,"2766":1,"2767":1,"2768":1,"2769":2,"2770":2,"2771":2,"2772":2,"2773":2,"2774":2,"2775":2,"2776":1,"2777":1,"2778":1,"2779":1,"2780":1},"2":{"22":3,"38":1,"49":3,"74":1,"90":8,"112":5,"120":3,"134":1,"137":2,"160":4,"176":7,"191":4,"194":14,"195":10,"196":1,"199":6,"203":3,"206":3,"211":3,"222":3,"249":1,"266":1,"277":1,"317":1,"365":1,"503":1,"505":18,"533":2,"626":1,"1343":1,"1345":1,"1372":2,"1373":1,"1377":1,"1391":3,"1394":4,"1398":7,"1400":1,"1405":3,"1406":1,"1412":2,"1422":1,"1446":2,"1448":2,"1449":2,"1460":1,"1467":4,"1468":6,"1469":1,"1482":1,"1483":11,"1485":1,"1488":1,"1537":4,"1540":1,"1546":2,"1548":3,"1553":1,"1555":16,"1561":3,"1597":1,"1598":4,"1620":5,"1689":1,"1715":1,"1718":1,"1721":1,"1723":1,"1843":3,"1907":1,"1940":8,"1945":4,"1946":5,"1965":4,"1966":2,"1986":1,"2072":1,"2113":1,"2117":1,"2146":2,"2150":4,"2151":2,"2187":2,"2194":4,"2198":1,"2199":30,"2200":21,"2202":8,"2203":1,"2204":5,"2205":12,"2206":58,"2207":53,"2208":23,"2209":49,"2217":1,"2234":4,"2235":3,"2236":3,"2266":8,"2275":1,"2278":2,"2280":2,"2281":1,"2282":1,"2283":4,"2285":4,"2287":5,"2288":2,"2413":1,"2422":1,"2449":3,"2450":3,"2452":4,"2453":7,"2454":5,"2455":2,"2500":1,"2529":4,"2530":2,"2578":7,"2580":1,"2605":1,"2650":1,"2684":1,"2701":1,"2702":1,"2713":4,"2719":1,"2726":3,"2730":2,"2745":2,"2763":2,"2765":2,"2766":1,"2767":7,"2768":4,"2769":2,"2773":1,"2774":10,"2775":4,"2776":14,"2777":2,"2779":1,"2788":2,"2793":4}}],["ti",{"2":{"2661":1}}],["tie",{"2":{"2653":1}}],["tied",{"2":{"357":1,"2359":1,"2655":1}}],["tin",{"2":{"2311":1}}],["tiny",{"0":{"2561":1}}],["tinyuf2",{"0":{"2283":1},"1":{"2284":1},"2":{"93":1,"176":1,"199":1,"277":1,"2283":5,"2561":2}}],["tinyprintf",{"0":{"24":1}}],["tion",{"2":{"1921":2}}],["tilde",{"2":{"1704":2,"2417":1,"2438":1,"2741":1}}],["tild",{"2":{"1373":1,"2417":1,"2438":1,"2450":1}}],["tips",{"0":{"620":1,"1387":1},"1":{"1388":1,"1389":1},"2":{"1841":1,"1842":1,"1845":1,"2311":1,"2313":1}}],["tip",{"0":{"1579":1,"1580":1},"2":{"290":2,"317":1,"445":1,"496":1,"537":1,"539":1,"540":1,"592":1,"597":1,"620":4,"627":1,"674":1,"686":1,"702":1,"1121":1,"1138":1,"1267":1,"1349":1,"1365":1,"1366":2,"1378":1,"1396":1,"1401":1,"1422":1,"1453":1,"1478":1,"1482":1,"1483":1,"1484":1,"1485":1,"1533":1,"1569":2,"1571":1,"1575":2,"1579":1,"1580":1,"1586":1,"1591":1,"1597":2,"1598":1,"1670":1,"1752":1,"1766":1,"1767":1,"1852":1,"1863":1,"1870":1,"1917":1,"1939":1,"1964":1,"1986":1,"1987":2,"1990":1,"1996":1,"1997":1,"2070":1,"2072":1,"2079":1,"2103":1,"2110":1,"2157":1,"2164":2,"2165":1,"2169":2,"2303":1,"2338":1,"2339":1,"2341":1,"2383":1,"2387":1,"2432":1,"2460":1,"2463":1,"2469":1,"2474":1,"2477":1,"2479":1,"2480":1,"2490":1,"2496":1,"2501":1,"2502":1,"2507":2,"2508":1,"2512":1,"2514":1,"2526":1,"2527":2,"2547":1,"2580":1,"2595":1,"2598":1,"2615":1,"2616":5,"2617":1,"2646":1,"2650":1,"2653":1,"2654":1,"2758":1,"2766":1,"2774":1,"2776":1}}],["tiger80",{"2":{"211":1}}],["tiger910",{"2":{"154":2}}],["tighter",{"2":{"1987":2,"2480":1}}],["tight",{"2":{"191":1,"1256":1}}],["title",{"2":{"160":1,"279":1,"294":1,"554":2,"616":1}}],["ticking",{"2":{"2269":1,"2276":1}}],["tick3",{"2":{"1616":1}}],["tick2",{"2":{"1616":1}}],["tick1",{"2":{"1616":1}}],["tick",{"2":{"145":2,"588":1,"627":1,"1616":6}}],["ticks",{"2":{"25":1,"64":1,"176":1,"1506":1,"2621":1}}],["tidy",{"2":{"50":1,"114":3,"131":1,"133":1,"134":3,"160":2,"199":3,"211":3,"222":1,"249":1,"266":3,"2309":1,"2315":1}}],["tim4",{"2":{"1506":3}}],["tim2",{"2":{"1267":2}}],["timx",{"2":{"690":2,"1267":5,"1433":1}}],["tim8",{"2":{"686":3,"692":1}}],["tim7",{"2":{"686":3}}],["tim6",{"2":{"686":3,"687":3}}],["tim15",{"2":{"1507":2}}],["tim1",{"2":{"685":1,"690":6,"691":1,"1433":1}}],["timingr",{"2":{"705":5}}],["timings",{"2":{"191":1,"1125":1,"1128":1,"1555":1}}],["timing",{"0":{"1252":1,"1555":1},"2":{"11":1,"74":1,"112":1,"134":2,"160":1,"211":1,"505":4,"597":1,"680":1,"1251":1,"1252":1,"1256":1,"1261":2,"1600":1,"1714":1,"1721":3,"2564":1,"2603":2,"2613":1,"2616":1,"2726":1,"2766":1,"2776":2}}],["timeframe",{"2":{"2200":1}}],["timely",{"2":{"2168":1}}],["timeline",{"2":{"127":1,"2606":1}}],["timed",{"0":{"1735":1},"2":{"515":1,"588":1,"2301":1}}],["time80",{"2":{"211":1}}],["timeout=1000",{"2":{"1927":1}}],["timeouts",{"2":{"25":1,"199":1,"2167":1}}],["timeout",{"0":{"25":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"726":1,"1137":1,"1453":1,"1541":1,"1720":1,"1721":1,"1722":1},"1":{"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"727":1,"728":1},"2":{"25":7,"49":1,"74":1,"93":1,"112":2,"134":2,"137":1,"143":1,"145":1,"176":4,"183":4,"191":3,"211":1,"505":5,"511":7,"588":17,"703":1,"709":1,"710":2,"712":1,"713":2,"715":1,"716":2,"718":1,"719":2,"721":1,"722":2,"724":1,"725":2,"727":1,"728":2,"731":2,"757":2,"786":2,"818":2,"850":2,"885":2,"919":2,"953":2,"987":2,"1021":2,"1055":2,"1089":2,"1137":2,"1145":2,"1182":2,"1222":2,"1224":2,"1227":2,"1230":2,"1257":2,"1448":3,"1451":1,"1452":1,"1453":5,"1462":1,"1468":1,"1470":1,"1471":3,"1472":5,"1473":1,"1541":4,"1551":2,"1555":1,"1720":1,"1721":4,"1722":3,"1732":1,"1735":2,"1768":1,"1855":5,"1860":1,"1939":2,"1943":2,"1948":2,"1974":6,"1992":1,"2105":2,"2108":4,"2166":1,"2169":6,"2179":1,"2181":1,"2207":1,"2397":3,"2500":1,"2529":1,"2578":2,"2613":2,"2719":1,"2726":2,"2727":3,"2730":1,"2734":3,"2735":4,"2736":2,"2739":2,"2778":1}}],["timer1",{"2":{"684":1,"2301":1}}],["timer3",{"2":{"684":1}}],["timer",{"0":{"11":1,"1499":1,"1504":1,"1507":1,"1557":1,"1558":1,"1559":1,"1736":1},"1":{"1558":1,"1559":1},"2":{"11":1,"49":1,"74":1,"114":4,"134":1,"160":2,"191":1,"199":3,"222":1,"505":5,"588":7,"686":5,"687":2,"690":3,"691":2,"1174":1,"1267":1,"1363":4,"1366":4,"1412":6,"1424":2,"1431":1,"1433":2,"1448":1,"1496":1,"1497":1,"1499":2,"1503":22,"1504":8,"1507":2,"1556":1,"1557":2,"1558":2,"1559":2,"1729":1,"1732":1,"1736":1,"1853":1,"1965":1,"1972":1,"1975":1,"2168":2,"2177":1,"2200":1,"2603":3,"2616":12,"2651":5,"2716":2}}],["timers",{"0":{"2651":1},"2":{"10":1,"11":1,"596":1,"686":1,"690":1,"1267":2,"1504":3,"1507":1,"2565":1,"2651":1}}],["time",{"0":{"1365":1,"2205":1},"2":{"10":2,"25":1,"28":1,"49":2,"50":1,"73":1,"112":1,"123":1,"124":1,"134":1,"137":1,"138":1,"151":1,"173":1,"174":1,"176":3,"182":1,"191":1,"222":1,"228":1,"243":1,"265":2,"284":1,"317":1,"327":1,"330":1,"331":2,"352":1,"358":1,"414":1,"430":1,"434":1,"452":2,"454":1,"463":2,"464":2,"465":3,"483":1,"485":1,"507":1,"513":2,"520":1,"521":1,"550":1,"551":1,"571":1,"573":1,"587":1,"588":5,"596":1,"597":6,"598":1,"599":1,"606":1,"674":2,"703":1,"707":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"789":6,"1024":6,"1058":6,"1092":6,"1121":1,"1137":1,"1258":1,"1289":8,"1337":1,"1348":1,"1362":3,"1363":7,"1365":1,"1366":2,"1378":1,"1379":1,"1405":1,"1416":1,"1422":2,"1427":1,"1434":3,"1435":1,"1436":1,"1443":1,"1448":5,"1451":1,"1453":1,"1472":2,"1475":1,"1483":1,"1496":1,"1537":2,"1538":1,"1541":1,"1551":1,"1553":1,"1555":1,"1592":1,"1597":1,"1600":1,"1602":1,"1610":2,"1611":8,"1689":1,"1713":1,"1714":1,"1720":1,"1721":1,"1722":4,"1769":1,"1841":8,"1842":1,"1843":8,"1845":4,"1846":1,"1853":1,"1855":1,"1859":4,"1860":1,"1863":2,"1865":1,"1867":1,"1899":1,"1925":1,"1934":1,"1940":9,"1945":2,"1950":1,"1965":1,"1969":4,"1977":1,"1980":2,"1986":1,"1987":1,"1989":1,"1993":1,"2072":1,"2082":1,"2122":1,"2126":1,"2149":1,"2164":1,"2166":1,"2177":1,"2179":1,"2182":2,"2184":1,"2187":1,"2199":4,"2200":2,"2207":1,"2209":2,"2217":1,"2263":1,"2264":3,"2297":1,"2312":1,"2314":1,"2350":2,"2353":1,"2359":1,"2386":1,"2467":1,"2480":1,"2481":2,"2485":1,"2489":1,"2493":1,"2505":1,"2512":1,"2513":1,"2516":1,"2527":1,"2529":2,"2541":1,"2563":1,"2603":2,"2605":2,"2608":4,"2612":1,"2613":5,"2616":3,"2623":1,"2635":1,"2644":1,"2651":1,"2710":1,"2713":1,"2719":1,"2720":1,"2726":1,"2728":2,"2729":1,"2730":1,"2736":2,"2738":1,"2744":1,"2751":1,"2759":1,"2766":1,"2769":1,"2770":2,"2771":3,"2772":2,"2782":1,"2784":1}}],["timestamp",{"2":{"1363":6}}],["timestamps",{"2":{"199":1,"211":1,"375":1,"2167":1,"2736":1}}],["times",{"2":{"0":2,"9":2,"19":2,"39":2,"52":2,"222":1,"234":1,"374":2,"396":1,"411":2,"505":3,"584":1,"590":1,"628":1,"673":1,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1172":1,"1182":1,"1362":1,"1363":1,"1468":1,"1473":2,"1488":2,"1611":1,"1620":1,"1840":2,"1918":1,"1920":1,"2082":3,"2143":5,"2198":2,"2207":1,"2300":1,"2406":1,"2529":2,"2530":1,"2634":1,"2639":1,"2700":1,"2702":1,"2730":1,"2767":2,"2784":3}}],["tedious",{"2":{"2293":1,"2460":1}}],["telephony",{"2":{"1870":1}}],["tells",{"2":{"1394":1,"1420":1,"1763":1,"1984":1,"2151":1,"2354":1,"2513":2,"2527":1,"2653":2,"2787":1}}],["tell",{"2":{"105":2,"233":1,"263":1,"433":1,"529":1,"540":1,"559":1,"1868":1,"2163":2,"2301":1,"2450":1,"2514":1,"2796":1}}],["tekezo",{"2":{"1318":2}}],["tee",{"2":{"1276":1}}],["teensys",{"2":{"625":1,"2273":1,"2300":1}}],["teensy++",{"2":{"487":1,"2171":1,"2307":1,"2308":1}}],["teensy2",{"2":{"207":2}}],["teensypp",{"2":{"207":2}}],["teensy",{"0":{"81":1,"108":1,"2171":1,"2315":1,"2372":1,"2703":1},"1":{"2373":1},"2":{"81":1,"93":1,"108":1,"114":4,"131":1,"134":1,"160":2,"176":1,"199":1,"207":2,"292":4,"487":1,"491":4,"511":1,"624":1,"1271":1,"2171":3,"2273":5,"2276":1,"2300":2,"2305":1,"2307":1,"2308":1,"2314":1,"2315":1,"2318":2,"2372":2,"2373":3,"2703":1}}],["ten",{"2":{"1921":1}}],["tend",{"2":{"341":1,"1488":1,"2615":1}}],["tentative",{"0":{"88":1},"2":{"176":1}}],["tegic",{"2":{"253":2}}],["technology",{"2":{"1362":1}}],["technologies",{"2":{"1362":1}}],["technique",{"2":{"1362":1,"1491":1,"1715":1,"2309":1,"2777":1}}],["techniques",{"2":{"479":1,"2309":1}}],["technically",{"2":{"1315":1,"1362":1,"2170":1}}],["technical",{"0":{"529":1,"1859":1},"2":{"70":1,"201":1,"213":1,"224":1,"238":1,"551":1,"701":1,"1302":1,"1426":1}}],["tech",{"2":{"187":1,"191":1,"198":1,"199":1,"211":23,"279":1,"2605":3}}],["teach",{"2":{"2496":1,"2511":1}}],["teaching",{"2":{"176":1}}],["teal",{"2":{"582":1,"1991":2,"2096":2}}],["team",{"0":{"265":1,"275":1},"2":{"116":1,"265":3,"268":1,"273":1,"275":2,"276":1,"356":1,"1302":1,"2758":3,"2759":1}}],["team0110",{"2":{"102":1}}],["tempo",{"0":{"1437":1},"2":{"1437":10,"1443":1,"1988":1,"2143":1,"2144":4,"2145":10}}],["temporarily",{"2":{"273":1,"334":1,"1325":1,"1340":1,"1470":1,"1471":1,"1549":1,"2301":1,"2367":1,"2767":1}}],["temporary",{"2":{"114":1,"249":1,"396":1,"1321":1,"1372":1,"1591":1}}],["temperature",{"2":{"636":2,"1988":3,"2311":1}}],["temp",{"2":{"396":1,"1422":7}}],["templates",{"0":{"622":1},"1":{"623":1,"624":1},"2":{"266":1,"277":1,"318":1,"385":1,"622":1}}],["template",{"0":{"623":1,"624":1,"2474":1},"2":{"50":1,"277":1,"318":1,"559":1,"621":1,"1417":1,"1420":1,"1755":1,"2336":1,"2474":1,"2593":1,"2605":1}}],["textwidth",{"2":{"2616":4}}],["text",{"0":{"399":1,"432":1,"435":1,"2462":1,"2520":1},"1":{"433":1,"434":1,"435":1},"2":{"110":1,"111":2,"138":1,"199":1,"236":1,"279":1,"300":1,"389":1,"390":1,"391":1,"399":3,"431":1,"432":4,"434":1,"435":7,"618":1,"1324":1,"1390":1,"1477":2,"1478":1,"1488":1,"1940":1,"2220":1,"2301":1,"2316":1,"2318":1,"2388":1,"2459":1,"2462":1,"2468":3,"2476":1,"2496":3,"2499":1,"2513":2,"2520":2,"2527":1,"2531":1,"2541":1,"2542":1,"2592":1,"2616":4,"2654":1,"2711":2,"2741":1}}],["terry",{"2":{"176":1}}],["terrazzo",{"2":{"92":2}}],["term\`",{"2":{"2207":1}}],["terms",{"0":{"2660":1},"1":{"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1,"2670":1,"2671":1,"2672":1,"2673":1,"2674":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":1,"2691":1,"2692":1,"2693":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2699":1,"2700":1,"2701":1,"2702":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2708":1},"2":{"1363":1,"1417":1,"1468":1,"2209":1,"2219":1,"2609":1,"2624":1,"2631":1,"2767":1}}],["terminated",{"2":{"1488":3,"1545":1}}],["terminator",{"2":{"272":1,"1632":1}}],["terminals",{"2":{"2499":1}}],["terminal",{"2":{"176":1,"191":1,"291":5,"324":2,"433":1,"435":1,"1285":1,"1485":1,"1605":1,"2112":1,"2207":1,"2318":1,"2386":1,"2459":1,"2464":1,"2493":1,"2497":1,"2499":3,"2507":3,"2547":9}}],["terminology",{"2":{"249":2}}],["term",{"0":{"119":1,"195":1,"1551":1,"2414":1,"2709":1,"2766":1,"2767":1,"2776":1},"1":{"2767":1},"2":{"22":2,"49":1,"112":3,"114":1,"119":9,"134":2,"145":1,"176":1,"188":1,"191":1,"194":1,"195":9,"199":3,"222":2,"262":1,"505":18,"515":2,"1416":1,"1448":1,"1468":1,"1469":1,"1537":4,"1545":1,"1551":1,"1553":2,"1555":7,"1557":1,"1558":1,"1945":3,"1946":1,"1969":1,"2199":9,"2200":4,"2207":3,"2208":1,"2209":6,"2414":9,"2585":1,"2664":1,"2692":1,"2698":1,"2704":1,"2709":1,"2713":2,"2720":1,"2755":1,"2766":9,"2767":50,"2768":6,"2769":1,"2773":6,"2774":6,"2775":4,"2776":17,"2777":2,"2788":1}}],["testgroup",{"2":{"2792":1}}],["testlist",{"2":{"2792":3}}],["tester",{"2":{"2318":2}}],["testers",{"2":{"340":1,"343":1,"344":1}}],["tested",{"2":{"49":3,"273":1,"285":1,"692":1,"1402":1,"1849":1,"2140":1,"2207":1,"2334":1,"2531":1}}],["testing",{"0":{"442":1,"443":1,"446":1,"483":1,"692":1,"2318":1,"2522":1,"2523":1,"2706":1,"2789":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1,"484":1,"485":1,"2523":1,"2524":1,"2790":1,"2791":1,"2792":1,"2793":1,"2794":1,"2795":1},"2":{"337":1,"340":1,"349":1,"352":1,"397":1,"483":1,"1290":1,"1323":1,"1473":1,"1859":1,"2301":1,"2494":1,"2585":1,"2706":2,"2789":2,"2790":1,"2792":1,"2795":1}}],["test",{"0":{"411":1,"1323":1,"2494":1,"2508":1,"2790":1},"2":{"49":1,"134":3,"160":2,"191":1,"199":3,"211":2,"236":3,"249":3,"266":1,"277":1,"292":2,"407":9,"411":16,"442":1,"446":1,"483":1,"484":1,"485":1,"1323":1,"1324":1,"1489":1,"1545":4,"1546":2,"1547":4,"1587":4,"2072":1,"2074":2,"2075":2,"2188":1,"2318":2,"2333":1,"2415":1,"2494":2,"2606":1,"2750":1,"2789":1,"2790":3,"2791":3,"2792":4,"2793":5,"2794":2,"2795":2}}],["tests",{"0":{"484":1,"485":1,"2792":1,"2793":1,"2794":1,"2795":1},"2":{"1":1,"114":1,"134":3,"145":1,"160":1,"174":1,"176":1,"191":1,"196":1,"198":1,"199":2,"222":1,"263":1,"407":3,"411":2,"442":1,"446":8,"483":5,"484":2,"485":4,"560":1,"1472":1,"2606":3,"2706":1,"2789":1,"2790":1,"2792":7,"2793":4,"2794":3,"2795":1}}],["t",{"0":{"548":1,"551":1,"647":4,"649":3,"652":1,"661":1,"663":1,"665":3,"667":3,"669":2,"708":5,"711":5,"714":6,"717":6,"720":6,"723":6,"726":3,"736":1,"739":2,"741":3,"743":3,"745":1,"747":1,"749":1,"751":1,"762":1,"764":1,"766":3,"768":3,"770":3,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1,"794":1,"796":1,"798":3,"800":3,"802":3,"804":1,"806":1,"808":4,"810":2,"812":1,"814":1,"824":1,"826":1,"828":3,"830":2,"832":3,"834":3,"836":1,"838":1,"840":1,"842":1,"844":1,"846":1,"859":1,"861":1,"863":3,"865":2,"867":3,"869":3,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"893":1,"895":1,"897":3,"899":2,"901":3,"903":3,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"927":1,"929":1,"931":3,"933":2,"935":3,"937":3,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1,"961":1,"963":1,"965":3,"967":2,"969":3,"971":3,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1,"995":1,"997":1,"999":3,"1001":2,"1003":3,"1005":3,"1007":1,"1009":1,"1011":4,"1013":2,"1015":1,"1017":1,"1029":1,"1031":1,"1033":3,"1035":2,"1037":3,"1039":3,"1041":1,"1043":1,"1045":4,"1047":2,"1049":1,"1051":1,"1063":1,"1065":1,"1067":3,"1069":2,"1071":3,"1073":3,"1075":1,"1077":1,"1079":4,"1081":2,"1083":1,"1085":1,"1097":1,"1099":1,"1101":3,"1103":2,"1105":3,"1107":3,"1109":1,"1111":1,"1113":4,"1115":2,"1117":1,"1119":1,"1150":1,"1152":1,"1154":3,"1156":2,"1158":3,"1160":3,"1162":1,"1164":1,"1166":1,"1176":3,"1178":3,"1187":1,"1189":1,"1191":3,"1193":2,"1195":3,"1197":3,"1199":1,"1201":1,"1203":1,"1205":1,"1207":1,"1209":1,"1217":3,"1220":2,"1223":1,"1225":3,"1228":3,"1237":1,"1239":1,"1241":1,"1243":2,"1245":1,"1269":2,"1275":1,"1280":1,"1291":1,"1292":1,"1295":1,"1297":1,"1307":1,"1309":1,"1310":1,"1318":1,"1325":1,"1327":1,"1328":1,"1329":1,"1516":1,"1518":1,"1574":1,"1641":2,"1649":2,"1651":2,"1655":1,"1657":1,"1660":1,"1662":1,"1664":1,"1666":1,"1675":1,"1677":1,"1680":1,"1682":1,"1684":2,"1687":2,"1708":1,"1709":1,"1732":1,"1737":1,"1740":2,"1743":3,"1746":4,"1749":5,"1781":2,"1783":1,"1785":1,"1787":1,"1793":1,"1799":1,"1805":1,"1807":1,"1809":1,"1818":2,"1821":2,"1875":1,"1877":1,"1879":1,"1881":1,"1883":1,"1887":1,"1889":1,"1929":2,"1931":2,"2008":4,"2010":3,"2012":1,"2014":1,"2020":1,"2026":1,"2032":1,"2038":1,"2044":1,"2046":1,"2048":1,"2050":3,"2052":3,"2063":2,"2066":2,"2121":1,"2125":1,"2129":1,"2131":1,"2133":1,"2135":1,"2224":1,"2226":1,"2230":1,"2232":1,"2237":1,"2241":2,"2244":2,"2247":1,"2252":1,"2254":1,"2293":1,"2709":1},"1":{"648":4,"650":3,"653":1,"662":1,"664":1,"666":3,"668":3,"670":2,"709":5,"710":5,"712":5,"713":5,"715":6,"716":6,"718":6,"719":6,"721":6,"722":6,"724":6,"725":6,"727":3,"728":3,"737":1,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"763":1,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"795":1,"797":1,"799":3,"801":3,"803":3,"805":1,"807":1,"809":4,"811":2,"813":1,"815":1,"825":1,"827":1,"829":3,"831":2,"833":3,"835":3,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"860":1,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"894":1,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"928":1,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"962":1,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"996":1,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1030":1,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1064":1,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1098":1,"1100":1,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1151":1,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1177":3,"1179":3,"1188":1,"1190":1,"1192":3,"1194":2,"1196":3,"1198":3,"1200":1,"1202":1,"1204":1,"1206":1,"1208":1,"1210":1,"1218":3,"1219":3,"1221":2,"1222":2,"1224":1,"1226":3,"1227":3,"1229":3,"1230":3,"1238":1,"1240":1,"1242":1,"1244":2,"1246":1,"1270":2,"1276":1,"1277":1,"1517":1,"1519":1,"1575":1,"1642":2,"1650":2,"1652":2,"1656":1,"1658":1,"1659":1,"1661":1,"1663":1,"1665":1,"1667":1,"1676":1,"1678":1,"1681":1,"1683":1,"1685":2,"1686":2,"1688":2,"1733":1,"1734":1,"1738":1,"1739":1,"1741":2,"1742":2,"1744":3,"1745":3,"1747":4,"1748":4,"1750":5,"1751":5,"1782":2,"1784":1,"1786":1,"1788":1,"1794":1,"1800":1,"1806":1,"1808":1,"1810":1,"1876":1,"1878":1,"1880":1,"1882":1,"1884":1,"1885":1,"1888":1,"1890":1,"1930":2,"1932":2,"2009":4,"2011":3,"2013":1,"2015":1,"2021":1,"2027":1,"2033":1,"2039":1,"2045":1,"2047":1,"2049":1,"2053":3,"2122":1,"2126":1,"2130":1,"2132":1,"2134":1,"2136":1,"2225":1,"2227":1,"2231":1,"2233":1,"2238":1,"2242":2,"2243":2,"2245":2,"2246":2,"2248":1,"2253":1,"2255":1,"2256":1},"2":{"22":9,"31":3,"34":3,"46":3,"90":4,"94":2,"105":8,"114":4,"119":1,"138":1,"160":3,"164":1,"166":1,"173":2,"176":1,"188":1,"191":2,"194":9,"195":6,"198":1,"199":2,"211":3,"214":1,"221":1,"222":1,"232":1,"247":1,"249":1,"266":1,"272":3,"277":2,"291":1,"313":1,"317":1,"349":1,"352":2,"375":2,"385":1,"396":3,"401":1,"407":4,"411":2,"430":1,"453":1,"454":2,"455":1,"457":1,"474":1,"479":1,"498":1,"501":1,"505":1,"515":1,"530":3,"534":4,"537":2,"538":1,"540":1,"551":1,"557":1,"560":4,"565":1,"566":3,"572":2,"573":10,"575":1,"578":1,"580":7,"586":1,"588":4,"597":2,"606":1,"613":1,"621":1,"648":4,"650":3,"653":1,"659":1,"662":4,"664":1,"666":3,"668":3,"670":2,"689":2,"709":4,"712":4,"715":5,"718":5,"721":4,"724":4,"727":2,"734":2,"737":4,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"760":2,"763":5,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"792":2,"795":5,"797":1,"799":3,"801":3,"803":3,"805":1,"807":1,"809":4,"811":2,"813":1,"815":1,"822":2,"825":5,"827":1,"829":3,"831":2,"833":3,"835":3,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"857":2,"860":5,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"891":2,"894":5,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"925":2,"928":5,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"959":2,"962":5,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"993":2,"996":5,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1027":2,"1030":5,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1061":2,"1064":5,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1095":2,"1098":5,"1100":2,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1125":1,"1126":1,"1137":1,"1151":5,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1177":3,"1179":3,"1185":2,"1188":5,"1190":1,"1192":3,"1194":2,"1196":3,"1198":3,"1200":1,"1202":1,"1204":1,"1206":1,"1208":1,"1210":1,"1214":1,"1218":3,"1221":1,"1226":2,"1229":2,"1238":1,"1240":1,"1244":2,"1246":2,"1270":2,"1273":1,"1274":1,"1278":1,"1279":1,"1289":2,"1291":1,"1297":1,"1299":1,"1302":1,"1303":1,"1308":1,"1313":2,"1323":1,"1324":3,"1325":2,"1327":1,"1339":3,"1340":5,"1349":1,"1362":1,"1368":1,"1369":9,"1370":4,"1373":1,"1377":1,"1378":4,"1380":2,"1381":4,"1382":4,"1396":8,"1397":5,"1398":1,"1400":1,"1404":1,"1412":3,"1415":2,"1416":1,"1420":8,"1421":2,"1422":8,"1430":1,"1435":1,"1437":3,"1440":2,"1441":2,"1442":2,"1443":1,"1453":3,"1460":4,"1467":8,"1475":2,"1476":1,"1477":1,"1479":1,"1482":5,"1483":4,"1484":1,"1485":3,"1487":1,"1488":5,"1501":1,"1517":1,"1532":1,"1543":2,"1545":3,"1546":3,"1547":5,"1548":9,"1552":2,"1555":22,"1556":8,"1559":1,"1560":10,"1561":11,"1563":2,"1565":1,"1572":1,"1586":1,"1587":4,"1593":1,"1594":5,"1596":1,"1597":1,"1598":3,"1619":2,"1632":1,"1642":1,"1650":2,"1652":2,"1656":1,"1661":1,"1663":1,"1665":1,"1667":1,"1671":1,"1672":6,"1676":2,"1678":4,"1681":1,"1683":1,"1685":1,"1688":2,"1693":1,"1695":3,"1696":2,"1697":1,"1700":2,"1701":2,"1703":7,"1704":3,"1706":6,"1708":9,"1710":1,"1721":1,"1724":1,"1733":1,"1738":1,"1741":2,"1744":3,"1747":4,"1750":5,"1752":3,"1754":2,"1755":1,"1756":2,"1757":1,"1760":5,"1763":2,"1767":7,"1771":2,"1782":2,"1784":1,"1786":1,"1788":1,"1806":1,"1808":1,"1819":2,"1822":2,"1830":3,"1851":1,"1853":4,"1854":2,"1858":2,"1859":2,"1860":30,"1862":1,"1863":2,"1864":1,"1868":2,"1876":1,"1878":1,"1880":1,"1882":1,"1884":1,"1890":1,"1899":2,"1906":1,"1911":6,"1912":3,"1913":5,"1915":3,"1916":3,"1917":3,"1918":2,"1919":5,"1921":15,"1925":2,"1927":3,"1930":2,"1932":2,"1950":4,"1951":5,"1953":1,"1954":5,"1955":3,"1956":5,"1958":1,"1959":4,"1960":10,"1962":4,"1963":3,"1965":1,"1969":1,"1971":4,"1972":2,"1974":10,"1977":2,"1978":2,"1979":2,"1980":1,"1981":4,"1984":2,"1986":1,"1990":7,"1995":2,"1996":13,"1997":5,"2009":4,"2011":3,"2013":1,"2015":1,"2045":1,"2047":1,"2051":3,"2053":3,"2064":2,"2067":2,"2070":1,"2072":1,"2078":7,"2080":6,"2081":5,"2082":7,"2102":1,"2113":1,"2116":2,"2122":1,"2126":1,"2130":1,"2132":1,"2134":1,"2136":1,"2144":1,"2145":13,"2163":2,"2166":1,"2168":20,"2171":1,"2175":1,"2177":4,"2178":2,"2180":1,"2181":16,"2183":1,"2186":2,"2187":1,"2190":9,"2191":2,"2193":2,"2194":1,"2195":1,"2202":2,"2204":2,"2205":5,"2206":17,"2207":14,"2208":11,"2209":16,"2210":1,"2219":1,"2220":2,"2221":1,"2227":1,"2231":1,"2233":1,"2238":1,"2242":1,"2245":1,"2248":1,"2255":1,"2262":1,"2266":6,"2282":1,"2293":1,"2300":1,"2301":1,"2303":1,"2311":1,"2312":1,"2313":4,"2318":2,"2325":1,"2340":3,"2346":1,"2350":2,"2374":1,"2394":3,"2413":40,"2415":1,"2422":1,"2425":3,"2440":1,"2442":1,"2444":2,"2445":3,"2446":1,"2449":40,"2450":1,"2452":3,"2453":2,"2454":2,"2456":2,"2462":1,"2463":1,"2483":1,"2492":1,"2493":2,"2494":1,"2496":1,"2507":1,"2513":2,"2530":6,"2536":1,"2543":1,"2545":1,"2547":2,"2551":1,"2552":1,"2572":1,"2581":1,"2585":1,"2592":1,"2595":1,"2605":1,"2608":1,"2615":100,"2616":131,"2620":2,"2626":16,"2627":7,"2628":5,"2632":7,"2633":13,"2634":5,"2635":11,"2636":10,"2637":9,"2638":4,"2642":1,"2643":2,"2645":5,"2651":1,"2653":1,"2740":1,"2744":1,"2745":3,"2748":4,"2750":1,"2763":2,"2766":4,"2767":9,"2769":2,"2770":5,"2771":8,"2772":5,"2773":3,"2774":2,"2775":2,"2776":9,"2777":2,"2780":1,"2785":2,"2786":1,"2787":1,"2788":81,"2789":1,"2791":1,"2792":1,"2796":3}}],["tr6",{"2":{"1831":1,"2410":1}}],["tr5",{"2":{"1831":1,"2410":1}}],["tr4",{"2":{"1831":1,"2410":1}}],["tr3",{"2":{"1831":1,"2410":1}}],["tr2",{"2":{"1831":1,"2410":1}}],["tr1",{"2":{"1831":1,"2410":1}}],["tr0",{"2":{"1831":1,"2410":1}}],["trn1",{"2":{"1831":1,"2410":1}}],["trn2",{"2":{"1831":1,"2410":1}}],["trn3",{"2":{"1831":1,"2410":1}}],["trn4",{"2":{"1831":1,"2410":1}}],["trn5",{"2":{"1831":1,"2410":1}}],["trn6",{"2":{"1831":1,"2410":1}}],["trns",{"2":{"313":118,"530":152,"1312":1,"1372":1,"1377":2,"1911":3,"1912":1,"1913":1,"1919":1,"1996":1,"2150":3,"2151":1,"2394":1,"2406":1,"2424":1,"2434":1,"2442":4,"2444":2,"2447":1,"2653":1}}],["trp",{"2":{"1616":1}}],["trrs",{"2":{"1129":1,"2152":1,"2154":1,"2155":2,"2156":2,"2157":1,"2158":1,"2169":1,"2310":1}}],["trsu",{"2":{"1831":1,"2410":1}}],["trsd",{"2":{"1831":1,"2410":1}}],["trst",{"2":{"1251":1,"1252":1}}],["trs",{"2":{"1123":1,"1126":1,"2157":1}}],["troubleshoot",{"2":{"2289":1}}],["troubleshooting",{"0":{"544":1,"1138":1,"1538":1,"1964":1},"1":{"545":1,"546":1,"547":1,"548":1,"549":1},"2":{"1138":1,"1281":1,"1288":1,"1964":1,"2172":1,"2467":1}}],["trouble",{"2":{"555":1,"1324":1,"2318":1}}],["tronguylabs",{"2":{"114":1,"207":4}}],["trk1",{"2":{"277":1}}],["trkeyboard",{"2":{"277":1}}],["trying",{"2":{"554":1,"1453":1,"1870":1,"2163":1,"2207":2,"2325":1,"2508":1}}],["try",{"2":{"228":1,"364":1,"461":1,"466":2,"477":1,"541":1,"551":1,"557":1,"560":1,"561":1,"626":1,"707":1,"1291":2,"1292":1,"1317":1,"1325":1,"1335":1,"1375":1,"1383":1,"1427":1,"1927":1,"2207":1,"2313":1,"2318":1,"2374":1,"2392":2,"2489":1,"2493":1,"2505":1,"2540":1,"2552":1,"2605":1,"2644":1,"2767":1,"2792":1}}],["treated",{"2":{"1966":4,"1970":1,"1972":1,"2347":1,"2394":1}}],["treating",{"2":{"562":1,"2409":1,"2435":1}}],["treat",{"2":{"176":1,"612":1,"1376":1,"2098":1,"2409":1,"2435":1,"2784":1}}],["treadstone48",{"2":{"154":4}}],["treadstone32",{"2":{"154":2}}],["tree",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"154":2,"181":2,"191":1,"199":2,"337":1,"436":1,"1264":1,"1375":1,"1475":1,"2467":2,"2513":1}}],["truth",{"2":{"606":2}}],["trunk",{"2":{"134":1}}],["truetype",{"2":{"2614":1}}],["true",{"0":{"258":1,"476":1},"2":{"13":1,"90":3,"105":6,"111":8,"185":1,"194":3,"195":1,"230":1,"249":1,"256":1,"258":1,"314":1,"397":1,"453":1,"476":2,"534":1,"571":1,"572":2,"588":1,"592":1,"593":1,"609":1,"610":3,"641":1,"671":1,"686":7,"687":5,"690":3,"703":3,"1124":1,"1129":1,"1132":2,"1133":2,"1174":3,"1214":3,"1218":1,"1219":1,"1235":1,"1248":1,"1263":2,"1267":3,"1289":1,"1339":2,"1340":4,"1369":4,"1381":1,"1396":3,"1397":1,"1412":2,"1421":1,"1422":1,"1441":1,"1460":2,"1467":1,"1483":2,"1485":2,"1486":1,"1494":1,"1506":2,"1507":2,"1521":1,"1526":1,"1542":1,"1543":3,"1555":6,"1556":1,"1560":1,"1561":2,"1564":1,"1568":2,"1572":2,"1587":4,"1598":2,"1631":2,"1654":1,"1659":1,"1672":1,"1708":2,"1724":2,"1734":1,"1739":1,"1742":1,"1745":1,"1748":1,"1751":1,"1754":1,"1756":2,"1764":2,"1768":1,"1771":1,"1780":1,"1813":1,"1817":1,"1823":1,"1830":2,"1854":1,"1860":16,"1864":1,"1885":1,"1895":1,"1897":2,"1905":1,"1913":1,"1915":2,"1916":1,"1917":1,"1918":1,"1919":1,"1921":2,"1940":3,"1954":1,"1955":1,"1959":1,"1960":1,"1962":1,"1963":1,"1967":2,"1972":2,"1974":3,"1975":2,"1977":2,"1980":3,"1985":2,"1992":1,"1995":1,"2007":1,"2058":1,"2062":1,"2068":1,"2073":1,"2081":1,"2094":1,"2116":1,"2181":12,"2190":3,"2196":1,"2200":1,"2206":1,"2207":2,"2209":2,"2217":1,"2251":1,"2256":1,"2258":1,"2266":2,"2345":1,"2452":1,"2453":7,"2454":1,"2476":1,"2587":5,"2616":5,"2643":1,"2713":1,"2715":2,"2716":1,"2727":3,"2733":3,"2734":3,"2738":1,"2767":1,"2774":1,"2775":1,"2777":1,"2782":1}}],["tr",{"2":{"134":1,"2191":3}}],["trim",{"2":{"2312":1}}],["tried",{"2":{"2497":1,"2765":1}}],["trie",{"0":{"1487":1},"1":{"1488":1,"1489":1},"2":{"1475":4,"1477":1,"1487":1,"1488":4,"1489":1}}],["tries",{"2":{"502":1,"1488":1,"2456":1,"2491":1}}],["triangle",{"2":{"1430":1}}],["tricker",{"2":{"1377":1}}],["tricky",{"2":{"1375":1,"1475":1,"2303":1,"2796":1}}],["triplet",{"2":{"1171":1,"1254":1,"2616":1}}],["triplets",{"2":{"1171":1}}],["triple",{"2":{"462":2,"2207":5}}],["trinity",{"2":{"211":1}}],["tri",{"0":{"2210":1,"2641":1,"2642":1,"2644":1},"1":{"2211":1,"2212":1,"2213":1,"2642":1,"2643":2,"2644":1,"2645":2},"2":{"199":2,"211":1,"1378":3,"1420":3,"2210":1,"2211":2,"2212":4,"2213":7,"2605":2,"2642":1,"2643":4,"2644":1,"2645":4}}],["triggered",{"2":{"505":1,"592":1,"687":1,"1594":4,"1620":3,"1708":1,"1974":1}}],["triggers",{"0":{"1478":1},"2":{"195":1,"1468":1,"1708":1,"1715":1,"1716":1,"1945":2,"1992":1,"2777":1}}],["triggering",{"2":{"98":1,"505":1,"1611":1,"2150":1,"2167":1,"2344":1}}],["trigger",{"2":{"95":1,"98":1,"114":1,"191":1,"198":1,"505":1,"521":1,"586":1,"592":1,"597":4,"686":2,"687":1,"1276":1,"1337":1,"1339":1,"1340":1,"1478":3,"1532":1,"1533":1,"1534":1,"1556":3,"1592":1,"1611":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1693":1,"1703":7,"1706":2,"1708":4,"1709":6,"1711":8,"1712":6,"1713":1,"1715":1,"1866":1,"1945":1,"1946":1,"1974":1,"1975":1,"1980":1,"1992":1,"2476":1,"2478":1,"2479":1,"2563":1,"2644":1,"2767":2,"2776":2,"2777":1}}],["trivial",{"2":{"95":1,"266":1,"1708":1,"2348":1,"2440":1}}],["tranlates",{"2":{"2746":1}}],["transcription",{"2":{"2182":1}}],["translucent",{"2":{"2069":1}}],["translating",{"2":{"2529":1}}],["translation",{"2":{"413":1,"2182":1}}],["translatable",{"2":{"1396":1}}],["translated",{"2":{"1870":1}}],["translates",{"2":{"638":1,"639":1,"2341":1}}],["translate",{"2":{"99":1,"1614":1,"2610":1}}],["transmitted",{"2":{"1529":1,"2613":1,"2768":1}}],["transmitting",{"2":{"1123":1,"1126":1,"1129":2,"2167":5}}],["transmit",{"0":{"708":1,"1225":1,"1243":1},"1":{"709":1,"710":1,"1226":1,"1227":1,"1244":1},"2":{"674":1,"675":1,"709":1,"715":1,"718":1,"1238":1,"1239":1,"1243":1,"2736":1}}],["transmissions",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1182":1}}],["transmission",{"2":{"214":1,"263":1,"1121":3,"1218":1,"1262":1}}],["transistor",{"2":{"1171":2,"1495":4,"1508":1}}],["transistors",{"2":{"1169":3}}],["transitions",{"2":{"278":1,"1362":2,"1423":1,"2723":1}}],["transitioned",{"2":{"268":1}}],["transition",{"2":{"236":1,"265":1,"1362":1,"1616":60}}],["transient",{"0":{"676":1},"2":{"160":1,"671":2,"676":3,"2722":1}}],["transparency",{"0":{"2442":1},"2":{"2442":1,"2626":2,"2635":3}}],["transparent",{"2":{"231":1,"1372":1,"1715":1,"2151":1,"2394":2,"2434":2,"2442":4,"2444":1,"2626":1,"2635":3,"2777":1}}],["transposition",{"2":{"1831":15,"1832":1,"2410":15}}],["transpose",{"2":{"222":1,"1831":15,"2410":15}}],["transported",{"2":{"74":1}}],["transport",{"0":{"107":1},"2":{"74":1,"75":1,"111":1,"112":3,"114":1,"134":1,"145":1,"176":1,"266":1,"277":1,"508":1,"511":9,"1768":1,"1851":2,"1952":1,"1992":1,"2153":1,"2159":2,"2166":1,"2167":1,"2168":2,"2301":2,"2545":1,"2612":1,"2736":3}}],["transform",{"2":{"1904":1,"1950":1}}],["transformation",{"2":{"1899":1,"2767":1}}],["transformations",{"2":{"169":1,"176":1,"185":1}}],["transferring",{"2":{"1859":1,"2615":1}}],["transfers",{"2":{"145":1}}],["transfer",{"2":{"107":1,"703":1,"2166":1,"2168":1,"2187":1,"2353":1,"2615":2,"2616":2}}],["transactions",{"2":{"1136":1,"2168":1}}],["transaction",{"2":{"160":1,"176":1,"191":2,"266":1,"511":2,"1217":1,"1231":1,"2168":12,"2613":1}}],["travel",{"2":{"1940":7,"2076":1,"2307":1}}],["travis",{"2":{"1":1,"17":1}}],["trapezoid",{"2":{"1430":1}}],["trailing",{"2":{"211":2,"461":1,"467":1,"468":3,"1218":2}}],["traditional",{"2":{"2480":1}}],["traditionally",{"2":{"125":1,"185":1,"240":1,"2446":1}}],["tradestation",{"2":{"43":2}}],["tracing",{"0":{"2796":1},"2":{"2301":1,"2796":3}}],["trace=x",{"2":{"2796":1}}],["traced",{"2":{"2527":1,"2796":5}}],["trace",{"2":{"2171":1,"2301":1,"2796":4}}],["traceability",{"2":{"341":1}}],["tractyl",{"2":{"114":1,"160":2}}],["tracked",{"2":{"1845":1}}],["tracker++",{"2":{"1397":1}}],["tracker",{"2":{"1397":3,"1974":5}}],["tracks",{"0":{"2142":1},"2":{"1840":1,"2142":2,"2513":1,"2796":2}}],["trackpoints",{"2":{"1891":1}}],["trackpoint",{"0":{"1326":1,"1892":1},"2":{"266":1,"1891":4,"1901":1}}],["trackpad",{"0":{"1938":1,"1942":1},"1":{"1939":1,"1940":1,"1941":1,"1943":1,"1944":1,"1945":1,"1946":1},"2":{"176":2,"249":1,"1938":1,"1939":3,"1942":1,"1943":6,"1946":4,"1960":1}}],["trackpads",{"2":{"176":1,"1938":1,"1942":1}}],["tracking",{"2":{"134":1,"683":1,"1914":1,"1936":1,"1950":1,"2676":1}}],["trackball",{"0":{"1948":1},"2":{"114":3,"118":2,"176":1,"199":1,"246":1,"1948":11}}],["track",{"2":{"74":2,"1340":2,"1703":6,"1910":1,"1943":5,"1980":1,"2144":1,"2145":19,"2185":1,"2190":1,"2311":1,"2394":10,"2432":12,"2615":1,"2796":3}}],["tolerant",{"2":{"2558":1,"2571":1}}],["toward",{"2":{"2312":1}}],["towards",{"2":{"111":1,"191":1,"194":1,"262":1,"322":1,"606":1,"1508":1,"2209":2,"2704":1}}],["to=michi",{"2":{"1352":2}}],["to=imera",{"2":{"1352":2}}],["to=liatris",{"2":{"1352":2,"1359":2}}],["to=helios",{"2":{"1352":2,"1359":2}}],["to=elite",{"2":{"1352":2,"1359":2}}],["to=rp2040",{"2":{"1352":2,"1359":2}}],["to=stemcell",{"2":{"1352":2,"1359":2}}],["to=sparkfun",{"2":{"1352":2}}],["to=bonsai",{"2":{"1352":2}}],["to=bit",{"2":{"1352":2}}],["to=blok",{"2":{"1352":2}}],["to=kb2040",{"2":{"1352":2}}],["to=proton",{"2":{"1349":1,"1352":2,"2569":1}}],["to=",{"2":{"1349":2}}],["tour",{"2":{"560":1}}],["touching",{"2":{"2312":1}}],["touchdown",{"2":{"1980":1}}],["touch",{"2":{"176":1,"211":44,"222":4,"266":1,"273":1,"276":1,"1942":1,"1943":1,"1945":4,"1946":1,"2312":2,"2318":1,"2474":2,"2602":1}}],["touchpads",{"2":{"190":1,"191":1,"244":1,"1891":1,"1900":1}}],["touchpad",{"2":{"118":2,"1899":1,"1943":1}}],["todo",{"2":{"446":1,"565":2,"566":4}}],["today",{"2":{"343":1,"344":1,"345":1}}],["token",{"2":{"598":4,"599":3,"600":5,"2471":1,"2477":1,"2545":1,"2616":6}}],["tokens",{"2":{"416":1,"432":2,"435":1}}],["tokenn",{"2":{"372":1}}],["token2",{"2":{"372":1}}],["token1",{"2":{"372":1}}],["tokyokeyboard",{"2":{"102":1,"114":1}}],["tokyo60",{"2":{"102":2,"114":2}}],["tones",{"2":{"688":6,"1424":1,"1427":1,"1434":1,"1436":1}}],["tone",{"0":{"1434":1},"2":{"222":1,"572":3,"615":1,"1369":2,"1427":1,"1434":5,"1436":1}}],["tofujr",{"2":{"236":1}}],["tofu60",{"2":{"236":2}}],["tofu",{"2":{"199":1}}],["totally",{"2":{"1958":1}}],["total",{"2":{"191":4,"674":1,"675":1,"676":1,"694":1,"1251":1,"1252":1,"1591":1,"2158":1,"2267":1,"2303":2,"2315":1,"2463":1,"2616":2,"2626":4,"2633":4,"2747":1}}],["tominabox1",{"2":{"154":5,"160":2,"222":1,"236":1}}],["tops",{"2":{"2312":1}}],["topmost",{"2":{"1375":1,"1650":1,"1652":1}}],["topic=41989",{"2":{"1335":1}}],["topic=14290",{"2":{"1334":1}}],["topic=50176",{"2":{"1326":1}}],["topic=57008",{"2":{"1312":1}}],["topics",{"0":{"602":1,"1341":1,"2762":1,"2763":1,"2764":1},"1":{"603":1,"604":1,"1342":1,"1343":1,"1344":1,"1345":1,"1346":1},"2":{"2494":1,"2762":1,"2763":2}}],["topic",{"2":{"350":5,"1337":1,"2387":1}}],["top",{"2":{"100":1,"160":1,"255":1,"349":1,"502":1,"512":1,"545":1,"609":1,"614":2,"624":1,"631":1,"671":1,"1287":1,"1307":1,"1369":1,"1372":1,"1377":2,"1435":1,"1533":2,"1571":1,"1598":1,"1722":1,"1762":1,"1763":1,"1766":1,"1860":1,"1912":1,"1925":1,"1977":1,"1983":1,"1984":1,"1987":2,"2160":1,"2181":1,"2186":1,"2207":1,"2216":1,"2312":1,"2334":1,"2338":13,"2339":13,"2348":1,"2387":1,"2444":1,"2445":2,"2462":1,"2489":1,"2513":1,"2537":1,"2547":1,"2552":2,"2593":1,"2595":1,"2605":1,"2614":1,"2616":5,"2637":3,"2653":1,"2654":1,"2655":1,"2718":1,"2725":2,"2740":1}}],["too",{"2":{"94":1,"105":1,"134":1,"138":1,"188":1,"211":1,"233":1,"471":1,"473":1,"477":1,"515":1,"555":1,"592":1,"598":1,"617":1,"626":1,"688":4,"689":3,"1280":1,"1324":2,"1362":1,"1368":1,"1369":1,"1373":1,"1401":1,"1422":1,"1438":1,"1443":1,"1447":1,"1475":1,"1545":1,"1722":1,"1841":6,"1842":1,"1960":1,"2171":2,"2195":1,"2207":1,"2209":1,"2301":1,"2311":1,"2312":1,"2313":1,"2345":1,"2450":1,"2480":1,"2530":1,"2594":1,"2603":2,"2605":2,"2751":1,"2767":1,"2796":1}}],["tool",{"2":{"182":1,"317":1,"324":1,"327":1,"331":1,"401":1,"430":1,"519":1,"541":1,"1318":1,"2221":1,"2332":1,"2368":1,"2370":1,"2372":1,"2466":1,"2605":1,"2654":1}}],["toolchains",{"2":{"331":1,"2501":1}}],["toolchain",{"0":{"325":1},"2":{"134":1,"325":1,"352":1,"2540":1,"2552":1}}],["toolbox",{"0":{"1284":1,"2490":1,"2491":1},"1":{"2491":1,"2492":1},"2":{"82":1,"119":1,"131":1,"164":2,"240":3,"292":1,"519":1,"626":1,"629":1,"1278":1,"1284":1,"1292":1,"1567":1,"2164":2,"2267":1,"2268":2,"2271":1,"2273":1,"2274":1,"2275":1,"2278":1,"2280":1,"2281":1,"2282":2,"2293":1,"2317":2,"2361":1,"2380":1,"2392":1,"2468":1,"2478":1,"2489":1,"2490":3,"2491":2,"2492":1,"2496":1}}],["tooling",{"2":{"70":1,"198":1,"317":1,"606":1,"2341":1,"2535":1}}],["tools",{"0":{"326":1,"1283":1},"1":{"1284":1,"1285":1,"1286":1},"2":{"49":1,"182":1,"318":1,"322":1,"325":1,"326":1,"328":1,"331":1,"431":2,"541":2,"606":2,"624":1,"1283":1,"1294":1,"1324":1,"1852":1,"2164":1,"2188":2,"2267":1,"2279":1,"2306":1,"2380":1,"2466":1,"2531":2,"2536":1,"2542":2,"2543":1,"2549":1,"2762":1}}],["tog",{"2":{"188":1,"191":1,"231":1,"530":2,"1986":1,"2416":1}}],["togg",{"2":{"188":2,"191":3,"235":1,"530":2,"1282":1,"1435":1,"1440":1,"1443":1,"1445":3,"1471":1,"1476":1,"1479":1,"1480":1,"1493":1,"1537":1,"1549":1,"1610":1,"1707":1,"1765":1,"1831":1,"2072":1,"2082":2,"2083":1,"2101":1,"2107":1,"2144":1,"2194":2,"2395":1,"2396":3,"2397":1,"2398":1,"2399":1,"2401":1,"2408":1,"2409":7,"2410":1,"2415":1,"2418":1,"2422":1,"2435":7,"2529":1,"2611":1}}],["toggling",{"0":{"1372":1},"1":{"1373":1},"2":{"49":1,"1256":1,"1368":1,"1960":1,"1965":1,"1974":1,"1975":1,"1998":1,"2082":1,"2209":1,"2301":1,"2564":1,"2744":1}}],["toggles",{"0":{"2075":1},"2":{"690":1,"1171":1,"1369":1,"1372":1,"1378":1,"1431":1,"1435":1,"1440":1,"1443":1,"1445":3,"1471":1,"1480":1,"1486":1,"1542":1,"1549":1,"1564":1,"2101":1,"2196":1,"2199":1,"2396":3,"2397":1,"2398":1,"2401":1,"2406":1,"2409":1,"2418":1,"2435":1,"2529":1,"2530":1,"2776":1}}],["toggled",{"2":{"506":1,"674":1,"691":1,"1372":1,"2530":1,"2563":1,"2605":1}}],["toggleterminal",{"2":{"291":1,"2547":1}}],["togglepin",{"2":{"243":1}}],["toggle",{"0":{"1510":1,"1522":1,"1773":1,"1774":1,"2000":1,"2001":1,"2209":1},"2":{"38":1,"49":2,"93":1,"112":2,"114":1,"145":1,"160":1,"211":1,"222":1,"231":3,"243":1,"505":6,"691":1,"696":1,"1325":1,"1368":1,"1372":4,"1435":1,"1440":1,"1443":1,"1445":3,"1471":1,"1479":1,"1480":1,"1483":1,"1486":1,"1493":3,"1510":1,"1522":1,"1537":1,"1542":1,"1549":2,"1564":1,"1568":6,"1610":8,"1620":3,"1706":1,"1707":2,"1765":2,"1773":1,"1774":1,"1831":2,"1959":1,"1960":1,"1965":2,"1966":2,"1974":4,"1975":4,"1979":4,"1986":1,"2000":1,"2001":1,"2072":2,"2082":2,"2091":4,"2107":2,"2144":3,"2145":7,"2194":9,"2196":1,"2199":1,"2209":1,"2278":1,"2288":1,"2301":1,"2395":2,"2396":3,"2397":1,"2398":1,"2399":3,"2401":1,"2406":1,"2408":2,"2409":13,"2410":2,"2415":2,"2416":1,"2418":1,"2422":4,"2435":13,"2529":2,"2530":2,"2563":1,"2564":1,"2611":2,"2713":1,"2730":1,"2776":1}}],["together",{"2":{"72":1,"322":1,"457":1,"516":1,"550":1,"609":1,"852":1,"1023":1,"1057":1,"1122":1,"1249":1,"1321":1,"1546":1,"1548":1,"1855":1,"1901":1,"1910":1,"2069":1,"2098":1,"2171":1,"2205":1,"2299":1,"2311":2,"2343":1,"2388":1,"2449":1,"2489":1,"2605":1}}],["to",{"0":{"3":1,"4":1,"5":1,"6":1,"7":1,"15":1,"16":1,"17":1,"21":1,"24":1,"25":1,"26":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"43":1,"46":1,"57":1,"153":1,"164":1,"166":1,"173":1,"263":1,"265":1,"275":1,"461":1,"528":1,"550":1,"551":1,"567":1,"608":1,"609":1,"613":1,"614":1,"627":1,"1290":1,"1295":1,"1300":1,"1301":1,"1381":1,"1449":1,"1556":1,"1589":1,"1590":1,"1694":2,"1714":1,"1715":1,"1837":1,"1925":1,"1967":1,"1968":1,"1972":2,"1974":1,"1979":1,"2077":1,"2199":1,"2303":1,"2320":1,"2357":1,"2359":1,"2463":1,"2477":1,"2485":1,"2511":1,"2556":1,"2592":1,"2640":1,"2648":1,"2785":1},"1":{"31":1,"34":1,"36":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"551":1,"568":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"1301":1,"1838":1,"1839":1,"1969":1,"1970":1,"1971":1,"1972":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2600":1,"2601":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1},"2":{"0":1,"1":2,"2":3,"3":1,"4":2,"5":3,"6":4,"7":1,"9":1,"10":9,"12":1,"14":4,"15":1,"16":2,"17":1,"19":1,"21":2,"22":2,"23":2,"24":3,"25":3,"26":1,"27":1,"28":5,"30":3,"31":5,"32":3,"33":3,"34":5,"36":2,"37":2,"38":1,"39":1,"43":2,"45":6,"46":3,"48":1,"49":21,"50":9,"51":2,"52":1,"56":2,"58":1,"62":1,"63":4,"64":4,"65":4,"69":2,"70":6,"72":1,"73":3,"74":8,"75":2,"76":5,"77":3,"82":5,"83":1,"87":3,"88":2,"89":1,"90":6,"92":3,"93":14,"94":5,"95":2,"98":2,"99":5,"100":2,"103":2,"104":2,"105":3,"107":5,"109":1,"110":3,"112":2,"113":6,"114":48,"116":1,"118":4,"119":8,"120":2,"123":4,"124":6,"125":9,"126":3,"127":2,"128":2,"130":3,"131":1,"132":3,"133":8,"134":38,"137":3,"138":11,"139":4,"141":2,"142":2,"143":4,"145":27,"148":1,"151":1,"153":1,"160":60,"163":2,"164":4,"166":1,"167":4,"169":2,"170":1,"172":5,"173":5,"174":4,"175":1,"176":32,"179":1,"182":6,"184":2,"185":9,"186":2,"187":1,"188":3,"189":4,"191":40,"194":8,"195":7,"198":3,"199":36,"201":4,"202":4,"203":3,"204":1,"206":4,"209":3,"211":64,"213":5,"214":1,"215":2,"218":3,"220":3,"221":2,"222":28,"224":2,"228":7,"230":3,"231":3,"232":4,"233":5,"234":4,"235":4,"236":33,"240":7,"241":1,"243":1,"244":3,"245":2,"246":1,"247":1,"249":38,"253":1,"255":4,"256":1,"257":1,"258":1,"259":2,"262":2,"263":4,"265":5,"266":87,"268":4,"270":1,"271":1,"272":5,"273":5,"275":3,"276":5,"277":24,"278":2,"279":4,"282":21,"284":1,"291":2,"292":1,"302":3,"303":1,"304":4,"308":1,"309":1,"310":2,"311":1,"312":1,"313":2,"314":2,"315":2,"317":6,"318":2,"319":1,"320":2,"322":1,"323":1,"324":2,"325":1,"326":1,"327":1,"330":2,"331":8,"334":2,"335":4,"336":1,"337":1,"340":4,"341":19,"343":2,"344":2,"345":3,"346":2,"349":8,"350":10,"351":1,"352":14,"353":1,"354":4,"355":1,"356":1,"357":2,"358":2,"360":3,"361":1,"363":1,"364":2,"367":4,"370":3,"371":5,"373":1,"374":4,"375":3,"376":3,"378":2,"384":2,"388":2,"389":1,"390":1,"391":1,"393":6,"394":4,"396":3,"397":2,"399":3,"400":3,"401":3,"402":1,"403":4,"404":1,"405":5,"407":1,"408":1,"409":2,"410":1,"411":4,"414":1,"415":2,"416":2,"417":1,"418":1,"423":2,"424":1,"426":1,"427":1,"428":2,"429":4,"430":6,"431":2,"432":4,"433":3,"434":1,"435":9,"436":4,"437":1,"440":3,"441":5,"442":2,"445":2,"446":3,"447":1,"450":4,"451":2,"452":3,"453":7,"454":4,"455":5,"456":1,"457":6,"460":1,"462":1,"465":1,"466":3,"468":4,"469":2,"470":1,"471":2,"472":1,"473":2,"474":2,"477":1,"478":1,"479":6,"481":5,"482":3,"483":3,"484":2,"485":1,"488":1,"496":6,"498":1,"499":2,"500":2,"502":13,"504":2,"505":19,"506":11,"507":1,"509":8,"510":4,"511":3,"512":1,"513":6,"515":6,"516":4,"519":3,"520":1,"521":2,"522":2,"526":2,"527":2,"528":2,"529":5,"530":4,"532":2,"533":1,"534":4,"535":1,"537":7,"538":1,"541":3,"542":1,"543":1,"545":1,"546":2,"548":1,"550":4,"551":7,"552":2,"554":17,"555":1,"556":6,"557":5,"558":1,"559":2,"560":13,"561":3,"562":1,"563":2,"564":3,"565":2,"566":5,"567":4,"568":1,"569":2,"570":7,"571":3,"573":1,"574":4,"580":4,"581":2,"582":2,"584":2,"585":1,"586":1,"587":3,"588":7,"592":5,"593":3,"594":3,"595":2,"596":3,"597":5,"598":5,"599":1,"600":1,"601":1,"602":3,"605":1,"606":10,"607":7,"608":1,"609":7,"610":8,"611":5,"612":1,"613":4,"614":5,"615":2,"616":2,"617":1,"618":2,"621":7,"622":1,"623":4,"624":2,"625":2,"626":9,"627":4,"628":3,"629":3,"630":3,"631":2,"633":2,"635":1,"636":3,"638":2,"639":2,"641":4,"642":1,"643":2,"644":4,"648":3,"650":3,"651":1,"653":2,"654":1,"655":2,"656":6,"657":3,"658":1,"659":4,"662":1,"664":2,"666":3,"668":3,"669":1,"670":1,"671":4,"673":3,"674":5,"675":5,"677":1,"678":7,"679":12,"680":5,"681":3,"682":2,"683":1,"684":1,"685":1,"686":4,"687":4,"688":1,"689":7,"690":6,"691":2,"693":1,"694":3,"695":2,"698":5,"699":1,"700":2,"701":5,"702":2,"703":8,"707":3,"708":1,"709":5,"712":5,"714":1,"715":7,"717":1,"718":7,"721":4,"724":4,"726":2,"727":1,"729":1,"730":2,"731":3,"733":1,"734":4,"740":1,"742":3,"744":3,"746":1,"748":1,"753":1,"754":1,"755":1,"756":2,"757":3,"758":2,"759":1,"760":4,"763":1,"767":1,"769":3,"771":3,"773":1,"775":1,"780":1,"782":1,"784":1,"785":2,"786":3,"787":2,"788":1,"789":3,"790":3,"791":1,"792":5,"795":1,"799":1,"801":3,"803":3,"805":1,"807":1,"812":1,"814":1,"816":1,"817":2,"818":3,"819":2,"820":2,"821":1,"822":5,"825":1,"829":1,"831":1,"833":3,"835":3,"837":1,"839":1,"844":1,"846":1,"848":1,"849":2,"850":3,"851":2,"852":1,"853":1,"854":3,"855":3,"856":1,"857":5,"860":1,"864":1,"866":1,"868":3,"870":3,"872":1,"874":1,"879":1,"881":1,"883":1,"884":2,"885":3,"886":2,"887":1,"888":3,"889":3,"890":1,"891":5,"894":1,"898":1,"900":1,"902":3,"904":3,"906":1,"908":1,"913":1,"915":1,"917":1,"918":2,"919":3,"920":2,"921":1,"922":3,"923":3,"924":1,"925":5,"928":1,"932":1,"934":1,"936":3,"938":3,"940":1,"942":1,"947":1,"949":1,"951":1,"952":2,"953":3,"954":2,"955":1,"956":3,"957":3,"958":1,"959":5,"962":1,"966":1,"968":1,"970":3,"972":3,"974":1,"976":1,"981":1,"983":1,"985":1,"986":2,"987":3,"988":2,"989":1,"990":3,"991":3,"992":1,"993":5,"996":1,"1000":1,"1002":1,"1004":3,"1006":3,"1008":1,"1010":1,"1015":1,"1017":1,"1019":1,"1020":2,"1021":3,"1022":2,"1023":1,"1024":3,"1025":3,"1026":1,"1027":5,"1030":1,"1034":1,"1036":1,"1038":3,"1040":3,"1042":1,"1044":1,"1049":1,"1051":1,"1053":1,"1054":2,"1055":3,"1056":2,"1057":1,"1058":3,"1059":3,"1060":1,"1061":5,"1064":1,"1068":1,"1070":1,"1072":3,"1074":3,"1076":1,"1078":1,"1083":1,"1085":1,"1087":1,"1088":2,"1089":3,"1090":2,"1091":1,"1092":3,"1093":3,"1094":1,"1095":5,"1098":1,"1102":1,"1104":1,"1106":3,"1108":3,"1110":1,"1112":1,"1117":1,"1119":1,"1121":1,"1123":2,"1124":3,"1125":2,"1126":6,"1127":5,"1128":3,"1129":9,"1130":6,"1132":2,"1133":3,"1134":1,"1136":1,"1137":2,"1138":3,"1142":2,"1143":1,"1144":2,"1145":3,"1146":2,"1147":1,"1148":5,"1151":1,"1155":1,"1157":1,"1159":3,"1161":3,"1164":1,"1166":1,"1169":2,"1170":2,"1171":3,"1172":1,"1173":1,"1174":2,"1177":3,"1179":3,"1180":1,"1181":2,"1182":3,"1183":2,"1184":1,"1185":5,"1188":1,"1192":1,"1194":1,"1196":3,"1198":3,"1200":1,"1202":1,"1207":1,"1209":1,"1211":1,"1212":2,"1213":5,"1214":12,"1218":6,"1220":1,"1221":1,"1225":1,"1226":4,"1229":4,"1232":1,"1233":2,"1234":1,"1235":9,"1238":1,"1240":1,"1242":1,"1244":4,"1246":4,"1247":1,"1249":1,"1250":2,"1251":2,"1252":1,"1253":3,"1254":7,"1256":1,"1257":1,"1258":3,"1259":1,"1260":2,"1261":1,"1262":5,"1263":6,"1264":3,"1265":2,"1266":1,"1267":7,"1269":1,"1270":1,"1271":6,"1272":4,"1273":4,"1275":2,"1276":1,"1277":1,"1278":2,"1279":1,"1280":5,"1282":4,"1283":1,"1284":1,"1285":1,"1286":1,"1287":1,"1288":1,"1289":4,"1290":3,"1291":2,"1295":1,"1296":2,"1297":1,"1298":1,"1299":3,"1301":5,"1302":3,"1304":2,"1305":1,"1306":2,"1307":5,"1308":4,"1309":1,"1310":1,"1312":3,"1313":1,"1315":4,"1316":1,"1317":1,"1318":2,"1321":1,"1323":1,"1324":8,"1325":4,"1326":1,"1327":2,"1328":2,"1329":1,"1331":2,"1332":1,"1335":2,"1336":1,"1337":13,"1339":4,"1340":7,"1341":3,"1347":3,"1348":1,"1349":4,"1350":2,"1351":4,"1352":13,"1353":4,"1355":1,"1356":4,"1357":4,"1358":2,"1359":5,"1360":1,"1361":1,"1362":8,"1363":4,"1365":1,"1366":1,"1367":3,"1368":8,"1369":27,"1370":2,"1371":2,"1372":13,"1373":10,"1374":3,"1375":3,"1376":1,"1377":3,"1378":8,"1380":1,"1381":4,"1383":7,"1384":2,"1385":1,"1386":2,"1388":3,"1389":4,"1390":6,"1391":1,"1392":5,"1393":2,"1396":12,"1397":5,"1398":2,"1399":1,"1400":2,"1401":3,"1402":1,"1403":1,"1404":2,"1405":2,"1407":3,"1412":1,"1413":3,"1414":5,"1415":2,"1416":1,"1417":3,"1418":1,"1420":5,"1421":9,"1422":18,"1423":4,"1424":2,"1425":2,"1427":2,"1428":6,"1429":1,"1430":7,"1431":1,"1432":5,"1433":6,"1434":3,"1435":7,"1436":7,"1437":3,"1438":1,"1439":2,"1440":10,"1441":2,"1442":10,"1443":7,"1445":1,"1447":1,"1448":2,"1449":3,"1450":1,"1451":1,"1452":1,"1453":9,"1460":3,"1467":3,"1468":7,"1470":2,"1472":11,"1474":4,"1475":6,"1476":4,"1477":2,"1478":7,"1479":3,"1482":4,"1483":2,"1484":4,"1485":6,"1486":1,"1487":4,"1488":17,"1489":9,"1490":3,"1491":1,"1493":1,"1494":4,"1495":4,"1496":7,"1499":4,"1501":5,"1504":2,"1506":8,"1507":3,"1508":6,"1517":2,"1519":1,"1528":3,"1529":4,"1530":1,"1532":9,"1533":4,"1534":6,"1535":4,"1536":6,"1537":5,"1538":2,"1541":2,"1542":1,"1543":3,"1544":2,"1545":5,"1546":1,"1547":1,"1548":3,"1549":1,"1551":3,"1552":5,"1553":2,"1555":12,"1556":1,"1557":1,"1558":1,"1560":1,"1561":2,"1562":2,"1563":2,"1564":2,"1565":7,"1566":4,"1567":4,"1568":9,"1569":2,"1570":1,"1571":2,"1572":4,"1575":4,"1576":1,"1584":2,"1585":4,"1586":2,"1589":3,"1590":1,"1591":8,"1592":4,"1593":3,"1594":3,"1595":2,"1596":2,"1597":4,"1598":3,"1599":2,"1601":1,"1602":1,"1605":3,"1606":1,"1608":3,"1610":4,"1611":13,"1612":2,"1614":1,"1615":4,"1617":2,"1618":1,"1620":4,"1627":1,"1628":1,"1629":6,"1631":1,"1632":2,"1635":2,"1637":1,"1639":2,"1641":1,"1642":5,"1643":3,"1644":1,"1645":1,"1646":1,"1647":1,"1648":1,"1650":2,"1652":2,"1655":1,"1656":2,"1658":1,"1660":3,"1661":1,"1662":2,"1663":1,"1665":3,"1666":1,"1667":3,"1668":1,"1669":1,"1670":1,"1671":5,"1676":2,"1678":1,"1679":1,"1681":2,"1683":2,"1685":1,"1688":2,"1689":2,"1692":1,"1693":8,"1695":6,"1696":2,"1697":1,"1699":1,"1700":1,"1701":1,"1703":3,"1704":3,"1706":4,"1708":23,"1709":2,"1710":2,"1711":3,"1712":4,"1713":3,"1714":4,"1715":11,"1716":3,"1717":2,"1720":2,"1721":5,"1722":11,"1723":5,"1724":1,"1732":1,"1733":1,"1738":1,"1741":2,"1744":3,"1747":4,"1750":5,"1752":3,"1753":2,"1754":1,"1756":2,"1758":2,"1760":3,"1761":3,"1762":3,"1763":14,"1764":2,"1766":6,"1767":8,"1768":6,"1771":3,"1774":1,"1776":1,"1778":1,"1782":2,"1784":1,"1786":2,"1787":1,"1788":2,"1789":1,"1790":2,"1791":1,"1792":2,"1796":1,"1798":1,"1800":1,"1802":1,"1804":1,"1806":2,"1807":1,"1808":2,"1810":1,"1814":1,"1816":1,"1817":1,"1818":1,"1821":1,"1823":1,"1825":3,"1827":2,"1828":2,"1829":5,"1831":49,"1832":2,"1836":1,"1837":2,"1838":2,"1839":5,"1840":3,"1841":7,"1842":4,"1843":9,"1844":7,"1845":11,"1846":1,"1850":3,"1851":1,"1852":2,"1853":5,"1854":4,"1855":10,"1857":1,"1858":11,"1859":9,"1860":31,"1863":2,"1864":1,"1865":1,"1866":3,"1868":5,"1870":6,"1871":1,"1876":2,"1878":2,"1880":2,"1882":2,"1884":2,"1886":1,"1891":5,"1892":1,"1896":4,"1899":4,"1900":1,"1901":9,"1902":1,"1903":2,"1904":1,"1905":2,"1906":2,"1907":2,"1910":4,"1911":5,"1912":3,"1913":2,"1914":4,"1916":2,"1919":4,"1920":5,"1921":1,"1922":3,"1923":1,"1924":1,"1925":11,"1926":4,"1927":1,"1930":1,"1932":2,"1933":4,"1934":2,"1935":6,"1936":4,"1937":11,"1938":2,"1939":3,"1940":5,"1942":2,"1943":9,"1944":1,"1945":3,"1946":2,"1947":5,"1948":3,"1949":7,"1950":18,"1951":3,"1952":7,"1953":1,"1954":7,"1955":3,"1956":15,"1958":2,"1959":5,"1960":8,"1961":1,"1963":3,"1964":4,"1965":4,"1966":2,"1967":1,"1968":1,"1969":3,"1970":2,"1972":1,"1974":4,"1975":3,"1977":3,"1978":5,"1979":2,"1981":1,"1982":3,"1983":3,"1984":14,"1985":2,"1986":3,"1987":21,"1988":7,"1989":1,"1990":8,"1991":5,"1992":10,"1995":3,"1996":1,"1997":7,"1998":2,"2001":1,"2003":1,"2005":1,"2009":4,"2011":3,"2013":2,"2014":1,"2015":2,"2016":1,"2017":2,"2018":1,"2019":2,"2023":1,"2025":1,"2027":1,"2029":1,"2031":1,"2033":1,"2035":1,"2037":1,"2039":1,"2041":1,"2043":1,"2045":2,"2046":1,"2047":2,"2049":1,"2051":6,"2052":1,"2053":6,"2059":1,"2061":1,"2062":1,"2063":1,"2066":1,"2068":1,"2069":6,"2070":9,"2071":1,"2072":1,"2073":11,"2075":2,"2076":12,"2077":1,"2078":6,"2079":3,"2080":11,"2082":6,"2083":2,"2084":2,"2085":3,"2086":1,"2089":20,"2090":7,"2091":3,"2092":9,"2093":3,"2096":5,"2097":2,"2098":3,"2099":6,"2101":3,"2102":3,"2103":1,"2104":3,"2105":1,"2106":1,"2107":1,"2108":4,"2110":2,"2111":1,"2112":2,"2113":2,"2114":3,"2116":1,"2117":1,"2120":1,"2122":2,"2124":1,"2126":2,"2128":1,"2130":2,"2132":2,"2134":2,"2136":2,"2138":1,"2139":1,"2140":2,"2141":1,"2142":2,"2143":1,"2144":3,"2145":4,"2149":1,"2150":2,"2151":11,"2152":1,"2154":2,"2155":2,"2156":3,"2157":1,"2158":3,"2159":3,"2160":2,"2161":2,"2162":6,"2163":14,"2164":9,"2165":6,"2166":11,"2167":19,"2168":20,"2169":10,"2171":6,"2172":3,"2175":4,"2176":2,"2177":5,"2178":2,"2179":9,"2180":2,"2181":26,"2183":14,"2184":10,"2185":5,"2186":4,"2187":8,"2188":10,"2190":13,"2191":4,"2192":1,"2193":2,"2194":1,"2195":3,"2196":1,"2199":10,"2200":10,"2202":2,"2205":3,"2206":2,"2207":25,"2208":4,"2209":21,"2210":6,"2212":4,"2213":1,"2215":1,"2216":2,"2217":7,"2218":7,"2219":10,"2220":9,"2221":17,"2222":7,"2227":1,"2228":1,"2229":1,"2238":1,"2240":1,"2242":1,"2254":1,"2255":1,"2259":1,"2263":2,"2264":7,"2265":1,"2266":5,"2267":5,"2268":4,"2269":7,"2271":7,"2272":2,"2273":4,"2274":3,"2275":3,"2276":11,"2278":5,"2279":2,"2280":5,"2281":3,"2282":2,"2283":8,"2285":8,"2287":8,"2288":9,"2289":3,"2291":8,"2293":3,"2294":3,"2295":1,"2296":1,"2298":2,"2299":4,"2300":21,"2301":34,"2302":1,"2303":14,"2306":2,"2307":10,"2308":2,"2309":5,"2311":9,"2312":16,"2313":12,"2314":7,"2315":12,"2316":5,"2317":1,"2318":8,"2319":2,"2320":1,"2321":2,"2323":2,"2325":2,"2328":4,"2329":2,"2330":1,"2331":5,"2334":4,"2336":2,"2337":1,"2338":2,"2339":3,"2340":1,"2341":4,"2342":2,"2343":3,"2344":6,"2345":2,"2346":3,"2348":5,"2349":1,"2350":18,"2351":1,"2353":1,"2354":4,"2355":2,"2356":3,"2357":1,"2358":5,"2359":3,"2362":1,"2363":2,"2364":1,"2365":5,"2366":7,"2367":9,"2368":2,"2369":2,"2370":1,"2371":2,"2372":2,"2373":2,"2374":1,"2378":1,"2380":1,"2382":2,"2383":2,"2385":1,"2386":8,"2387":5,"2388":3,"2389":2,"2390":3,"2391":1,"2392":12,"2393":3,"2396":1,"2399":1,"2406":1,"2410":49,"2411":3,"2418":1,"2423":7,"2434":1,"2435":3,"2436":1,"2437":3,"2439":1,"2440":2,"2441":5,"2442":5,"2443":2,"2444":4,"2445":1,"2446":4,"2447":3,"2448":1,"2449":1,"2450":11,"2452":3,"2453":7,"2454":3,"2456":7,"2457":4,"2459":1,"2460":5,"2461":2,"2462":3,"2463":8,"2464":7,"2465":4,"2466":3,"2467":4,"2468":5,"2469":1,"2470":2,"2471":1,"2472":3,"2474":1,"2475":4,"2476":1,"2477":1,"2478":5,"2479":4,"2480":8,"2481":5,"2482":3,"2483":2,"2484":6,"2485":8,"2486":2,"2487":3,"2488":1,"2489":6,"2490":3,"2491":4,"2492":4,"2493":9,"2494":3,"2495":3,"2496":5,"2497":4,"2498":2,"2499":1,"2501":2,"2503":1,"2505":2,"2506":2,"2507":12,"2508":6,"2509":2,"2511":8,"2512":2,"2513":16,"2514":4,"2515":5,"2516":13,"2517":1,"2518":1,"2520":2,"2521":1,"2525":4,"2526":14,"2527":22,"2528":4,"2529":11,"2530":6,"2531":3,"2533":1,"2534":4,"2535":1,"2536":8,"2537":3,"2538":1,"2540":1,"2541":3,"2542":3,"2543":3,"2545":4,"2546":3,"2547":11,"2548":1,"2549":5,"2551":7,"2552":28,"2553":3,"2554":2,"2557":2,"2558":1,"2560":4,"2561":2,"2562":3,"2563":17,"2564":5,"2565":2,"2568":2,"2569":6,"2572":5,"2573":3,"2574":2,"2575":1,"2576":1,"2578":5,"2579":1,"2580":3,"2581":3,"2583":4,"2584":1,"2585":7,"2587":11,"2588":4,"2589":1,"2590":1,"2591":3,"2592":8,"2593":2,"2594":1,"2595":3,"2596":2,"2597":4,"2598":4,"2599":2,"2603":9,"2604":6,"2605":39,"2606":8,"2607":5,"2608":6,"2610":2,"2611":1,"2612":7,"2613":7,"2614":15,"2615":42,"2616":61,"2617":7,"2618":4,"2620":6,"2621":1,"2623":6,"2625":1,"2626":2,"2629":1,"2630":1,"2633":2,"2634":3,"2636":3,"2637":7,"2638":1,"2639":3,"2640":1,"2642":2,"2644":6,"2645":3,"2646":4,"2647":3,"2648":2,"2649":5,"2650":3,"2651":1,"2652":1,"2653":13,"2654":10,"2655":3,"2656":1,"2658":1,"2659":2,"2665":1,"2666":2,"2667":1,"2682":1,"2683":2,"2684":2,"2686":2,"2687":2,"2690":1,"2692":1,"2695":3,"2700":1,"2701":2,"2702":1,"2703":1,"2705":2,"2710":4,"2711":3,"2713":2,"2714":3,"2715":4,"2716":7,"2717":1,"2718":2,"2720":1,"2721":1,"2722":4,"2723":3,"2724":6,"2725":5,"2726":1,"2727":10,"2728":6,"2729":1,"2730":2,"2731":3,"2732":6,"2733":7,"2734":10,"2735":7,"2736":17,"2737":1,"2738":4,"2739":2,"2740":3,"2741":7,"2743":7,"2744":6,"2745":5,"2746":2,"2747":2,"2748":6,"2750":4,"2751":2,"2753":2,"2757":5,"2758":9,"2759":1,"2761":3,"2762":3,"2763":3,"2764":2,"2765":1,"2766":8,"2767":20,"2768":3,"2769":2,"2773":2,"2774":5,"2775":5,"2776":11,"2777":15,"2778":1,"2779":2,"2780":2,"2781":2,"2782":1,"2783":3,"2784":3,"2785":11,"2786":4,"2787":4,"2788":7,"2789":2,"2790":3,"2791":3,"2792":6,"2793":2,"2794":4,"2795":3,"2796":17}}],["th",{"2":{"1565":1}}],["th+tl",{"2":{"1251":1}}],["thus",{"2":{"341":1,"1134":1,"1254":1,"1327":1,"1337":1,"1412":1,"1451":1,"1536":1,"1715":1,"2160":1,"2209":1,"2273":1,"2354":1,"2359":1,"2513":1,"2574":1,"2581":1,"2741":1,"2767":1,"2774":1,"2777":1}}],["thumb",{"2":{"199":1}}],["threads",{"2":{"2303":1}}],["threading",{"0":{"478":1}}],["threshold",{"0":{"246":1},"2":{"246":2,"249":1,"1969":1}}],["three",{"0":{"299":1,"1743":1},"1":{"1744":1,"1745":1},"2":{"98":1,"191":1,"196":1,"282":1,"299":1,"462":1,"496":1,"546":1,"574":1,"580":1,"1310":1,"1453":1,"1470":1,"1471":1,"1488":1,"1547":2,"1600":2,"1711":2,"1718":1,"1721":1,"1752":1,"1840":1,"1851":1,"1860":1,"1891":1,"2082":1,"2143":2,"2175":2,"2190":2,"2198":1,"2200":3,"2207":1,"2220":1,"2350":1,"2394":1,"2766":1,"2767":2,"2768":1}}],["throttling",{"2":{"2166":1}}],["throttled",{"2":{"2168":1}}],["throttle",{"2":{"160":1,"511":1,"1943":1,"1952":2,"2166":1,"2613":1,"2616":6}}],["throtting",{"2":{"587":1}}],["thrown",{"2":{"516":1}}],["throw",{"2":{"114":1,"1324":1}}],["throughout",{"2":{"1693":1}}],["through",{"0":{"1381":1},"2":{"110":1,"145":1,"166":1,"224":1,"232":1,"315":1,"354":2,"374":1,"502":1,"529":1,"534":1,"574":1,"580":1,"606":1,"630":1,"690":1,"1169":1,"1279":1,"1302":1,"1364":1,"1372":1,"1381":1,"1383":1,"1412":1,"1422":1,"1430":1,"1433":1,"1434":2,"1439":2,"1440":2,"1445":3,"1457":1,"1458":1,"1463":1,"1464":2,"1482":1,"1491":1,"1493":1,"1508":1,"1513":1,"1535":1,"1537":1,"1597":2,"1611":2,"1671":2,"1765":2,"1977":1,"1986":2,"1987":1,"1989":1,"2072":2,"2073":1,"2129":1,"2131":1,"2133":1,"2135":1,"2143":1,"2199":1,"2200":1,"2217":1,"2221":1,"2222":2,"2271":1,"2303":1,"2305":1,"2307":1,"2311":1,"2313":1,"2316":1,"2325":1,"2342":1,"2350":3,"2354":1,"2358":1,"2363":1,"2390":1,"2396":3,"2399":1,"2408":2,"2415":2,"2416":2,"2423":2,"2442":1,"2443":1,"2498":1,"2511":1,"2540":1,"2552":1,"2567":1,"2585":1,"2587":1,"2590":2,"2605":3,"2607":1,"2610":1,"2616":3,"2664":1,"2738":2,"2758":1,"2782":1}}],["thomas",{"2":{"2376":1,"2518":1}}],["thoughts",{"0":{"2751":1}}],["thought",{"2":{"482":1,"2314":1,"2456":1}}],["though",{"2":{"50":1,"334":1,"1330":1,"1339":1,"1414":1,"1427":1,"1448":1,"1478":1,"1491":1,"1708":1,"1712":1,"1713":1,"2308":1,"2311":1,"2313":1,"2527":1}}],["those",{"2":{"33":1,"49":1,"113":1,"175":1,"263":1,"265":1,"276":1,"303":1,"317":1,"430":1,"454":1,"479":1,"519":1,"541":2,"557":1,"643":1,"655":1,"678":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1129":1,"1181":1,"1250":1,"1308":1,"1310":1,"1317":1,"1420":1,"1422":1,"1423":1,"1440":1,"1453":1,"1472":1,"1715":1,"1721":1,"1754":1,"1771":1,"1859":1,"1896":1,"1995":1,"2190":1,"2219":1,"2303":1,"2315":1,"2353":1,"2445":1,"2457":1,"2474":1,"2480":1,"2547":1,"2568":1,"2587":1,"2596":1,"2610":1,"2615":1,"2640":1,"2649":1,"2743":1,"2744":1,"2758":1,"2767":1,"2777":1,"2779":2,"2785":2,"2792":2,"2794":1}}],["thickness",{"2":{"2306":1}}],["thicker",{"2":{"1943":1}}],["thiers",{"2":{"1478":1}}],["thier",{"2":{"1477":3,"1478":8}}],["thing",{"0":{"551":1},"2":{"213":1,"484":1,"509":1,"1297":1,"1337":1,"1349":1,"1368":1,"1396":3,"2207":1,"2358":1,"2596":1,"2741":1,"2779":1,"2791":1}}],["things",{"0":{"2197":1},"1":{"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1},"2":{"50":1,"113":1,"119":1,"143":1,"230":1,"278":1,"304":1,"352":1,"353":1,"389":1,"390":1,"391":1,"454":1,"455":1,"462":1,"501":1,"551":1,"560":2,"561":1,"567":1,"572":1,"574":1,"607":1,"630":1,"1299":1,"1324":1,"1397":1,"1400":1,"1440":1,"1441":1,"1453":1,"1535":1,"1825":1,"1892":1,"2167":2,"2171":1,"2190":2,"2207":1,"2216":1,"2269":1,"2276":1,"2300":1,"2303":1,"2312":2,"2316":1,"2318":2,"2338":1,"2350":1,"2357":1,"2387":1,"2446":1,"2447":1,"2456":2,"2489":1,"2511":2,"2543":1,"2546":1,"2563":1,"2592":1,"2608":1,"2744":1}}],["thinkpad",{"2":{"1327":1,"1891":1}}],["thinking",{"2":{"243":1}}],["thinks",{"2":{"182":1}}],["think",{"2":{"119":1,"228":1,"453":1,"455":1,"481":1,"554":1,"560":1,"1279":1,"1449":2,"1689":1,"2344":1,"2350":1,"2603":1,"2740":1,"2782":1,"2796":1}}],["third",{"2":{"49":1,"317":1,"550":1,"598":1,"686":1,"1443":1,"1713":1,"1744":1,"1747":1,"1750":1,"2193":2,"2199":1,"2207":1,"2210":1,"2221":1,"2605":1,"2759":1}}],["this",{"0":{"551":1,"1289":1},"2":{"0":1,"3":1,"5":1,"6":2,"10":1,"11":2,"14":2,"15":1,"16":1,"21":1,"23":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":1,"36":3,"45":2,"49":6,"50":2,"69":1,"70":2,"87":1,"88":1,"90":2,"99":3,"103":1,"104":1,"107":1,"111":1,"116":1,"119":1,"120":1,"123":1,"125":3,"126":2,"127":1,"131":1,"132":2,"133":1,"137":2,"139":1,"141":1,"154":2,"160":1,"163":1,"164":1,"172":2,"173":1,"182":2,"185":3,"187":1,"189":1,"190":1,"194":4,"198":1,"201":2,"209":1,"211":1,"213":3,"214":1,"215":2,"218":2,"221":1,"224":1,"228":2,"229":1,"230":2,"231":1,"233":1,"240":1,"243":1,"244":1,"251":1,"255":2,"256":1,"262":1,"263":5,"265":1,"268":1,"271":1,"273":4,"275":1,"276":2,"278":1,"279":1,"284":1,"286":1,"288":1,"290":6,"291":1,"292":1,"293":2,"300":1,"302":2,"303":1,"306":1,"307":1,"308":1,"309":1,"311":2,"312":1,"315":1,"316":2,"319":1,"322":3,"323":1,"324":1,"326":1,"327":1,"328":1,"331":4,"334":1,"335":2,"337":3,"340":1,"341":3,"342":1,"343":1,"344":1,"345":1,"349":3,"350":5,"351":1,"352":2,"355":1,"358":1,"365":1,"366":2,"370":2,"371":3,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":2,"380":1,"381":1,"382":1,"383":2,"384":1,"385":1,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":2,"394":2,"395":2,"396":2,"397":1,"399":1,"400":1,"401":2,"402":3,"403":3,"404":2,"405":1,"406":1,"407":2,"408":2,"409":2,"410":2,"411":3,"412":1,"413":1,"415":1,"427":1,"429":1,"430":5,"433":1,"434":1,"435":1,"436":3,"440":1,"446":2,"447":1,"448":1,"450":2,"453":2,"457":1,"464":1,"465":2,"466":1,"467":1,"470":1,"478":1,"480":1,"481":1,"482":2,"483":1,"484":1,"485":2,"495":1,"496":1,"497":1,"498":2,"500":1,"501":1,"502":1,"504":1,"505":3,"508":1,"510":2,"511":1,"512":1,"513":2,"515":2,"516":3,"517":1,"520":1,"521":2,"523":2,"524":2,"525":1,"528":1,"529":8,"532":1,"533":1,"534":6,"535":1,"536":1,"539":2,"541":4,"550":2,"554":1,"556":1,"557":1,"558":1,"560":3,"563":1,"564":2,"565":1,"566":3,"567":1,"570":2,"572":2,"574":2,"575":4,"576":1,"578":2,"580":5,"581":3,"582":1,"585":2,"586":2,"587":1,"588":1,"589":3,"592":5,"596":1,"597":2,"598":4,"599":1,"600":1,"601":1,"602":3,"605":1,"606":3,"608":1,"609":3,"610":4,"611":1,"613":3,"614":1,"615":1,"616":4,"619":2,"620":2,"621":1,"622":1,"623":1,"624":2,"626":2,"627":6,"628":5,"629":1,"630":2,"631":2,"635":4,"639":2,"641":2,"642":1,"646":1,"647":1,"655":1,"657":1,"659":2,"663":1,"665":1,"671":2,"674":1,"675":1,"677":2,"678":4,"679":4,"680":1,"681":1,"682":3,"686":1,"688":1,"690":3,"691":2,"695":1,"697":1,"701":3,"702":1,"703":2,"704":1,"705":1,"707":2,"726":2,"727":1,"730":1,"734":2,"738":1,"741":1,"745":1,"749":1,"751":1,"756":1,"758":1,"760":2,"764":1,"768":1,"772":1,"776":1,"778":1,"785":1,"787":1,"789":1,"790":1,"792":2,"796":1,"800":1,"804":1,"808":1,"810":1,"817":1,"819":1,"820":2,"822":2,"826":1,"832":1,"836":1,"840":1,"842":1,"849":1,"851":1,"852":1,"854":1,"855":1,"857":2,"861":1,"867":1,"871":1,"875":1,"877":1,"884":1,"886":1,"888":1,"889":1,"891":2,"895":1,"901":1,"905":1,"909":1,"911":1,"918":1,"920":1,"922":1,"923":1,"925":2,"929":1,"935":1,"939":1,"943":1,"945":1,"952":1,"954":1,"956":1,"957":1,"959":2,"963":1,"969":1,"973":1,"977":1,"979":1,"986":1,"988":1,"990":1,"991":1,"993":2,"997":1,"1003":1,"1007":1,"1011":1,"1013":1,"1020":1,"1022":1,"1023":1,"1024":1,"1025":1,"1027":2,"1031":1,"1037":1,"1041":1,"1045":1,"1047":1,"1054":1,"1056":1,"1057":1,"1058":1,"1059":1,"1061":2,"1065":1,"1071":1,"1075":1,"1079":1,"1081":1,"1088":1,"1090":1,"1092":1,"1093":1,"1095":2,"1099":1,"1105":1,"1109":1,"1113":1,"1115":1,"1121":1,"1122":2,"1123":2,"1126":2,"1128":1,"1129":5,"1132":1,"1133":1,"1134":2,"1137":2,"1144":1,"1146":1,"1148":2,"1152":1,"1158":1,"1162":1,"1168":1,"1174":1,"1180":1,"1181":1,"1183":1,"1185":2,"1189":1,"1195":1,"1199":1,"1203":1,"1205":1,"1213":1,"1214":1,"1216":1,"1218":1,"1231":1,"1232":1,"1237":1,"1238":1,"1242":1,"1247":1,"1249":2,"1256":2,"1258":3,"1259":1,"1260":2,"1262":2,"1263":1,"1267":1,"1272":1,"1273":1,"1274":1,"1275":2,"1276":1,"1279":2,"1280":5,"1281":1,"1289":1,"1290":1,"1291":3,"1295":1,"1301":2,"1303":1,"1306":1,"1307":5,"1308":1,"1309":1,"1311":1,"1313":5,"1315":3,"1316":1,"1318":2,"1320":1,"1324":1,"1325":1,"1327":1,"1329":1,"1337":1,"1339":3,"1340":4,"1341":3,"1347":2,"1348":1,"1349":2,"1351":2,"1353":1,"1362":2,"1363":1,"1365":1,"1366":3,"1368":5,"1369":16,"1371":1,"1372":6,"1373":4,"1375":2,"1377":1,"1378":1,"1379":2,"1380":1,"1381":2,"1384":1,"1385":1,"1388":1,"1391":1,"1392":3,"1394":1,"1396":2,"1397":5,"1398":3,"1399":1,"1400":1,"1402":2,"1403":1,"1404":2,"1405":3,"1408":1,"1409":1,"1410":1,"1412":3,"1413":3,"1414":4,"1415":2,"1416":2,"1417":5,"1418":1,"1420":3,"1421":6,"1422":11,"1423":1,"1429":1,"1430":1,"1434":1,"1435":6,"1438":1,"1440":6,"1441":4,"1442":5,"1443":7,"1448":3,"1449":1,"1452":1,"1453":7,"1460":2,"1468":3,"1470":1,"1474":1,"1476":1,"1477":3,"1478":3,"1479":2,"1482":1,"1483":1,"1484":1,"1485":3,"1487":3,"1488":6,"1489":1,"1490":1,"1491":1,"1495":2,"1496":3,"1498":1,"1499":1,"1500":1,"1501":1,"1504":1,"1506":1,"1507":1,"1508":2,"1529":1,"1531":2,"1532":4,"1534":3,"1536":2,"1537":3,"1538":1,"1540":2,"1544":1,"1545":2,"1548":2,"1549":1,"1551":1,"1552":3,"1553":1,"1555":2,"1557":1,"1559":1,"1563":3,"1565":2,"1566":2,"1567":1,"1569":1,"1571":1,"1572":1,"1585":2,"1586":2,"1591":2,"1592":3,"1593":1,"1594":1,"1595":3,"1596":1,"1597":2,"1598":2,"1600":3,"1602":1,"1605":1,"1606":2,"1611":2,"1613":1,"1615":2,"1617":1,"1618":1,"1619":1,"1627":1,"1632":2,"1634":1,"1636":1,"1637":1,"1638":1,"1647":1,"1651":1,"1660":1,"1662":1,"1664":1,"1666":1,"1668":1,"1669":1,"1670":1,"1692":1,"1693":2,"1695":1,"1697":2,"1699":1,"1701":2,"1703":2,"1706":3,"1708":16,"1709":1,"1710":2,"1711":1,"1712":1,"1713":7,"1715":2,"1720":2,"1721":4,"1722":3,"1723":4,"1724":1,"1755":3,"1756":1,"1757":1,"1758":1,"1761":1,"1763":6,"1764":2,"1771":2,"1781":1,"1783":1,"1819":2,"1822":2,"1832":1,"1841":3,"1842":2,"1843":1,"1844":7,"1845":2,"1846":1,"1851":1,"1852":1,"1853":2,"1854":1,"1855":2,"1858":1,"1859":4,"1862":1,"1863":2,"1865":1,"1866":1,"1868":1,"1870":2,"1893":1,"1897":1,"1901":2,"1907":1,"1911":1,"1913":1,"1914":1,"1916":2,"1917":1,"1918":1,"1919":1,"1922":2,"1925":1,"1933":1,"1935":1,"1936":1,"1937":3,"1938":2,"1942":2,"1945":3,"1946":2,"1947":1,"1948":1,"1949":1,"1950":4,"1952":4,"1956":14,"1958":2,"1959":2,"1960":2,"1965":1,"1974":1,"1977":1,"1980":2,"1982":1,"1984":6,"1985":2,"1988":3,"1991":1,"1992":2,"1995":2,"1997":4,"1998":1,"2008":1,"2010":1,"2064":2,"2067":2,"2069":2,"2071":1,"2074":3,"2080":2,"2082":1,"2092":12,"2096":1,"2097":1,"2098":1,"2104":1,"2110":1,"2112":1,"2117":2,"2119":1,"2123":1,"2125":1,"2138":1,"2139":1,"2140":1,"2141":1,"2150":1,"2151":1,"2152":1,"2154":1,"2156":2,"2161":1,"2162":4,"2163":2,"2164":5,"2165":3,"2166":13,"2167":19,"2168":4,"2169":17,"2174":1,"2175":1,"2176":1,"2177":2,"2178":1,"2179":2,"2180":1,"2184":2,"2187":1,"2188":1,"2190":10,"2193":1,"2198":1,"2199":8,"2200":5,"2203":2,"2206":1,"2207":6,"2208":1,"2209":8,"2210":3,"2212":1,"2215":2,"2219":1,"2220":3,"2221":8,"2234":1,"2235":1,"2236":1,"2263":2,"2264":5,"2266":1,"2267":1,"2268":1,"2269":1,"2270":1,"2271":1,"2272":2,"2273":1,"2274":1,"2275":2,"2276":3,"2278":1,"2279":1,"2280":2,"2281":2,"2282":2,"2283":3,"2285":3,"2287":3,"2288":1,"2289":3,"2291":2,"2293":2,"2294":1,"2296":1,"2297":4,"2299":1,"2300":3,"2301":21,"2303":5,"2306":2,"2307":2,"2309":1,"2311":4,"2312":5,"2313":1,"2315":2,"2318":1,"2319":2,"2321":3,"2325":2,"2328":1,"2334":3,"2335":1,"2337":1,"2338":2,"2339":2,"2340":3,"2341":4,"2344":4,"2348":1,"2350":14,"2351":1,"2352":1,"2353":3,"2354":1,"2355":1,"2357":1,"2358":1,"2361":1,"2365":1,"2366":3,"2374":1,"2383":2,"2384":1,"2385":2,"2386":2,"2387":3,"2388":2,"2389":2,"2390":1,"2392":2,"2393":2,"2394":1,"2434":1,"2437":3,"2439":1,"2441":1,"2443":1,"2444":1,"2445":5,"2446":1,"2447":4,"2448":1,"2449":2,"2450":7,"2454":1,"2456":2,"2457":3,"2458":1,"2459":1,"2460":1,"2461":2,"2462":3,"2463":1,"2464":2,"2466":1,"2467":4,"2472":1,"2479":1,"2480":1,"2481":1,"2484":1,"2485":2,"2487":1,"2489":5,"2491":2,"2493":9,"2495":1,"2498":1,"2499":1,"2505":1,"2507":5,"2508":2,"2511":3,"2512":2,"2513":4,"2514":1,"2516":4,"2526":5,"2527":3,"2528":1,"2529":6,"2530":1,"2531":2,"2536":2,"2537":1,"2541":1,"2542":2,"2545":6,"2546":1,"2547":3,"2549":4,"2551":1,"2552":6,"2553":1,"2556":2,"2557":1,"2558":1,"2560":1,"2561":1,"2562":2,"2563":8,"2564":5,"2565":4,"2568":3,"2569":1,"2572":1,"2573":2,"2578":1,"2580":1,"2581":2,"2582":1,"2585":2,"2587":3,"2589":1,"2590":2,"2592":2,"2593":1,"2596":1,"2598":1,"2602":2,"2603":5,"2604":2,"2605":4,"2606":2,"2607":2,"2608":1,"2609":3,"2610":2,"2612":1,"2613":3,"2614":8,"2615":1,"2616":7,"2623":3,"2624":1,"2626":1,"2628":1,"2631":1,"2632":1,"2633":1,"2634":3,"2635":5,"2636":1,"2637":1,"2638":1,"2642":4,"2644":5,"2645":1,"2646":5,"2650":2,"2652":1,"2653":5,"2654":3,"2694":1,"2710":1,"2711":2,"2718":1,"2725":3,"2738":1,"2740":3,"2741":2,"2744":8,"2745":3,"2746":3,"2749":5,"2751":1,"2755":1,"2757":1,"2758":1,"2761":1,"2762":1,"2766":6,"2767":2,"2768":6,"2769":1,"2773":1,"2774":7,"2775":5,"2776":2,"2777":4,"2781":1,"2782":2,"2783":3,"2784":3,"2785":5,"2786":2,"2787":3,"2788":4,"2791":1,"2792":1,"2796":4}}],["thank",{"2":{"2386":1}}],["thanks",{"2":{"235":1,"284":1,"550":1,"2303":1,"2331":1,"2356":1,"2607":1}}],["thankyou",{"2":{"116":1}}],["than",{"0":{"1314":1},"2":{"24":1,"46":1,"49":1,"50":1,"63":1,"112":1,"124":1,"137":1,"138":1,"166":1,"176":1,"194":1,"201":2,"213":1,"230":1,"234":1,"251":1,"278":1,"367":1,"415":1,"418":1,"453":3,"455":1,"468":1,"476":1,"482":1,"502":1,"505":1,"511":2,"513":1,"556":1,"560":1,"567":2,"570":1,"571":1,"596":1,"628":1,"679":1,"1121":2,"1128":1,"1213":1,"1262":1,"1324":1,"1327":1,"1366":1,"1373":1,"1375":1,"1376":1,"1377":3,"1392":1,"1396":1,"1405":1,"1413":1,"1420":1,"1440":1,"1441":1,"1448":1,"1449":1,"1453":2,"1468":2,"1479":1,"1482":1,"1483":2,"1488":1,"1536":2,"1552":1,"1600":1,"1611":1,"1693":1,"1708":1,"1721":1,"1723":1,"1829":1,"1859":2,"1860":1,"1934":1,"1975":1,"1977":1,"2071":1,"2074":1,"2098":1,"2151":1,"2166":1,"2183":1,"2185":1,"2199":4,"2200":1,"2208":1,"2279":2,"2281":1,"2300":2,"2301":1,"2311":1,"2325":1,"2350":1,"2374":1,"2383":1,"2442":1,"2450":2,"2466":1,"2481":1,"2499":1,"2513":1,"2529":1,"2555":1,"2590":1,"2604":1,"2605":2,"2606":1,"2610":1,"2616":1,"2644":1,"2647":1,"2651":1,"2693":1,"2768":4,"2773":2,"2776":2,"2796":1}}],["that",{"0":{"503":1,"504":1,"505":1,"1297":1,"1300":1,"1418":1,"1966":1},"1":{"1301":1},"2":{"0":3,"5":1,"6":2,"9":3,"13":2,"14":1,"19":3,"23":1,"24":1,"28":1,"31":2,"34":1,"36":2,"38":1,"39":3,"45":1,"46":1,"49":2,"50":3,"52":3,"70":1,"73":2,"75":1,"87":1,"90":1,"94":2,"95":1,"98":1,"99":1,"103":1,"110":1,"112":1,"114":3,"123":2,"124":2,"125":1,"126":1,"131":1,"132":2,"137":2,"138":1,"139":1,"141":1,"160":4,"163":1,"166":1,"175":1,"176":5,"179":2,"182":4,"185":1,"191":2,"194":1,"195":1,"199":3,"203":3,"209":1,"218":1,"224":1,"230":1,"233":1,"240":2,"243":1,"255":1,"256":1,"262":1,"263":1,"268":1,"275":1,"276":1,"278":1,"300":1,"302":1,"304":1,"306":1,"312":1,"315":1,"317":3,"318":2,"324":2,"331":1,"334":1,"337":5,"341":3,"344":1,"345":2,"346":1,"347":1,"349":3,"350":2,"352":5,"353":1,"354":3,"355":1,"361":1,"366":1,"370":2,"373":1,"384":1,"385":1,"399":1,"400":1,"414":1,"415":2,"428":1,"431":1,"434":1,"435":4,"436":1,"437":1,"446":1,"452":1,"453":5,"454":1,"457":1,"460":1,"465":1,"466":1,"467":2,"471":1,"473":1,"474":2,"479":2,"480":1,"481":3,"482":2,"483":1,"488":1,"495":1,"496":1,"497":2,"498":1,"499":1,"500":1,"501":1,"502":1,"506":2,"509":3,"512":2,"519":2,"520":1,"523":1,"524":1,"525":1,"529":5,"530":2,"533":2,"534":2,"537":1,"538":3,"540":1,"551":1,"554":3,"556":6,"559":2,"560":4,"562":2,"564":1,"567":2,"568":1,"570":2,"571":2,"574":2,"575":1,"578":1,"584":2,"586":1,"587":2,"592":2,"597":2,"598":2,"599":1,"601":1,"602":2,"606":4,"609":1,"611":1,"614":1,"616":1,"621":1,"623":1,"625":1,"626":1,"627":2,"628":1,"629":2,"635":2,"636":3,"639":2,"641":2,"674":1,"675":1,"678":1,"679":1,"681":2,"688":3,"690":1,"691":1,"692":1,"694":1,"698":3,"726":1,"1121":2,"1125":1,"1126":1,"1127":1,"1129":1,"1132":3,"1133":3,"1135":1,"1138":1,"1142":1,"1144":1,"1170":1,"1171":2,"1172":1,"1249":1,"1256":1,"1257":1,"1272":1,"1273":1,"1275":1,"1276":1,"1278":1,"1287":1,"1295":3,"1297":1,"1301":2,"1302":1,"1307":1,"1308":1,"1309":1,"1315":2,"1324":3,"1330":1,"1331":1,"1336":1,"1337":3,"1339":1,"1340":4,"1341":2,"1349":2,"1350":1,"1362":3,"1363":2,"1366":6,"1368":4,"1369":11,"1370":1,"1371":1,"1372":4,"1373":1,"1374":1,"1377":5,"1378":3,"1379":1,"1383":1,"1388":2,"1390":1,"1396":5,"1397":1,"1398":2,"1399":1,"1401":1,"1402":1,"1405":1,"1414":6,"1416":1,"1417":2,"1420":8,"1421":4,"1422":14,"1427":1,"1431":1,"1434":2,"1435":4,"1436":1,"1437":1,"1441":1,"1442":4,"1447":2,"1449":1,"1450":1,"1451":2,"1452":1,"1453":4,"1460":1,"1464":1,"1466":1,"1467":1,"1468":1,"1472":1,"1473":1,"1474":1,"1476":1,"1477":2,"1478":2,"1482":1,"1483":3,"1488":2,"1489":1,"1492":1,"1494":1,"1495":1,"1501":1,"1504":1,"1508":1,"1529":1,"1531":1,"1532":5,"1533":1,"1534":3,"1535":2,"1536":2,"1540":1,"1543":3,"1548":1,"1555":2,"1558":1,"1564":1,"1566":1,"1575":1,"1591":3,"1592":2,"1594":3,"1596":2,"1601":2,"1611":4,"1614":1,"1616":1,"1617":1,"1668":1,"1670":1,"1696":1,"1698":1,"1699":1,"1700":1,"1703":1,"1708":5,"1711":1,"1712":1,"1713":2,"1714":3,"1715":4,"1721":2,"1722":1,"1752":1,"1753":5,"1755":1,"1763":3,"1766":2,"1825":1,"1829":1,"1836":1,"1840":2,"1843":1,"1854":1,"1858":2,"1859":1,"1860":3,"1863":1,"1870":1,"1901":1,"1907":1,"1911":1,"1912":3,"1914":1,"1916":2,"1922":1,"1925":1,"1934":2,"1936":2,"1937":2,"1943":1,"1945":2,"1950":3,"1951":1,"1952":4,"1953":1,"1954":2,"1956":1,"1958":3,"1960":1,"1964":1,"1965":4,"1973":1,"1974":2,"1975":1,"1977":2,"1978":1,"1979":4,"1980":3,"1984":3,"1986":1,"1987":4,"1988":2,"1989":1,"2069":1,"2070":2,"2078":1,"2080":1,"2089":1,"2100":1,"2101":1,"2102":1,"2107":1,"2109":1,"2110":1,"2113":1,"2149":1,"2151":1,"2152":1,"2154":1,"2155":1,"2156":3,"2157":1,"2158":1,"2161":1,"2163":5,"2164":1,"2166":3,"2167":1,"2168":1,"2169":8,"2170":1,"2171":2,"2172":1,"2178":1,"2180":1,"2181":3,"2182":1,"2184":1,"2185":3,"2186":1,"2187":1,"2188":3,"2190":1,"2191":1,"2193":1,"2198":2,"2199":5,"2200":6,"2207":12,"2208":1,"2209":5,"2210":1,"2219":1,"2221":1,"2264":1,"2266":2,"2267":1,"2268":3,"2269":1,"2273":1,"2276":1,"2278":2,"2288":2,"2289":2,"2291":2,"2293":1,"2294":1,"2296":1,"2297":3,"2298":1,"2300":9,"2301":3,"2302":1,"2303":3,"2306":1,"2307":1,"2308":1,"2309":1,"2311":2,"2312":6,"2313":1,"2314":3,"2315":3,"2318":4,"2319":1,"2321":2,"2323":1,"2331":2,"2336":1,"2338":2,"2339":1,"2341":5,"2343":1,"2344":4,"2345":4,"2346":1,"2347":1,"2348":2,"2350":13,"2355":1,"2358":3,"2366":1,"2368":1,"2369":1,"2371":1,"2372":1,"2373":1,"2380":1,"2382":1,"2385":2,"2386":1,"2387":1,"2392":2,"2393":2,"2402":1,"2436":1,"2442":1,"2443":1,"2445":1,"2446":1,"2447":2,"2449":1,"2450":1,"2455":1,"2456":4,"2457":1,"2459":1,"2460":1,"2461":2,"2462":6,"2463":2,"2464":1,"2466":3,"2468":4,"2469":1,"2470":1,"2475":1,"2476":2,"2478":1,"2480":1,"2488":1,"2489":1,"2493":3,"2494":1,"2496":4,"2499":1,"2502":1,"2503":1,"2505":1,"2507":3,"2508":3,"2509":1,"2512":2,"2513":9,"2514":2,"2515":1,"2516":2,"2526":4,"2527":9,"2529":2,"2530":1,"2531":2,"2535":1,"2536":1,"2537":1,"2542":1,"2543":1,"2545":2,"2546":1,"2547":1,"2548":2,"2549":3,"2550":1,"2551":1,"2552":2,"2554":2,"2557":1,"2562":1,"2563":2,"2564":1,"2565":2,"2568":1,"2572":1,"2573":2,"2579":1,"2580":1,"2583":1,"2584":1,"2585":1,"2587":4,"2588":1,"2589":1,"2594":2,"2595":2,"2598":2,"2599":1,"2603":1,"2604":1,"2605":6,"2606":5,"2608":6,"2609":1,"2613":6,"2614":1,"2615":2,"2616":5,"2617":1,"2624":1,"2626":1,"2631":1,"2635":1,"2639":1,"2640":3,"2641":1,"2642":1,"2644":2,"2646":3,"2647":2,"2650":1,"2653":4,"2654":3,"2655":1,"2656":1,"2662":1,"2664":1,"2666":2,"2667":1,"2669":1,"2673":1,"2674":1,"2676":2,"2679":1,"2680":1,"2681":1,"2684":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":2,"2691":1,"2692":2,"2693":1,"2699":2,"2702":1,"2703":1,"2704":1,"2706":1,"2711":1,"2725":1,"2741":3,"2744":4,"2745":4,"2746":1,"2747":2,"2748":1,"2750":1,"2757":2,"2758":2,"2762":1,"2763":1,"2765":1,"2766":1,"2767":13,"2768":2,"2769":1,"2773":1,"2774":2,"2775":1,"2776":2,"2777":4,"2779":3,"2781":1,"2782":3,"2784":4,"2785":4,"2787":2,"2788":1,"2790":1,"2791":3,"2792":9,"2793":1,"2795":5,"2796":3}}],["theory",{"2":{"2555":1}}],["theories",{"2":{"2186":1}}],["thekey",{"2":{"207":4,"211":1}}],["thermal",{"2":{"191":1}}],["theres",{"2":{"2169":1}}],["thereafter",{"2":{"1842":1}}],["thereby",{"2":{"69":1}}],["therefore",{"2":{"28":1,"380":1,"635":2,"698":2,"1122":1,"1125":1,"1128":1,"1134":1,"1611":1,"1859":1,"1865":1,"1897":1,"2275":1,"2288":1,"2791":1}}],["there",{"0":{"546":1,"1302":1,"1449":1,"2780":1},"2":{"28":1,"99":1,"123":1,"131":1,"137":1,"139":1,"163":1,"166":1,"175":1,"189":1,"198":1,"201":1,"213":1,"224":1,"233":1,"238":1,"268":1,"276":1,"286":1,"291":1,"305":1,"315":1,"337":1,"341":1,"349":1,"353":1,"360":1,"414":1,"428":1,"432":1,"435":1,"449":1,"454":1,"485":1,"496":1,"505":1,"509":1,"522":1,"525":1,"534":1,"537":1,"538":1,"548":1,"560":3,"574":1,"592":1,"598":1,"601":1,"609":1,"625":1,"630":1,"674":1,"675":3,"677":1,"680":1,"683":1,"684":1,"688":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1135":1,"1185":1,"1271":1,"1295":3,"1296":3,"1305":1,"1309":1,"1310":1,"1324":2,"1337":2,"1356":1,"1362":2,"1368":2,"1378":2,"1394":1,"1398":1,"1401":1,"1412":1,"1431":1,"1434":1,"1435":1,"1437":1,"1448":2,"1452":1,"1453":2,"1460":2,"1467":1,"1468":1,"1472":2,"1474":1,"1479":1,"1488":1,"1536":1,"1555":1,"1558":1,"1563":1,"1564":1,"1566":1,"1571":1,"1592":2,"1594":1,"1601":1,"1606":1,"1611":1,"1615":1,"1714":1,"1752":1,"1771":1,"1825":1,"1829":1,"1843":2,"1850":1,"1858":1,"1860":1,"1870":1,"1891":1,"1897":1,"1921":1,"1933":1,"1934":1,"1937":1,"1951":1,"1953":1,"1968":1,"1973":1,"1980":1,"1995":1,"2070":1,"2074":1,"2089":1,"2101":1,"2102":1,"2111":1,"2152":1,"2161":1,"2163":1,"2166":1,"2167":1,"2169":1,"2171":1,"2175":1,"2181":1,"2185":1,"2190":1,"2199":1,"2200":1,"2206":1,"2207":1,"2215":2,"2216":1,"2266":1,"2267":1,"2291":1,"2299":1,"2301":1,"2303":1,"2306":1,"2308":1,"2309":1,"2311":1,"2312":1,"2315":1,"2317":1,"2319":1,"2323":1,"2334":1,"2365":1,"2366":1,"2383":1,"2443":1,"2456":2,"2457":2,"2458":1,"2462":1,"2463":1,"2478":1,"2480":1,"2491":1,"2494":1,"2496":2,"2530":5,"2535":1,"2537":1,"2540":1,"2546":1,"2547":2,"2549":1,"2554":1,"2561":1,"2588":1,"2594":1,"2599":1,"2602":1,"2603":1,"2606":1,"2607":1,"2612":1,"2615":1,"2616":1,"2639":1,"2640":1,"2641":2,"2644":1,"2646":1,"2647":1,"2653":1,"2741":1,"2742":1,"2743":1,"2744":2,"2745":1,"2747":1,"2748":1,"2751":3,"2752":1,"2753":3,"2758":1,"2780":1,"2784":1,"2789":3,"2791":1,"2792":2,"2794":1,"2795":1}}],["thedogkeyboard",{"2":{"154":2,"211":1}}],["they",{"2":{"124":1,"125":2,"185":2,"188":1,"196":1,"198":1,"203":1,"243":1,"265":1,"273":2,"276":1,"303":1,"307":2,"334":1,"352":1,"367":1,"413":1,"416":1,"424":1,"430":1,"432":1,"435":1,"446":1,"453":1,"455":1,"466":1,"516":1,"519":1,"529":1,"538":1,"559":1,"574":1,"581":1,"602":1,"633":1,"642":1,"689":1,"698":1,"1214":1,"1310":1,"1337":2,"1341":1,"1369":1,"1377":1,"1398":2,"1464":1,"1482":2,"1483":4,"1492":1,"1528":1,"1540":1,"1554":1,"1555":1,"1559":1,"1591":2,"1592":1,"1595":1,"1714":1,"1715":1,"1763":2,"1870":2,"1901":2,"1914":1,"1924":1,"1950":1,"1965":1,"1972":1,"1984":2,"1986":1,"2072":1,"2082":1,"2152":1,"2156":1,"2169":1,"2190":2,"2198":2,"2200":2,"2207":1,"2210":1,"2221":1,"2280":1,"2296":1,"2313":2,"2318":1,"2321":1,"2338":1,"2342":1,"2344":4,"2350":1,"2383":1,"2386":1,"2436":1,"2444":1,"2448":1,"2453":1,"2466":1,"2480":2,"2484":1,"2555":1,"2558":2,"2569":1,"2589":1,"2595":1,"2603":2,"2605":4,"2606":2,"2610":1,"2615":4,"2616":2,"2642":1,"2653":1,"2655":1,"2659":1,"2741":1,"2744":2,"2765":1,"2767":1,"2777":1,"2784":1,"2793":1}}],["the60",{"2":{"102":3}}],["then",{"0":{"2205":1},"2":{"49":1,"70":1,"120":2,"137":1,"235":1,"291":1,"303":1,"321":1,"331":1,"352":1,"354":1,"366":1,"432":1,"500":1,"505":1,"506":1,"510":1,"527":1,"534":1,"540":2,"541":1,"559":1,"588":1,"597":1,"601":1,"607":1,"613":1,"628":1,"631":1,"641":1,"643":1,"674":1,"689":1,"698":1,"700":1,"703":1,"1170":1,"1212":1,"1214":2,"1233":1,"1250":1,"1262":1,"1278":1,"1291":1,"1295":1,"1297":2,"1298":1,"1307":1,"1324":1,"1336":2,"1337":1,"1362":1,"1363":1,"1368":1,"1369":2,"1372":1,"1396":1,"1398":2,"1405":1,"1407":1,"1412":1,"1414":1,"1420":2,"1421":2,"1422":1,"1432":1,"1435":1,"1442":2,"1448":5,"1449":1,"1450":1,"1453":2,"1475":1,"1477":1,"1489":2,"1537":3,"1541":1,"1545":1,"1557":1,"1561":1,"1565":2,"1567":1,"1572":1,"1586":1,"1591":1,"1596":1,"1597":1,"1608":2,"1611":3,"1668":1,"1689":1,"1690":1,"1695":1,"1708":1,"1711":2,"1712":3,"1713":3,"1714":1,"1717":1,"1766":9,"1771":1,"1845":1,"1851":1,"1864":1,"1868":2,"1907":1,"1908":1,"1915":1,"1918":1,"1926":1,"1927":2,"1934":1,"1937":1,"1952":1,"1958":1,"1965":2,"1966":1,"1987":15,"1988":1,"1995":1,"1997":1,"2070":1,"2101":1,"2113":1,"2117":2,"2151":1,"2159":1,"2160":1,"2162":1,"2163":1,"2168":2,"2169":1,"2175":1,"2190":2,"2199":2,"2200":3,"2202":1,"2205":1,"2207":2,"2209":3,"2219":2,"2220":2,"2221":3,"2234":4,"2270":1,"2272":1,"2277":1,"2278":1,"2279":1,"2280":1,"2288":2,"2299":2,"2300":2,"2301":1,"2303":1,"2311":2,"2316":1,"2341":1,"2344":1,"2350":1,"2358":1,"2367":1,"2388":1,"2392":1,"2445":1,"2493":1,"2497":1,"2511":1,"2512":1,"2513":4,"2514":1,"2516":1,"2526":1,"2527":2,"2528":1,"2529":2,"2541":1,"2547":3,"2552":1,"2558":1,"2582":1,"2605":2,"2615":11,"2616":3,"2642":2,"2649":2,"2650":1,"2659":1,"2693":1,"2744":1,"2751":1,"2766":1,"2767":2,"2768":2,"2774":3,"2775":2,"2776":2,"2777":1,"2779":1,"2782":1,"2789":1,"2792":1,"2796":3}}],["themself",{"2":{"352":1}}],["themselves",{"2":{"233":1,"352":1,"529":1,"1563":1,"1565":1,"2480":1,"2581":1,"2653":1}}],["theme",{"2":{"233":1}}],["them",{"2":{"2":1,"139":1,"164":1,"186":1,"202":1,"204":1,"221":1,"234":2,"272":1,"273":1,"303":1,"334":1,"376":2,"453":2,"455":2,"469":1,"471":1,"479":1,"502":1,"527":1,"537":1,"546":1,"549":1,"554":1,"570":2,"617":1,"621":1,"690":1,"1213":1,"1328":1,"1336":1,"1357":1,"1363":1,"1375":1,"1376":1,"1377":1,"1378":1,"1398":1,"1407":1,"1412":1,"1413":1,"1420":1,"1421":1,"1422":1,"1435":1,"1453":1,"1491":1,"1506":1,"1537":1,"1540":1,"1549":1,"1555":1,"1556":1,"1591":1,"1606":1,"1760":1,"1829":2,"1841":1,"1870":1,"1901":1,"1913":1,"1921":1,"1925":1,"1943":1,"1970":1,"2069":2,"2080":2,"2150":2,"2151":1,"2152":1,"2156":1,"2188":1,"2205":1,"2209":1,"2215":1,"2220":1,"2267":3,"2301":2,"2303":1,"2310":1,"2311":1,"2312":1,"2313":1,"2319":1,"2331":1,"2342":2,"2344":1,"2345":1,"2346":1,"2347":1,"2367":1,"2382":1,"2387":1,"2435":1,"2444":1,"2449":1,"2450":1,"2458":1,"2463":1,"2466":2,"2477":1,"2479":1,"2486":1,"2489":2,"2503":1,"2505":1,"2506":1,"2511":1,"2513":3,"2516":1,"2527":2,"2548":1,"2554":1,"2569":2,"2580":1,"2606":1,"2616":1,"2659":1,"2740":1,"2744":1,"2748":1,"2750":1,"2758":1,"2765":1,"2774":1,"2780":1,"2789":1,"2792":1,"2796":1}}],["the",{"0":{"23":1,"42":1,"56":1,"315":1,"323":1,"324":1,"325":1,"334":1,"335":1,"336":1,"339":1,"349":1,"350":1,"440":1,"501":1,"512":1,"547":1,"558":1,"562":1,"571":1,"609":1,"1132":1,"1133":1,"1134":1,"1264":1,"1296":1,"1305":1,"1309":1,"1589":3,"1590":2,"1715":1,"1716":1,"1892":1,"1925":1,"1926":1,"1966":1,"1972":1,"2097":2,"2141":1,"2146":1,"2187":1,"2190":1,"2299":1,"2306":1,"2307":1,"2309":1,"2312":1,"2313":1,"2314":1,"2315":1,"2317":1,"2354":1,"2355":1,"2356":1,"2357":1,"2386":1,"2387":1,"2456":1,"2463":1,"2485":1,"2491":1,"2493":1,"2515":1,"2538":1,"2540":1,"2623":1,"2646":1,"2647":1,"2649":1,"2653":1,"2654":1,"2655":1,"2709":1,"2743":1,"2779":2,"2783":1,"2793":1,"2794":1},"1":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"340":1,"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"513":1,"514":1,"515":1,"516":1,"572":1,"573":1,"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1722":1,"1723":1,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"2147":1,"2148":1,"2149":1,"2150":1,"2151":1,"2308":1,"2310":1,"2311":1,"2312":1,"2313":1,"2315":1,"2387":1,"2457":1,"2458":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1,"2750":1,"2784":1,"2785":1,"2786":1,"2787":1,"2788":1},"2":{"0":1,"1":1,"2":1,"3":2,"4":2,"5":3,"6":3,"7":3,"8":1,"10":3,"11":1,"12":1,"13":3,"14":5,"15":2,"16":3,"18":1,"19":1,"21":4,"22":3,"23":2,"24":2,"25":4,"27":2,"28":5,"30":4,"31":13,"32":1,"33":3,"34":12,"35":1,"36":7,"37":1,"43":3,"45":7,"46":2,"49":24,"50":18,"51":1,"55":5,"56":3,"58":1,"60":1,"62":3,"65":3,"67":4,"69":2,"70":17,"73":3,"74":3,"76":1,"83":3,"86":5,"87":4,"88":2,"90":4,"92":1,"93":2,"94":2,"99":4,"100":1,"102":1,"103":6,"104":2,"105":3,"107":4,"110":1,"112":1,"113":3,"114":13,"116":3,"118":5,"119":8,"120":3,"122":1,"123":3,"124":8,"125":8,"126":5,"127":2,"128":2,"130":1,"131":4,"132":2,"134":5,"137":5,"138":4,"139":1,"141":6,"142":6,"143":4,"144":1,"145":6,"148":1,"149":1,"151":1,"153":1,"154":3,"157":1,"160":10,"163":6,"164":4,"166":4,"167":2,"168":1,"169":3,"172":2,"173":4,"174":5,"175":6,"176":12,"181":1,"182":13,"184":3,"185":9,"186":2,"187":1,"188":1,"189":4,"191":10,"194":23,"195":6,"196":6,"197":2,"198":3,"199":7,"201":8,"202":7,"203":6,"204":3,"206":5,"209":5,"210":3,"211":11,"213":6,"215":1,"218":3,"219":1,"220":2,"221":2,"222":9,"224":3,"228":6,"229":2,"230":4,"231":1,"232":4,"233":5,"234":5,"235":3,"236":3,"238":1,"240":9,"243":4,"244":1,"245":4,"246":3,"247":1,"248":3,"249":4,"251":5,"254":6,"255":16,"256":3,"257":1,"258":1,"259":4,"262":6,"263":7,"264":1,"265":14,"266":4,"268":3,"271":6,"272":4,"273":7,"274":1,"275":4,"276":4,"277":2,"278":2,"279":1,"282":16,"284":1,"286":1,"291":4,"292":1,"294":1,"302":2,"303":6,"304":7,"305":1,"306":5,"307":3,"308":1,"309":1,"310":1,"311":1,"312":3,"313":3,"314":3,"315":8,"316":6,"317":8,"318":2,"319":1,"320":2,"321":2,"322":2,"323":3,"324":4,"325":2,"327":2,"330":3,"331":24,"332":2,"334":11,"335":10,"336":6,"337":4,"339":1,"341":20,"342":1,"346":3,"347":4,"349":8,"350":13,"351":1,"352":6,"353":1,"354":4,"355":2,"356":1,"357":2,"360":3,"361":5,"363":2,"364":3,"365":1,"366":1,"367":3,"370":7,"371":9,"372":2,"373":2,"374":11,"375":1,"377":2,"378":3,"380":1,"382":1,"383":1,"384":2,"385":2,"387":2,"388":2,"389":2,"390":2,"391":1,"393":3,"394":3,"395":1,"396":3,"399":1,"400":1,"401":4,"402":1,"403":5,"404":2,"405":2,"407":1,"408":2,"409":2,"410":2,"411":3,"413":2,"414":1,"415":1,"416":4,"417":2,"418":1,"423":1,"425":3,"426":5,"428":5,"429":1,"430":23,"431":3,"432":3,"433":7,"434":2,"435":14,"436":6,"437":5,"438":1,"439":1,"440":3,"441":2,"442":1,"445":1,"446":1,"448":2,"450":2,"451":3,"452":3,"453":32,"454":7,"455":2,"457":4,"458":1,"462":9,"463":1,"464":1,"465":2,"466":2,"467":1,"468":2,"470":3,"471":1,"472":1,"474":1,"476":1,"479":1,"480":1,"481":3,"482":1,"483":6,"484":1,"485":3,"487":2,"492":2,"495":2,"496":9,"497":2,"498":1,"499":1,"500":1,"501":3,"502":31,"503":1,"504":4,"505":25,"506":14,"508":1,"509":17,"510":11,"511":35,"512":2,"513":11,"514":1,"515":17,"516":9,"517":4,"519":3,"520":4,"521":5,"522":11,"523":1,"524":1,"525":2,"526":2,"527":5,"529":19,"530":13,"532":2,"533":5,"534":9,"535":2,"536":1,"537":6,"538":3,"539":1,"540":6,"541":5,"542":3,"545":3,"546":2,"548":1,"550":3,"551":1,"552":1,"554":30,"556":13,"557":6,"558":2,"559":8,"560":11,"561":1,"562":4,"563":3,"564":1,"565":2,"566":8,"568":7,"569":3,"570":2,"571":7,"572":2,"573":3,"574":8,"575":3,"576":2,"578":3,"580":13,"581":2,"582":3,"584":2,"586":2,"587":5,"588":6,"589":2,"592":15,"596":1,"597":18,"598":18,"599":3,"600":2,"601":3,"602":1,"606":4,"607":5,"609":1,"610":5,"611":1,"612":1,"613":1,"614":5,"616":3,"617":2,"621":1,"622":1,"623":8,"624":11,"625":10,"626":27,"627":13,"628":18,"629":7,"630":2,"631":2,"633":2,"635":14,"636":5,"638":8,"639":12,"641":12,"642":1,"643":6,"644":11,"646":1,"647":2,"648":5,"649":1,"650":3,"651":2,"652":1,"653":1,"655":4,"656":11,"657":3,"658":2,"659":4,"661":1,"662":8,"663":1,"664":3,"665":2,"666":6,"667":1,"668":3,"669":2,"670":5,"671":10,"673":3,"674":22,"675":10,"676":3,"677":5,"678":7,"679":29,"680":17,"681":13,"682":7,"683":7,"684":1,"685":5,"686":8,"687":5,"688":9,"689":11,"690":15,"691":6,"692":2,"693":4,"694":18,"696":3,"697":4,"698":11,"699":1,"700":4,"701":11,"702":6,"703":15,"704":1,"705":1,"707":3,"708":1,"709":7,"710":1,"711":1,"712":7,"713":1,"714":1,"715":8,"716":1,"717":1,"718":8,"719":1,"720":1,"721":7,"722":1,"723":1,"724":7,"725":1,"726":2,"727":5,"728":1,"730":4,"731":5,"732":1,"733":2,"734":7,"736":1,"737":8,"738":1,"739":2,"740":2,"741":2,"742":6,"743":1,"744":3,"745":2,"746":4,"747":1,"748":1,"749":2,"750":6,"751":2,"752":4,"753":2,"754":2,"756":4,"757":9,"758":5,"759":2,"760":7,"762":1,"763":10,"764":1,"765":1,"766":2,"767":3,"768":2,"769":6,"770":1,"771":3,"772":2,"773":4,"774":1,"775":1,"776":2,"777":6,"778":2,"779":4,"780":2,"781":1,"782":2,"783":1,"785":4,"786":14,"787":5,"788":2,"789":6,"790":4,"791":2,"792":10,"794":1,"795":10,"796":1,"797":1,"798":2,"799":3,"800":2,"801":6,"802":1,"803":3,"804":2,"805":4,"806":1,"807":1,"808":2,"809":9,"810":2,"811":5,"812":2,"813":1,"814":2,"815":1,"817":4,"818":9,"819":5,"820":3,"821":2,"822":10,"824":1,"825":10,"826":1,"827":1,"828":2,"829":3,"830":2,"831":2,"832":2,"833":6,"834":1,"835":3,"836":2,"837":4,"838":1,"839":1,"840":2,"841":6,"842":2,"843":4,"844":2,"845":1,"846":2,"847":1,"849":4,"850":18,"851":5,"852":5,"853":2,"854":6,"855":5,"856":2,"857":10,"859":1,"860":10,"861":1,"862":1,"863":2,"864":3,"865":2,"866":2,"867":2,"868":6,"869":1,"870":3,"871":2,"872":4,"873":1,"874":1,"875":2,"876":6,"877":2,"878":4,"879":2,"880":1,"881":2,"882":1,"884":4,"885":14,"886":5,"887":2,"888":6,"889":5,"890":2,"891":10,"893":1,"894":10,"895":1,"896":1,"897":2,"898":3,"899":2,"900":2,"901":2,"902":6,"903":1,"904":3,"905":2,"906":4,"907":1,"908":1,"909":2,"910":6,"911":2,"912":4,"913":2,"914":1,"915":2,"916":1,"918":4,"919":14,"920":5,"921":2,"922":6,"923":5,"924":2,"925":10,"927":1,"928":10,"929":1,"930":1,"931":2,"932":3,"933":2,"934":2,"935":2,"936":6,"937":1,"938":3,"939":2,"940":4,"941":1,"942":1,"943":2,"944":6,"945":2,"946":4,"947":2,"948":1,"949":2,"950":1,"952":4,"953":16,"954":5,"955":2,"956":6,"957":5,"958":2,"959":10,"961":1,"962":10,"963":1,"964":1,"965":2,"966":3,"967":2,"968":2,"969":2,"970":6,"971":1,"972":3,"973":2,"974":4,"975":1,"976":1,"977":2,"978":6,"979":2,"980":4,"981":2,"982":1,"983":2,"984":1,"986":4,"987":16,"988":5,"989":2,"990":6,"991":5,"992":2,"993":10,"995":1,"996":10,"997":1,"998":1,"999":2,"1000":3,"1001":2,"1002":2,"1003":2,"1004":6,"1005":1,"1006":3,"1007":2,"1008":4,"1009":1,"1010":1,"1011":2,"1012":9,"1013":2,"1014":5,"1015":2,"1016":1,"1017":2,"1018":1,"1020":4,"1021":18,"1022":5,"1023":5,"1024":6,"1025":5,"1026":2,"1027":10,"1029":1,"1030":10,"1031":1,"1032":1,"1033":2,"1034":3,"1035":2,"1036":2,"1037":2,"1038":6,"1039":1,"1040":3,"1041":2,"1042":4,"1043":1,"1044":1,"1045":2,"1046":9,"1047":2,"1048":5,"1049":2,"1050":1,"1051":2,"1052":1,"1054":4,"1055":18,"1056":5,"1057":5,"1058":6,"1059":5,"1060":2,"1061":10,"1063":1,"1064":10,"1065":1,"1066":1,"1067":2,"1068":3,"1069":2,"1070":2,"1071":2,"1072":6,"1073":1,"1074":3,"1075":2,"1076":4,"1077":1,"1078":1,"1079":2,"1080":9,"1081":2,"1082":5,"1083":2,"1084":1,"1085":2,"1086":1,"1088":4,"1089":16,"1090":5,"1091":2,"1092":6,"1093":5,"1094":2,"1095":10,"1097":1,"1098":10,"1099":1,"1100":2,"1101":2,"1102":3,"1103":2,"1104":2,"1105":2,"1106":6,"1107":1,"1108":3,"1109":2,"1110":4,"1111":1,"1112":1,"1113":2,"1114":9,"1115":2,"1116":5,"1117":2,"1118":1,"1119":2,"1120":1,"1121":4,"1122":5,"1123":3,"1124":5,"1125":1,"1126":8,"1127":10,"1128":3,"1129":23,"1130":10,"1132":11,"1133":13,"1134":13,"1136":4,"1137":1,"1138":4,"1142":3,"1144":4,"1145":9,"1146":5,"1147":2,"1148":9,"1150":1,"1151":10,"1152":1,"1153":1,"1154":2,"1155":3,"1156":2,"1157":2,"1158":2,"1159":6,"1160":1,"1161":3,"1162":2,"1163":6,"1164":2,"1165":1,"1166":2,"1167":1,"1168":1,"1169":4,"1170":6,"1171":21,"1172":4,"1173":1,"1174":5,"1176":1,"1177":4,"1178":1,"1179":3,"1181":4,"1182":9,"1183":5,"1184":2,"1185":10,"1187":1,"1188":10,"1189":1,"1190":1,"1191":2,"1192":3,"1193":2,"1194":2,"1195":2,"1196":6,"1197":1,"1198":3,"1199":2,"1200":4,"1201":1,"1202":1,"1203":2,"1204":6,"1205":2,"1206":4,"1207":2,"1208":1,"1209":2,"1210":1,"1211":1,"1212":4,"1213":4,"1214":14,"1216":2,"1218":11,"1219":2,"1220":1,"1221":1,"1222":1,"1223":1,"1224":3,"1225":1,"1226":3,"1227":1,"1228":1,"1229":3,"1230":1,"1231":3,"1232":2,"1233":4,"1234":3,"1235":12,"1237":2,"1238":2,"1240":1,"1242":3,"1244":3,"1246":3,"1247":1,"1248":1,"1249":4,"1250":6,"1251":13,"1252":7,"1253":8,"1254":7,"1256":4,"1257":6,"1258":6,"1259":2,"1260":6,"1261":3,"1262":15,"1263":10,"1264":5,"1265":2,"1266":3,"1267":12,"1269":1,"1270":3,"1271":3,"1272":4,"1273":5,"1274":1,"1275":3,"1276":3,"1278":7,"1279":1,"1280":3,"1282":5,"1285":1,"1287":1,"1289":2,"1290":3,"1291":4,"1294":1,"1295":2,"1296":1,"1297":3,"1298":1,"1300":1,"1302":5,"1305":2,"1307":15,"1308":3,"1309":3,"1310":4,"1311":4,"1312":1,"1314":1,"1315":8,"1318":1,"1319":1,"1320":1,"1321":9,"1323":1,"1324":14,"1325":1,"1326":1,"1329":1,"1331":8,"1335":1,"1336":4,"1337":24,"1338":2,"1339":7,"1340":23,"1341":1,"1347":1,"1348":1,"1349":6,"1350":1,"1351":2,"1352":1,"1353":4,"1354":1,"1356":2,"1357":3,"1358":1,"1359":1,"1360":1,"1361":1,"1362":10,"1363":17,"1365":1,"1366":9,"1367":2,"1368":9,"1369":39,"1370":5,"1371":3,"1372":16,"1373":13,"1374":1,"1375":6,"1376":2,"1377":10,"1378":18,"1379":1,"1380":4,"1381":9,"1382":4,"1383":13,"1384":8,"1385":1,"1386":1,"1388":3,"1389":3,"1391":1,"1392":3,"1394":3,"1396":19,"1397":7,"1398":8,"1400":1,"1401":3,"1402":1,"1403":2,"1404":3,"1405":4,"1406":1,"1407":2,"1410":1,"1412":6,"1413":8,"1414":10,"1415":8,"1416":7,"1417":9,"1420":10,"1421":7,"1422":20,"1424":3,"1425":5,"1426":1,"1427":5,"1428":2,"1429":1,"1430":5,"1431":4,"1432":4,"1433":4,"1434":6,"1435":13,"1436":12,"1437":5,"1438":5,"1439":3,"1440":9,"1441":1,"1442":16,"1443":18,"1445":5,"1447":3,"1448":11,"1449":6,"1450":1,"1451":2,"1452":2,"1453":12,"1454":1,"1455":1,"1459":1,"1460":3,"1464":1,"1467":10,"1468":9,"1469":1,"1471":6,"1472":9,"1473":3,"1475":11,"1476":2,"1477":13,"1478":4,"1479":7,"1480":4,"1482":4,"1483":6,"1484":10,"1485":8,"1487":4,"1488":42,"1489":14,"1490":1,"1491":6,"1492":1,"1493":5,"1494":16,"1495":9,"1496":11,"1498":3,"1499":4,"1500":2,"1501":4,"1503":4,"1504":7,"1506":9,"1507":5,"1508":11,"1510":1,"1511":1,"1512":1,"1514":1,"1515":1,"1516":1,"1517":1,"1518":1,"1519":1,"1520":1,"1521":1,"1525":1,"1528":2,"1529":11,"1530":2,"1532":11,"1533":9,"1534":5,"1535":3,"1536":12,"1537":7,"1538":4,"1540":3,"1541":2,"1543":7,"1544":1,"1545":5,"1546":2,"1547":2,"1548":4,"1549":3,"1551":4,"1552":10,"1553":5,"1554":3,"1555":22,"1556":3,"1557":6,"1558":5,"1559":3,"1560":5,"1561":1,"1562":5,"1563":17,"1564":9,"1565":14,"1566":2,"1567":6,"1568":27,"1569":3,"1570":1,"1571":11,"1572":8,"1574":2,"1575":13,"1576":2,"1577":2,"1578":2,"1579":2,"1580":2,"1581":2,"1582":2,"1583":3,"1584":4,"1585":6,"1586":2,"1587":1,"1589":5,"1590":3,"1591":19,"1592":17,"1593":6,"1594":2,"1595":3,"1596":11,"1597":8,"1598":7,"1599":4,"1600":4,"1601":1,"1602":4,"1603":1,"1605":2,"1608":7,"1611":41,"1612":2,"1613":1,"1614":2,"1615":8,"1616":1,"1617":3,"1618":1,"1619":3,"1620":6,"1621":2,"1622":2,"1623":2,"1624":2,"1625":2,"1628":1,"1629":13,"1631":1,"1632":6,"1634":2,"1635":2,"1636":1,"1637":2,"1638":2,"1639":2,"1640":1,"1641":3,"1642":2,"1643":9,"1644":1,"1645":1,"1646":1,"1647":1,"1648":1,"1650":8,"1652":8,"1653":1,"1654":1,"1655":1,"1656":3,"1657":1,"1658":3,"1659":5,"1660":6,"1661":1,"1662":4,"1663":1,"1664":1,"1665":1,"1666":3,"1667":1,"1668":3,"1669":4,"1670":2,"1671":16,"1672":1,"1675":2,"1676":4,"1678":5,"1679":2,"1680":2,"1681":2,"1682":2,"1683":2,"1684":2,"1685":1,"1686":1,"1687":2,"1688":3,"1689":1,"1690":1,"1691":2,"1692":5,"1693":5,"1695":2,"1696":2,"1698":1,"1701":1,"1703":4,"1704":2,"1706":4,"1708":27,"1709":10,"1710":1,"1711":17,"1712":12,"1713":13,"1714":3,"1715":9,"1716":1,"1717":2,"1718":7,"1720":4,"1721":3,"1722":17,"1723":5,"1724":3,"1725":1,"1727":1,"1728":1,"1729":2,"1730":1,"1731":1,"1732":4,"1733":1,"1734":2,"1735":3,"1736":1,"1737":2,"1738":1,"1739":1,"1740":2,"1741":2,"1742":1,"1743":2,"1744":3,"1745":1,"1746":2,"1747":4,"1748":1,"1749":2,"1750":5,"1751":1,"1752":6,"1753":15,"1754":6,"1755":6,"1757":6,"1758":4,"1759":2,"1760":5,"1761":3,"1762":5,"1763":34,"1764":3,"1765":4,"1766":5,"1767":10,"1768":8,"1769":2,"1771":4,"1779":1,"1781":3,"1782":2,"1783":3,"1784":1,"1785":1,"1786":1,"1787":1,"1788":1,"1789":1,"1790":1,"1791":1,"1792":1,"1793":1,"1794":2,"1795":1,"1796":1,"1797":1,"1798":1,"1799":1,"1800":1,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1808":1,"1809":1,"1810":1,"1811":1,"1812":1,"1813":1,"1814":1,"1816":1,"1817":1,"1818":1,"1819":4,"1821":1,"1822":4,"1823":1,"1825":2,"1827":1,"1828":1,"1829":4,"1832":3,"1836":1,"1838":1,"1839":1,"1840":10,"1841":12,"1842":23,"1843":13,"1844":7,"1845":11,"1846":4,"1850":2,"1851":5,"1852":5,"1853":18,"1854":3,"1855":17,"1856":2,"1857":14,"1858":28,"1859":18,"1860":84,"1862":2,"1863":3,"1864":4,"1865":5,"1866":6,"1867":2,"1868":1,"1870":6,"1871":1,"1874":1,"1875":1,"1876":2,"1877":1,"1878":2,"1879":2,"1880":2,"1881":2,"1882":2,"1883":1,"1884":2,"1885":1,"1886":2,"1887":1,"1888":1,"1889":1,"1891":3,"1892":3,"1894":1,"1895":3,"1896":1,"1897":9,"1899":9,"1900":4,"1901":13,"1902":1,"1903":2,"1904":6,"1905":2,"1906":3,"1907":10,"1908":2,"1909":2,"1910":10,"1911":17,"1912":4,"1913":7,"1914":1,"1915":5,"1916":3,"1917":3,"1918":8,"1919":5,"1920":5,"1921":1,"1922":5,"1923":1,"1924":7,"1925":23,"1926":6,"1927":15,"1929":1,"1930":3,"1932":3,"1933":4,"1934":1,"1935":12,"1936":11,"1937":14,"1938":3,"1939":8,"1942":4,"1943":25,"1944":8,"1945":2,"1946":4,"1947":9,"1948":12,"1949":12,"1950":26,"1951":4,"1952":13,"1953":12,"1954":12,"1955":11,"1956":23,"1958":4,"1959":7,"1960":15,"1961":3,"1962":2,"1963":2,"1964":3,"1965":16,"1966":2,"1967":4,"1968":1,"1970":1,"1972":3,"1973":1,"1974":19,"1975":1,"1977":8,"1978":4,"1979":4,"1980":7,"1981":3,"1982":3,"1983":5,"1984":34,"1985":4,"1986":14,"1987":9,"1988":17,"1989":3,"1990":10,"1991":4,"1992":11,"1993":2,"1995":5,"1997":6,"1998":1,"2006":1,"2008":3,"2009":4,"2010":3,"2011":3,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":2,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2033":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":1,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2045":1,"2046":1,"2047":1,"2048":1,"2049":1,"2050":1,"2051":3,"2052":1,"2053":3,"2054":1,"2055":1,"2056":1,"2057":1,"2058":1,"2059":1,"2061":1,"2062":1,"2063":1,"2064":4,"2066":1,"2067":4,"2068":1,"2069":12,"2070":20,"2071":10,"2072":7,"2073":23,"2074":3,"2075":1,"2076":21,"2077":1,"2078":9,"2079":1,"2080":15,"2081":4,"2082":12,"2083":1,"2084":1,"2085":3,"2089":18,"2090":15,"2092":14,"2093":6,"2096":4,"2097":10,"2098":8,"2099":4,"2100":6,"2101":4,"2102":3,"2103":1,"2104":2,"2105":5,"2106":1,"2107":1,"2108":2,"2109":5,"2110":7,"2111":1,"2112":6,"2113":10,"2114":1,"2116":2,"2117":3,"2120":1,"2122":3,"2124":1,"2126":3,"2128":1,"2129":1,"2130":1,"2131":1,"2132":1,"2133":1,"2134":1,"2135":1,"2136":1,"2137":1,"2140":2,"2141":2,"2142":3,"2143":6,"2144":12,"2145":26,"2146":3,"2147":4,"2149":3,"2150":20,"2151":13,"2152":6,"2153":1,"2155":1,"2156":9,"2157":4,"2158":9,"2159":2,"2160":13,"2161":1,"2162":7,"2163":13,"2164":24,"2165":8,"2166":18,"2167":45,"2168":11,"2169":31,"2170":1,"2171":15,"2172":4,"2175":5,"2176":3,"2177":18,"2178":3,"2179":19,"2180":10,"2181":69,"2182":3,"2183":7,"2184":5,"2185":23,"2186":8,"2187":11,"2188":18,"2189":1,"2190":22,"2191":4,"2192":3,"2193":5,"2195":6,"2198":6,"2199":44,"2200":31,"2202":1,"2203":2,"2205":4,"2206":2,"2207":25,"2208":8,"2209":30,"2210":7,"2211":6,"2212":9,"2213":9,"2215":3,"2216":2,"2217":9,"2218":13,"2219":12,"2220":17,"2221":15,"2224":1,"2225":1,"2226":1,"2227":1,"2228":1,"2229":1,"2230":1,"2231":1,"2232":1,"2233":1,"2234":3,"2235":3,"2236":3,"2237":1,"2238":2,"2240":1,"2241":3,"2242":2,"2243":1,"2244":3,"2245":2,"2247":3,"2248":2,"2249":1,"2252":2,"2253":1,"2254":2,"2255":1,"2256":1,"2257":2,"2258":1,"2259":1,"2260":1,"2261":2,"2262":2,"2263":4,"2264":11,"2265":2,"2266":7,"2267":9,"2268":11,"2269":13,"2270":3,"2271":13,"2272":5,"2273":10,"2274":13,"2275":10,"2276":27,"2277":1,"2278":11,"2279":7,"2280":11,"2281":11,"2282":11,"2283":22,"2284":2,"2285":22,"2286":2,"2287":28,"2288":15,"2289":3,"2290":1,"2291":15,"2294":2,"2295":6,"2296":2,"2297":11,"2298":6,"2299":7,"2300":57,"2301":27,"2302":1,"2303":6,"2305":1,"2306":4,"2307":21,"2308":2,"2309":7,"2310":1,"2311":25,"2312":45,"2313":18,"2314":10,"2315":24,"2316":11,"2317":4,"2318":28,"2319":4,"2321":1,"2323":1,"2325":3,"2326":1,"2327":1,"2328":2,"2329":2,"2330":3,"2333":1,"2334":4,"2335":2,"2336":3,"2337":3,"2338":10,"2339":17,"2340":2,"2341":8,"2342":6,"2343":3,"2344":4,"2345":5,"2346":3,"2347":1,"2348":11,"2349":3,"2350":44,"2351":1,"2352":2,"2353":5,"2354":5,"2355":3,"2356":3,"2357":3,"2358":5,"2359":5,"2361":2,"2362":1,"2363":1,"2364":1,"2365":4,"2366":10,"2367":14,"2369":8,"2370":1,"2371":8,"2373":8,"2374":5,"2378":5,"2380":4,"2381":7,"2382":2,"2383":8,"2384":1,"2385":3,"2386":16,"2387":17,"2388":12,"2389":6,"2390":5,"2391":7,"2392":17,"2393":2,"2394":7,"2395":4,"2396":5,"2397":6,"2398":4,"2399":5,"2402":1,"2405":2,"2406":2,"2408":4,"2409":8,"2414":3,"2420":2,"2424":4,"2432":9,"2434":2,"2435":11,"2436":2,"2437":7,"2439":3,"2440":8,"2441":7,"2442":10,"2443":3,"2444":6,"2445":11,"2446":13,"2447":5,"2448":1,"2449":2,"2450":12,"2452":3,"2453":2,"2455":1,"2456":5,"2457":2,"2458":1,"2459":1,"2460":8,"2461":5,"2462":7,"2463":5,"2464":5,"2466":4,"2467":3,"2468":2,"2469":2,"2470":6,"2471":1,"2474":3,"2475":9,"2476":5,"2477":5,"2478":8,"2479":7,"2480":11,"2481":1,"2482":1,"2483":1,"2484":12,"2485":4,"2486":5,"2487":2,"2489":16,"2490":7,"2491":8,"2492":2,"2493":14,"2494":2,"2496":2,"2497":3,"2498":3,"2499":5,"2500":2,"2501":3,"2502":5,"2503":1,"2504":1,"2505":4,"2506":3,"2507":13,"2508":6,"2511":3,"2512":3,"2513":60,"2514":1,"2515":2,"2516":5,"2517":3,"2518":1,"2520":1,"2525":2,"2526":18,"2527":14,"2528":2,"2529":18,"2530":8,"2531":5,"2533":4,"2534":3,"2535":3,"2536":6,"2537":14,"2540":13,"2541":9,"2542":3,"2543":2,"2545":9,"2546":2,"2547":15,"2548":5,"2549":4,"2550":1,"2551":6,"2552":51,"2553":2,"2554":2,"2556":3,"2557":10,"2558":6,"2560":4,"2561":3,"2562":7,"2563":15,"2564":8,"2565":5,"2566":2,"2568":8,"2569":10,"2570":2,"2571":2,"2572":14,"2573":4,"2574":2,"2575":2,"2576":2,"2578":10,"2580":7,"2581":3,"2582":8,"2583":4,"2584":2,"2585":8,"2587":15,"2588":2,"2589":9,"2590":1,"2591":2,"2592":8,"2593":3,"2594":3,"2595":14,"2596":9,"2597":7,"2598":8,"2599":2,"2600":1,"2601":1,"2602":1,"2603":15,"2604":2,"2605":51,"2606":14,"2608":5,"2609":8,"2610":3,"2611":4,"2612":6,"2613":17,"2614":40,"2615":111,"2616":129,"2617":3,"2618":3,"2620":9,"2621":2,"2623":3,"2624":7,"2625":2,"2626":12,"2627":3,"2628":6,"2629":8,"2630":3,"2631":8,"2632":5,"2633":4,"2634":9,"2635":12,"2636":6,"2637":11,"2638":5,"2639":3,"2642":2,"2644":7,"2645":1,"2646":7,"2647":2,"2648":1,"2649":4,"2650":2,"2652":1,"2653":17,"2654":36,"2655":12,"2656":6,"2658":2,"2659":6,"2662":1,"2663":3,"2664":1,"2666":1,"2667":1,"2670":1,"2671":2,"2672":3,"2674":1,"2675":1,"2676":2,"2677":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":2,"2689":1,"2690":1,"2693":4,"2696":3,"2697":3,"2698":1,"2699":2,"2700":1,"2702":1,"2704":6,"2705":1,"2707":1,"2708":1,"2709":2,"2710":9,"2711":12,"2712":8,"2713":5,"2714":9,"2715":9,"2716":14,"2717":2,"2718":5,"2719":3,"2720":2,"2721":4,"2722":8,"2723":6,"2724":13,"2725":39,"2726":4,"2727":26,"2728":9,"2729":2,"2730":4,"2731":8,"2732":6,"2733":19,"2734":31,"2735":6,"2736":35,"2737":3,"2738":14,"2739":8,"2740":16,"2741":7,"2743":2,"2744":7,"2745":2,"2746":2,"2747":4,"2748":3,"2750":1,"2751":2,"2753":1,"2754":1,"2757":5,"2758":12,"2759":8,"2761":2,"2762":5,"2763":3,"2765":2,"2766":9,"2767":45,"2768":34,"2769":5,"2773":10,"2774":41,"2775":22,"2776":20,"2777":15,"2778":2,"2779":5,"2780":1,"2781":2,"2782":13,"2783":8,"2784":7,"2785":13,"2786":4,"2787":10,"2788":5,"2790":3,"2791":5,"2792":20,"2793":7,"2794":5,"2795":3,"2796":25}}],["theirs",{"2":{"2348":1}}],["their",{"2":{"0":2,"9":2,"19":2,"39":2,"52":2,"58":1,"67":1,"83":1,"86":1,"102":1,"107":1,"114":1,"122":1,"123":1,"124":1,"125":1,"134":1,"139":1,"142":1,"144":1,"154":1,"166":1,"168":1,"172":1,"175":2,"179":1,"181":1,"182":1,"185":1,"197":1,"222":1,"228":2,"233":1,"234":1,"251":1,"263":1,"275":1,"306":1,"309":1,"318":1,"337":2,"349":1,"352":4,"374":1,"375":1,"388":1,"433":1,"435":1,"440":1,"453":1,"484":1,"496":2,"510":1,"519":3,"527":1,"551":1,"556":1,"559":1,"562":1,"587":1,"602":1,"629":1,"683":1,"685":1,"697":1,"734":2,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1185":2,"1253":1,"1281":1,"1302":2,"1335":1,"1341":1,"1373":1,"1407":1,"1467":1,"1477":2,"1478":1,"1555":1,"1563":1,"1571":1,"1756":1,"1760":1,"1763":2,"1843":1,"1921":1,"1952":1,"1984":2,"2084":1,"2091":2,"2113":1,"2215":1,"2219":1,"2221":1,"2267":1,"2268":2,"2271":1,"2281":1,"2325":2,"2344":4,"2348":2,"2385":1,"2393":1,"2436":1,"2460":1,"2466":1,"2480":1,"2505":1,"2507":2,"2516":1,"2572":1,"2574":1,"2588":1,"2603":3,"2605":2,"2607":1,"2613":2,"2616":1,"2617":1,"2631":1,"2640":1,"2656":1,"2694":1,"2740":1,"2765":1}}],["these",{"2":{"0":1,"7":1,"9":1,"16":1,"19":1,"21":1,"28":1,"37":1,"38":1,"39":1,"52":1,"67":1,"86":1,"120":2,"124":1,"182":1,"188":1,"202":2,"254":1,"268":2,"273":1,"276":1,"317":1,"337":1,"364":1,"367":2,"414":1,"431":1,"432":1,"441":2,"442":1,"453":1,"470":1,"473":1,"479":3,"485":1,"496":1,"503":1,"504":1,"509":1,"515":1,"516":1,"520":1,"522":1,"529":1,"530":1,"551":2,"559":1,"560":1,"571":4,"573":1,"574":1,"580":1,"584":1,"587":3,"606":3,"610":1,"611":1,"612":1,"614":1,"615":1,"633":1,"635":1,"659":1,"679":1,"689":1,"690":1,"789":1,"792":1,"822":1,"854":1,"857":1,"888":1,"891":1,"922":1,"925":1,"956":1,"959":1,"990":1,"993":1,"1024":1,"1027":1,"1058":1,"1061":1,"1092":1,"1095":1,"1124":1,"1127":1,"1129":1,"1130":1,"1132":1,"1133":1,"1138":1,"1148":1,"1185":1,"1249":1,"1282":1,"1302":3,"1304":1,"1305":1,"1310":1,"1318":1,"1336":1,"1337":1,"1357":1,"1368":1,"1369":1,"1372":2,"1375":1,"1378":1,"1388":1,"1390":1,"1391":1,"1398":1,"1407":1,"1420":1,"1422":1,"1429":1,"1435":1,"1439":1,"1443":1,"1460":1,"1464":1,"1467":1,"1472":1,"1474":1,"1483":2,"1491":1,"1506":2,"1508":1,"1532":2,"1533":2,"1546":1,"1550":1,"1552":1,"1555":1,"1568":1,"1571":1,"1591":1,"1606":1,"1611":1,"1612":1,"1616":1,"1627":1,"1693":1,"1696":1,"1711":1,"1718":1,"1753":1,"1754":1,"1763":1,"1766":2,"1771":1,"1832":1,"1855":1,"1858":3,"1859":1,"1870":1,"1899":1,"1907":1,"1910":2,"1925":2,"1942":1,"1951":1,"1956":1,"1960":1,"1964":1,"1984":1,"1986":1,"1987":3,"1991":2,"1995":1,"2069":1,"2070":1,"2072":2,"2073":1,"2075":1,"2078":1,"2079":1,"2080":1,"2082":1,"2096":2,"2110":1,"2113":1,"2143":1,"2151":1,"2156":1,"2163":1,"2166":1,"2167":1,"2168":1,"2184":1,"2187":1,"2190":1,"2191":2,"2207":1,"2210":1,"2212":1,"2213":1,"2219":1,"2220":1,"2221":1,"2269":1,"2282":1,"2300":2,"2301":2,"2308":1,"2309":1,"2314":1,"2318":2,"2344":1,"2347":1,"2374":1,"2381":1,"2382":1,"2389":1,"2432":2,"2434":1,"2436":1,"2437":2,"2442":1,"2444":3,"2448":1,"2449":1,"2450":1,"2457":1,"2462":1,"2484":1,"2496":1,"2505":1,"2507":1,"2516":1,"2517":1,"2529":2,"2555":1,"2562":1,"2569":1,"2572":2,"2574":1,"2579":1,"2580":2,"2583":1,"2584":1,"2587":1,"2588":1,"2595":1,"2598":1,"2599":1,"2602":1,"2604":1,"2605":3,"2608":1,"2610":1,"2615":6,"2616":2,"2678":1,"2699":1,"2704":1,"2710":1,"2740":1,"2742":1,"2744":1,"2745":1,"2747":1,"2750":3,"2762":1,"2763":3,"2765":1,"2767":1,"2786":1,"2789":1}}],["w25x10cl",{"2":{"2583":2}}],["w25q080",{"2":{"2583":2}}],["wmp",{"2":{"2394":1}}],["wm",{"2":{"2394":1}}],["w^wr^sd",{"2":{"2192":1}}],["wfav",{"2":{"2394":1,"2432":1}}],["wfwd",{"2":{"1910":1,"2394":1,"2432":1}}],["wfi",{"2":{"222":1}}],["www",{"2":{"551":1,"624":1,"674":7,"675":1,"701":1,"1279":2,"1326":1,"1417":1,"2078":1,"2207":1,"2394":7,"2432":7,"2609":1}}],["wt",{"2":{"236":1,"249":2,"2605":2}}],["wt80",{"2":{"211":2}}],["wt75",{"2":{"211":3}}],["wt70",{"2":{"211":1}}],["wt69",{"2":{"211":1}}],["wt65",{"2":{"211":8}}],["wt60",{"2":{"199":1,"211":8}}],["w1",{"2":{"211":1,"241":2,"249":1}}],["wk",{"2":{"211":1}}],["wkl",{"2":{"160":1}}],["wl",{"2":{"176":2,"2191":3}}],["wbak",{"2":{"1910":1,"2394":1,"2432":1}}],["wbg7",{"2":{"176":1}}],["wb32fq95xx",{"2":{"490":1}}],["wb32fq95",{"2":{"145":1}}],["wb32f3g71xx",{"2":{"490":1}}],["wb32f3g71",{"2":{"134":1}}],["wb32",{"0":{"490":1,"2282":1},"2":{"145":1,"176":4,"191":4,"199":2,"222":1,"236":1,"2282":4}}],["wstp",{"2":{"2394":1,"2432":1}}],["wsch",{"2":{"2394":1,"2432":1}}],["ws2811",{"2":{"1249":1,"2069":1,"2327":1}}],["ws2812s",{"2":{"1253":1}}],["ws2812c",{"2":{"1249":1,"2069":1}}],["ws2812b",{"2":{"1249":1,"1253":2,"2069":1}}],["ws2812",{"0":{"1249":1,"1269":1,"2327":1,"2739":1},"1":{"1250":1,"1251":1,"1252":1,"1253":1,"1254":1,"1255":1,"1256":1,"1257":1,"1258":1,"1259":1,"1260":1,"1261":1,"1262":1,"1263":1,"1264":1,"1265":1,"1266":1,"1267":1,"1268":1,"1269":1,"1270":2},"2":{"49":1,"50":2,"93":2,"134":2,"160":1,"176":4,"191":3,"199":1,"201":2,"211":7,"221":4,"222":1,"234":2,"236":1,"249":3,"266":2,"506":3,"642":1,"1122":2,"1249":1,"1250":4,"1251":10,"1252":2,"1253":3,"1254":2,"1255":2,"1256":1,"1257":3,"1258":1,"1261":6,"1262":1,"1263":6,"1264":1,"1265":1,"1266":1,"1267":7,"1269":1,"1983":1,"1997":1,"2069":1,"2070":4,"2327":1,"2567":1,"2570":1,"2733":2,"2734":1,"2739":3}}],["wsl",{"2":{"143":1,"1278":1,"1422":1,"2502":3}}],["w64",{"2":{"143":1,"2390":2,"2500":1}}],["w",{"2":{"134":1,"199":1,"201":2,"211":1,"241":1,"249":1,"266":4,"313":1,"375":1,"530":2,"1249":1,"1254":4,"1536":2,"1548":1,"1565":1,"1693":1,"1843":8,"1910":1,"1921":6,"2186":1,"2191":1,"2207":1,"2271":1,"2274":1,"2386":1,"2387":3,"2394":3,"2425":3,"2440":1,"2446":1,"2614":4,"2654":3,"2725":2}}],["wc",{"2":{"116":1}}],["wp",{"2":{"114":1,"674":5}}],["wpm",{"0":{"2263":1},"1":{"2264":1,"2265":1,"2266":1},"2":{"93":1,"114":1,"134":1,"160":1,"191":2,"199":1,"511":2,"1721":1,"1987":1,"2167":3,"2182":1,"2263":4,"2264":24,"2265":4,"2266":9,"2736":2,"2744":2,"2749":12,"2788":1}}],["wref",{"2":{"2394":1,"2432":1}}],["wraps",{"2":{"1860":3,"2092":4,"2181":3}}],["wrapping",{"2":{"1398":1}}],["wrapped",{"2":{"249":1,"436":1}}],["wrappers",{"2":{"176":1}}],["wrap",{"2":{"199":1,"453":3,"454":1,"455":3,"1435":1,"1629":2,"2208":1}}],["wrote",{"2":{"174":1,"388":1,"405":1,"414":1,"415":1,"417":1,"423":1,"424":1,"2767":1}}],["wrongly",{"2":{"1311":1}}],["wrong",{"0":{"28":1,"627":1},"2":{"5":1,"25":1,"92":1,"176":1,"240":1,"249":1,"433":1,"557":1,"1253":1,"1278":1,"1324":1,"1484":1,"2494":1}}],["written",{"2":{"164":1,"230":1,"440":1,"552":2,"1368":1,"1369":1,"1774":1,"1776":1,"1778":1,"1787":1,"1790":1,"1792":1,"1796":1,"1798":1,"1802":1,"1804":1,"1807":1,"2001":1,"2003":1,"2005":1,"2014":1,"2017":1,"2019":1,"2023":1,"2025":1,"2029":1,"2031":1,"2035":1,"2037":1,"2041":1,"2043":1,"2046":1,"2052":1,"2074":1,"2089":9,"2090":3,"2091":3,"2092":7,"2093":3,"2172":1,"2339":1,"2386":1,"2392":2,"2446":1,"2489":1,"2492":1,"2616":1,"2666":1,"2668":1,"2791":2}}],["writing",{"0":{"440":1},"2":{"65":1,"70":1,"112":1,"134":1,"174":1,"182":1,"317":1,"388":1,"401":1,"430":2,"434":1,"441":1,"483":2,"485":1,"615":1,"671":4,"674":1,"678":1,"693":1,"1368":1,"1401":1,"1475":1,"1616":1,"1860":6,"2181":6,"2182":1,"2220":1,"2303":1,"2339":1,"2386":2,"2505":1,"2563":1,"2593":1,"2614":4,"2616":1,"2790":1,"2795":1}}],["writereg16",{"2":{"244":1}}],["writereg",{"2":{"244":1,"249":1}}],["writepinlow",{"2":{"243":1}}],["writepinhigh",{"2":{"243":1}}],["writepin",{"2":{"145":1,"243":1}}],["writes",{"2":{"114":1,"679":1,"680":1,"681":1,"682":1,"714":1,"717":1,"1368":1,"1369":1,"1378":1,"1758":1,"1860":9,"2181":9,"2564":1,"2614":2}}],["write",{"0":{"714":1,"717":1,"739":1,"766":1,"798":1,"828":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1,"1191":1,"1220":1,"1239":1,"1655":1},"1":{"715":1,"716":1,"718":1,"719":1,"740":1,"767":1,"799":1,"829":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1,"1192":1,"1221":1,"1222":1,"1240":1,"1656":1},"2":{"31":4,"62":1,"114":2,"160":1,"174":1,"243":3,"244":2,"249":5,"424":1,"427":1,"440":1,"441":1,"446":2,"453":1,"455":1,"485":1,"559":1,"560":1,"585":1,"613":1,"614":1,"623":1,"674":2,"678":1,"679":2,"680":3,"681":3,"696":3,"701":1,"709":1,"715":2,"718":2,"727":1,"1220":1,"1221":1,"1226":2,"1240":1,"1244":2,"1324":2,"1368":1,"1369":5,"1370":1,"1398":1,"1401":1,"1485":1,"1565":1,"1655":1,"1755":6,"1851":9,"1852":1,"1853":1,"1854":2,"1860":17,"1861":18,"1870":1,"1922":1,"1927":1,"1948":1,"2175":9,"2176":1,"2177":1,"2181":11,"2340":2,"2392":4,"2465":1,"2564":1,"2592":1,"2639":2,"2749":5,"2790":1,"2791":2,"2792":1}}],["wont",{"2":{"1422":1}}],["wonder",{"2":{"2358":1,"2796":1}}],["wondering",{"2":{"554":1,"2779":1}}],["wonderland",{"2":{"57":2}}],["won",{"0":{"548":1},"2":{"221":1,"349":1,"498":1,"560":1,"1400":1,"1416":1,"1420":1,"1440":1,"1721":1,"2070":1,"2313":1,"2374":1,"2513":1,"2608":1,"2642":1,"2740":1,"2763":1,"2767":1,"2789":1}}],["woodkeys",{"2":{"154":6,"160":2}}],["wootpatoot",{"2":{"70":1}}],["worse",{"2":{"1315":1,"2156":1}}],["worrying",{"0":{"2511":1}}],["worry",{"2":{"1299":1}}],["worth",{"2":{"539":1,"1548":1,"2199":1,"2628":1,"2792":1}}],["worldsemi",{"2":{"1249":1}}],["world",{"0":{"1631":1,"2116":1},"2":{"430":4,"432":1,"470":1,"1288":1,"1305":1,"1362":2,"1392":1,"1473":3,"1631":1,"2116":2,"2192":1,"2705":1}}],["world1",{"2":{"120":1,"1391":1}}],["wordtypo",{"2":{"1484":1}}],["wordtpyo",{"2":{"1484":1}}],["words",{"2":{"1396":1,"1474":1,"1475":1,"1478":8,"1484":3,"1724":1,"1910":1,"2182":2,"2207":1,"2220":1,"2263":1,"2449":1,"2768":1}}],["word",{"0":{"137":1,"568":1,"1536":1,"1537":1,"1539":1,"1543":1,"1544":1,"2131":1,"2263":1,"2401":1,"2719":1},"1":{"1537":1,"1538":2,"1539":1,"1540":2,"1541":2,"1542":2,"1543":2,"1544":2,"2132":1,"2264":1,"2265":1,"2266":1},"2":{"137":3,"145":3,"176":2,"188":1,"191":2,"199":1,"211":3,"222":1,"249":1,"460":1,"1340":1,"1477":1,"1478":3,"1482":1,"1483":1,"1484":2,"1536":14,"1537":10,"1538":2,"1540":8,"1541":7,"1542":9,"1543":11,"1544":6,"1555":1,"1907":1,"1910":2,"2207":2,"2264":2,"2266":1,"2341":1,"2365":1,"2401":3,"2719":7,"2788":1}}],["workman",{"2":{"1392":3,"2742":6}}],["worked",{"2":{"606":1,"2452":1,"2496":1}}],["worker",{"2":{"304":1}}],["workers",{"0":{"304":1},"2":{"303":1,"304":1}}],["workbench",{"2":{"291":1,"2537":2,"2547":1}}],["workarounds",{"0":{"2657":1},"1":{"2658":1,"2659":1}}],["workaround",{"0":{"218":1},"2":{"145":5,"160":1,"199":2,"218":2,"222":1,"249":2,"1434":1,"1468":1,"1998":1}}],["workflows",{"2":{"262":1,"1351":1,"2474":2,"2476":1,"2477":1,"2487":1}}],["workflow",{"0":{"2476":1,"2478":1},"2":{"134":1,"164":1,"176":1,"191":1,"199":1,"213":1,"361":1,"521":1,"557":1,"2289":1,"2467":2,"2476":3,"2478":3,"2479":4}}],["workings",{"0":{"1710":1},"1":{"1711":1,"1712":1,"1713":1},"2":{"1964":1}}],["working",{"0":{"545":1,"1308":1,"1309":1,"1310":1,"1374":1,"2510":1},"1":{"1375":1,"1376":1,"1377":1,"2511":1},"2":{"114":1,"143":1,"321":1,"363":1,"370":1,"389":1,"390":1,"391":1,"399":1,"481":2,"516":1,"554":1,"560":1,"606":2,"674":1,"675":1,"680":1,"694":1,"1280":1,"1318":1,"1335":1,"1362":1,"1492":1,"1849":2,"1892":1,"2070":1,"2166":1,"2209":1,"2221":1,"2290":1,"2316":2,"2318":2,"2319":1,"2332":1,"2344":1,"2392":1,"2448":1,"2460":1,"2468":1,"2470":1,"2494":1,"2531":1,"2536":1,"2541":1,"2552":2,"2592":2,"2603":1}}],["workshop",{"2":{"1327":1}}],["workspaceroot",{"2":{"2552":2}}],["workspace",{"2":{"291":1,"2537":1,"2547":1,"2548":1,"2549":2,"2550":1}}],["works",{"0":{"2322":1,"2350":1},"2":{"100":1,"176":1,"199":1,"211":4,"263":2,"285":1,"375":1,"412":1,"481":1,"510":1,"532":1,"605":1,"692":1,"1122":1,"1252":1,"1273":1,"1276":1,"1280":1,"1320":1,"1371":1,"1438":1,"1440":1,"1448":1,"1453":1,"1479":1,"1484":1,"1487":1,"1536":1,"1537":2,"1540":1,"1615":1,"1710":1,"1918":1,"1945":1,"1946":1,"1980":1,"2071":1,"2156":1,"2160":1,"2164":1,"2200":1,"2209":3,"2210":1,"2220":1,"2221":4,"2287":1,"2309":1,"2322":1,"2350":1,"2370":1,"2388":1,"2442":1,"2466":1,"2541":1,"2552":1,"2764":1,"2781":1,"2796":1}}],["work",{"0":{"1318":1,"1325":1,"1328":1,"1329":1,"1448":1,"1475":1},"2":{"10":1,"23":2,"28":1,"49":1,"50":2,"114":1,"131":1,"134":1,"145":1,"153":1,"182":2,"189":2,"191":3,"194":1,"199":2,"222":1,"236":1,"251":2,"266":1,"277":1,"317":1,"336":1,"349":1,"354":1,"358":1,"380":1,"435":1,"452":1,"488":1,"515":2,"534":1,"541":1,"551":1,"554":2,"560":3,"605":1,"606":1,"698":1,"726":1,"1126":1,"1132":1,"1133":1,"1273":1,"1275":1,"1278":1,"1308":1,"1325":2,"1327":1,"1340":2,"1349":1,"1369":2,"1372":1,"1377":2,"1400":1,"1407":1,"1412":1,"1422":3,"1440":4,"1453":3,"1469":1,"1472":1,"1559":1,"1562":1,"1606":1,"1610":1,"1714":2,"1825":1,"1826":1,"1860":1,"1862":1,"1949":1,"1953":1,"1962":1,"1967":2,"1974":1,"1986":2,"2072":1,"2079":1,"2083":1,"2152":1,"2183":1,"2188":1,"2191":1,"2200":1,"2207":1,"2215":1,"2219":1,"2276":1,"2278":1,"2293":1,"2294":1,"2300":1,"2315":1,"2318":1,"2331":2,"2338":1,"2348":2,"2350":1,"2351":1,"2359":1,"2380":1,"2383":1,"2437":1,"2450":1,"2463":1,"2484":1,"2494":1,"2496":1,"2512":1,"2513":1,"2515":1,"2529":1,"2540":1,"2552":1,"2556":1,"2563":1,"2616":1,"2764":1,"2774":1,"2775":1,"2781":1,"2785":1}}],["wouldn",{"2":{"1559":1,"2796":1}}],["would",{"2":{"11":1,"73":1,"98":1,"164":1,"194":3,"263":1,"320":1,"331":1,"367":1,"479":1,"480":1,"485":1,"505":1,"529":1,"530":1,"532":1,"554":1,"611":1,"643":1,"655":1,"689":4,"690":2,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1132":1,"1133":1,"1144":1,"1170":1,"1174":1,"1181":1,"1218":1,"1250":1,"1263":1,"1267":1,"1301":1,"1331":1,"1337":2,"1362":1,"1371":1,"1373":3,"1375":1,"1398":4,"1403":1,"1428":1,"1429":1,"1442":1,"1467":2,"1469":1,"1478":2,"1488":2,"1506":1,"1507":1,"1529":1,"1545":1,"1547":1,"1551":1,"1568":1,"1598":1,"1615":1,"1708":1,"1714":1,"1767":1,"1769":1,"1829":1,"1842":1,"1901":1,"1921":1,"1958":1,"1975":1,"1977":2,"1979":2,"1990":1,"1993":1,"1997":1,"2077":1,"2082":1,"2083":1,"2084":1,"2102":1,"2190":3,"2192":1,"2193":1,"2200":1,"2207":2,"2221":1,"2266":1,"2307":1,"2350":2,"2435":1,"2442":2,"2449":1,"2450":4,"2460":1,"2508":2,"2545":1,"2572":1,"2590":1,"2605":1,"2616":3,"2646":2,"2653":1,"2758":1,"2773":2,"2774":1,"2775":1,"2791":1,"2795":3}}],["whlr",{"2":{"1839":1,"1910":1,"2411":1}}],["whll",{"2":{"1839":1,"1910":1,"2411":1}}],["whld",{"2":{"1597":1,"1839":1,"1910":1,"2411":1}}],["whlu",{"2":{"1597":1,"1839":1,"1910":1,"2411":1}}],["wh",{"2":{"209":2}}],["why",{"0":{"1446":1,"1447":1,"2293":1,"2322":1,"2779":1,"2780":1},"1":{"1447":1,"1448":1,"1449":1,"1450":1,"1451":1,"1452":1,"1453":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1465":1,"1466":1,"1467":1,"1468":1,"1469":1,"1470":1,"1471":1,"1472":1,"1473":1},"2":{"173":1,"367":1,"453":1,"455":1,"482":1,"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1337":1,"1377":1,"2358":1,"2710":1,"2779":1,"2796":1}}],["whom",{"2":{"2394":1,"2432":1}}],["whoeveryouare",{"2":{"2303":3}}],["whose",{"2":{"430":1,"2187":1,"2767":1}}],["who",{"2":{"119":2,"164":1,"166":1,"173":3,"209":1,"221":1,"231":1,"234":1,"470":1,"479":1,"502":1,"559":1,"605":1,"606":1,"1390":1,"1767":1,"1990":1,"2221":1,"2331":1,"2336":1,"2344":2,"2457":2}}],["whole",{"0":{"420":1,"551":1},"2":{"116":1,"263":1,"457":1,"498":1,"501":1,"1301":1,"1340":1,"1478":1,"1488":1,"1611":1,"1859":1,"2264":1,"2313":1,"2318":1,"2350":1,"2768":1,"2779":1,"2795":1}}],["whatever",{"2":{"502":3,"573":1,"1309":1,"1375":1,"1388":1,"1853":1,"2074":1,"2168":1,"2177":1,"2468":1,"2496":1,"2527":1,"2708":1,"2767":2}}],["what",{"0":{"338":1,"341":1,"353":1,"546":1,"547":1,"562":1,"1294":1,"1297":1,"1298":1,"1301":1,"1302":1,"1304":1,"1305":1,"1321":1,"1603":1,"2354":1,"2355":1,"2356":1,"2361":1},"1":{"354":1,"355":1,"356":1},"2":{"50":1,"99":1,"119":2,"182":1,"228":1,"246":1,"251":1,"254":1,"302":1,"435":1,"446":1,"462":1,"474":2,"516":1,"527":1,"539":1,"540":1,"550":1,"556":1,"567":1,"574":2,"586":1,"602":1,"606":1,"616":1,"629":1,"690":1,"1295":1,"1320":1,"1324":1,"1341":1,"1353":1,"1354":1,"1371":1,"1377":2,"1378":2,"1394":1,"1396":1,"1434":1,"1487":1,"1488":1,"1552":1,"1617":1,"1708":2,"1713":1,"1716":1,"1763":3,"1859":1,"1868":1,"1914":1,"1984":3,"2079":1,"2164":1,"2190":1,"2198":1,"2199":1,"2200":1,"2207":1,"2209":1,"2303":1,"2307":1,"2309":1,"2314":1,"2321":1,"2336":1,"2338":1,"2350":3,"2351":1,"2352":1,"2354":2,"2357":1,"2381":2,"2387":1,"2444":1,"2464":1,"2493":1,"2494":1,"2507":1,"2512":1,"2525":1,"2527":1,"2591":1,"2592":1,"2602":1,"2605":2,"2607":1,"2616":1,"2641":1,"2654":1,"2725":1,"2766":2,"2785":1,"2791":1}}],["wheatfield",{"2":{"144":2}}],["wheel",{"2":{"112":1,"222":1,"507":1,"1839":8,"1841":12,"1842":12,"1843":1,"1845":1,"1846":3,"1910":2,"1989":1,"2071":2,"2411":8,"2729":1}}],["whereas",{"2":{"592":1,"635":2,"689":1,"1571":1,"2767":1}}],["wherever",{"2":{"496":1,"1566":1,"2725":1,"2758":1,"2760":1}}],["where",{"0":{"553":1,"1295":1},"2":{"94":1,"99":1,"134":1,"151":1,"191":1,"194":1,"199":1,"211":1,"231":1,"249":1,"266":1,"303":1,"374":4,"446":1,"458":1,"482":1,"484":1,"500":1,"502":2,"511":1,"526":1,"557":2,"574":2,"578":1,"674":1,"758":1,"787":1,"819":1,"851":1,"852":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1023":1,"1056":1,"1057":1,"1090":1,"1125":1,"1128":2,"1132":1,"1133":1,"1146":1,"1183":1,"1253":1,"1262":1,"1337":1,"1339":1,"1340":1,"1366":2,"1378":1,"1443":1,"1475":1,"1488":1,"1560":1,"1615":1,"1650":1,"1652":1,"1668":1,"1686":1,"1710":1,"1763":2,"1771":1,"1868":1,"1910":2,"1951":1,"1960":1,"1984":2,"1995":1,"2089":9,"2092":2,"2103":1,"2190":2,"2219":2,"2220":1,"2297":2,"2300":1,"2305":1,"2313":2,"2314":1,"2316":1,"2318":1,"2336":1,"2339":1,"2340":1,"2350":1,"2387":1,"2392":1,"2406":1,"2445":1,"2446":1,"2462":2,"2484":1,"2491":1,"2525":2,"2540":1,"2572":1,"2593":1,"2594":1,"2597":1,"2603":1,"2605":5,"2606":1,"2607":1,"2616":2,"2634":1,"2636":1,"2637":1,"2653":2,"2743":1,"2781":1,"2783":2,"2785":1,"2795":1,"2796":1}}],["whether",{"2":{"49":1,"214":1,"234":1,"354":1,"437":1,"481":1,"580":2,"592":1,"671":1,"693":1,"698":1,"1247":1,"1267":1,"1337":1,"1449":1,"1467":1,"1475":2,"1494":1,"1575":1,"1635":2,"1639":2,"1653":1,"1656":1,"1658":1,"1676":1,"1708":1,"1731":1,"1735":1,"1755":1,"1763":1,"1843":1,"1984":1,"2145":3,"2163":1,"2167":1,"2190":1,"2200":2,"2207":1,"2209":1,"2217":1,"2250":1,"2387":1,"2563":1,"2613":1,"2615":1,"2616":1,"2626":1,"2716":1,"2728":3}}],["whenver",{"2":{"1596":1}}],["whenever",{"2":{"263":1,"282":3,"341":2,"572":1,"584":1,"588":1,"592":1,"613":1,"680":1,"681":1,"1132":1,"1396":1,"1479":1,"1958":1,"1977":1,"1988":1,"2081":1,"2085":1,"2166":1,"2192":1,"2264":1,"2352":1,"2353":1,"2442":1,"2480":1,"2487":1,"2530":1,"2616":1,"2788":1}}],["when",{"0":{"339":1,"361":1,"1307":1,"1978":1},"1":{"340":1},"2":{"11":1,"28":1,"49":1,"50":1,"58":1,"65":2,"74":1,"92":2,"93":1,"94":1,"107":1,"111":1,"114":6,"133":1,"134":2,"145":1,"160":1,"176":2,"191":5,"195":1,"199":7,"211":3,"222":5,"230":1,"233":1,"234":2,"236":3,"240":1,"241":1,"246":1,"247":1,"249":4,"253":1,"263":1,"266":1,"270":1,"304":1,"312":1,"331":1,"337":1,"341":1,"342":1,"361":1,"364":1,"367":2,"393":2,"394":2,"416":2,"426":1,"431":1,"433":1,"435":1,"436":1,"440":1,"441":1,"447":2,"453":3,"457":2,"459":1,"465":1,"467":2,"468":2,"474":1,"477":1,"479":1,"481":1,"482":1,"496":1,"502":2,"505":1,"506":4,"510":2,"511":16,"513":2,"522":1,"526":1,"527":1,"529":1,"539":1,"541":1,"542":1,"556":1,"557":1,"559":1,"560":1,"565":1,"566":1,"568":1,"570":1,"571":1,"572":3,"578":1,"586":1,"589":2,"592":1,"606":1,"607":1,"609":2,"610":1,"615":1,"622":1,"623":1,"625":1,"627":1,"628":2,"639":1,"671":1,"674":1,"688":2,"698":1,"1122":1,"1133":1,"1213":1,"1251":1,"1262":1,"1275":1,"1276":2,"1278":1,"1287":2,"1289":2,"1290":1,"1291":1,"1302":2,"1304":1,"1309":1,"1321":1,"1325":2,"1327":1,"1336":1,"1340":1,"1362":2,"1363":1,"1366":4,"1369":4,"1372":4,"1373":1,"1374":1,"1375":1,"1376":2,"1377":2,"1386":1,"1390":1,"1392":1,"1394":1,"1396":6,"1405":1,"1413":1,"1414":1,"1418":2,"1434":1,"1435":13,"1436":17,"1447":1,"1448":2,"1449":1,"1462":1,"1467":2,"1469":1,"1478":2,"1483":4,"1485":1,"1494":1,"1495":1,"1496":1,"1500":1,"1508":1,"1531":1,"1532":1,"1533":1,"1536":1,"1538":1,"1540":1,"1543":1,"1544":3,"1545":1,"1547":1,"1554":1,"1555":2,"1556":1,"1561":1,"1565":2,"1568":1,"1591":1,"1592":1,"1594":3,"1595":1,"1600":1,"1602":2,"1604":2,"1611":4,"1614":1,"1615":1,"1617":1,"1620":6,"1664":1,"1666":1,"1669":1,"1671":1,"1693":1,"1694":4,"1697":1,"1701":1,"1703":1,"1704":1,"1706":1,"1708":1,"1709":4,"1711":1,"1712":2,"1713":2,"1718":2,"1724":2,"1727":1,"1728":1,"1753":1,"1754":2,"1758":1,"1768":1,"1840":1,"1841":1,"1843":2,"1844":1,"1846":1,"1850":1,"1855":2,"1859":1,"1860":2,"1864":1,"1866":1,"1901":1,"1904":1,"1910":1,"1916":2,"1918":1,"1919":1,"1920":2,"1929":1,"1937":1,"1943":1,"1952":1,"1953":1,"1955":1,"1956":2,"1958":1,"1960":2,"1965":4,"1966":4,"1974":1,"1975":1,"1977":1,"1978":1,"1979":1,"1980":4,"1981":1,"1986":10,"1992":1,"1997":1,"2069":1,"2072":10,"2073":1,"2075":1,"2076":1,"2080":5,"2082":1,"2083":2,"2101":2,"2112":1,"2116":1,"2146":2,"2148":14,"2149":1,"2150":17,"2151":4,"2152":1,"2163":1,"2164":2,"2165":1,"2167":1,"2169":7,"2170":1,"2175":1,"2181":4,"2184":1,"2190":2,"2194":4,"2195":1,"2198":1,"2199":10,"2200":4,"2207":4,"2208":4,"2209":1,"2215":1,"2217":3,"2218":6,"2220":2,"2230":1,"2232":1,"2264":6,"2269":1,"2276":1,"2289":1,"2291":1,"2300":5,"2306":1,"2309":1,"2311":1,"2312":3,"2315":1,"2318":2,"2339":1,"2341":2,"2343":1,"2344":1,"2347":1,"2350":6,"2353":1,"2359":1,"2386":1,"2387":1,"2393":1,"2394":2,"2403":2,"2406":3,"2413":44,"2415":10,"2416":10,"2421":14,"2422":4,"2432":2,"2437":1,"2441":1,"2444":1,"2449":48,"2450":1,"2453":1,"2456":2,"2462":1,"2464":1,"2479":1,"2484":1,"2493":1,"2499":1,"2508":1,"2512":3,"2513":1,"2525":1,"2530":6,"2537":2,"2548":1,"2551":2,"2561":1,"2563":1,"2578":1,"2593":1,"2599":1,"2602":1,"2605":3,"2607":2,"2612":1,"2614":4,"2615":4,"2616":1,"2623":2,"2635":1,"2655":2,"2672":1,"2680":1,"2681":1,"2719":1,"2727":1,"2728":1,"2733":2,"2734":1,"2736":1,"2740":1,"2741":1,"2755":1,"2758":1,"2759":1,"2760":1,"2767":3,"2768":4,"2774":2,"2775":2,"2776":1,"2782":2,"2784":1,"2787":2,"2796":1}}],["whistles",{"2":{"2605":1}}],["whitefacemountain",{"2":{"277":1}}],["whitefox",{"2":{"154":2,"236":1}}],["white",{"2":{"266":1,"433":1,"435":2,"530":1,"1254":5,"1369":1,"1864":1,"1991":2,"2089":1,"2096":3,"2635":4}}],["whitespace",{"2":{"211":4,"453":1,"454":1,"556":1,"616":1,"1477":1,"2446":1}}],["whilst",{"2":{"198":1,"402":1,"2588":1}}],["while",{"2":{"21":1,"37":1,"49":1,"73":1,"191":1,"194":3,"199":2,"203":1,"331":1,"346":1,"496":1,"505":1,"559":1,"568":1,"590":1,"606":1,"626":3,"683":1,"692":1,"1302":1,"1307":1,"1310":1,"1321":2,"1340":1,"1356":1,"1362":3,"1366":2,"1368":1,"1390":1,"1393":1,"1401":1,"1420":1,"1440":1,"1478":1,"1479":1,"1483":1,"1500":1,"1535":1,"1536":2,"1540":2,"1543":2,"1555":1,"1591":1,"1594":1,"1608":1,"1611":1,"1632":1,"1693":1,"1708":1,"1711":3,"1712":1,"1715":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1860":7,"1865":1,"1894":3,"1896":4,"1907":1,"1915":1,"1960":1,"1962":1,"1966":1,"1970":1,"1972":1,"1979":1,"1991":1,"2096":1,"2101":1,"2104":1,"2108":1,"2143":1,"2150":1,"2163":1,"2166":1,"2181":5,"2186":2,"2190":1,"2194":3,"2207":1,"2209":1,"2274":1,"2275":1,"2287":2,"2300":2,"2301":1,"2303":1,"2318":1,"2323":1,"2332":1,"2344":2,"2422":3,"2439":1,"2446":2,"2447":1,"2458":1,"2463":1,"2464":1,"2489":3,"2554":1,"2613":1,"2623":1,"2639":1,"2679":1,"2690":1,"2693":1,"2698":1,"2710":1,"2735":1,"2765":1,"2768":3,"2777":1,"2782":1,"2784":1,"2793":1}}],["whichever",{"2":{"1442":1,"1926":1,"2190":1}}],["which",{"0":{"1289":1,"1543":1},"2":{"0":1,"9":1,"19":1,"27":1,"30":1,"33":1,"39":1,"45":1,"49":3,"50":1,"52":1,"69":1,"108":1,"118":1,"119":1,"134":1,"139":1,"143":1,"160":1,"173":1,"191":1,"194":1,"201":1,"209":1,"215":2,"233":1,"236":1,"246":1,"265":1,"313":1,"317":2,"327":1,"331":1,"334":2,"337":1,"341":1,"358":1,"401":1,"402":1,"415":1,"416":1,"430":1,"433":1,"453":1,"467":1,"470":1,"474":1,"487":1,"496":3,"503":1,"504":2,"505":2,"510":1,"513":1,"529":3,"540":1,"556":1,"560":1,"574":1,"586":1,"589":1,"615":1,"623":1,"626":1,"635":3,"678":1,"683":1,"684":1,"689":3,"690":2,"695":1,"700":1,"703":1,"726":1,"1122":1,"1129":1,"1136":1,"1137":1,"1138":1,"1212":1,"1214":2,"1233":1,"1235":1,"1252":1,"1253":1,"1254":1,"1257":1,"1280":1,"1290":1,"1307":1,"1308":2,"1316":1,"1321":1,"1324":3,"1327":1,"1337":1,"1338":1,"1340":1,"1349":1,"1362":1,"1363":2,"1373":1,"1386":1,"1394":1,"1396":2,"1398":3,"1429":1,"1430":1,"1431":1,"1433":1,"1434":1,"1437":2,"1441":3,"1448":1,"1451":1,"1453":1,"1454":1,"1456":1,"1458":1,"1460":1,"1465":1,"1469":1,"1473":1,"1485":1,"1496":2,"1498":1,"1532":2,"1536":1,"1538":1,"1543":2,"1553":1,"1560":1,"1561":1,"1565":1,"1569":1,"1586":1,"1587":1,"1589":2,"1594":1,"1595":1,"1597":1,"1600":2,"1610":1,"1613":1,"1668":1,"1695":1,"1697":1,"1698":1,"1699":1,"1700":1,"1708":3,"1711":1,"1713":1,"1714":1,"1715":1,"1716":1,"1760":1,"1841":2,"1842":3,"1845":1,"1853":1,"1854":1,"1859":3,"1860":1,"1862":2,"1863":2,"1901":1,"1907":1,"1910":1,"1919":1,"1921":1,"1926":1,"1927":1,"1939":1,"1942":1,"1943":2,"1956":3,"1965":1,"2078":1,"2079":1,"2101":1,"2116":1,"2143":1,"2161":2,"2169":2,"2177":1,"2178":1,"2193":1,"2199":4,"2207":1,"2209":2,"2215":1,"2216":1,"2219":2,"2264":1,"2273":1,"2274":1,"2276":1,"2291":3,"2293":1,"2300":2,"2301":1,"2303":1,"2311":3,"2315":2,"2332":1,"2338":1,"2339":1,"2341":1,"2342":2,"2350":3,"2354":1,"2383":1,"2388":2,"2389":1,"2406":1,"2441":1,"2445":1,"2446":1,"2450":2,"2482":1,"2487":1,"2493":1,"2500":1,"2507":1,"2514":1,"2516":3,"2520":1,"2526":3,"2527":2,"2552":1,"2556":1,"2562":1,"2568":1,"2573":2,"2574":1,"2578":3,"2580":1,"2581":1,"2582":1,"2585":1,"2587":1,"2596":1,"2605":1,"2606":1,"2610":2,"2612":1,"2615":2,"2616":4,"2623":1,"2626":1,"2635":2,"2653":4,"2654":4,"2672":2,"2682":1,"2700":1,"2703":1,"2716":1,"2725":1,"2727":2,"2728":1,"2733":2,"2734":2,"2736":1,"2738":1,"2740":1,"2742":1,"2744":1,"2749":2,"2757":1,"2767":1,"2768":2,"2776":1,"2777":1,"2779":1,"2782":1,"2783":1,"2784":1,"2785":1,"2788":1,"2789":1,"2791":1,"2796":3}}],["waz",{"2":{"2185":1,"2186":1}}],["warranty",{"2":{"1417":2,"2609":2}}],["warn",{"2":{"114":1,"145":1,"610":1,"2392":1}}],["warnings",{"0":{"2347":1,"2568":1},"2":{"95":1,"145":1,"170":1,"191":1,"211":1,"236":2,"352":1,"2300":1,"2347":2,"2760":1}}],["warning",{"2":{"23":1,"50":1,"107":1,"114":1,"134":1,"138":1,"139":1,"145":1,"160":1,"176":2,"182":1,"199":3,"228":1,"236":4,"266":1,"290":3,"317":1,"433":1,"537":1,"538":1,"540":1,"541":1,"574":1,"610":1,"619":2,"626":1,"628":1,"673":1,"675":1,"678":1,"679":1,"680":1,"694":1,"1122":1,"1126":1,"1390":1,"1413":2,"1435":1,"1485":1,"1532":1,"1565":1,"1596":1,"1598":1,"1715":1,"1752":1,"1858":1,"1860":2,"1925":1,"1951":1,"1952":2,"1953":1,"1986":1,"2072":1,"2075":1,"2082":1,"2140":1,"2152":2,"2156":1,"2167":1,"2168":1,"2184":1,"2188":1,"2199":1,"2213":1,"2221":1,"2293":1,"2369":1,"2371":1,"2373":1,"2374":1,"2378":1,"2387":2,"2462":1,"2466":1,"2475":1,"2476":1,"2480":1,"2481":2,"2484":1,"2493":2,"2499":1,"2516":1,"2529":1,"2552":1,"2571":1,"2604":1,"2611":1,"2612":1,"2615":4,"2616":3,"2620":1,"2653":2,"2757":1,"2776":1,"2777":1}}],["watch",{"2":{"1324":1,"2078":1,"2466":1,"2789":1}}],["watchdog",{"2":{"191":1,"222":2,"511":3,"2169":5,"2736":2}}],["waffling60",{"2":{"236":1}}],["waffling80",{"2":{"211":1}}],["waveshare",{"2":{"2615":3}}],["wavetable",{"2":{"1430":1}}],["waveforms",{"2":{"1616":1}}],["waveform",{"0":{"1616":1},"2":{"249":1,"1430":5,"1438":2,"1610":2,"1616":2}}],["wave",{"2":{"222":1,"266":1,"690":1,"1430":3,"1614":1,"1766":8,"1987":5,"2750":1}}],["walk",{"2":{"2303":1,"2443":1,"2498":1,"2511":1,"2607":1}}],["walter",{"2":{"191":1}}],["wallaby",{"2":{"154":2}}],["wako",{"2":{"1302":1,"2295":1}}],["waka60",{"2":{"266":1}}],["wakizashi40",{"2":{"211":1}}],["wakizashi",{"2":{"160":1}}],["wakes",{"2":{"589":1}}],["wakeup",{"0":{"590":1},"2":{"112":1,"114":1,"176":1,"199":2,"222":3,"236":1,"502":2,"515":1,"588":2,"589":1,"590":2,"591":2,"2616":1,"2738":2}}],["wake",{"0":{"589":1,"591":1,"1329":1,"1335":1},"1":{"590":1,"591":1},"2":{"62":1,"73":1,"231":1,"502":1,"515":1,"1310":1,"1329":2,"2394":3,"2432":3}}],["wanted",{"2":{"1421":1,"1422":1,"1449":1,"2212":1}}],["wanten",{"2":{"154":2}}],["wanting",{"2":{"1218":1,"2207":1,"2315":1,"2584":1,"2640":1}}],["wants",{"2":{"222":1,"1468":1,"2457":1,"2515":1,"2787":1}}],["want",{"0":{"551":1,"1300":1,"1301":1},"1":{"1301":1},"2":{"125":1,"173":1,"185":1,"194":1,"232":1,"341":1,"376":1,"415":1,"451":1,"452":1,"457":1,"474":1,"479":1,"481":1,"502":3,"505":3,"511":2,"537":1,"538":1,"539":1,"541":1,"550":1,"554":1,"567":1,"571":1,"574":5,"581":1,"586":1,"605":1,"609":1,"686":1,"687":1,"698":1,"1136":1,"1137":1,"1279":1,"1324":1,"1337":3,"1353":1,"1357":1,"1368":2,"1369":7,"1370":1,"1375":2,"1376":1,"1377":1,"1388":1,"1390":1,"1396":2,"1397":1,"1398":1,"1399":1,"1401":1,"1405":1,"1417":1,"1418":2,"1420":2,"1421":1,"1422":5,"1433":1,"1442":2,"1448":1,"1475":1,"1479":1,"1485":1,"1501":2,"1532":2,"1555":4,"1562":1,"1567":1,"1593":1,"1693":1,"1715":1,"1723":1,"1761":1,"1763":2,"1767":1,"1768":1,"1771":1,"1829":1,"1841":1,"1843":1,"1853":1,"1860":1,"1864":1,"1868":1,"1901":1,"1943":1,"1977":1,"1982":1,"1984":2,"1990":1,"1992":1,"1995":1,"1997":1,"1998":1,"2074":1,"2080":1,"2082":2,"2097":1,"2098":1,"2102":1,"2142":1,"2151":1,"2155":1,"2171":1,"2177":1,"2181":1,"2183":2,"2187":1,"2190":1,"2191":1,"2199":4,"2200":1,"2207":4,"2221":1,"2266":2,"2291":1,"2300":2,"2301":1,"2302":1,"2303":1,"2307":1,"2309":1,"2311":1,"2313":1,"2314":2,"2315":1,"2319":1,"2344":1,"2345":1,"2358":1,"2366":1,"2380":1,"2441":1,"2443":1,"2461":1,"2483":1,"2484":1,"2485":1,"2488":1,"2491":1,"2507":4,"2514":1,"2515":1,"2516":1,"2527":1,"2529":2,"2543":1,"2549":1,"2552":1,"2568":1,"2572":1,"2580":1,"2608":1,"2613":1,"2642":1,"2645":2,"2646":2,"2647":1,"2650":1,"2741":1,"2745":2,"2767":1,"2777":1,"2789":1,"2792":1,"2796":2}}],["waits",{"2":{"515":1,"599":1,"1363":1,"1405":2,"1660":1,"1662":1,"2279":1,"2768":1}}],["waiting",{"2":{"176":1,"191":1,"230":1,"315":1,"511":1,"523":1,"1289":1,"1291":2,"1405":1,"1592":1,"2169":1,"2170":1,"2481":1}}],["wait",{"2":{"92":1,"94":2,"112":1,"113":1,"114":4,"160":1,"176":3,"222":2,"263":1,"266":1,"336":1,"515":2,"554":1,"588":1,"598":1,"707":2,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"1214":1,"1363":1,"1412":1,"1534":1,"1768":1,"1899":1,"1992":1,"2076":1,"2078":6,"2113":1,"2122":1,"2126":1,"2199":1,"2205":4,"2207":1,"2217":1,"2268":1,"2271":2,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":4,"2285":4,"2287":4,"2288":2,"2489":1,"2603":1,"2613":1,"2728":1,"2736":2,"2738":3,"2776":1}}],["waaffle",{"2":{"86":4}}],["wasn",{"2":{"1555":1,"2769":1}}],["wasting",{"2":{"430":1}}],["wasdat",{"2":{"57":4,"145":1}}],["was",{"0":{"352":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"6":1,"8":1,"10":1,"11":1,"113":1,"125":1,"174":1,"179":1,"185":1,"189":2,"194":1,"214":1,"215":1,"243":1,"245":1,"251":1,"255":1,"263":1,"271":1,"285":1,"324":1,"327":1,"352":1,"361":2,"472":1,"505":1,"529":1,"545":1,"556":2,"606":1,"692":1,"1133":1,"1302":1,"1309":2,"1369":1,"1475":1,"1485":1,"1560":2,"1708":1,"1711":1,"1713":1,"1734":1,"1859":2,"1860":7,"1868":1,"1907":1,"1911":4,"1978":1,"2172":2,"2181":4,"2185":1,"2200":2,"2209":1,"2256":1,"2258":1,"2313":1,"2348":1,"2350":1,"2445":1,"2476":1,"2507":1,"2513":4,"2527":1,"2563":1,"2584":1,"2614":1,"2662":1}}],["ways",{"2":{"337":1,"432":1,"437":1,"438":1,"439":1,"449":1,"509":1,"540":1,"557":1,"560":1,"624":1,"1307":1,"1362":2,"1368":1,"1372":1,"1373":1,"1377":1,"1390":1,"1479":1,"1536":1,"1752":1,"1968":1,"2161":1,"2306":2,"2319":1,"2344":1,"2365":1,"2442":1,"2489":1,"2511":2}}],["way",{"2":{"0":1,"9":1,"19":1,"39":1,"50":1,"52":1,"120":1,"124":1,"139":2,"194":2,"222":1,"254":1,"337":1,"354":1,"377":1,"433":1,"436":2,"483":1,"534":1,"560":2,"584":1,"636":1,"675":1,"1169":1,"1249":1,"1271":1,"1272":1,"1368":1,"1372":1,"1374":1,"1383":1,"1414":1,"1420":1,"1422":2,"1428":1,"1441":1,"1484":1,"1488":2,"1491":1,"1532":1,"1566":1,"1693":1,"1713":1,"1715":1,"1722":1,"1763":1,"1841":1,"1913":1,"1926":1,"1952":1,"1956":1,"1960":1,"1984":1,"2069":1,"2168":1,"2188":1,"2221":1,"2264":1,"2276":1,"2309":1,"2311":1,"2350":3,"2365":1,"2383":1,"2388":1,"2442":1,"2445":1,"2484":1,"2490":1,"2513":2,"2515":1,"2527":1,"2541":1,"2568":1,"2578":1,"2603":1,"2608":1,"2653":1,"2654":1,"2728":1,"2741":1,"2758":1,"2777":1,"2792":1,"2795":1}}],["wikipedia",{"2":{"1337":1,"1841":1,"2350":1}}],["wiki",{"2":{"515":1,"1891":1,"2189":1}}],["wipe",{"2":{"2649":1}}],["wiper",{"2":{"1668":1}}],["wip",{"2":{"277":1}}],["wiping",{"0":{"2649":1},"2":{"191":1,"2311":1}}],["witf",{"2":{"211":1}}],["withe",{"2":{"1138":1}}],["withing",{"2":{"1611":1}}],["within",{"2":{"31":1,"34":1,"50":1,"67":1,"75":1,"86":1,"94":1,"102":1,"122":1,"124":1,"126":1,"132":1,"133":1,"134":1,"144":1,"152":2,"154":1,"160":2,"168":1,"181":1,"190":1,"191":1,"195":1,"197":1,"199":1,"201":1,"222":1,"231":1,"236":2,"254":1,"266":1,"317":1,"337":1,"360":1,"373":1,"432":1,"435":1,"460":1,"486":1,"511":1,"580":2,"610":1,"611":1,"674":1,"675":1,"680":1,"1287":1,"1373":1,"1381":1,"1401":1,"1434":1,"1437":1,"1448":1,"1478":2,"1533":1,"1540":1,"1545":1,"1555":1,"1557":1,"1558":1,"1565":1,"1575":1,"1767":1,"1781":1,"1783":1,"1865":1,"1918":1,"1939":1,"1986":1,"1990":1,"2008":1,"2010":1,"2072":1,"2153":1,"2158":1,"2169":1,"2200":1,"2207":1,"2208":1,"2271":1,"2296":1,"2297":2,"2301":1,"2341":1,"2359":1,"2394":1,"2432":1,"2442":1,"2467":1,"2484":1,"2541":1,"2589":2,"2598":1,"2605":2,"2610":2,"2631":1,"2634":1,"2740":1,"2758":1,"2759":3,"2764":1,"2774":3,"2775":2,"2776":1,"2783":1,"2784":1,"2788":1}}],["without",{"0":{"1998":1},"2":{"23":1,"49":2,"70":1,"80":1,"112":1,"125":1,"137":2,"164":1,"173":1,"176":1,"185":1,"194":1,"228":1,"273":2,"276":1,"290":1,"352":1,"370":1,"388":1,"414":1,"430":1,"470":1,"481":1,"500":1,"511":1,"515":1,"550":1,"560":1,"582":3,"585":1,"698":1,"727":1,"1326":1,"1337":4,"1374":1,"1417":2,"1422":1,"1435":1,"1453":1,"1468":4,"1479":1,"1494":1,"1500":1,"1543":1,"1566":1,"1593":1,"1704":1,"1721":2,"1767":1,"1844":1,"1870":1,"1913":1,"1949":1,"1952":1,"1965":1,"1990":1,"1998":1,"2079":1,"2103":1,"2107":2,"2117":1,"2163":1,"2166":1,"2169":1,"2170":1,"2182":1,"2184":1,"2187":1,"2192":1,"2221":2,"2275":1,"2289":1,"2291":1,"2300":2,"2301":1,"2344":1,"2350":1,"2355":1,"2387":1,"2480":1,"2527":1,"2529":1,"2555":1,"2569":1,"2605":1,"2609":2,"2610":1,"2616":4,"2644":1,"2659":1,"2765":1,"2777":3,"2783":1,"2796":1}}],["with",{"0":{"1":1,"27":1,"454":1,"625":1,"1284":1,"1285":1,"1286":1,"1301":1,"1318":1,"1374":1,"1383":1,"1698":1,"1699":1,"1700":1,"1847":1,"2121":1,"2125":1,"2183":1,"2184":1,"2190":1,"2303":1,"2467":1,"2490":1,"2510":1,"2552":1},"1":{"626":1,"627":1,"628":1,"629":1,"1375":1,"1376":1,"1377":1,"1384":1,"1385":1,"1386":1,"1387":1,"1388":1,"1389":1,"2122":1,"2126":1,"2185":1,"2186":1,"2187":1,"2468":1,"2469":1,"2470":1,"2471":1,"2472":1,"2473":1,"2474":1,"2475":1,"2476":1,"2477":1,"2478":1,"2479":1,"2491":1,"2492":1,"2511":1},"2":{"1":1,"5":1,"6":2,"7":2,"8":1,"11":1,"25":1,"27":1,"30":2,"31":5,"33":2,"34":2,"36":1,"49":3,"50":1,"60":1,"69":1,"72":1,"77":1,"83":1,"84":1,"86":1,"92":1,"93":1,"98":4,"100":1,"107":1,"111":1,"114":11,"119":2,"123":1,"124":1,"126":1,"131":2,"134":6,"138":1,"139":1,"141":1,"142":1,"145":4,"149":1,"160":7,"163":2,"166":1,"167":1,"172":1,"173":3,"175":2,"176":9,"182":5,"186":1,"189":1,"190":1,"191":6,"194":2,"195":1,"196":1,"198":1,"199":7,"201":1,"211":9,"218":1,"221":1,"222":5,"230":2,"231":2,"236":1,"240":3,"241":1,"243":1,"244":1,"249":8,"253":1,"254":1,"263":1,"264":1,"265":1,"266":4,"268":1,"270":1,"273":3,"274":1,"276":1,"277":1,"282":1,"291":1,"292":2,"294":1,"303":1,"317":2,"322":1,"324":1,"331":2,"340":1,"341":4,"347":1,"349":1,"350":1,"352":1,"357":1,"360":1,"361":2,"363":1,"366":1,"367":1,"370":7,"371":2,"374":1,"375":1,"377":1,"380":2,"389":1,"390":1,"391":1,"400":3,"416":3,"428":1,"430":1,"431":1,"435":2,"437":1,"453":2,"455":3,"462":2,"468":2,"472":1,"473":1,"477":1,"479":2,"481":2,"483":2,"485":1,"486":3,"488":1,"489":1,"495":1,"502":7,"505":1,"508":1,"509":3,"510":1,"511":2,"514":1,"515":2,"522":2,"541":2,"545":1,"546":1,"551":1,"552":2,"554":6,"555":2,"556":4,"559":2,"560":3,"562":1,"563":1,"568":1,"584":1,"585":1,"587":1,"606":1,"610":1,"611":1,"613":2,"616":2,"621":1,"624":1,"625":2,"626":2,"627":2,"628":2,"629":2,"633":1,"635":1,"643":1,"655":1,"679":3,"682":1,"683":1,"685":4,"686":1,"688":1,"690":2,"691":2,"696":3,"714":1,"717":1,"720":1,"723":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1121":1,"1122":1,"1126":1,"1129":4,"1132":1,"1133":2,"1134":2,"1136":1,"1139":1,"1144":1,"1170":1,"1172":1,"1181":1,"1213":1,"1238":1,"1250":1,"1252":2,"1254":2,"1271":1,"1272":1,"1275":4,"1276":2,"1278":1,"1279":2,"1291":3,"1292":2,"1294":1,"1295":1,"1298":1,"1301":1,"1302":2,"1307":2,"1318":1,"1321":1,"1324":1,"1325":1,"1327":1,"1330":1,"1331":1,"1336":2,"1337":8,"1339":1,"1340":2,"1350":1,"1356":1,"1360":1,"1361":1,"1362":2,"1363":1,"1365":1,"1366":2,"1367":1,"1368":1,"1369":1,"1372":4,"1374":1,"1375":2,"1381":1,"1383":2,"1385":1,"1388":1,"1389":1,"1396":1,"1398":1,"1399":1,"1400":1,"1405":1,"1406":1,"1407":1,"1412":1,"1413":3,"1414":1,"1415":3,"1417":3,"1422":3,"1424":1,"1425":2,"1427":2,"1428":2,"1429":1,"1430":3,"1432":2,"1434":1,"1435":1,"1436":2,"1440":3,"1448":2,"1449":1,"1450":1,"1453":3,"1468":2,"1472":4,"1473":3,"1475":1,"1477":2,"1482":1,"1485":1,"1488":14,"1489":2,"1503":1,"1504":2,"1528":2,"1529":3,"1532":1,"1535":1,"1537":2,"1538":1,"1540":3,"1543":1,"1545":2,"1546":1,"1547":1,"1548":2,"1552":2,"1553":3,"1555":2,"1558":1,"1561":2,"1562":1,"1563":1,"1565":1,"1568":6,"1569":1,"1575":1,"1586":1,"1590":1,"1592":1,"1594":1,"1595":2,"1596":1,"1597":1,"1601":2,"1602":1,"1608":1,"1611":1,"1614":1,"1616":1,"1618":1,"1619":1,"1620":2,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1627":1,"1669":3,"1670":1,"1671":1,"1672":1,"1693":2,"1697":1,"1703":5,"1704":1,"1706":2,"1708":2,"1709":1,"1713":2,"1714":3,"1715":1,"1721":2,"1757":1,"1760":3,"1763":1,"1767":2,"1769":1,"1771":1,"1825":1,"1840":1,"1842":1,"1846":2,"1847":1,"1851":2,"1852":2,"1853":1,"1855":1,"1858":7,"1859":2,"1860":2,"1868":1,"1897":1,"1901":1,"1904":1,"1907":2,"1910":3,"1911":1,"1913":1,"1916":1,"1917":1,"1918":3,"1921":1,"1922":1,"1925":2,"1927":3,"1937":1,"1938":1,"1939":1,"1943":2,"1947":1,"1948":2,"1950":1,"1952":3,"1953":1,"1960":2,"1962":1,"1964":1,"1965":3,"1968":1,"1973":1,"1974":1,"1984":1,"1986":2,"1987":2,"1989":2,"1990":2,"1993":1,"1995":1,"1996":2,"1998":1,"2069":2,"2070":1,"2072":1,"2078":1,"2080":4,"2083":1,"2097":1,"2100":1,"2101":1,"2110":2,"2113":2,"2119":1,"2121":1,"2123":1,"2125":2,"2138":2,"2139":2,"2140":1,"2142":1,"2147":7,"2149":2,"2150":8,"2151":3,"2155":1,"2158":1,"2163":1,"2164":9,"2165":2,"2166":1,"2168":4,"2169":4,"2170":1,"2171":1,"2177":1,"2180":1,"2181":1,"2182":2,"2183":1,"2184":1,"2188":2,"2191":1,"2198":1,"2199":5,"2200":1,"2206":2,"2207":3,"2209":6,"2214":1,"2216":1,"2217":3,"2220":3,"2221":2,"2267":1,"2268":2,"2269":2,"2270":1,"2271":3,"2272":2,"2273":1,"2274":2,"2275":1,"2276":3,"2278":3,"2279":1,"2280":2,"2281":1,"2282":1,"2283":1,"2285":1,"2287":3,"2288":3,"2291":1,"2294":4,"2295":1,"2300":3,"2301":4,"2303":5,"2306":1,"2307":2,"2308":1,"2309":4,"2311":2,"2312":1,"2315":1,"2316":1,"2318":2,"2329":1,"2333":1,"2334":1,"2340":2,"2341":1,"2342":1,"2349":1,"2350":1,"2353":1,"2355":1,"2357":1,"2359":1,"2361":1,"2366":1,"2367":1,"2370":1,"2374":2,"2380":2,"2383":1,"2388":1,"2389":1,"2390":2,"2406":1,"2424":1,"2435":1,"2436":1,"2440":1,"2441":2,"2443":1,"2445":1,"2446":2,"2449":1,"2452":2,"2453":1,"2454":1,"2459":1,"2460":3,"2461":1,"2464":1,"2466":2,"2467":4,"2468":1,"2469":1,"2470":1,"2471":1,"2474":1,"2476":5,"2477":2,"2480":1,"2482":1,"2490":1,"2491":1,"2494":2,"2496":3,"2507":2,"2508":2,"2512":2,"2513":5,"2514":1,"2516":4,"2526":1,"2527":1,"2529":1,"2530":1,"2531":1,"2533":1,"2537":1,"2540":2,"2547":1,"2549":1,"2552":3,"2556":1,"2557":3,"2558":1,"2560":1,"2562":1,"2563":1,"2565":1,"2568":1,"2569":2,"2583":4,"2585":2,"2587":1,"2588":1,"2589":1,"2591":1,"2592":3,"2596":1,"2602":2,"2603":6,"2604":1,"2605":6,"2606":1,"2607":1,"2609":1,"2612":1,"2614":1,"2615":24,"2616":12,"2617":3,"2620":2,"2623":1,"2626":1,"2634":1,"2635":1,"2637":1,"2638":1,"2639":3,"2649":1,"2654":1,"2655":1,"2658":1,"2673":1,"2676":1,"2686":1,"2687":1,"2694":1,"2709":2,"2710":2,"2713":1,"2725":1,"2727":1,"2734":1,"2740":1,"2741":1,"2745":2,"2748":3,"2751":1,"2752":1,"2753":1,"2758":1,"2759":1,"2761":1,"2764":1,"2765":1,"2767":5,"2769":1,"2774":1,"2775":1,"2776":2,"2777":2,"2779":1,"2781":1,"2782":1,"2785":3,"2786":1,"2793":1,"2794":3,"2796":3}}],["wild",{"2":{"2198":1}}],["wildcard",{"2":{"411":1}}],["wildcards",{"2":{"374":1}}],["wilba",{"2":{"191":1,"199":1,"211":23,"2605":3}}],["willing",{"2":{"2608":1}}],["willoucom",{"2":{"222":1}}],["will",{"0":{"341":1,"2759":1,"2760":1},"2":{"0":1,"5":1,"7":1,"9":1,"10":1,"14":1,"19":1,"21":1,"22":1,"23":3,"39":1,"45":1,"49":1,"52":1,"70":1,"88":3,"89":1,"90":3,"103":1,"104":3,"105":2,"107":1,"110":2,"120":1,"126":1,"127":3,"132":3,"137":1,"138":1,"141":1,"170":3,"182":2,"195":2,"198":1,"201":1,"203":2,"206":1,"209":3,"213":3,"218":1,"220":1,"228":1,"230":1,"240":2,"255":1,"256":1,"262":1,"263":2,"265":3,"272":1,"273":1,"275":1,"276":1,"291":1,"302":1,"316":1,"322":1,"331":3,"334":2,"336":1,"337":2,"341":1,"345":1,"350":5,"355":1,"358":2,"364":1,"365":1,"366":1,"370":2,"371":1,"373":1,"377":1,"378":1,"381":1,"383":1,"385":2,"386":1,"387":1,"405":1,"415":1,"424":1,"429":2,"430":4,"431":1,"433":1,"435":2,"441":1,"446":2,"447":1,"448":1,"450":2,"452":1,"454":3,"468":2,"474":2,"478":1,"487":1,"496":1,"497":1,"501":1,"502":1,"503":1,"504":2,"506":2,"512":1,"515":2,"519":1,"522":2,"525":1,"526":1,"527":1,"530":1,"533":1,"534":1,"537":1,"538":1,"540":1,"541":2,"542":1,"554":2,"556":1,"560":2,"562":1,"567":1,"568":1,"570":1,"571":3,"574":1,"580":4,"584":1,"586":1,"588":1,"590":2,"592":3,"593":1,"594":1,"597":1,"598":3,"599":1,"600":1,"606":1,"607":1,"613":1,"615":2,"616":2,"617":1,"625":1,"626":2,"628":2,"639":3,"641":2,"671":4,"674":1,"675":1,"679":3,"682":1,"690":1,"692":1,"701":3,"726":1,"727":1,"1132":1,"1133":1,"1138":2,"1218":1,"1231":1,"1242":1,"1247":1,"1254":1,"1258":1,"1264":1,"1272":1,"1275":1,"1279":1,"1280":1,"1282":1,"1289":1,"1291":2,"1295":1,"1306":1,"1307":4,"1324":2,"1325":1,"1326":1,"1327":1,"1336":2,"1339":1,"1349":2,"1362":4,"1363":2,"1365":1,"1369":6,"1372":2,"1373":2,"1375":2,"1377":3,"1381":1,"1383":1,"1390":1,"1396":1,"1398":1,"1404":1,"1408":1,"1409":1,"1410":1,"1412":5,"1413":1,"1414":2,"1415":1,"1416":2,"1417":1,"1420":1,"1422":7,"1433":1,"1435":2,"1440":2,"1441":2,"1442":2,"1443":4,"1448":2,"1449":3,"1451":1,"1453":4,"1468":5,"1470":1,"1472":1,"1476":1,"1477":3,"1478":1,"1482":2,"1483":2,"1485":2,"1494":1,"1496":1,"1532":2,"1536":2,"1545":1,"1546":1,"1547":1,"1548":1,"1552":1,"1563":5,"1565":1,"1571":1,"1586":1,"1591":1,"1596":2,"1597":1,"1598":3,"1600":1,"1601":1,"1602":2,"1603":3,"1605":1,"1606":1,"1608":1,"1610":1,"1611":4,"1615":1,"1617":4,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1629":1,"1643":1,"1659":2,"1689":2,"1692":1,"1703":7,"1708":5,"1709":3,"1711":2,"1712":1,"1713":3,"1715":3,"1722":1,"1723":1,"1724":2,"1752":1,"1754":3,"1756":1,"1757":1,"1768":2,"1781":1,"1783":1,"1825":2,"1829":1,"1832":1,"1841":3,"1842":3,"1846":2,"1853":2,"1855":1,"1859":1,"1860":2,"1863":1,"1899":1,"1901":4,"1916":1,"1918":1,"1922":1,"1925":1,"1943":2,"1946":1,"1951":1,"1952":3,"1953":1,"1955":1,"1956":3,"1960":3,"1962":1,"1964":2,"1965":3,"1966":3,"1967":2,"1972":1,"1974":2,"1978":1,"1980":4,"1986":2,"1988":1,"1989":3,"1992":2,"1996":1,"1997":1,"1998":1,"2008":1,"2010":1,"2072":1,"2073":1,"2079":1,"2080":4,"2082":3,"2099":1,"2100":1,"2101":2,"2104":1,"2105":1,"2110":1,"2112":1,"2113":1,"2140":1,"2150":1,"2152":1,"2155":2,"2159":1,"2162":1,"2163":3,"2164":2,"2166":2,"2167":1,"2168":1,"2169":4,"2171":1,"2177":2,"2179":1,"2181":2,"2184":2,"2187":1,"2188":1,"2190":3,"2191":2,"2194":1,"2199":6,"2207":3,"2209":1,"2213":1,"2215":1,"2219":4,"2220":3,"2221":3,"2237":1,"2263":1,"2264":5,"2267":3,"2268":2,"2269":1,"2272":1,"2275":1,"2276":2,"2282":1,"2289":1,"2291":3,"2298":1,"2299":1,"2300":6,"2301":7,"2302":1,"2303":1,"2305":1,"2306":1,"2307":3,"2310":1,"2311":3,"2312":7,"2313":1,"2315":1,"2318":1,"2319":1,"2332":1,"2334":2,"2338":1,"2340":2,"2341":1,"2342":1,"2344":2,"2347":1,"2350":5,"2351":1,"2355":2,"2366":1,"2367":1,"2368":1,"2372":1,"2374":1,"2381":2,"2385":1,"2386":1,"2390":3,"2391":1,"2394":1,"2437":1,"2443":1,"2444":1,"2447":2,"2450":2,"2452":1,"2457":1,"2459":1,"2462":1,"2464":2,"2466":2,"2467":2,"2470":2,"2471":1,"2472":1,"2474":1,"2475":1,"2476":1,"2477":1,"2478":2,"2479":2,"2480":2,"2481":2,"2482":1,"2485":1,"2486":2,"2487":2,"2489":3,"2490":1,"2491":1,"2492":1,"2493":2,"2494":2,"2496":1,"2498":2,"2499":1,"2500":1,"2501":2,"2502":1,"2503":1,"2507":5,"2511":1,"2513":1,"2514":1,"2516":3,"2527":1,"2528":1,"2529":5,"2530":1,"2534":1,"2535":2,"2536":1,"2537":2,"2540":1,"2541":2,"2543":1,"2545":1,"2547":2,"2552":5,"2561":1,"2568":1,"2582":1,"2585":1,"2587":4,"2589":1,"2591":1,"2592":1,"2595":3,"2602":1,"2603":5,"2604":2,"2605":6,"2606":3,"2607":1,"2608":1,"2609":1,"2610":2,"2612":2,"2613":4,"2614":1,"2615":1,"2616":7,"2620":1,"2640":1,"2644":3,"2646":1,"2654":4,"2672":1,"2701":1,"2711":2,"2725":1,"2727":1,"2734":1,"2744":6,"2748":1,"2755":1,"2758":2,"2759":4,"2760":2,"2762":1,"2767":3,"2768":1,"2773":2,"2774":6,"2775":3,"2776":7,"2777":7,"2782":4,"2783":2,"2784":1,"2785":1,"2787":1,"2788":1,"2792":1,"2793":2,"2796":3}}],["wise",{"2":{"681":1,"703":1,"1214":1,"1235":1}}],["wisdom",{"2":{"179":1}}],["wished",{"2":{"530":1}}],["wishing",{"2":{"427":1}}],["wish",{"2":{"1":1,"137":1,"206":1,"231":1,"232":1,"265":1,"401":1,"500":1,"1417":1,"1598":1,"1704":1,"1926":1,"1986":1,"2072":1,"2158":1,"2187":1,"2299":2,"2480":1,"2481":2,"2482":1,"2490":1,"2563":1,"2564":1,"2581":1}}],["widht",{"2":{"1477":2}}],["width",{"2":{"111":1,"114":1,"617":1,"679":1,"680":1,"681":1,"1477":2,"1491":1,"1845":1,"1855":2,"1858":3,"1859":3,"1860":1,"1939":2,"2179":2,"2180":3,"2615":15,"2616":8,"2627":4,"2633":1,"2654":1,"2725":1,"2744":1}}],["widely",{"2":{"2531":1,"2587":1}}],["wider",{"2":{"352":1,"453":1,"455":2}}],["widen",{"2":{"191":1}}],["wide",{"0":{"451":1,"452":1},"2":{"77":1,"188":1,"617":1,"1766":3,"1987":3,"2541":1,"2583":1,"2616":3,"2658":1,"2740":1,"2750":1}}],["winc",{"2":{"2217":1,"2218":1,"2222":1,"2234":1,"2423":1}}],["wincompose",{"2":{"191":1,"2217":1,"2218":1,"2221":4,"2222":2,"2234":1,"2235":1,"2236":1,"2423":2}}],["window",{"2":{"331":3,"350":2,"628":1,"1137":1,"1553":2,"1555":2,"1605":1,"1841":1,"2386":1,"2443":1,"2459":1,"2464":1,"2493":1,"2541":1,"2547":2,"2578":1}}],["windows",{"0":{"240":1,"326":1,"2293":1,"2544":1},"1":{"2545":1,"2546":1,"2547":1},"2":{"73":1,"143":1,"240":1,"326":2,"331":1,"399":1,"454":1,"625":1,"627":1,"629":1,"1278":1,"1286":1,"1310":1,"1320":1,"1329":1,"1412":1,"1561":2,"1605":1,"1606":1,"1711":1,"1863":1,"1864":1,"1870":1,"1925":1,"2218":1,"2221":5,"2222":3,"2275":1,"2283":1,"2285":1,"2287":1,"2293":6,"2382":1,"2386":2,"2390":1,"2394":4,"2423":3,"2429":2,"2431":1,"2437":1,"2449":2,"2450":1,"2468":1,"2474":2,"2490":1,"2491":1,"2496":1,"2502":1,"2542":1,"2545":3,"2547":2,"2552":4,"2595":1}}],["winusb",{"2":{"240":2,"629":12}}],["wings",{"2":{"211":2,"266":1}}],["wings42",{"2":{"154":6}}],["winkeyless",{"2":{"211":1}}],["winkeys",{"2":{"211":1}}],["winni",{"2":{"211":1}}],["winry315",{"2":{"277":1}}],["winry",{"2":{"154":1,"160":1}}],["winry25tc",{"2":{"154":2,"160":1}}],["wins",{"2":{"70":13}}],["win",{"2":{"70":1,"134":1,"266":1,"1603":1,"2218":1,"2222":1,"2413":1,"2423":1,"2449":1}}],["wired",{"2":{"506":2,"1273":1,"1429":1,"1496":1,"1508":1,"1589":1,"1599":2,"1937":1,"2156":1,"2169":1,"2313":1,"2369":1,"2371":1,"2373":1,"2703":1,"2707":1,"2779":1}}],["wires",{"2":{"334":1,"1121":1,"1129":1,"2155":2,"2156":4,"2157":1,"2158":1,"2311":1,"2313":5,"2314":1,"2315":4,"2318":2,"2367":2}}],["wireless",{"2":{"241":1,"2605":10,"2665":2}}],["wire",{"2":{"45":2,"114":1,"334":1,"1121":5,"1123":1,"1126":1,"1249":2,"1253":1,"1356":1,"2069":2,"2099":1,"2172":1,"2305":3,"2306":1,"2307":3,"2309":9,"2311":1,"2312":2,"2313":5,"2318":1,"2320":1,"2350":3,"2352":1}}],["wiring",{"0":{"45":1,"1425":1,"1428":1,"1432":1,"2157":1,"2158":1,"2304":1,"2309":1,"2314":1,"2369":1,"2371":1,"2373":1,"2375":1,"2377":1,"2379":1,"2391":1},"1":{"1429":1,"2305":1,"2306":1,"2307":1,"2308":1,"2309":1,"2310":2,"2311":2,"2312":2,"2313":2,"2314":1,"2315":2,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1},"2":{"45":3,"134":1,"685":1,"1169":1,"1172":1,"1428":1,"1432":1,"1611":1,"1860":2,"1950":1,"1987":1,"2181":2,"2306":1,"2309":1,"2311":1,"2313":1,"2318":1,"2320":1,"2367":1,"2392":1,"2552":1,"2598":1,"2687":1}}],["welcomed",{"2":{"2608":1}}],["welcome",{"2":{"2537":1}}],["well",{"2":{"49":1,"50":2,"90":1,"107":1,"131":1,"132":1,"137":1,"138":1,"173":1,"198":1,"201":1,"213":1,"215":1,"224":1,"229":1,"232":1,"243":1,"249":1,"263":1,"265":1,"272":1,"331":1,"336":1,"374":2,"435":1,"512":1,"552":1,"560":1,"606":1,"629":1,"639":1,"681":1,"1127":1,"1130":1,"1340":1,"1371":1,"1384":1,"1422":1,"1433":1,"1440":1,"1448":1,"1453":1,"1484":1,"1490":1,"1537":1,"1611":1,"1713":1,"1714":1,"1754":1,"1760":1,"1917":1,"1950":1,"1980":1,"1988":1,"2146":2,"2152":1,"2188":1,"2200":1,"2207":1,"2219":1,"2269":1,"2276":1,"2291":1,"2301":2,"2306":1,"2331":1,"2345":1,"2386":1,"2392":1,"2406":1,"2481":1,"2585":1,"2610":1,"2612":2,"2750":1,"2779":1}}],["wetting",{"2":{"2311":1}}],["wet",{"2":{"2311":1}}],["wete",{"2":{"197":4}}],["west",{"2":{"1904":1}}],["westberrytech",{"0":{"490":1},"2":{"130":1,"134":1}}],["week",{"0":{"345":1},"2":{"350":1}}],["weeks",{"0":{"343":1,"344":1},"2":{"228":1,"350":7}}],["webhost",{"2":{"2513":3}}],["webpage",{"2":{"1275":1}}],["web",{"2":{"310":1,"318":1,"517":1,"557":1,"602":1,"1341":1,"2207":1,"2321":1,"2469":1}}],["website",{"2":{"70":1,"2309":1,"2316":1,"2318":1,"2320":1,"2336":1,"2676":1}}],["weighting",{"2":{"1937":1}}],["weight",{"2":{"1614":2,"1615":3,"2190":1}}],["weights",{"2":{"249":1,"1937":6}}],["weird",{"2":{"1440":1,"2649":1}}],["weirdo",{"2":{"154":7,"160":2,"211":1}}],["werror=array",{"2":{"145":1}}],["weren",{"2":{"199":1}}],["were",{"2":{"98":1,"128":1,"131":1,"166":1,"175":1,"186":1,"188":1,"204":1,"229":1,"234":2,"244":1,"251":1,"254":1,"256":1,"263":2,"268":1,"272":1,"273":1,"453":1,"455":1,"1375":1,"1449":1,"1467":1,"1488":1,"1535":1,"1547":1,"1713":1,"1901":1,"1907":1,"1911":1,"1918":1,"1919":1,"1962":1,"2074":1,"2171":1,"2466":1,"2513":2,"2614":1,"2659":1,"2750":1,"2774":1}}],["went",{"2":{"125":1,"185":1,"1859":1}}],["wealthier",{"2":{"1478":2}}],["weact",{"0":{"2553":1},"1":{"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1},"2":{"489":2,"2553":3,"2561":1,"2751":1}}],["wear",{"0":{"174":1,"677":1,"678":1,"679":1,"680":1,"681":1,"682":1},"1":{"679":1,"680":1,"681":1,"682":1},"2":{"114":1,"174":1,"176":4,"191":1,"211":1,"236":5,"249":1,"277":1,"671":2,"677":3,"678":6,"679":8,"680":7,"681":5,"2722":3}}],["weakly",{"2":{"707":1,"726":1,"1534":1,"2234":1,"2235":1,"2236":1}}],["weak",{"0":{"1321":1},"2":{"65":1,"93":1,"114":1,"160":2,"191":1,"222":1,"511":1,"566":4,"1321":7,"1420":2,"1422":1,"1467":2,"1482":1,"1543":2,"1619":1,"1860":2,"2167":1,"2181":4,"2266":3,"2605":1,"2748":1}}],["we",{"0":{"1446":1,"2322":1,"2779":1},"1":{"1447":1,"1448":1,"1449":1,"1450":1,"1451":1,"1452":1,"1453":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1465":1,"1466":1,"1467":1,"1468":1,"1469":1,"1470":1,"1471":1,"1472":1,"1473":1},"2":{"0":1,"9":1,"19":1,"39":1,"50":2,"51":1,"52":1,"83":1,"89":1,"92":1,"93":1,"111":1,"112":1,"172":1,"188":2,"194":2,"213":1,"224":1,"228":1,"245":2,"263":1,"273":1,"277":1,"314":1,"322":1,"331":7,"334":3,"337":3,"342":1,"344":1,"345":1,"346":1,"363":1,"364":1,"367":1,"430":6,"433":1,"436":1,"440":1,"442":1,"445":1,"446":2,"447":1,"453":6,"454":1,"455":5,"456":1,"457":4,"459":1,"462":1,"468":1,"470":3,"471":1,"478":1,"479":2,"480":2,"481":1,"483":1,"484":1,"485":1,"496":1,"512":1,"530":2,"537":1,"549":1,"550":2,"551":1,"556":2,"557":1,"559":1,"560":3,"561":2,"562":1,"568":2,"602":1,"606":4,"611":2,"612":1,"625":1,"641":4,"690":1,"1273":1,"1280":1,"1294":1,"1299":1,"1300":1,"1301":2,"1341":1,"1357":1,"1363":1,"1369":5,"1374":1,"1381":2,"1396":8,"1397":1,"1412":1,"1422":1,"1449":7,"1468":1,"1475":4,"1478":1,"1488":7,"1489":1,"1561":2,"1565":1,"1566":1,"1587":1,"1591":1,"1853":2,"1858":1,"1859":2,"1865":1,"1927":1,"1962":2,"2080":4,"2081":1,"2082":2,"2152":1,"2177":2,"2200":3,"2206":2,"2209":4,"2269":1,"2276":1,"2303":1,"2306":1,"2313":1,"2315":2,"2321":1,"2325":1,"2331":2,"2332":2,"2342":1,"2343":1,"2344":2,"2346":3,"2350":9,"2443":1,"2444":1,"2446":1,"2447":1,"2448":1,"2456":1,"2457":1,"2458":1,"2459":1,"2497":1,"2507":1,"2511":2,"2513":4,"2526":1,"2535":1,"2541":2,"2545":1,"2546":1,"2547":1,"2551":1,"2558":1,"2605":1,"2607":1,"2608":3,"2610":1,"2653":3,"2654":3,"2655":1,"2695":1,"2765":1,"2774":2,"2779":2,"2785":5,"2786":2,"2787":3,"2788":1}}],["i+7",{"2":{"2616":1}}],["i+=8",{"2":{"2616":3}}],["i++",{"2":{"1767":2,"1853":1,"1854":1,"1990":2,"1996":2,"1997":1,"2177":1}}],["i2s",{"2":{"2567":1}}],["i2c0",{"2":{"2575":2}}],["i2cv2",{"0":{"705":1},"2":{"705":1}}],["i2cv1",{"0":{"704":1},"2":{"704":1}}],["i2cd0",{"2":{"2575":1}}],["i2cd1",{"2":{"703":2,"2575":1,"2580":1}}],["i2cd2",{"2":{"199":1,"703":1}}],["i2c3",{"2":{"703":1}}],["i2c2",{"2":{"703":4}}],["i2c1",{"2":{"703":6,"704":3,"705":5,"2575":2,"2580":2}}],["i2c",{"0":{"244":1,"674":1,"699":1,"701":1,"707":1,"708":2,"711":2,"714":2,"717":2,"720":2,"723":2,"726":2,"1257":1,"1856":1,"2158":1,"2330":1,"2575":1},"1":{"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":3,"710":3,"711":1,"712":3,"713":3,"714":1,"715":3,"716":3,"717":1,"718":3,"719":3,"720":1,"721":3,"722":3,"723":1,"724":3,"725":3,"726":1,"727":3,"728":3},"2":{"30":1,"33":2,"45":1,"75":1,"92":1,"114":1,"118":2,"134":4,"160":1,"176":5,"191":1,"199":2,"211":1,"232":1,"234":4,"236":4,"244":9,"249":7,"266":1,"293":1,"502":2,"511":3,"671":2,"674":19,"699":1,"700":3,"701":4,"702":3,"703":14,"704":1,"707":4,"708":1,"709":1,"710":3,"711":1,"712":1,"713":3,"714":1,"715":1,"716":3,"717":1,"718":1,"719":3,"720":1,"721":1,"722":3,"723":1,"724":1,"725":3,"726":2,"727":1,"728":3,"730":1,"731":2,"732":1,"756":1,"757":6,"758":5,"785":1,"786":6,"787":5,"817":1,"818":6,"819":5,"849":1,"850":6,"851":17,"884":1,"885":6,"886":17,"918":1,"919":6,"920":5,"952":1,"953":6,"954":5,"986":1,"987":6,"988":5,"1020":1,"1021":6,"1022":17,"1054":1,"1055":6,"1056":17,"1088":1,"1089":6,"1090":17,"1144":1,"1145":6,"1146":5,"1181":1,"1182":6,"1183":5,"1251":1,"1255":1,"1257":6,"1356":1,"1612":1,"1849":1,"1851":3,"1856":1,"1859":1,"1939":3,"1942":2,"1943":3,"1948":3,"2152":2,"2153":1,"2155":1,"2166":4,"2315":1,"2328":1,"2330":1,"2567":1,"2570":2,"2573":1,"2575":4,"2580":3,"2603":1,"2612":9,"2615":17,"2722":1,"2736":1,"2739":5}}],["ipad",{"2":{"2338":1}}],["iphone",{"2":{"2338":1}}],["ipsum",{"2":{"301":1}}],["iqs572",{"2":{"1938":1}}],["iqs550",{"2":{"1938":1}}],["iqs525",{"2":{"1938":1}}],["iqs5xx",{"0":{"1938":1},"1":{"1939":1,"1940":1,"1941":1},"2":{"236":1,"1938":2,"1939":9,"1940":17,"1941":3}}],["ignoring",{"0":{"1914":1,"1915":1},"1":{"1915":1,"1916":1,"1917":1},"2":{"1977":1}}],["ignores",{"2":{"1318":1,"1320":1,"1915":1,"1917":1,"2768":1}}],["ignored",{"2":{"393":2,"394":2,"1363":1,"1477":1,"1483":1,"1914":2,"1915":1,"1937":1,"1965":1,"2080":1,"2104":1,"2387":1,"2437":1,"2626":1}}],["ignore",{"0":{"194":1,"206":1},"2":{"22":2,"112":2,"145":1,"194":11,"199":2,"206":2,"211":1,"249":1,"331":1,"334":1,"1915":1,"1917":1,"1921":1,"1974":1,"2080":1,"2163":1,"2394":1,"2434":1,"2452":1,"2507":1}}],["icsp",{"2":{"2378":1}}],["ics",{"2":{"1849":1,"2268":1}}],["ice",{"2":{"1845":1}}],["icelandic",{"2":{"1392":1,"2742":3}}],["ic",{"2":{"1180":1,"1501":1,"1627":2,"1849":1,"1855":5,"1858":3,"2174":2}}],["icon",{"2":{"336":1,"2499":2}}],["i²c",{"0":{"732":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1146":1,"1183":1},"2":{"729":1,"731":2,"732":1,"733":1,"755":1,"757":6,"758":1,"759":1,"784":1,"786":6,"787":1,"791":1,"816":1,"818":6,"819":1,"821":1,"848":1,"850":6,"851":1,"856":1,"883":1,"885":6,"886":1,"890":1,"917":1,"919":6,"920":1,"924":1,"951":1,"953":6,"954":1,"958":1,"985":1,"987":6,"988":1,"992":1,"1019":1,"1021":6,"1022":1,"1026":1,"1053":1,"1055":6,"1056":1,"1060":1,"1087":1,"1089":6,"1090":1,"1094":1,"1143":1,"1145":6,"1146":1,"1147":1,"1180":1,"1182":6,"1183":1,"1184":1,"2739":2}}],["ie",{"2":{"666":1,"727":1,"742":1,"746":1,"750":1,"752":1,"769":1,"773":1,"777":1,"779":1,"801":1,"805":1,"809":1,"811":1,"833":1,"837":1,"841":1,"843":1,"868":1,"872":1,"876":1,"878":1,"902":1,"906":1,"910":1,"912":1,"936":1,"940":1,"944":1,"946":1,"970":1,"974":1,"978":1,"980":1,"1004":1,"1008":1,"1012":1,"1014":1,"1038":1,"1042":1,"1046":1,"1048":1,"1072":1,"1076":1,"1080":1,"1082":1,"1106":1,"1110":1,"1114":1,"1116":1,"1159":1,"1163":1,"1196":1,"1200":1,"1204":1,"1206":1,"1242":1,"1256":1,"1575":1,"1611":1,"1648":1,"2502":1}}],["ijk",{"2":{"266":1}}],["ii",{"2":{"199":1,"211":1}}],["iie",{"2":{"181":2}}],["i64",{"2":{"191":1}}],["ireland",{"2":{"2742":1}}],["irene",{"2":{"211":1}}],["iron",{"2":{"2305":1,"2311":5,"2312":1,"2313":1}}],["irony",{"2":{"2219":2}}],["iron180",{"2":{"211":2,"249":1}}],["ir",{"2":{"1950":1}}],["irregular",{"2":{"563":1}}],["irrelevant",{"2":{"244":1}}],["irq",{"2":{"191":1,"236":1,"703":1,"1529":1}}],["irqs",{"2":{"176":1}}],["irish",{"2":{"2742":1}}],["iris60",{"2":{"211":1}}],["iris",{"2":{"45":1,"134":1,"199":1,"211":2,"266":2,"277":1}}],["ik75",{"2":{"176":1}}],["ivy",{"2":{"154":2}}],["ibus",{"2":{"2221":3}}],["ibnuda",{"2":{"154":3,"160":2}}],["ibm122m",{"2":{"207":2}}],["ibm4704",{"2":{"133":1,"134":1}}],["ibm",{"2":{"114":1,"204":1,"207":11,"217":1,"222":1}}],["imagine",{"2":{"1722":1,"1763":1,"1984":1,"2653":1}}],["image",{"0":{"409":1,"410":1,"2342":1},"2":{"410":1,"623":4,"818":1,"1280":1,"2307":1,"2309":1,"2583":1,"2593":1,"2605":3,"2614":14,"2616":55,"2631":1,"2633":2,"2635":2,"2637":5,"2638":1}}],["images",{"0":{"281":1},"2":{"138":3,"408":1,"623":1,"1301":1,"2298":1,"2593":1,"2605":2,"2612":2,"2613":2,"2614":2,"2616":5,"2624":1,"2631":1}}],["imcompatible",{"2":{"1125":1}}],["imgur",{"2":{"623":2,"624":1,"2298":1,"2342":1,"2593":1,"2605":4}}],["imera",{"2":{"249":1,"1348":1,"1352":4,"2751":1}}],["immediate",{"2":{"559":1,"1366":3}}],["immediately",{"2":{"230":1,"259":1,"349":1,"592":1,"647":1,"665":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1195":1,"1199":1,"1203":1,"1205":1,"1247":1,"1310":1,"1337":2,"1363":1,"1369":3,"1448":1,"1488":1,"1555":1,"1713":1,"2200":1,"2529":2,"2616":1,"2634":1,"2635":2,"2645":1,"2741":1,"2767":1,"2768":3,"2774":1,"2775":1}}],["immutable",{"2":{"474":1}}],["immune",{"2":{"231":1}}],["impossible",{"2":{"1324":1,"1373":1,"1721":1,"2341":1}}],["imported",{"2":{"389":1,"390":1,"391":1,"2307":1,"2316":1,"2603":1}}],["importer",{"2":{"176":1}}],["important",{"0":{"340":1,"619":1},"2":{"433":1,"453":1,"467":1,"537":1,"560":2,"568":1,"619":2,"1337":1,"1375":1,"1412":1,"1472":1,"1485":1,"1563":1,"1571":1,"1997":1,"2264":1,"2475":1,"2489":1,"2741":1,"2767":1}}],["imports",{"0":{"457":1},"1":{"458":1},"2":{"236":1,"389":1,"390":1,"457":1}}],["importing",{"0":{"2540":1},"2":{"173":1,"389":1,"390":1,"391":1,"457":2,"2316":1,"2540":1}}],["import",{"0":{"173":1,"389":1,"390":1,"391":1,"458":1},"2":{"173":4,"176":1,"292":1,"331":2,"389":2,"390":2,"391":2,"430":2,"457":8,"458":4,"479":1,"1927":1,"2316":3,"2466":1,"2605":1}}],["impedance",{"2":{"696":1}}],["impls",{"2":{"1767":2,"1990":2}}],["impls\`",{"2":{"1767":1,"1990":1}}],["impliments",{"2":{"2328":1}}],["implied",{"2":{"1417":1,"2609":1}}],["implies",{"2":{"1273":1,"1434":1,"2169":1}}],["implicitly",{"2":{"506":1}}],["implicit",{"2":{"467":1,"476":1,"2741":1}}],["implications",{"2":{"352":2,"355":1}}],["implementing",{"0":{"1367":1},"2":{"277":2,"560":1,"564":1,"565":1,"587":1,"630":1,"1121":1,"1490":1,"1560":1,"1561":1,"1951":1,"2341":1,"2605":1}}],["implemented",{"2":{"74":1,"160":1,"176":1,"215":2,"534":1,"580":1,"1302":1,"1353":1,"1354":1,"1569":1,"1619":1,"1713":1,"1714":1,"1755":1,"1829":1,"1842":1,"1925":1,"1981":1,"2206":1,"2221":1,"2222":1,"2423":1,"2587":1,"2605":2,"2626":1,"2635":1,"2725":3,"2758":1}}],["implement",{"2":{"50":1,"74":1,"93":1,"114":1,"131":1,"134":1,"145":1,"160":1,"176":1,"191":1,"199":2,"211":1,"236":5,"259":1,"277":2,"516":1,"560":1,"565":1,"566":2,"1302":1,"1363":1,"1367":2,"1381":1,"1430":1,"1442":1,"1501":1,"1718":1,"1752":1,"1763":1,"1829":1,"1851":1,"1858":1,"1922":1,"1925":1,"1933":1,"1934":1,"1984":1,"2103":1,"2175":1,"2266":1,"2339":1,"2530":1,"2563":1,"2564":1,"2565":1,"2610":1}}],["implementations",{"2":{"160":3,"175":1,"211":1,"214":1,"277":6,"1121":1,"1759":1,"1760":1,"2152":1,"2605":1,"2606":1,"2744":1,"2782":1}}],["implementation",{"0":{"572":1,"576":1,"582":1,"585":1,"588":1,"590":1,"593":1,"594":1,"1369":1,"1380":1,"1755":1,"1756":1,"2200":1},"2":{"49":1,"75":1,"114":1,"125":1,"163":1,"176":1,"185":1,"233":1,"236":1,"277":1,"560":1,"565":1,"568":1,"635":2,"641":3,"682":1,"1127":1,"1130":1,"1134":2,"1258":1,"1430":2,"1443":1,"1479":1,"1487":2,"1528":1,"1536":1,"1548":1,"1611":1,"1859":1,"1897":2,"1937":1,"1959":1,"2152":2,"2191":1,"2301":2,"2339":1,"2406":1,"2563":1,"2564":1,"2565":1,"2728":2,"2744":1}}],["implements",{"2":{"49":1,"1569":1,"1921":1,"1980":1,"2454":1}}],["improving",{"2":{"402":1,"403":1}}],["improvement",{"2":{"114":1,"175":1}}],["improvements",{"0":{"84":1,"98":1,"107":1,"109":1,"175":1,"210":1},"1":{"110":1,"111":1,"112":1},"2":{"45":1,"107":1,"114":2,"134":1,"160":1,"176":1,"190":1,"191":2,"211":3,"222":1,"236":1,"1490":1,"2758":1}}],["improve",{"0":{"229":1},"2":{"93":1,"114":5,"134":1,"175":1,"176":4,"191":2,"211":3,"214":1,"222":1,"236":4,"249":1,"516":1,"550":1,"554":1,"1363":1,"1366":1,"1855":1,"2179":1,"2264":1,"2448":1,"2758":2}}],["improved",{"0":{"83":1},"2":{"10":2,"50":1,"74":1,"84":1,"174":1,"196":1,"561":1,"1263":1}}],["improper",{"2":{"249":1,"1326":1}}],["impact",{"2":{"194":1,"584":1,"2167":1,"2200":1,"2617":1,"2758":1,"2759":1,"2776":1}}],["impacts",{"2":{"14":1}}],["ixora",{"2":{"102":2}}],["illusion",{"2":{"1491":1}}],["illustrious",{"2":{"123":1}}],["illustrate",{"2":{"99":1,"194":1,"2769":1}}],["ill",{"2":{"355":1}}],["ili9341",{"2":{"2612":2,"2615":7}}],["ili9163",{"2":{"2612":2,"2615":7}}],["ili9486",{"2":{"248":1,"249":1,"2612":2,"2615":8}}],["ili9488",{"2":{"176":1,"2612":2,"2615":7}}],["ili9xxx",{"2":{"222":1}}],["ilumkb",{"2":{"102":1,"114":1}}],["ios",{"2":{"1528":2,"1863":1,"1864":1,"2338":5}}],["iohidconsumer",{"2":{"1316":2}}],["iohidfamily",{"2":{"1316":6}}],["io",{"2":{"74":1,"112":1,"502":1,"697":1,"2476":1,"2582":1,"2728":1}}],["iota",{"2":{"31":3,"34":2,"1861":10}}],["i",{"0":{"353":1,"546":1,"551":2,"553":1,"554":1,"1280":1,"1295":1,"1296":2,"1297":1,"1298":1,"1300":2,"1301":1,"1304":1,"1306":1,"1307":1,"1323":1,"1450":1,"1476":1,"1537":1,"1908":1,"2293":1,"2511":1},"1":{"354":1,"355":1,"356":1,"1301":2,"1538":1},"2":{"65":1,"105":2,"108":1,"114":1,"219":4,"249":2,"266":2,"279":1,"313":1,"331":1,"335":1,"408":1,"414":1,"530":2,"537":1,"556":2,"563":1,"611":1,"623":1,"624":1,"703":1,"1214":1,"1235":1,"1258":1,"1279":1,"1311":1,"1375":1,"1396":1,"1400":1,"1473":3,"1485":2,"1487":1,"1488":4,"1555":2,"1591":1,"1708":2,"1767":6,"1771":1,"1853":3,"1854":3,"1891":1,"1910":1,"1921":6,"1927":4,"1965":1,"1990":6,"1995":1,"1996":8,"1997":4,"2094":4,"2177":3,"2209":2,"2219":2,"2220":4,"2222":4,"2271":1,"2274":1,"2300":3,"2307":2,"2308":2,"2314":2,"2323":1,"2386":1,"2394":3,"2423":4,"2425":3,"2446":1,"2466":1,"2540":1,"2567":1,"2603":1,"2604":1,"2605":3,"2614":6,"2616":19,"2639":2,"2789":2,"2796":1}}],["idx",{"2":{"1555":3}}],["idproduct",{"2":{"1291":1}}],["idvendor",{"2":{"1291":1}}],["id=92",{"2":{"1279":1}}],["id=some",{"2":{"279":1}}],["idling",{"0":{"589":1},"1":{"590":1,"591":1}}],["idled",{"2":{"589":2}}],["idle",{"0":{"1541":1},"2":{"160":1,"211":1,"222":1,"236":2,"588":1,"1536":1,"1541":3,"2108":1,"2719":1,"2735":1}}],["idb",{"2":{"217":3}}],["idb60",{"2":{"211":1}}],["ids",{"0":{"169":1,"184":1},"1":{"170":1},"2":{"169":1,"176":1,"184":1,"222":1,"317":1,"511":2,"629":1,"1925":1,"2168":4}}],["id75",{"2":{"154":1,"160":3,"199":1,"211":2}}],["idobo",{"2":{"154":1,"160":1}}],["idobao",{"2":{"154":6,"160":6,"168":4,"176":4,"266":1}}],["id87v2",{"2":{"176":1}}],["id87",{"2":{"154":2,"160":1}}],["id80v1",{"2":{"176":1}}],["id80v3",{"2":{"176":1}}],["id80",{"2":{"154":2,"160":4,"168":4}}],["id67",{"2":{"154":4,"160":1,"176":1}}],["ides",{"2":{"2762":1}}],["identical",{"2":{"1355":1,"1356":1,"1358":1,"1360":1,"1361":1,"1443":1,"1844":1,"2166":1,"2199":1,"2572":1,"2580":1,"2589":1,"2615":1,"2625":1,"2629":1,"2630":1}}],["identity",{"2":{"562":1}}],["identified",{"2":{"1488":1}}],["identifier",{"2":{"142":2,"461":1,"1373":1,"2450":1,"2609":2}}],["identifiers",{"2":{"110":1,"266":1,"1478":1,"1536":1}}],["identifying",{"2":{"2655":1}}],["identify",{"2":{"70":1,"110":1,"1488":1,"1489":1,"1533":1,"1891":1,"2210":1,"2788":1}}],["ideally",{"2":{"1413":1,"1951":1,"1969":3,"2171":1,"2589":1}}],["ideal",{"2":{"1362":1,"1418":1,"2158":1,"2270":1,"2272":1,"2279":1}}],["idea",{"2":{"473":1,"560":1,"561":1,"1275":1,"1390":1,"1453":1,"1488":1,"1869":1,"1925":1,"2312":1,"2313":2,"2591":1}}],["ide",{"0":{"330":1},"2":{"132":1,"322":1,"323":1,"330":1,"331":1,"401":1,"2531":2,"2536":2,"2673":1}}],["id",{"0":{"307":1,"308":1,"309":1},"2":{"50":1,"70":2,"145":1,"169":2,"184":2,"191":2,"211":1,"277":1,"314":1,"315":1,"341":1,"502":2,"1267":1,"1279":4,"1291":1,"1924":3,"1925":3,"1927":6,"2168":3,"2185":2,"2382":1,"2383":1,"2384":1,"2385":1,"2445":1,"2595":1,"2626":2,"2627":2,"2628":2,"2632":3,"2633":2,"2634":2,"2635":2,"2636":2,"2637":2,"2638":2,"2738":2}}],["iwrap",{"2":{"50":1}}],["itunes",{"2":{"2394":1}}],["ition",{"2":{"1921":1}}],["ith",{"2":{"1708":1}}],["italian",{"2":{"1392":3,"2742":9}}],["iterates",{"2":{"1859":1}}],["iterate",{"2":{"580":1}}],["iterators",{"2":{"461":1}}],["iterations",{"2":{"556":1}}],["iteration",{"2":{"65":1,"437":1,"587":1}}],["itemid=1",{"2":{"1279":1}}],["item",{"0":{"183":1},"2":{"268":1,"467":2,"468":1,"676":1,"2202":1}}],["items",{"2":{"83":1,"112":1,"134":1,"183":1,"210":1,"236":2,"264":1,"274":1,"282":3,"341":1,"473":1}}],["it",{"0":{"27":1,"548":1,"609":1,"613":1,"614":1,"1280":2,"1290":1,"1301":1,"1307":1,"1448":1,"1475":1,"2363":1,"2494":1},"2":{"5":1,"6":1,"8":1,"14":2,"21":2,"23":1,"27":1,"31":2,"45":2,"50":1,"82":1,"89":1,"94":1,"98":1,"99":1,"105":2,"114":2,"116":2,"119":1,"123":1,"130":2,"133":1,"134":1,"138":2,"139":1,"160":1,"166":1,"173":1,"174":2,"176":1,"179":3,"182":2,"194":2,"195":2,"198":1,"199":1,"203":1,"213":1,"214":1,"228":2,"233":1,"235":1,"246":1,"251":2,"254":1,"259":1,"278":1,"282":5,"302":1,"304":1,"307":1,"315":1,"324":1,"325":1,"327":1,"328":1,"329":1,"331":3,"334":2,"341":5,"347":1,"352":2,"353":1,"354":1,"355":1,"370":3,"371":1,"375":1,"376":2,"378":1,"381":1,"383":1,"384":1,"385":1,"386":1,"400":3,"401":1,"403":1,"405":3,"416":1,"423":1,"430":3,"432":1,"435":2,"436":1,"437":1,"440":1,"453":2,"454":7,"455":1,"458":1,"466":1,"467":1,"469":1,"470":2,"472":1,"473":2,"474":1,"477":1,"479":2,"481":4,"482":1,"495":1,"500":2,"504":2,"505":3,"509":1,"510":2,"512":1,"513":1,"515":2,"516":1,"526":2,"527":1,"534":1,"537":2,"539":2,"541":2,"551":2,"552":1,"554":2,"560":8,"564":1,"565":1,"566":1,"568":1,"571":2,"572":3,"574":1,"575":2,"578":1,"584":2,"586":2,"587":1,"589":3,"592":4,"597":5,"598":2,"599":2,"600":2,"605":1,"607":3,"613":1,"618":1,"621":2,"623":2,"624":1,"626":3,"627":1,"628":2,"629":1,"639":2,"641":2,"657":1,"673":1,"679":2,"680":1,"689":1,"690":1,"692":1,"696":4,"698":1,"700":1,"707":1,"726":1,"790":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1122":3,"1124":1,"1125":1,"1127":1,"1128":1,"1130":1,"1132":1,"1133":2,"1134":1,"1171":1,"1172":2,"1212":1,"1233":1,"1256":1,"1262":1,"1272":1,"1287":1,"1289":2,"1290":1,"1291":1,"1297":1,"1298":1,"1300":2,"1302":1,"1306":2,"1307":3,"1309":1,"1310":1,"1313":1,"1315":4,"1320":1,"1323":2,"1324":3,"1331":1,"1337":1,"1339":3,"1340":1,"1350":1,"1353":2,"1357":2,"1362":1,"1363":2,"1365":1,"1368":2,"1369":17,"1372":7,"1373":2,"1374":1,"1375":3,"1377":2,"1378":3,"1383":1,"1384":1,"1388":1,"1390":2,"1396":2,"1397":4,"1399":1,"1404":1,"1405":2,"1412":1,"1414":4,"1417":4,"1420":3,"1421":1,"1422":3,"1423":1,"1435":5,"1440":1,"1442":2,"1443":2,"1446":1,"1448":4,"1449":3,"1450":1,"1467":2,"1468":1,"1472":1,"1475":2,"1476":3,"1477":2,"1478":5,"1479":1,"1482":2,"1487":3,"1488":1,"1491":2,"1492":2,"1496":1,"1500":1,"1508":2,"1528":2,"1529":3,"1532":1,"1533":1,"1535":2,"1536":4,"1540":1,"1545":2,"1547":1,"1548":2,"1552":2,"1555":6,"1561":2,"1563":3,"1564":1,"1566":2,"1572":2,"1576":1,"1589":2,"1591":3,"1592":2,"1593":1,"1594":1,"1595":2,"1598":1,"1602":1,"1603":2,"1605":1,"1611":2,"1659":1,"1669":1,"1679":1,"1689":3,"1690":1,"1692":2,"1696":1,"1704":1,"1708":2,"1712":1,"1713":4,"1721":1,"1724":3,"1755":2,"1756":1,"1758":1,"1760":1,"1761":2,"1763":2,"1769":2,"1781":1,"1783":1,"1814":1,"1816":1,"1818":1,"1821":1,"1840":3,"1841":4,"1842":1,"1845":1,"1854":1,"1858":1,"1859":1,"1860":5,"1862":3,"1863":4,"1865":2,"1868":1,"1870":1,"1901":2,"1906":1,"1908":1,"1910":2,"1911":1,"1912":2,"1914":2,"1915":1,"1916":1,"1918":1,"1921":1,"1925":4,"1926":1,"1927":1,"1933":2,"1934":1,"1937":1,"1946":1,"1949":2,"1951":1,"1954":1,"1956":1,"1958":1,"1959":1,"1966":1,"1967":1,"1968":1,"1974":1,"1975":1,"1977":1,"1979":1,"1980":2,"1982":2,"1984":2,"1988":2,"1993":2,"1998":2,"2008":1,"2010":1,"2059":1,"2061":1,"2063":1,"2066":1,"2070":2,"2075":1,"2079":2,"2080":1,"2089":2,"2101":3,"2110":1,"2111":1,"2140":1,"2146":2,"2149":1,"2156":1,"2158":1,"2160":2,"2161":1,"2162":4,"2163":3,"2164":1,"2166":3,"2168":3,"2169":5,"2170":1,"2172":1,"2178":1,"2181":4,"2182":1,"2183":5,"2185":1,"2187":1,"2188":1,"2190":3,"2192":1,"2195":1,"2198":3,"2199":2,"2200":8,"2207":2,"2208":1,"2209":2,"2210":1,"2216":1,"2218":1,"2219":1,"2220":1,"2221":9,"2264":1,"2268":1,"2269":1,"2271":2,"2273":2,"2274":1,"2275":2,"2276":2,"2281":1,"2289":1,"2291":2,"2293":3,"2294":1,"2297":1,"2298":1,"2300":6,"2301":4,"2303":9,"2306":3,"2307":4,"2311":6,"2312":13,"2313":8,"2314":3,"2315":1,"2316":1,"2318":5,"2319":1,"2331":1,"2332":1,"2334":4,"2336":3,"2337":1,"2339":1,"2341":2,"2343":1,"2344":2,"2345":1,"2346":1,"2350":5,"2353":2,"2356":1,"2359":1,"2365":1,"2366":4,"2368":1,"2372":1,"2380":2,"2381":1,"2384":1,"2385":2,"2386":1,"2387":1,"2388":2,"2392":4,"2406":1,"2441":1,"2442":1,"2443":1,"2444":2,"2445":1,"2446":1,"2447":3,"2449":2,"2450":4,"2452":2,"2456":3,"2457":1,"2462":1,"2463":1,"2464":1,"2466":1,"2467":1,"2470":1,"2475":1,"2476":1,"2480":1,"2482":3,"2485":1,"2489":5,"2491":1,"2493":3,"2494":3,"2497":1,"2502":2,"2503":1,"2507":2,"2508":1,"2512":1,"2513":4,"2514":1,"2515":1,"2516":1,"2525":2,"2526":2,"2527":5,"2529":3,"2530":6,"2531":1,"2534":1,"2536":7,"2537":1,"2540":1,"2545":3,"2547":1,"2548":3,"2549":1,"2551":5,"2552":5,"2553":1,"2556":2,"2557":1,"2560":1,"2561":1,"2568":1,"2569":1,"2572":1,"2578":2,"2580":1,"2581":1,"2583":1,"2585":1,"2587":1,"2588":2,"2591":2,"2592":1,"2595":2,"2598":1,"2603":4,"2605":3,"2606":1,"2607":3,"2608":2,"2609":3,"2610":1,"2612":1,"2613":1,"2615":2,"2616":9,"2617":2,"2621":1,"2623":2,"2624":1,"2626":1,"2629":1,"2631":1,"2633":1,"2635":1,"2642":2,"2644":4,"2646":1,"2651":1,"2653":1,"2654":2,"2655":2,"2658":1,"2676":1,"2693":1,"2702":1,"2705":2,"2710":1,"2725":1,"2730":1,"2736":1,"2740":2,"2741":4,"2743":1,"2746":3,"2751":1,"2759":1,"2762":2,"2767":2,"2776":3,"2777":2,"2778":3,"2779":3,"2781":2,"2782":5,"2783":3,"2784":4,"2785":1,"2786":2,"2787":2,"2789":1,"2790":1,"2791":1,"2792":4,"2795":1,"2796":7}}],["itsybitsy",{"2":{"629":2,"2383":2}}],["itself",{"2":{"137":1,"321":1,"517":1,"529":1,"580":2,"605":1,"625":1,"627":1,"628":1,"683":1,"1413":1,"1472":1,"1479":1,"1485":1,"1536":2,"2184":1,"2273":1,"2275":1,"2300":1,"2312":1,"2314":1,"2366":1,"2390":1,"2436":1,"2562":1,"2585":1,"2654":1,"2740":1,"2788":1}}],["its",{"0":{"2535":1},"1":{"2536":1,"2537":1,"2538":1},"2":{"3":1,"7":1,"8":1,"15":1,"30":1,"33":1,"113":2,"114":1,"120":1,"133":1,"142":1,"174":1,"175":1,"195":1,"330":1,"331":1,"349":1,"352":1,"499":1,"529":1,"627":1,"659":1,"676":1,"679":1,"680":1,"681":2,"690":1,"697":1,"1128":1,"1273":1,"1275":1,"1277":1,"1315":1,"1330":1,"1349":1,"1351":1,"1364":1,"1366":1,"1438":1,"1446":2,"1467":1,"1468":1,"1488":1,"1489":3,"1508":2,"1545":1,"1548":1,"1555":4,"1556":1,"1668":1,"1671":1,"1704":1,"1840":4,"1852":1,"1859":1,"1891":1,"1919":3,"1952":1,"1988":2,"1989":1,"2146":2,"2190":1,"2209":1,"2221":1,"2297":2,"2311":1,"2321":1,"2339":1,"2350":4,"2357":1,"2441":1,"2442":1,"2445":2,"2467":1,"2474":1,"2478":2,"2479":1,"2540":1,"2598":1,"2605":1,"2615":1,"2624":1,"2631":1,"2654":1,"2658":1,"2666":1,"2703":1,"2710":1,"2722":1,"2758":1,"2773":1,"2774":2,"2775":2,"2776":2,"2778":1,"2782":1}}],["ifeq",{"2":{"2339":2}}],["ifnormation",{"2":{"179":1}}],["ifndef",{"2":{"134":1,"453":1,"1422":1,"1460":5,"1483":1,"2206":1,"2338":4,"2603":1,"2748":2}}],["ify",{"2":{"176":1}}],["ifdefs",{"2":{"114":1,"191":1,"211":1,"266":1,"1350":1}}],["ifdef",{"2":{"31":4,"34":4,"134":1,"211":1,"249":2,"453":1,"496":1,"588":3,"607":1,"1289":1,"1350":1,"1352":13,"1359":5,"1388":3,"1421":3,"1435":2,"1460":1,"1483":2,"1485":4,"1587":2,"1724":3,"1756":2,"1767":2,"1851":1,"1854":1,"1893":1,"1894":1,"1896":1,"1950":1,"1990":2,"2175":1,"2178":1,"2338":1}}],["if",{"0":{"152":1,"1297":1,"1298":1,"1301":1},"2":{"1":1,"7":1,"14":1,"16":1,"18":2,"21":1,"23":2,"31":4,"34":4,"37":1,"43":1,"45":1,"49":2,"50":2,"62":1,"87":1,"89":1,"90":9,"98":1,"105":6,"107":1,"114":2,"119":1,"125":2,"137":1,"142":1,"143":2,"145":1,"160":1,"182":1,"185":2,"194":3,"196":4,"198":1,"199":2,"201":1,"202":1,"206":1,"209":2,"214":1,"215":1,"218":1,"221":1,"222":1,"228":1,"230":1,"232":2,"233":1,"236":2,"240":3,"241":1,"245":1,"247":1,"248":1,"253":1,"254":1,"255":1,"256":1,"259":1,"266":1,"270":1,"272":1,"273":2,"276":1,"277":2,"282":6,"291":1,"307":2,"311":1,"312":1,"313":1,"317":1,"319":1,"320":1,"321":1,"326":1,"327":1,"331":2,"332":1,"334":1,"336":1,"341":4,"349":1,"352":1,"353":1,"354":1,"356":1,"361":2,"365":1,"366":1,"367":1,"370":1,"371":1,"373":1,"375":1,"376":1,"377":1,"378":1,"381":1,"383":1,"385":1,"386":1,"387":1,"399":1,"405":1,"407":1,"411":1,"429":1,"430":2,"433":2,"434":1,"435":1,"446":2,"448":1,"450":1,"451":1,"453":16,"454":2,"455":3,"459":1,"462":2,"465":2,"466":3,"471":1,"473":2,"474":3,"476":5,"478":1,"481":3,"484":1,"485":1,"497":1,"500":1,"501":1,"502":9,"503":1,"504":2,"505":10,"506":4,"509":2,"510":3,"511":4,"513":1,"515":1,"516":2,"517":1,"521":1,"529":1,"530":1,"534":7,"537":3,"539":1,"540":2,"541":1,"545":2,"546":1,"551":2,"552":1,"553":1,"554":3,"555":1,"556":1,"557":2,"558":1,"559":1,"560":5,"561":1,"562":1,"571":2,"572":2,"575":1,"580":1,"581":1,"585":1,"586":1,"587":1,"588":10,"589":1,"592":3,"593":2,"594":1,"597":5,"598":3,"601":1,"609":1,"612":1,"613":2,"614":2,"621":2,"624":1,"625":1,"626":6,"627":3,"628":1,"629":1,"630":1,"638":1,"639":2,"641":2,"643":2,"655":2,"673":2,"674":3,"675":1,"679":2,"685":1,"689":2,"690":1,"698":3,"700":2,"701":1,"703":1,"707":1,"710":2,"713":2,"716":2,"719":2,"722":2,"725":2,"726":1,"728":2,"730":2,"756":2,"785":2,"790":1,"817":2,"849":2,"855":1,"884":2,"889":1,"918":2,"923":1,"952":2,"957":1,"986":2,"991":1,"1020":2,"1025":1,"1054":2,"1059":1,"1088":2,"1093":1,"1125":1,"1127":1,"1128":1,"1129":1,"1130":2,"1132":2,"1133":2,"1136":2,"1138":1,"1144":2,"1169":1,"1170":2,"1171":1,"1174":1,"1181":2,"1212":2,"1214":2,"1218":1,"1219":1,"1222":1,"1224":1,"1227":2,"1230":2,"1232":1,"1233":2,"1242":1,"1247":1,"1248":1,"1250":2,"1252":1,"1253":1,"1265":1,"1267":1,"1274":1,"1275":3,"1277":1,"1278":1,"1280":1,"1282":1,"1289":2,"1291":1,"1295":2,"1297":2,"1298":1,"1301":1,"1303":1,"1307":1,"1308":1,"1321":1,"1323":1,"1324":1,"1331":1,"1337":3,"1339":3,"1340":3,"1349":1,"1352":1,"1353":1,"1357":2,"1359":1,"1362":2,"1363":3,"1366":1,"1367":1,"1368":2,"1369":21,"1372":3,"1373":1,"1375":2,"1376":1,"1377":1,"1378":4,"1381":5,"1388":1,"1392":1,"1394":1,"1396":6,"1397":4,"1398":2,"1399":2,"1400":2,"1401":1,"1402":2,"1404":1,"1405":3,"1412":6,"1413":2,"1414":2,"1415":2,"1417":2,"1420":2,"1421":3,"1422":4,"1423":1,"1431":1,"1432":1,"1433":1,"1435":1,"1438":2,"1440":3,"1443":1,"1448":5,"1450":1,"1452":2,"1453":1,"1467":3,"1468":5,"1469":1,"1472":5,"1475":1,"1478":1,"1482":1,"1483":9,"1485":1,"1486":1,"1488":1,"1489":2,"1492":2,"1494":1,"1496":2,"1501":1,"1521":1,"1526":1,"1529":1,"1532":1,"1533":1,"1534":2,"1536":2,"1537":2,"1541":1,"1542":1,"1544":1,"1545":1,"1546":1,"1548":3,"1549":1,"1551":2,"1552":3,"1553":1,"1555":19,"1556":1,"1558":1,"1561":1,"1562":2,"1563":6,"1565":1,"1566":1,"1568":1,"1571":1,"1572":1,"1576":1,"1586":1,"1587":9,"1591":1,"1592":1,"1593":1,"1594":1,"1595":3,"1596":3,"1597":1,"1598":14,"1601":1,"1603":3,"1605":1,"1606":4,"1608":3,"1611":6,"1616":1,"1617":2,"1629":1,"1635":1,"1639":1,"1654":1,"1659":1,"1672":1,"1679":1,"1692":2,"1693":1,"1697":1,"1706":1,"1708":4,"1709":5,"1711":2,"1712":1,"1713":3,"1715":2,"1716":1,"1718":4,"1722":2,"1723":1,"1724":5,"1732":2,"1734":2,"1735":1,"1739":1,"1742":1,"1745":1,"1748":1,"1751":1,"1755":1,"1756":2,"1761":1,"1763":2,"1764":7,"1767":1,"1768":6,"1771":2,"1780":1,"1813":1,"1829":2,"1830":1,"1841":1,"1842":1,"1843":1,"1846":1,"1853":3,"1854":4,"1855":1,"1857":1,"1858":2,"1859":2,"1860":24,"1864":2,"1866":1,"1868":4,"1885":1,"1893":1,"1896":1,"1901":2,"1904":1,"1907":1,"1910":1,"1911":4,"1916":1,"1917":1,"1918":4,"1919":7,"1921":2,"1922":1,"1924":1,"1926":1,"1927":6,"1934":1,"1937":1,"1939":1,"1943":1,"1950":3,"1951":1,"1952":3,"1953":2,"1954":3,"1955":1,"1956":1,"1958":1,"1959":2,"1960":4,"1962":5,"1964":1,"1965":1,"1966":1,"1967":2,"1974":4,"1977":1,"1978":5,"1979":2,"1980":2,"1982":1,"1984":2,"1985":8,"1986":2,"1990":1,"1992":9,"1995":2,"1996":4,"1997":6,"1998":1,"2007":1,"2058":1,"2070":2,"2072":2,"2073":3,"2074":1,"2076":1,"2080":1,"2082":2,"2083":1,"2084":1,"2085":1,"2090":2,"2094":1,"2097":1,"2098":1,"2099":1,"2102":1,"2109":3,"2111":1,"2112":1,"2114":1,"2116":1,"2150":3,"2151":2,"2155":1,"2158":1,"2159":1,"2162":2,"2163":1,"2164":1,"2165":3,"2166":5,"2168":5,"2169":4,"2177":3,"2178":3,"2181":19,"2183":3,"2185":2,"2187":2,"2188":2,"2190":4,"2191":1,"2192":1,"2195":2,"2196":1,"2199":5,"2200":7,"2204":1,"2205":2,"2206":4,"2207":13,"2208":3,"2209":11,"2210":1,"2211":2,"2212":1,"2218":1,"2219":1,"2220":1,"2221":3,"2222":1,"2237":1,"2251":1,"2256":1,"2258":1,"2264":6,"2266":10,"2267":1,"2268":2,"2269":2,"2271":1,"2273":1,"2276":3,"2278":1,"2280":1,"2282":1,"2287":1,"2288":3,"2291":1,"2298":1,"2299":1,"2300":5,"2301":2,"2302":1,"2303":3,"2306":1,"2307":1,"2310":1,"2311":2,"2312":3,"2313":7,"2314":1,"2315":2,"2316":1,"2317":1,"2318":5,"2319":2,"2325":1,"2334":2,"2336":1,"2338":2,"2340":1,"2341":4,"2344":4,"2345":2,"2346":1,"2348":4,"2349":2,"2350":1,"2356":1,"2358":1,"2367":1,"2374":1,"2381":1,"2386":3,"2387":2,"2390":1,"2392":4,"2395":2,"2423":1,"2441":1,"2447":1,"2448":1,"2450":2,"2452":1,"2453":3,"2454":2,"2456":4,"2457":2,"2460":1,"2461":2,"2462":1,"2463":1,"2464":1,"2469":1,"2470":1,"2471":1,"2475":2,"2477":2,"2478":1,"2480":1,"2481":2,"2482":1,"2483":1,"2484":1,"2485":3,"2487":1,"2489":3,"2490":1,"2491":1,"2493":3,"2494":2,"2496":1,"2498":1,"2501":1,"2502":1,"2503":1,"2505":1,"2507":2,"2508":1,"2512":1,"2513":1,"2514":2,"2515":2,"2516":1,"2527":2,"2529":4,"2530":14,"2534":1,"2536":2,"2537":2,"2540":1,"2543":1,"2547":3,"2549":1,"2551":1,"2552":3,"2555":1,"2556":1,"2560":1,"2562":1,"2563":2,"2564":1,"2569":1,"2572":1,"2580":1,"2585":1,"2587":3,"2589":2,"2590":1,"2592":1,"2595":2,"2602":1,"2603":4,"2605":17,"2606":5,"2607":1,"2609":1,"2610":1,"2611":2,"2613":5,"2614":4,"2615":2,"2616":22,"2620":1,"2623":1,"2624":2,"2626":1,"2627":1,"2628":2,"2629":3,"2632":1,"2634":1,"2635":6,"2639":1,"2642":4,"2643":2,"2644":1,"2645":2,"2646":3,"2647":1,"2649":2,"2650":1,"2651":3,"2653":1,"2656":1,"2659":1,"2693":1,"2699":1,"2712":4,"2725":1,"2732":2,"2736":1,"2741":1,"2742":1,"2743":1,"2744":3,"2745":3,"2746":1,"2747":3,"2748":2,"2750":2,"2751":1,"2753":1,"2759":1,"2762":1,"2763":1,"2767":12,"2768":5,"2774":7,"2775":4,"2776":3,"2777":3,"2779":2,"2782":1,"2785":1,"2789":3,"2791":2,"2792":2,"2794":1,"2796":2}}],["innovation",{"2":{"2758":1}}],["inner",{"0":{"1710":1},"1":{"1711":1,"1712":1,"1713":1},"2":{"300":1,"1861":1,"1964":1,"2071":1,"2439":1}}],["inbound",{"2":{"2168":1}}],["inoperable",{"2":{"1324":1}}],["inheriting",{"2":{"2725":1}}],["inheritance",{"2":{"479":1}}],["inherently",{"2":{"1714":1}}],["inherent",{"2":{"1254":1}}],["injection",{"0":{"2117":1}}],["injected",{"2":{"2113":1}}],["inject",{"2":{"567":1,"1565":1}}],["inactivity",{"2":{"1855":2,"2179":1}}],["inactive",{"2":{"1372":1,"1980":1}}],["inappropriate",{"2":{"562":1}}],["inaugural",{"2":{"0":1}}],["ini",{"2":{"414":1,"415":1,"417":1,"423":1,"424":1,"430":1}}],["initiator2target",{"2":{"2168":4}}],["initiated",{"2":{"1842":1}}],["initiative",{"2":{"213":1}}],["initially",{"2":{"2441":1}}],["initial",{"0":{"1722":1,"2473":1},"1":{"2474":1,"2475":1,"2476":1,"2477":1,"2478":1},"2":{"93":1,"130":1,"134":2,"160":2,"188":1,"191":1,"199":2,"266":1,"1437":1,"1842":5,"1913":2,"1940":5,"2441":1,"2477":1,"2606":2,"2714":1,"2773":1}}],["initializing",{"2":{"575":1,"683":1,"1899":1,"2164":1,"2562":1,"2782":1}}],["initializers",{"2":{"1696":1,"1708":1}}],["initialized",{"2":{"574":1,"575":2,"578":2,"581":1,"582":1,"636":1,"1489":1,"1534":1,"1860":1,"2181":1,"2386":1,"2435":1,"2564":1}}],["initialize",{"2":{"565":1,"566":1,"646":1,"663":1,"664":1,"707":1,"738":1,"764":1,"796":1,"826":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1152":1,"1189":1,"1216":1,"1237":1,"1340":2,"1634":1,"1860":1,"2181":1,"2209":1,"2340":1,"2565":1}}],["initializes",{"2":{"49":1}}],["initialization",{"0":{"574":1,"575":1,"578":1,"581":1,"2562":1},"1":{"575":1,"576":2,"577":2,"578":1,"579":2,"580":2,"581":1,"582":2,"583":2,"2563":1,"2564":1,"2565":1},"2":{"160":1,"176":2,"236":1,"249":1,"279":2,"358":1,"359":1,"574":2,"575":1,"581":1,"592":1,"1326":1,"1378":2,"1866":1,"1954":2,"1967":1,"2562":2,"2564":1,"2565":1,"2605":1}}],["initialised",{"2":{"176":1}}],["initialise",{"2":{"65":1,"580":1,"2616":2,"2620":1}}],["initialisation",{"2":{"49":1,"73":1,"77":1,"94":2,"580":3,"2563":1,"2605":1,"2616":4,"2620":1}}],["initilization",{"2":{"160":1}}],["init",{"0":{"576":1,"577":1,"579":1,"582":1,"583":1,"590":1,"646":1,"663":1,"707":1,"738":1,"764":1,"796":1,"826":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1152":1,"1189":1,"1216":1,"1237":1,"1634":1,"2563":1,"2564":1,"2565":1},"1":{"664":1,"765":1,"797":1,"827":1,"862":1,"896":1,"930":1,"964":1,"998":1,"1032":1,"1066":1,"1100":1,"1153":1,"1190":1,"1238":1,"1635":1},"2":{"31":2,"34":4,"49":1,"50":1,"65":1,"114":2,"134":1,"160":2,"176":3,"191":7,"199":1,"236":3,"249":6,"266":2,"277":1,"358":1,"475":1,"565":1,"566":7,"574":4,"576":2,"577":2,"579":2,"580":1,"582":2,"583":2,"589":1,"590":1,"591":2,"707":1,"1282":1,"1368":2,"1369":6,"1370":2,"1436":1,"1501":1,"1631":2,"1632":2,"1636":1,"1637":1,"1638":1,"1767":3,"1854":1,"1860":5,"1861":2,"1894":1,"1896":1,"1899":1,"1950":3,"1951":1,"1954":2,"1956":1,"1963":1,"1967":1,"1990":3,"1998":2,"2080":1,"2082":1,"2164":1,"2168":1,"2178":1,"2181":4,"2340":1,"2392":1,"2477":1,"2563":4,"2564":4,"2565":2,"2605":8,"2615":3,"2616":8,"2620":3,"2649":1,"2796":1}}],["inexpensively",{"2":{"2694":1}}],["inefficient",{"2":{"2089":1,"2616":1}}],["inett",{"2":{"249":1}}],["inertia",{"0":{"1845":1},"2":{"190":2,"191":2,"1840":1,"1845":3}}],["inertial",{"2":{"175":1,"176":1,"1846":1,"1952":2}}],["inland",{"2":{"217":1,"2282":1}}],["inline",{"2":{"50":1,"199":1,"292":2}}],["insulate",{"2":{"2313":1}}],["insulation",{"2":{"2309":3,"2313":2}}],["inspected",{"2":{"2608":1}}],["inspect",{"2":{"2312":1}}],["inspiration",{"2":{"1693":1,"1767":1,"1921":1,"1990":1,"2605":1}}],["insensitive",{"2":{"1477":1}}],["insertion",{"2":{"2303":1}}],["inserting",{"2":{"626":1}}],["inserted",{"2":{"1587":1,"1598":1,"2220":3}}],["inserts",{"2":{"303":1}}],["insert",{"2":{"249":1,"266":1,"554":2,"1593":1,"1624":1,"1933":1,"2221":1,"2394":3,"2431":2,"2433":1}}],["insights",{"2":{"1138":1,"1964":1}}],["inside",{"2":{"169":1,"184":1,"241":1,"253":1,"270":1,"430":1,"485":1,"570":1,"1129":1,"1372":1,"1482":2,"1767":1,"1986":1,"1990":1,"2072":1,"2319":1,"2335":1,"2439":1,"2456":2,"2462":1,"2480":1,"2502":1,"2551":2,"2562":1,"2587":3,"2616":4,"2792":1}}],["ins",{"2":{"530":2,"2394":1,"2431":1}}],["instructs",{"2":{"2616":1}}],["instruct",{"2":{"367":1,"2163":1,"2511":1}}],["instruction",{"2":{"1656":1,"2654":1}}],["instructions",{"0":{"2267":1,"2300":1,"2315":1},"1":{"2268":1,"2269":1,"2270":1,"2271":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":1,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1,"2282":1,"2283":1,"2284":1,"2285":1,"2286":1,"2287":1,"2288":1,"2301":1,"2302":1},"2":{"36":1,"112":1,"240":1,"323":1,"324":1,"401":1,"535":1,"624":1,"626":1,"1134":1,"1258":1,"1274":1,"1275":1,"1653":1,"1925":1,"2386":1,"2470":1,"2480":2,"2484":1,"2489":1,"2501":1,"2506":1,"2507":1,"2561":1,"2583":1,"2605":1,"2607":1,"2616":3,"2654":1,"2673":1,"2711":2,"2783":1}}],["instructing",{"2":{"23":1,"2516":1}}],["instant",{"2":{"2207":1}}],["instances",{"2":{"277":1,"2525":1}}],["instance",{"2":{"31":3,"34":1,"137":1,"282":3,"341":1,"460":1,"574":1,"686":1,"691":1,"1132":1,"1133":1,"1389":1,"1397":1,"1415":1,"1420":1,"1421":1,"1422":1,"1477":1,"1478":1,"1479":1,"1496":1,"1534":1,"1536":1,"1541":1,"1545":1,"1551":1,"1671":1,"1912":1,"1915":1,"1918":1,"1974":1,"2192":1,"2207":1,"2208":1,"2266":1,"2502":1,"2572":1,"2589":1,"2605":1,"2744":1,"2749":1,"2767":1,"2773":1,"2777":1,"2779":1}}],["installs",{"2":{"2380":1,"2549":1}}],["installer",{"2":{"454":1,"1278":1,"2545":1,"2546":2,"2548":2}}],["installed",{"2":{"23":1,"65":1,"323":1,"364":1,"365":1,"366":2,"402":1,"403":1,"625":1,"627":1,"1278":1,"1478":1,"1598":1,"2069":1,"2221":1,"2303":1,"2470":1,"2499":1,"2536":1,"2538":1,"2547":1,"2549":1}}],["installing",{"0":{"323":1,"2546":1},"1":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"2547":1},"2":{"606":1,"2275":1,"2306":1,"2538":1,"2548":1}}],["install",{"0":{"365":1,"366":1,"2470":1,"2535":1,"2536":1,"2538":1},"1":{"2536":1,"2537":1,"2538":1},"2":{"143":2,"145":2,"191":1,"322":1,"323":1,"325":2,"326":2,"327":1,"328":1,"330":1,"331":2,"358":1,"364":2,"365":2,"366":3,"367":1,"429":2,"454":1,"625":1,"626":2,"1278":1,"1450":1,"1478":2,"1491":1,"2221":1,"2276":1,"2288":1,"2290":1,"2317":1,"2390":2,"2470":7,"2495":1,"2497":1,"2498":2,"2499":1,"2500":2,"2501":1,"2502":2,"2503":7,"2504":2,"2505":1,"2506":2,"2534":1,"2535":1,"2536":2,"2549":1,"2552":1}}],["installation",{"0":{"143":1,"625":1,"626":1,"627":1,"2500":1,"2502":1,"2504":1,"2506":1},"1":{"626":1,"627":1,"628":1,"629":1},"2":{"143":2,"173":1,"191":1,"240":1,"324":3,"628":1,"1278":2,"2215":1,"2499":1,"2501":1,"2502":1,"2506":1,"2536":1,"2537":2,"2551":1,"2552":1}}],["instability",{"2":{"73":1}}],["instead",{"2":{"5":1,"17":1,"25":1,"30":1,"33":1,"45":2,"65":1,"70":1,"87":1,"88":1,"95":1,"104":1,"127":1,"128":1,"160":3,"164":1,"184":1,"188":1,"191":1,"195":1,"196":1,"199":1,"202":1,"206":1,"211":1,"215":1,"218":1,"232":2,"234":1,"240":2,"265":1,"268":1,"375":1,"391":1,"414":1,"452":1,"457":2,"465":1,"475":1,"487":1,"502":1,"504":1,"505":2,"506":1,"511":1,"515":1,"529":1,"534":2,"556":1,"580":2,"601":1,"613":1,"624":1,"626":2,"627":1,"639":1,"643":1,"655":1,"688":1,"691":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1122":1,"1125":1,"1144":1,"1170":1,"1181":1,"1249":1,"1250":1,"1262":1,"1266":1,"1292":1,"1307":1,"1310":1,"1311":1,"1313":1,"1327":1,"1337":1,"1340":1,"1353":1,"1357":1,"1367":1,"1372":1,"1388":1,"1389":1,"1400":1,"1401":1,"1405":1,"1407":1,"1422":1,"1468":2,"1477":1,"1484":1,"1488":1,"1495":1,"1496":2,"1499":1,"1508":1,"1545":1,"1555":1,"1565":2,"1566":1,"1595":1,"1602":1,"1671":1,"1696":1,"1704":1,"1713":1,"1715":1,"1716":1,"1761":1,"1768":1,"1842":1,"1859":2,"1899":1,"1901":1,"1907":1,"1915":1,"1950":1,"1952":1,"1959":1,"1960":1,"1978":2,"1982":1,"1986":1,"1992":1,"1997":1,"2069":1,"2072":1,"2110":1,"2113":1,"2160":1,"2172":1,"2187":1,"2199":1,"2219":2,"2220":1,"2221":1,"2264":1,"2268":1,"2278":1,"2293":1,"2297":2,"2308":1,"2316":1,"2318":1,"2330":1,"2366":1,"2378":1,"2380":1,"2388":1,"2394":1,"2441":1,"2445":1,"2456":1,"2467":1,"2483":1,"2502":1,"2513":1,"2525":1,"2530":1,"2537":1,"2541":1,"2562":1,"2595":1,"2597":1,"2603":2,"2605":2,"2607":1,"2609":1,"2614":2,"2615":3,"2616":2,"2623":1,"2646":1,"2705":1,"2719":1,"2727":1,"2734":1,"2740":1,"2747":1,"2773":1,"2774":1,"2775":1,"2776":1,"2777":2,"2779":1,"2784":1,"2789":1}}],["instituted",{"2":{"1":1}}],["invalid",{"2":{"222":1,"236":2,"249":3,"598":1,"600":1,"1219":1,"2341":1}}],["invited",{"2":{"194":1,"206":1}}],["invisible",{"2":{"176":1,"2309":1}}],["invented",{"2":{"1309":1}}],["inversion",{"2":{"222":1}}],["inversely",{"2":{"691":1}}],["inverse",{"2":{"222":1,"509":1}}],["inverts",{"2":{"211":1,"1378":1,"1540":1,"1860":6,"1952":2,"1953":2,"2181":6}}],["inverted",{"2":{"199":1,"1755":1,"1860":1,"2181":1}}],["invert",{"0":{"1540":1,"1902":1,"1903":1},"2":{"114":3,"190":1,"191":1,"211":1,"222":1,"696":1,"1378":1,"1540":2,"1671":1,"1860":13,"1902":2,"1903":5,"1952":2,"1953":3,"1954":1,"1955":1,"2181":9,"2719":2}}],["investigations",{"2":{"134":1}}],["invoking",{"2":{"1918":1,"2168":1,"2350":1,"2547":1}}],["invoke",{"2":{"588":1,"2168":1,"2220":1,"2616":1,"2782":1}}],["invoked",{"2":{"92":1,"515":1,"587":1,"597":1,"598":2,"599":2,"600":1,"1718":1,"1727":1,"1728":1,"1814":1,"1816":1,"1818":1,"1821":1,"1929":1,"2059":1,"2061":1,"2063":1,"2066":1,"2199":1,"2230":1,"2232":1,"2301":1,"2615":1,"2616":1}}],["involve",{"2":{"2215":1,"2306":1}}],["involves",{"2":{"564":1}}],["involved",{"2":{"551":1,"628":1,"2591":1}}],["involving",{"2":{"99":1,"635":1,"1917":1,"2769":1}}],["invocation",{"2":{"176":1,"236":1,"597":1}}],["inputting",{"2":{"1557":1,"1558":1,"2220":1,"2301":1}}],["inputs",{"2":{"580":1,"635":2,"1318":1,"1363":1,"1893":1,"2312":1,"2623":2}}],["input",{"0":{"1314":1,"2219":1,"2221":1,"2224":1,"2226":1,"2228":1,"2229":1,"2230":2,"2232":2,"2234":1,"2235":1,"2236":1,"2355":1},"1":{"2220":1,"2225":1,"2227":1,"2231":2,"2233":2},"2":{"94":1,"114":1,"154":4,"160":1,"176":1,"199":2,"203":2,"236":2,"243":3,"249":2,"385":1,"502":1,"506":1,"515":1,"580":2,"696":6,"707":2,"1142":1,"1366":4,"1392":1,"1482":3,"1528":1,"1629":1,"1668":2,"1671":1,"1678":1,"1711":1,"1712":1,"1713":2,"1714":1,"1896":1,"1981":1,"2104":1,"2163":1,"2184":1,"2200":1,"2214":1,"2215":2,"2217":5,"2218":6,"2220":2,"2221":17,"2222":7,"2224":1,"2225":1,"2226":1,"2227":1,"2228":1,"2229":1,"2230":1,"2231":2,"2232":1,"2233":2,"2234":2,"2235":2,"2236":2,"2237":2,"2249":1,"2252":1,"2253":1,"2254":1,"2257":1,"2259":1,"2260":1,"2269":1,"2275":1,"2276":1,"2281":2,"2291":2,"2312":1,"2359":1,"2361":2,"2386":3,"2423":7,"2558":1,"2605":1,"2613":1,"2614":16,"2654":1,"2723":1,"2728":2,"2732":1,"2741":1,"2795":1}}],["induced",{"2":{"1715":1,"2777":1}}],["industry",{"2":{"160":1}}],["indisinguishable",{"2":{"2615":1}}],["indirect",{"2":{"2221":1}}],["individually",{"2":{"1213":1,"2328":1}}],["individual",{"2":{"485":1,"1254":1,"1255":1,"1414":1,"1453":2,"1491":1,"1497":1,"1693":1,"1760":2,"2069":1,"2209":1,"2300":1,"2329":1,"2572":1}}],["indicated",{"2":{"1488":1,"1860":1,"2181":1,"2185":1,"2186":1,"2606":1}}],["indicate",{"2":{"1396":1,"1423":1,"1488":1,"1997":1,"2462":1,"2530":1}}],["indicates",{"2":{"506":1,"523":1,"524":1,"525":1,"592":2,"1575":1,"1594":1,"1653":1,"1915":1,"2441":1,"2462":1}}],["indicative",{"2":{"2207":1}}],["indication",{"2":{"1368":1,"1369":6,"1379":1,"1764":1,"1771":1,"1985":1,"1995":1}}],["indicating",{"2":{"701":1,"1708":1}}],["indicator",{"0":{"185":1,"1996":1},"1":{"1997":1,"1998":1},"2":{"114":1,"185":1,"191":2,"199":1,"266":1,"511":1,"1494":1,"1572":1,"1577":1,"1578":1,"1753":1,"1755":1,"1758":2,"1764":1,"1771":3,"1781":1,"1783":1,"1985":1,"1995":3,"1996":3,"1997":2,"2008":1,"2010":1,"2557":1,"2605":2,"2716":1,"2736":1}}],["indicators",{"0":{"1752":1,"1771":1,"1814":1,"1816":1,"1818":1,"1821":1,"1995":1,"1998":1,"2059":1,"2061":1,"2063":1,"2066":1,"2724":1},"1":{"1753":1,"1754":1,"1755":1,"1756":1,"1757":1,"1758":1,"1759":1,"1760":1,"1815":1,"1817":1,"2060":1,"2062":1},"2":{"63":1,"93":1,"114":1,"160":1,"185":4,"191":1,"211":1,"222":2,"530":1,"609":1,"630":1,"1752":1,"1753":1,"1771":6,"1995":6,"1996":3,"1997":3,"1998":1,"2079":2,"2685":1,"2724":2,"2736":1}}],["indices",{"2":{"160":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1185":1,"2193":1,"2219":1,"2220":1,"2733":1}}],["indefinite",{"2":{"1974":1}}],["indefinitely",{"2":{"1541":1,"2613":1,"2616":1}}],["indeed",{"2":{"587":1}}],["indenting",{"2":{"453":1}}],["indent",{"2":{"290":1,"453":2,"455":1,"462":1}}],["indented",{"0":{"290":1},"2":{"292":2,"462":1}}],["indentation",{"2":{"249":1,"453":2,"2476":1}}],["independently",{"2":{"1553":1,"1845":1,"1950":1,"2080":1,"2158":1,"2359":1}}],["independent",{"0":{"1562":1},"1":{"1563":1},"2":{"113":1,"114":1,"176":1,"1372":1,"2142":1,"2558":1,"2714":1}}],["indexes",{"2":{"2195":1}}],["indexed",{"2":{"635":2,"639":1,"2440":1,"2540":1,"2635":5}}],["index>",{"2":{"375":1}}],["index",{"0":{"647":1,"665":1,"669":1,"741":1,"745":1,"749":1,"751":1,"764":1,"766":1,"768":1,"772":1,"776":1,"778":1,"780":1,"782":1,"796":1,"798":1,"800":1,"804":1,"808":1,"810":1,"812":1,"814":1,"826":1,"828":1,"830":1,"832":1,"836":1,"840":1,"842":1,"844":1,"846":1,"861":1,"863":1,"865":1,"867":1,"871":1,"875":1,"877":1,"879":1,"881":1,"895":1,"897":1,"899":1,"901":1,"905":1,"909":1,"911":1,"913":1,"915":1,"929":1,"931":1,"933":1,"935":1,"939":1,"943":1,"945":1,"947":1,"949":1,"963":1,"965":1,"967":1,"969":1,"973":1,"977":1,"979":1,"981":1,"983":1,"997":1,"999":1,"1001":1,"1003":1,"1007":1,"1011":1,"1013":1,"1015":1,"1017":1,"1031":1,"1033":1,"1035":1,"1037":1,"1041":1,"1045":1,"1047":1,"1049":1,"1051":1,"1065":1,"1067":1,"1069":1,"1071":1,"1075":1,"1079":1,"1081":1,"1083":1,"1085":1,"1099":1,"1101":1,"1103":1,"1105":1,"1109":1,"1113":1,"1115":1,"1117":1,"1119":1,"1152":1,"1154":1,"1156":1,"1158":1,"1162":1,"1164":1,"1166":1,"1176":1,"1189":1,"1191":1,"1193":1,"1195":1,"1199":1,"1203":1,"1205":1,"1207":1,"1209":1,"1649":1,"1651":1,"1781":1,"1875":1,"1877":1,"1879":1,"1881":1,"1883":1,"2008":1,"2241":1,"2244":1,"2247":1},"1":{"648":1,"666":1,"670":1,"742":1,"746":1,"750":1,"752":1,"765":1,"767":1,"769":1,"773":1,"777":1,"779":1,"781":1,"783":1,"797":1,"799":1,"801":1,"805":1,"809":1,"811":1,"813":1,"815":1,"827":1,"829":1,"831":1,"833":1,"837":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":1,"866":1,"868":1,"872":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":1,"900":1,"902":1,"906":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":1,"934":1,"936":1,"940":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":1,"968":1,"970":1,"974":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":1,"1002":1,"1004":1,"1008":1,"1012":1,"1014":1,"1016":1,"1018":1,"1032":1,"1034":1,"1036":1,"1038":1,"1042":1,"1046":1,"1048":1,"1050":1,"1052":1,"1066":1,"1068":1,"1070":1,"1072":1,"1076":1,"1080":1,"1082":1,"1084":1,"1086":1,"1100":1,"1102":1,"1104":1,"1106":1,"1110":1,"1114":1,"1116":1,"1118":1,"1120":1,"1153":1,"1155":1,"1157":1,"1159":1,"1163":1,"1165":1,"1167":1,"1177":1,"1190":1,"1192":1,"1194":1,"1196":1,"1200":1,"1204":1,"1206":1,"1208":1,"1210":1,"1650":1,"1652":1,"1782":1,"1876":1,"1878":1,"1880":1,"1882":1,"1884":1,"1885":1,"2009":1,"2242":1,"2243":1,"2245":1,"2246":1,"2248":1},"2":{"46":3,"90":10,"105":8,"145":1,"279":1,"532":1,"554":2,"588":1,"636":1,"648":2,"659":2,"662":1,"666":3,"670":2,"680":1,"734":2,"742":3,"746":3,"750":3,"752":3,"758":1,"760":2,"763":1,"765":2,"767":2,"769":3,"773":3,"777":3,"779":3,"781":2,"783":2,"787":1,"792":2,"795":1,"797":2,"799":2,"801":3,"805":3,"809":3,"811":3,"813":2,"815":2,"819":1,"822":2,"825":1,"827":2,"829":2,"831":2,"833":3,"837":3,"841":3,"843":3,"845":2,"847":2,"851":1,"852":1,"857":2,"860":1,"862":2,"864":2,"866":2,"868":3,"872":3,"876":3,"878":3,"880":2,"882":2,"886":1,"891":2,"894":1,"896":2,"898":2,"900":2,"902":3,"906":3,"910":3,"912":3,"914":2,"916":2,"920":1,"925":2,"928":1,"930":2,"932":2,"934":2,"936":3,"940":3,"944":3,"946":3,"948":2,"950":2,"954":1,"959":2,"962":1,"964":2,"966":2,"968":2,"970":3,"974":3,"978":3,"980":3,"982":2,"984":2,"988":1,"993":2,"996":1,"998":2,"1000":2,"1002":2,"1004":3,"1008":3,"1012":3,"1014":3,"1016":2,"1018":2,"1022":1,"1023":1,"1027":2,"1030":1,"1032":2,"1034":2,"1036":2,"1038":3,"1042":3,"1046":3,"1048":3,"1050":2,"1052":2,"1056":1,"1057":1,"1061":2,"1064":1,"1066":2,"1068":2,"1070":2,"1072":3,"1076":3,"1080":3,"1082":3,"1084":2,"1086":2,"1090":1,"1095":2,"1098":1,"1100":2,"1102":2,"1104":2,"1106":3,"1110":3,"1114":3,"1116":3,"1118":2,"1120":2,"1146":1,"1148":2,"1151":1,"1153":2,"1155":2,"1157":2,"1159":3,"1163":3,"1165":2,"1167":2,"1177":2,"1183":1,"1185":2,"1188":1,"1190":2,"1192":2,"1194":2,"1196":3,"1200":3,"1204":3,"1206":3,"1208":2,"1210":2,"1279":1,"1304":1,"1312":1,"1326":1,"1334":1,"1335":1,"1548":2,"1555":13,"1556":3,"1560":5,"1561":7,"1587":4,"1598":7,"1650":2,"1652":2,"1681":1,"1683":1,"1760":2,"1763":7,"1771":2,"1782":2,"1794":1,"1819":2,"1822":2,"1853":2,"1855":2,"1859":1,"1860":4,"1876":2,"1878":2,"1880":2,"1882":2,"1884":2,"1950":1,"1967":2,"1969":1,"1974":1,"1984":7,"1995":2,"1996":5,"2009":2,"2021":1,"2064":2,"2067":2,"2089":4,"2177":2,"2179":2,"2181":4,"2199":1,"2206":1,"2219":1,"2222":2,"2241":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":1,"2248":2,"2261":1,"2262":2,"2301":1,"2423":2,"2513":1,"2626":3,"2635":3,"2725":1}}],["inf",{"2":{"628":4}}],["infrequently",{"2":{"214":1}}],["infrastructure",{"0":{"51":1,"65":1,"70":1,"76":1,"95":1},"2":{"2289":1}}],["influence",{"2":{"203":1,"574":1,"2768":1}}],["infers",{"2":{"2597":1}}],["inferior",{"2":{"1363":1}}],["infer",{"2":{"133":1,"134":1,"236":1,"266":1,"2596":1}}],["infinity87",{"2":{"211":3}}],["infinity60",{"2":{"154":2,"236":1}}],["infinity",{"2":{"114":3,"134":1,"154":2,"2174":1,"2300":2}}],["infinitely",{"2":{"496":1}}],["infinite",{"2":{"93":1,"179":1,"1722":1}}],["infomation",{"2":{"2592":2}}],["informing",{"2":{"2456":1,"2464":1}}],["informs",{"2":{"597":1}}],["inform",{"2":{"276":1,"675":1,"694":1}}],["informed",{"2":{"275":1}}],["information",{"0":{"529":1,"2267":1,"2559":1},"1":{"2268":1,"2269":1,"2270":1,"2271":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":1,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1,"2282":1,"2283":1,"2284":1,"2285":1,"2286":1,"2287":1,"2288":1,"2560":1,"2561":1},"2":{"2":1,"14":1,"70":1,"118":1,"132":1,"137":1,"138":1,"169":1,"170":2,"174":1,"182":1,"184":2,"194":1,"196":1,"206":1,"213":1,"247":1,"316":1,"317":1,"378":3,"408":1,"409":1,"410":1,"427":1,"431":1,"435":1,"502":2,"511":2,"512":1,"515":1,"573":1,"597":1,"606":2,"613":1,"624":1,"638":1,"639":1,"677":1,"680":1,"690":1,"701":1,"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1121":1,"1138":1,"1255":1,"1278":1,"1282":1,"1288":1,"1315":1,"1337":1,"1358":1,"1383":1,"1390":2,"1497":1,"1508":1,"1535":2,"1752":1,"1762":1,"1868":1,"1891":1,"1925":1,"1933":1,"1956":1,"1964":1,"1983":1,"1997":1,"2069":1,"2070":1,"2167":1,"2172":1,"2200":1,"2267":1,"2294":1,"2296":1,"2297":2,"2300":1,"2301":4,"2310":1,"2326":1,"2327":1,"2328":1,"2329":1,"2330":1,"2336":1,"2337":2,"2338":1,"2386":1,"2440":1,"2456":1,"2466":1,"2489":1,"2493":1,"2494":1,"2499":1,"2517":1,"2552":3,"2590":1,"2604":1,"2613":1,"2615":2,"2616":3,"2628":1,"2710":5,"2711":1,"2778":1,"2790":1,"2796":1}}],["info",{"0":{"378":1,"608":1,"611":1,"2337":1,"2594":1,"2710":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"2595":1,"2596":1,"2597":1,"2598":1,"2711":1,"2712":1,"2713":1,"2714":1,"2715":1,"2716":1,"2717":1,"2718":1,"2719":1,"2720":1,"2721":1,"2722":1,"2723":1,"2724":1,"2725":1,"2726":1,"2727":1,"2728":1,"2729":1,"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1,"2737":1,"2738":1,"2739":1},"2":{"70":33,"73":1,"76":4,"99":1,"109":1,"110":1,"111":2,"112":1,"114":5,"134":1,"145":1,"152":1,"160":1,"169":2,"176":3,"184":3,"191":4,"198":1,"199":4,"201":5,"211":22,"213":2,"222":2,"224":2,"232":1,"236":8,"238":1,"249":26,"262":1,"266":3,"277":1,"282":1,"290":2,"374":4,"377":1,"378":4,"384":2,"389":1,"405":3,"430":1,"432":1,"433":2,"434":1,"437":1,"441":1,"470":1,"496":3,"606":3,"607":2,"608":1,"609":1,"610":5,"611":2,"613":2,"614":3,"624":1,"1255":1,"1280":1,"1295":1,"1296":1,"1335":1,"1417":1,"1422":1,"1897":2,"1925":1,"2149":1,"2184":1,"2191":1,"2207":1,"2282":1,"2297":1,"2335":1,"2338":1,"2392":17,"2413":1,"2445":1,"2449":1,"2506":1,"2513":1,"2594":1,"2595":1,"2596":1,"2599":1,"2605":5,"2654":3,"2655":1,"2656":1,"2710":4,"2725":2,"2764":1}}],["int9",{"2":{"2394":1,"2430":1}}],["int7",{"2":{"2394":1,"2430":1}}],["int6",{"2":{"2394":1,"2430":1}}],["int3",{"2":{"2394":1,"2430":1}}],["int2",{"2":{"1894":3,"2394":1,"2430":1}}],["int8",{"2":{"1594":4,"1960":4,"1974":2,"2168":3,"2190":1,"2394":1,"2430":1}}],["intimidates",{"2":{"2456":1}}],["intimidated",{"2":{"356":1,"481":1}}],["intimidating",{"0":{"1299":1}}],["intimate",{"2":{"682":1}}],["int4",{"2":{"313":1,"2394":1,"2430":1,"2446":1}}],["int5",{"2":{"313":1,"2394":1,"2430":1,"2446":1}}],["int16",{"0":{"1684":1,"1687":1},"1":{"1685":1,"1686":1,"1688":1},"2":{"1672":1,"1676":1,"1688":1,"2616":2}}],["int1",{"2":{"313":1,"2394":1,"2430":1,"2446":1}}],["intrinsics",{"2":{"236":1}}],["introducing",{"2":{"2761":1}}],["introduction",{"0":{"262":1,"413":1,"2198":1,"2294":1},"1":{"414":1,"415":1,"2295":1,"2296":1,"2297":1,"2298":1},"2":{"2520":1,"2781":1}}],["introduced",{"2":{"191":1,"211":1,"236":1,"606":1,"2507":1}}],["introduce",{"2":{"191":1,"199":1,"302":1,"1766":1,"1987":2}}],["introspection",{"2":{"176":1,"191":1,"211":1,"222":1,"249":1,"272":1,"277":2}}],["int",{"0":{"665":1,"741":1,"745":1,"768":1,"772":1,"800":1,"804":1,"832":1,"836":1,"867":1,"871":1,"901":1,"905":1,"935":1,"939":1,"969":1,"973":1,"1003":1,"1007":1,"1037":1,"1041":1,"1071":1,"1075":1,"1105":1,"1109":1,"1158":1,"1176":1,"1195":1,"1199":1},"1":{"666":1,"742":1,"746":1,"769":1,"773":1,"801":1,"805":1,"833":1,"837":1,"868":1,"872":1,"902":1,"906":1,"936":1,"940":1,"970":1,"974":1,"1004":1,"1008":1,"1038":1,"1042":1,"1072":1,"1076":1,"1106":1,"1110":1,"1159":1,"1177":1,"1196":1,"1200":1},"2":{"211":1,"453":1,"463":1,"464":1,"465":1,"612":2,"641":4,"666":1,"742":1,"746":1,"769":1,"773":1,"801":1,"805":1,"833":1,"837":1,"868":1,"872":1,"902":1,"906":1,"936":1,"940":1,"970":1,"974":1,"1004":1,"1008":1,"1038":1,"1042":1,"1072":1,"1076":1,"1106":1,"1110":1,"1159":1,"1177":1,"1196":1,"1200":1,"1289":7,"1327":1,"1854":1,"1894":5,"1896":1,"1956":4,"2168":2,"2615":11,"2616":5}}],["intel",{"2":{"2388":1}}],["intelligent",{"2":{"2531":1,"2542":1}}],["intelligently",{"2":{"612":1}}],["intellisense",{"2":{"1946":1,"2548":1,"2549":1,"2552":1}}],["intensity",{"2":{"2071":1}}],["intend",{"2":{"429":1,"474":1,"568":1,"1449":1,"1922":1,"2534":1}}],["intended",{"2":{"240":1,"597":2,"1372":1,"1378":1,"1933":1,"2563":1,"2564":1,"2565":1,"2760":1,"2767":1}}],["intention",{"2":{"1472":1,"2605":1}}],["intent",{"2":{"331":1,"453":1,"2758":1}}],["integral",{"2":{"435":1}}],["integrates",{"2":{"2617":1}}],["integrated",{"2":{"1134":1,"1897":1,"2531":1,"2547":4,"2612":1}}],["integrate",{"2":{"133":1,"609":1,"1952":1}}],["integration",{"0":{"484":1,"2617":1,"2795":1},"1":{"2618":1,"2619":1,"2620":1,"2621":1,"2622":1,"2623":1},"2":{"118":1,"153":1,"199":1,"446":3,"483":1,"484":1,"2480":1,"2617":1,"2618":1,"2676":1,"2795":1}}],["integrations",{"2":{"24":1,"141":1}}],["integers",{"2":{"612":1,"630":1}}],["integer",{"2":{"114":1,"176":1,"191":1,"222":1,"464":1,"465":2,"612":1,"1443":1,"1686":1,"1858":1,"1960":2,"2180":1,"2207":1,"2610":1,"2624":1,"2631":1,"2767":1}}],["interpolation",{"2":{"2635":3}}],["interprets",{"2":{"1536":2}}],["interpret",{"2":{"1488":1,"1715":1,"1870":1,"2339":1,"2777":1}}],["interpreted",{"0":{"2351":1},"1":{"2352":1,"2353":1,"2354":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1},"2":{"215":1,"1600":1,"2339":1,"2773":1}}],["intervention",{"2":{"2103":1,"2616":1}}],["intervals",{"2":{"597":1,"1406":1,"1840":1,"2078":6}}],["interval",{"0":{"2121":1,"2125":1,"2139":1},"1":{"2122":1,"2126":1},"2":{"49":1,"63":1,"93":1,"112":2,"502":1,"505":1,"507":1,"689":3,"1258":2,"1832":1,"1841":4,"1842":4,"1843":8,"1845":2,"1846":2,"1855":3,"1901":3,"1937":2,"2076":1,"2122":1,"2125":1,"2126":1,"2139":2,"2179":2,"2729":1,"2736":1,"2738":1}}],["intercepting",{"0":{"2451":1},"1":{"2452":1,"2453":1,"2454":1},"2":{"2452":1}}],["interceptable",{"2":{"2188":1,"2190":1}}],["intercept",{"2":{"1954":2,"1955":2,"1959":1,"2452":1,"2453":4,"2454":2}}],["interchangeable",{"2":{"1952":1}}],["inter",{"2":{"1921":1}}],["interfacing",{"0":{"2190":1}}],["interfaces",{"2":{"502":1,"627":1,"1351":1,"1927":6,"2362":1}}],["interface",{"2":{"49":2,"114":1,"363":1,"683":1,"1214":1,"1331":1,"1434":1,"1922":1,"1924":3,"1925":1,"1927":11,"2340":1,"2392":1,"2466":1,"2526":1,"2615":1,"2678":1,"2707":1}}],["interfere",{"2":{"1321":1,"2779":1}}],["internet",{"2":{"701":1,"2789":1}}],["internally",{"2":{"1946":1,"2151":1,"2615":2,"2616":4}}],["internal",{"2":{"174":1,"211":1,"231":1,"235":1,"638":1,"673":1,"683":1,"1128":1,"1273":1,"1316":1,"1321":1,"1337":1,"1485":1,"1552":1,"1829":1,"1943":1,"2434":1,"2556":1,"2573":1,"2583":1,"2613":2,"2616":2,"2621":1}}],["internals",{"0":{"25":1,"51":1,"65":1,"70":1,"76":1,"95":1},"2":{"263":1,"479":1,"585":1,"1591":1}}],["international",{"0":{"2430":1},"2":{"74":1,"188":1,"191":1,"1392":1,"2220":1,"2358":1,"2394":18,"2430":12,"2742":5}}],["intermittently",{"2":{"556":1,"2557":1}}],["intermediates=yes",{"2":{"211":1}}],["intermediate",{"0":{"1376":1,"1702":1,"2763":1},"1":{"1703":1,"1704":1},"2":{"211":1,"222":1,"409":1,"410":1,"1488":1,"1865":1,"1868":1,"2467":1,"2614":2,"2762":1}}],["intersections",{"0":{"1590":1},"2":{"1585":1,"2163":2}}],["intersection",{"2":{"510":2,"2163":4}}],["interacting",{"2":{"431":1}}],["interaction",{"0":{"431":1},"1":{"432":1,"433":1,"434":1,"435":1},"2":{"306":1,"1572":1,"1714":1,"1973":1,"2103":1}}],["interactions",{"2":{"133":1,"134":1,"431":1}}],["interact",{"2":{"303":1,"416":1,"430":1,"437":1,"2168":1,"2583":1}}],["interacts",{"2":{"263":1}}],["interoperate",{"2":{"218":1}}],["interoperation",{"2":{"182":1}}],["interesting",{"2":{"2300":1,"2446":1,"2447":1}}],["interested",{"2":{"319":1,"321":1,"517":1,"554":1,"1487":1,"2616":1}}],["interest",{"2":{"175":1}}],["interrupter",{"2":{"2198":1}}],["interrupted",{"2":{"505":1,"1289":1,"2198":1,"2200":1,"2207":5}}],["interrupting",{"2":{"1468":1}}],["interruptions",{"2":{"698":1,"2200":1}}],["interruption",{"2":{"505":1}}],["interrupts",{"2":{"698":3,"1891":1,"2768":1}}],["interrupt",{"0":{"194":1,"206":1,"1894":1,"1895":1},"2":{"22":2,"73":1,"112":2,"114":1,"194":10,"199":1,"206":2,"211":2,"698":1,"703":1,"1134":1,"1258":1,"1499":1,"1893":1,"1894":2,"1895":2,"1896":1,"2489":1,"2731":1}}],["into",{"0":{"2489":1,"2491":1},"2":{"18":1,"21":1,"35":1,"36":1,"50":2,"65":2,"72":1,"73":1,"75":1,"99":1,"113":1,"114":7,"119":1,"131":1,"133":1,"134":4,"145":3,"160":27,"173":1,"176":1,"179":1,"188":1,"191":1,"198":2,"201":3,"211":1,"213":1,"218":1,"222":2,"224":1,"236":1,"238":1,"249":11,"254":1,"265":1,"266":1,"272":1,"277":1,"302":1,"303":1,"314":2,"337":1,"344":1,"345":1,"347":1,"349":1,"350":4,"352":1,"373":1,"389":2,"390":2,"391":1,"417":1,"424":1,"436":1,"450":1,"452":1,"481":1,"486":1,"499":1,"509":4,"516":2,"520":1,"526":1,"539":1,"556":1,"560":1,"584":2,"585":1,"592":1,"597":1,"606":1,"609":1,"621":1,"626":1,"628":1,"666":1,"683":1,"712":1,"742":1,"746":1,"750":1,"752":1,"769":1,"773":1,"777":1,"779":1,"801":1,"805":1,"809":1,"811":1,"833":1,"837":1,"841":1,"843":1,"868":1,"872":1,"876":1,"878":1,"902":1,"906":1,"910":1,"912":1,"936":1,"940":1,"944":1,"946":1,"970":1,"974":1,"978":1,"980":1,"1004":1,"1008":1,"1012":1,"1014":1,"1038":1,"1042":1,"1046":1,"1048":1,"1072":1,"1076":1,"1080":1,"1082":1,"1106":1,"1110":1,"1114":1,"1116":1,"1159":1,"1163":1,"1196":1,"1200":1,"1204":1,"1206":1,"1229":1,"1246":1,"1276":1,"1307":3,"1324":2,"1366":1,"1374":1,"1383":2,"1422":1,"1433":1,"1435":1,"1441":1,"1488":1,"1532":2,"1552":2,"1565":1,"1587":1,"1598":1,"1614":1,"1710":1,"1761":1,"1854":1,"1858":1,"1860":2,"1902":1,"1903":2,"1952":1,"1960":1,"1982":1,"2080":1,"2140":1,"2150":1,"2152":1,"2180":1,"2181":2,"2182":1,"2186":1,"2199":2,"2215":1,"2219":1,"2241":1,"2243":1,"2245":1,"2248":1,"2262":1,"2268":1,"2273":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":1,"2285":1,"2303":2,"2316":1,"2318":1,"2319":1,"2341":1,"2342":1,"2345":1,"2366":1,"2388":1,"2395":2,"2437":1,"2447":1,"2450":1,"2456":1,"2475":1,"2477":1,"2478":1,"2479":2,"2489":1,"2491":2,"2492":1,"2497":1,"2502":1,"2514":1,"2552":1,"2562":1,"2585":1,"2591":1,"2592":2,"2605":4,"2610":2,"2611":2,"2612":2,"2615":1,"2616":2,"2618":1,"2624":1,"2654":4,"2670":1,"2708":1,"2711":1,"2743":1,"2744":1,"2746":1,"2749":1,"2760":1,"2763":1,"2787":1,"2796":1}}],["inclination",{"2":{"2585":1}}],["inclusive",{"2":{"1763":1,"1984":1,"2616":1}}],["inclusions",{"2":{"236":1}}],["inclusion",{"2":{"50":1,"74":1,"134":1,"176":2,"234":1,"236":1,"341":1}}],["including",{"2":{"30":1,"33":1,"49":1,"174":1,"234":1,"235":1,"248":1,"277":1,"435":1,"501":1,"643":1,"700":1,"1130":1,"1170":1,"1212":1,"1233":1,"1250":1,"1287":1,"1416":1,"1482":1,"1911":1,"2079":1,"2082":1,"2172":1,"2186":1,"2208":1,"2219":1,"2291":1,"2346":1,"2470":1,"2526":1,"2565":1,"2604":1,"2605":3,"2625":1,"2632":1,"2741":1,"2782":1}}],["include=",{"2":{"2300":2}}],["included",{"0":{"338":1,"341":1},"2":{"10":2,"114":1,"145":1,"273":1,"341":1,"344":1,"345":1,"468":1,"470":1,"501":2,"512":1,"617":1,"643":1,"655":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1170":1,"1181":1,"1212":1,"1233":1,"1250":1,"1388":1,"1413":2,"1414":1,"1435":1,"1476":1,"1897":1,"2089":2,"2266":1,"2300":2,"2301":1,"2444":1,"2548":1,"2606":4,"2624":2,"2626":1,"2640":1,"2757":1,"2788":1,"2792":1}}],["includes",{"0":{"1388":1},"2":{"5":1,"10":2,"12":1,"25":1,"94":1,"114":3,"191":6,"194":1,"211":1,"222":7,"266":4,"337":1,"341":1,"352":1,"515":1,"1308":1,"1351":2,"1492":1,"1771":1,"1995":1,"2070":1,"2266":1,"2289":1,"2301":1,"2354":1,"2449":1,"2551":1,"2585":2,"2612":1,"2624":1,"2631":1,"2741":1,"2746":1,"2790":1,"2791":1}}],["include",{"0":{"2779":1},"2":{"4":1,"12":1,"22":1,"50":1,"73":1,"114":3,"132":1,"133":2,"134":5,"160":2,"176":4,"199":1,"211":1,"222":1,"236":2,"265":1,"276":1,"277":1,"349":1,"374":1,"401":2,"446":1,"453":3,"454":1,"455":1,"467":1,"530":1,"559":2,"563":1,"623":1,"631":2,"686":2,"687":2,"690":2,"1132":2,"1133":2,"1277":1,"1287":1,"1324":1,"1362":1,"1388":3,"1394":1,"1399":2,"1413":1,"1414":2,"1417":1,"1422":6,"1429":1,"1454":1,"1456":1,"1458":1,"1465":1,"1565":2,"1591":1,"1692":1,"1830":1,"1863":1,"1868":1,"1906":1,"1910":1,"2085":1,"2209":3,"2219":1,"2299":1,"2301":6,"2309":1,"2321":1,"2323":1,"2444":1,"2474":1,"2545":1,"2603":2,"2604":1,"2605":8,"2614":1,"2616":4,"2690":1,"2698":1,"2711":2,"2740":1,"2741":2,"2744":1,"2757":1,"2779":1,"2792":2}}],["inch",{"2":{"1950":1}}],["inc",{"2":{"1767":2,"1990":2,"2792":1}}],["incredibly",{"2":{"1721":2,"2640":1}}],["increasing",{"2":{"506":1,"678":1,"1842":1,"1855":1,"1952":1,"2080":1,"2264":2,"2450":1,"2563":1,"2768":1}}],["increase",{"0":{"1514":1,"1795":1,"1796":1,"1801":1,"1802":1,"2022":1,"2023":1,"2028":1,"2029":1,"2034":1,"2035":1,"2040":1,"2041":1},"2":{"134":2,"160":1,"211":2,"504":1,"505":1,"506":1,"601":1,"1282":1,"1437":1,"1470":1,"1472":2,"1493":1,"1514":1,"1552":1,"1591":1,"1592":1,"1598":2,"1610":2,"1618":1,"1765":2,"1766":1,"1795":1,"1796":1,"1801":1,"1802":1,"1831":4,"1859":1,"1952":1,"1986":8,"1987":2,"1988":1,"2022":1,"2023":1,"2028":1,"2029":1,"2034":1,"2035":1,"2040":1,"2041":1,"2072":8,"2080":1,"2092":12,"2093":2,"2102":1,"2144":1,"2145":3,"2311":1,"2399":1,"2408":2,"2410":4,"2415":8,"2416":8,"2623":1,"2767":1}}],["increases",{"2":{"119":1,"215":1,"1443":1,"1445":1,"1768":2,"1988":2,"1992":2,"2093":2,"2396":1,"2414":1,"2563":1,"2727":1,"2734":1,"2767":2}}],["increased",{"2":{"70":1,"175":1,"262":1,"352":1,"598":1,"642":1,"680":2,"1988":1,"2070":1,"2209":1,"2616":2}}],["incrementms",{"2":{"2414":2,"2767":2}}],["incremented",{"2":{"1632":1,"2200":1}}],["incremental",{"2":{"358":1}}],["incrementing",{"2":{"347":1,"1853":1,"2177":1}}],["increments",{"2":{"145":1,"1935":1,"1936":1,"1949":1,"1950":2}}],["increment",{"2":{"114":1,"1489":2,"1853":1,"2073":2,"2177":1,"2767":2}}],["inception",{"2":{"113":1}}],["inconsistencies",{"2":{"2602":1}}],["inconsistent",{"2":{"453":1,"1254":1,"1326":1}}],["incoming",{"2":{"1482":1}}],["incomplete",{"2":{"557":1,"1756":1}}],["incompatible",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"337":1}}],["incorporated",{"2":{"436":1,"499":1}}],["incorporates",{"2":{"352":1,"2687":1}}],["incorrect",{"2":{"114":1,"145":1,"191":2,"198":1,"211":1,"249":1,"629":1,"1595":1,"1600":1,"2104":1,"2387":1,"2392":1,"2476":1}}],["incorrectly",{"2":{"11":1,"679":1,"1474":1,"1868":1,"2318":1}}],["in",{"0":{"3":1,"7":1,"8":1,"15":1,"23":1,"120":1,"218":1,"273":1,"338":1,"546":1,"1271":1,"1277":1,"1316":1,"1317":1,"1335":1,"1391":1,"1395":1,"1400":1,"1453":1,"1577":1,"1578":1,"1589":1,"1590":2,"1591":1,"2146":1,"2182":1,"2462":1,"2652":1},"1":{"1272":1,"1392":1,"1393":1,"1394":1,"1396":1,"1397":1,"1398":1,"1399":1,"1400":1,"1401":1,"1402":1,"1403":1,"1404":1,"1405":1,"1406":1,"1407":1,"1408":1,"1409":1,"1410":1,"1411":1,"1412":1,"1592":1,"1593":1,"1594":1,"2147":1,"2148":1,"2149":1,"2150":1,"2151":1,"2183":1,"2184":1,"2185":1,"2186":1,"2187":1,"2188":1,"2189":1,"2190":1,"2191":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1},"2":{"0":1,"3":3,"5":2,"6":1,"9":1,"10":3,"11":1,"15":3,"16":2,"17":1,"19":1,"25":3,"28":1,"31":1,"33":1,"39":1,"48":1,"49":9,"50":5,"52":1,"55":1,"62":1,"64":1,"70":33,"73":2,"74":4,"75":3,"76":2,"77":1,"86":2,"87":1,"92":4,"94":1,"95":2,"99":3,"103":3,"108":1,"109":1,"110":2,"111":1,"113":1,"114":13,"118":1,"119":5,"120":4,"123":2,"124":4,"125":2,"126":1,"132":1,"133":1,"134":13,"139":2,"141":3,"143":3,"145":3,"153":1,"160":10,"169":3,"170":2,"172":2,"174":1,"175":2,"176":21,"179":1,"182":10,"184":3,"185":2,"186":1,"188":1,"189":1,"190":1,"191":13,"194":7,"195":1,"196":2,"199":11,"201":4,"202":2,"204":1,"206":2,"211":9,"213":1,"214":1,"215":2,"218":2,"221":2,"222":10,"228":3,"231":1,"232":1,"233":2,"234":4,"236":4,"240":2,"246":2,"248":1,"249":7,"251":1,"254":1,"262":1,"263":3,"264":1,"265":2,"266":7,"268":1,"272":1,"273":2,"274":1,"276":2,"277":2,"278":1,"282":5,"291":1,"292":1,"314":1,"315":1,"317":5,"319":2,"320":1,"321":1,"322":1,"331":2,"334":1,"335":3,"336":1,"337":4,"341":6,"343":1,"344":1,"345":1,"349":3,"352":3,"354":1,"357":2,"358":1,"364":1,"367":1,"370":10,"371":2,"373":1,"377":1,"378":3,"380":1,"381":2,"382":1,"383":2,"385":2,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"399":2,"404":2,"405":1,"406":1,"424":1,"430":4,"432":3,"436":2,"437":3,"438":1,"439":1,"445":1,"446":3,"452":1,"453":2,"454":2,"455":1,"456":1,"457":2,"460":1,"461":2,"462":2,"469":1,"470":1,"473":2,"474":2,"476":1,"479":1,"480":1,"481":3,"482":1,"483":1,"484":1,"485":1,"496":2,"497":1,"498":1,"502":9,"505":2,"506":3,"508":1,"509":1,"510":3,"511":1,"516":3,"517":1,"521":1,"525":1,"529":5,"530":2,"532":2,"533":2,"534":3,"535":2,"536":1,"537":2,"538":2,"539":1,"540":3,"541":1,"551":1,"552":4,"554":3,"556":3,"557":4,"559":4,"560":6,"561":2,"562":1,"565":2,"566":2,"567":1,"573":1,"574":2,"580":1,"581":1,"584":2,"588":3,"596":1,"597":2,"598":2,"601":1,"607":3,"609":6,"610":3,"613":1,"614":2,"615":1,"616":1,"617":2,"621":1,"623":2,"624":4,"625":1,"626":5,"627":3,"628":3,"629":3,"630":1,"635":3,"636":2,"641":2,"643":2,"644":2,"648":1,"659":3,"671":2,"673":1,"674":6,"675":6,"676":2,"678":1,"679":7,"680":3,"681":1,"682":1,"683":1,"685":1,"686":2,"687":2,"688":1,"689":1,"691":1,"694":11,"696":1,"698":1,"699":1,"700":2,"701":1,"702":1,"703":2,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":1,"727":1,"731":1,"734":2,"757":1,"758":1,"760":2,"786":1,"787":1,"789":6,"792":3,"818":1,"819":1,"822":3,"850":1,"851":1,"852":1,"857":3,"885":1,"886":1,"891":3,"919":1,"920":1,"925":3,"953":1,"954":1,"959":3,"987":1,"988":1,"993":3,"1021":1,"1022":1,"1023":1,"1024":6,"1027":3,"1055":1,"1056":1,"1057":1,"1058":6,"1061":3,"1089":1,"1090":1,"1092":6,"1095":3,"1121":2,"1123":1,"1124":2,"1126":2,"1127":2,"1129":2,"1130":2,"1132":5,"1133":5,"1134":2,"1135":1,"1136":1,"1137":3,"1142":7,"1145":1,"1146":1,"1148":3,"1170":2,"1171":4,"1182":1,"1183":1,"1185":3,"1211":1,"1212":2,"1214":4,"1219":1,"1232":2,"1233":2,"1249":1,"1250":2,"1251":6,"1252":1,"1253":1,"1254":1,"1255":2,"1257":1,"1258":1,"1261":2,"1262":1,"1267":1,"1271":1,"1276":1,"1278":1,"1279":2,"1280":1,"1282":2,"1291":2,"1297":1,"1301":1,"1302":2,"1304":1,"1305":1,"1306":1,"1307":4,"1309":1,"1310":3,"1313":2,"1315":2,"1316":1,"1324":3,"1325":4,"1327":4,"1328":2,"1329":2,"1335":2,"1337":7,"1338":1,"1339":2,"1340":2,"1347":2,"1350":1,"1352":1,"1356":1,"1359":1,"1362":4,"1363":9,"1365":1,"1366":1,"1367":2,"1368":2,"1369":6,"1372":2,"1373":1,"1375":2,"1377":5,"1378":4,"1381":1,"1382":1,"1383":3,"1384":3,"1385":1,"1389":3,"1391":2,"1392":1,"1394":1,"1396":1,"1397":2,"1398":3,"1399":1,"1401":3,"1413":3,"1414":6,"1415":1,"1416":4,"1417":1,"1418":1,"1420":9,"1421":5,"1422":3,"1424":1,"1427":1,"1430":2,"1431":3,"1432":1,"1433":3,"1434":1,"1435":6,"1437":2,"1438":2,"1439":2,"1440":1,"1441":4,"1442":3,"1443":2,"1445":1,"1449":2,"1450":1,"1451":1,"1452":1,"1453":3,"1464":1,"1468":2,"1469":1,"1471":1,"1472":1,"1473":1,"1475":3,"1476":2,"1477":3,"1483":3,"1485":1,"1487":3,"1488":9,"1489":2,"1491":1,"1494":1,"1495":1,"1496":1,"1497":1,"1500":1,"1501":1,"1506":1,"1508":2,"1528":1,"1529":1,"1532":2,"1533":1,"1534":3,"1536":3,"1537":3,"1538":2,"1540":1,"1541":1,"1544":1,"1545":1,"1546":2,"1548":3,"1549":1,"1550":1,"1552":2,"1554":3,"1555":13,"1562":1,"1563":1,"1564":1,"1565":4,"1566":1,"1568":1,"1572":6,"1575":2,"1577":1,"1578":1,"1585":3,"1591":3,"1592":4,"1596":2,"1597":1,"1598":1,"1600":2,"1602":1,"1605":1,"1606":1,"1608":2,"1611":5,"1612":1,"1613":1,"1619":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1627":1,"1632":2,"1670":1,"1671":3,"1689":1,"1690":2,"1692":1,"1693":2,"1695":1,"1697":1,"1703":2,"1704":2,"1708":1,"1709":2,"1710":1,"1711":3,"1712":1,"1713":4,"1714":2,"1715":3,"1716":1,"1718":1,"1722":3,"1724":1,"1752":2,"1753":1,"1754":2,"1755":1,"1760":1,"1763":1,"1765":1,"1766":5,"1767":5,"1768":2,"1771":2,"1813":1,"1819":2,"1822":2,"1825":1,"1829":1,"1832":1,"1836":1,"1839":1,"1840":2,"1841":3,"1842":3,"1843":2,"1844":1,"1845":5,"1846":2,"1851":1,"1852":1,"1853":3,"1854":2,"1855":4,"1858":3,"1859":7,"1860":4,"1863":2,"1864":1,"1865":2,"1866":1,"1867":1,"1868":5,"1870":1,"1893":2,"1894":2,"1895":3,"1896":2,"1897":1,"1901":1,"1904":1,"1906":2,"1907":1,"1908":2,"1910":4,"1911":1,"1912":2,"1914":2,"1915":1,"1918":2,"1919":1,"1921":2,"1922":1,"1925":3,"1926":1,"1927":1,"1930":1,"1932":1,"1933":1,"1935":1,"1936":1,"1937":1,"1938":1,"1939":3,"1940":8,"1942":1,"1943":5,"1944":1,"1945":3,"1946":4,"1948":1,"1949":1,"1950":9,"1951":1,"1956":6,"1958":3,"1960":3,"1964":1,"1965":1,"1966":1,"1967":4,"1972":1,"1974":2,"1977":1,"1978":3,"1979":2,"1980":1,"1981":3,"1984":1,"1986":2,"1987":11,"1988":2,"1990":5,"1991":1,"1992":2,"1995":2,"2058":1,"2064":2,"2067":2,"2069":1,"2070":2,"2072":2,"2073":1,"2074":1,"2076":2,"2078":6,"2079":1,"2080":5,"2082":1,"2085":2,"2090":4,"2096":1,"2097":4,"2098":1,"2101":1,"2109":1,"2110":1,"2113":1,"2122":1,"2126":1,"2141":1,"2147":2,"2149":1,"2150":4,"2151":1,"2152":1,"2155":1,"2156":2,"2158":1,"2160":2,"2161":1,"2163":2,"2164":4,"2166":2,"2167":1,"2168":4,"2169":2,"2175":1,"2176":1,"2177":3,"2178":2,"2179":2,"2180":1,"2181":3,"2182":2,"2183":5,"2184":3,"2185":1,"2186":1,"2187":3,"2188":4,"2190":5,"2191":2,"2192":2,"2193":1,"2195":1,"2198":2,"2199":9,"2200":5,"2202":3,"2203":1,"2206":1,"2207":12,"2208":3,"2209":6,"2212":1,"2215":1,"2217":1,"2219":5,"2220":6,"2221":5,"2222":2,"2234":1,"2235":1,"2236":1,"2244":1,"2247":1,"2252":1,"2264":3,"2266":1,"2267":2,"2268":3,"2270":1,"2271":2,"2272":1,"2273":2,"2274":3,"2275":4,"2276":2,"2278":2,"2279":1,"2280":2,"2281":1,"2282":1,"2283":1,"2284":1,"2285":1,"2286":1,"2287":3,"2288":3,"2291":3,"2295":3,"2298":1,"2299":1,"2300":2,"2301":12,"2302":1,"2303":2,"2306":2,"2307":3,"2309":1,"2310":1,"2311":2,"2312":5,"2313":5,"2314":1,"2315":4,"2316":2,"2317":2,"2318":2,"2319":4,"2323":1,"2333":1,"2334":1,"2335":2,"2338":8,"2339":4,"2340":2,"2341":1,"2342":3,"2344":6,"2345":1,"2346":1,"2347":1,"2348":3,"2350":8,"2351":1,"2352":1,"2353":1,"2357":2,"2358":1,"2359":2,"2366":4,"2374":1,"2381":2,"2382":1,"2383":2,"2384":1,"2385":2,"2386":3,"2387":2,"2388":1,"2389":2,"2392":3,"2393":2,"2394":2,"2396":1,"2408":1,"2414":1,"2415":1,"2416":1,"2423":2,"2424":1,"2432":2,"2434":2,"2437":3,"2440":4,"2441":2,"2442":2,"2443":2,"2444":3,"2445":2,"2446":2,"2447":2,"2449":2,"2450":2,"2452":1,"2460":1,"2461":2,"2462":1,"2463":1,"2467":3,"2474":2,"2475":2,"2476":1,"2477":1,"2478":2,"2479":4,"2481":1,"2484":4,"2485":1,"2486":1,"2487":2,"2489":9,"2491":4,"2492":1,"2493":2,"2499":1,"2502":1,"2507":4,"2508":2,"2511":3,"2512":2,"2513":8,"2514":1,"2516":2,"2517":2,"2525":1,"2526":1,"2527":1,"2529":5,"2530":2,"2531":1,"2533":1,"2535":1,"2542":1,"2545":1,"2547":4,"2549":1,"2551":1,"2552":9,"2554":2,"2555":1,"2558":2,"2562":1,"2563":3,"2564":1,"2565":1,"2566":1,"2568":2,"2569":2,"2572":1,"2573":1,"2578":3,"2580":2,"2582":2,"2583":1,"2584":1,"2585":3,"2587":2,"2588":1,"2589":2,"2591":1,"2592":2,"2594":1,"2595":5,"2597":2,"2598":1,"2602":1,"2603":6,"2605":19,"2606":4,"2607":2,"2608":4,"2609":1,"2610":1,"2611":1,"2612":1,"2613":5,"2614":3,"2615":38,"2616":14,"2617":2,"2620":1,"2622":1,"2624":2,"2626":5,"2627":1,"2629":1,"2630":2,"2631":2,"2632":2,"2633":4,"2634":2,"2635":3,"2636":2,"2637":1,"2639":1,"2640":1,"2646":2,"2652":1,"2653":4,"2654":7,"2655":4,"2658":1,"2659":4,"2668":1,"2669":1,"2671":1,"2677":1,"2699":1,"2701":1,"2705":2,"2709":1,"2710":2,"2712":2,"2713":2,"2714":2,"2715":1,"2716":1,"2719":1,"2720":1,"2721":1,"2725":10,"2726":1,"2727":5,"2728":2,"2730":2,"2733":1,"2734":5,"2736":3,"2738":2,"2739":2,"2740":3,"2741":3,"2742":1,"2744":1,"2745":1,"2747":1,"2750":3,"2752":1,"2757":3,"2758":1,"2760":1,"2762":2,"2763":1,"2766":1,"2767":12,"2768":5,"2769":3,"2773":2,"2774":4,"2775":1,"2776":1,"2777":5,"2778":1,"2779":1,"2782":3,"2783":3,"2785":2,"2788":2,"2789":2,"2791":2,"2792":5,"2793":1,"2794":1,"2795":1,"2796":4}}],["is25lp080",{"2":{"2583":2}}],["isc20",{"2":{"1894":1}}],["isc21",{"2":{"1894":1}}],["isdata",{"0":{"1655":1,"1657":1},"1":{"1656":1,"1658":1,"1659":1},"2":{"1656":1,"1658":1,"1659":1}}],["is=yes",{"2":{"1356":1}}],["isp",{"0":{"2366":1,"2368":1,"2370":1,"2372":1,"2677":1},"1":{"2367":1,"2368":1,"2369":2,"2370":1,"2371":2,"2372":1,"2373":2,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2385":1,"2386":1,"2387":1,"2388":1,"2389":1,"2390":1,"2391":1,"2392":1},"2":{"371":1,"629":1,"2273":1,"2274":1,"2366":2,"2367":3,"2368":2,"2370":2,"2372":2,"2375":1,"2377":1,"2378":1,"2380":2,"2381":1,"2386":2,"2388":1}}],["isn",{"0":{"1297":1,"1309":1},"2":{"291":1,"538":1,"578":1,"586":1,"1126":1,"1340":1,"1415":1,"1435":1,"1467":1,"1951":1,"2163":1,"2313":1,"2350":1,"2545":1,"2547":1,"2744":1,"2780":1}}],["ish",{"0":{"288":1},"2":{"145":2,"211":1,"2209":1}}],["issi",{"2":{"114":2,"134":3,"176":1,"211":1,"236":4,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1}}],["issuing",{"2":{"49":1}}],["issued",{"2":{"2760":1}}],["issuecomment",{"2":{"1318":1}}],["issues",{"0":{"2560":1,"2656":1,"2755":1},"1":{"2657":1,"2658":1,"2659":1},"2":{"24":1,"25":1,"86":1,"114":7,"134":8,"145":1,"160":2,"176":3,"199":1,"211":2,"240":1,"263":1,"266":1,"273":1,"276":1,"352":1,"505":2,"539":1,"554":1,"1122":1,"1136":1,"1138":1,"1275":1,"1278":1,"1279":1,"1289":1,"1290":1,"1296":1,"1297":1,"1311":1,"1312":1,"1315":1,"1318":3,"1320":1,"1335":1,"1369":1,"1373":1,"1405":1,"1416":1,"1436":1,"1440":1,"1501":1,"1552":1,"1960":1,"1964":1,"2163":1,"2166":1,"2188":1,"2221":1,"2288":1,"2289":1,"2437":1,"2450":2,"2480":1,"2513":1,"2514":1,"2527":1,"2529":1,"2540":1,"2549":1,"2553":1,"2556":1,"2560":1,"2649":1,"2765":2}}],["issue",{"0":{"1297":1},"2":{"5":1,"6":1,"73":1,"92":1,"114":2,"160":2,"176":4,"191":2,"199":3,"211":3,"236":1,"249":1,"352":1,"485":1,"511":1,"545":1,"553":1,"554":6,"559":1,"560":1,"561":1,"585":1,"609":1,"613":1,"1262":1,"1278":1,"1292":1,"1295":1,"1297":1,"1298":1,"1301":1,"1315":1,"1383":1,"1868":1,"1977":1,"2325":1,"2338":1,"2374":1,"2437":1,"2448":1,"2450":1,"2525":1,"2529":1,"2556":1,"2560":1,"2568":1,"2582":1,"2602":1,"2604":1,"2607":1,"2676":1,"2709":1,"2755":2}}],["is31flcommon",{"2":{"249":1}}],["is31fl3236",{"0":{"755":1,"762":1,"764":1,"766":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1},"1":{"756":1,"757":1,"758":1,"759":1,"760":1,"761":1,"762":1,"763":2,"764":1,"765":2,"766":1,"767":2,"768":1,"769":2,"770":1,"771":2,"772":1,"773":2,"774":1,"775":2,"776":1,"777":2,"778":1,"779":2,"780":1,"781":2,"782":1,"783":2},"2":{"266":1,"755":1,"756":4,"757":7,"758":6,"760":6,"768":1,"769":1,"772":1,"773":1,"776":1,"777":1,"778":1,"779":1,"1762":1,"1983":1,"2734":1}}],["is31fl3218",{"0":{"729":1,"736":1,"738":1,"739":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"753":1,"754":1},"1":{"730":1,"731":1,"732":1,"733":1,"734":1,"735":1,"736":1,"737":2,"738":1,"739":1,"740":2,"741":1,"742":2,"743":1,"744":2,"745":1,"746":2,"747":1,"748":2,"749":1,"750":2,"751":1,"752":2,"753":1,"754":1},"2":{"236":3,"729":1,"730":4,"731":3,"732":2,"734":6,"741":1,"742":1,"745":1,"746":1,"749":1,"750":1,"751":1,"752":1,"1762":2,"1983":2,"2727":1,"2734":1}}],["is31fl3729",{"0":{"784":1,"794":1,"796":1,"798":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"812":1,"814":1},"1":{"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"791":1,"792":1,"793":1,"794":1,"795":2,"796":1,"797":2,"798":1,"799":2,"800":1,"801":2,"802":1,"803":2,"804":1,"805":2,"806":1,"807":2,"808":1,"809":2,"810":1,"811":2,"812":1,"813":2,"814":1,"815":2},"2":{"249":2,"784":1,"785":4,"786":14,"787":6,"788":10,"789":22,"790":1,"792":6,"800":1,"801":1,"804":1,"805":1,"808":1,"809":1,"810":1,"811":1,"1762":1,"1983":1,"2734":1}}],["is31fl3741a",{"2":{"951":1,"953":1,"955":1}}],["is31fl3741",{"0":{"951":1,"961":1,"963":1,"965":1,"967":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1},"1":{"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"958":1,"959":1,"960":1,"961":1,"962":2,"963":1,"964":2,"965":1,"966":2,"967":1,"968":2,"969":1,"970":2,"971":1,"972":2,"973":1,"974":2,"975":1,"976":2,"977":1,"978":2,"979":1,"980":2,"981":1,"982":2,"983":1,"984":2},"2":{"221":2,"236":2,"249":1,"952":4,"953":15,"954":6,"955":6,"956":22,"957":1,"959":6,"969":1,"970":1,"973":1,"974":1,"977":1,"978":1,"979":1,"980":1,"1762":1,"1983":1,"2727":1,"2734":1}}],["is31fl3746a",{"0":{"1087":1,"1097":1,"1099":1,"1101":1,"1103":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1117":1,"1119":1},"1":{"1088":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1094":1,"1095":1,"1096":1,"1097":1,"1098":2,"1099":1,"1100":2,"1101":1,"1102":2,"1103":1,"1104":2,"1105":1,"1106":2,"1107":1,"1108":2,"1109":1,"1110":2,"1111":1,"1112":2,"1113":1,"1114":2,"1115":1,"1116":2,"1117":1,"1118":2,"1119":1,"1120":2},"2":{"158":1,"160":1,"221":4,"249":1,"1087":1,"1088":4,"1089":15,"1090":18,"1091":9,"1092":22,"1093":1,"1095":6,"1105":1,"1106":1,"1109":1,"1110":1,"1113":1,"1114":1,"1115":1,"1116":1,"1762":1,"1983":1,"2727":1,"2734":1}}],["is31fl3745",{"0":{"1053":1,"1063":1,"1065":1,"1067":1,"1069":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1083":1,"1085":1},"1":{"1054":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1060":1,"1061":1,"1062":1,"1063":1,"1064":2,"1065":1,"1066":2,"1067":1,"1068":2,"1069":1,"1070":2,"1071":1,"1072":2,"1073":1,"1074":2,"1075":1,"1076":2,"1077":1,"1078":2,"1079":1,"1080":2,"1081":1,"1082":2,"1083":1,"1084":2,"1085":1,"1086":2},"2":{"158":1,"160":1,"221":4,"249":1,"1053":1,"1054":4,"1055":21,"1056":18,"1057":5,"1058":22,"1059":1,"1061":6,"1071":1,"1072":1,"1075":1,"1076":1,"1079":1,"1080":1,"1081":1,"1082":1,"1762":1,"1983":1,"2727":1,"2734":1}}],["is31fl3743a",{"0":{"1019":1,"1029":1,"1031":1,"1033":1,"1035":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1049":1,"1051":1},"1":{"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1026":1,"1027":1,"1028":1,"1029":1,"1030":2,"1031":1,"1032":2,"1033":1,"1034":2,"1035":1,"1036":2,"1037":1,"1038":2,"1039":1,"1040":2,"1041":1,"1042":2,"1043":1,"1044":2,"1045":1,"1046":2,"1047":1,"1048":2,"1049":1,"1050":2,"1051":1,"1052":2},"2":{"158":1,"160":1,"221":4,"249":1,"1019":1,"1020":4,"1021":21,"1022":18,"1023":5,"1024":22,"1025":1,"1027":6,"1037":1,"1038":1,"1041":1,"1042":1,"1045":1,"1046":1,"1047":1,"1048":1,"1762":1,"1983":1,"2727":1,"2734":1}}],["is31fl3742a",{"0":{"985":1,"995":1,"997":1,"999":1,"1001":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1015":1,"1017":1},"1":{"986":1,"987":1,"988":1,"989":1,"990":1,"991":1,"992":1,"993":1,"994":1,"995":1,"996":2,"997":1,"998":2,"999":1,"1000":2,"1001":1,"1002":2,"1003":1,"1004":2,"1005":1,"1006":2,"1007":1,"1008":2,"1009":1,"1010":2,"1011":1,"1012":2,"1013":1,"1014":2,"1015":1,"1016":2,"1017":1,"1018":2},"2":{"158":1,"160":1,"221":4,"249":1,"985":1,"986":4,"987":15,"988":6,"989":6,"990":22,"991":1,"993":6,"1003":1,"1004":1,"1007":1,"1008":1,"1011":1,"1012":1,"1013":1,"1014":1,"1762":1,"1983":1,"2727":1,"2734":1}}],["is31fl3731",{"0":{"816":1,"824":1,"826":1,"828":1,"830":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"844":1,"846":1,"2328":1},"1":{"817":1,"818":1,"819":1,"820":1,"821":1,"822":1,"823":1,"824":1,"825":2,"826":1,"827":2,"828":1,"829":2,"830":1,"831":2,"832":1,"833":2,"834":1,"835":2,"836":1,"837":2,"838":1,"839":2,"840":1,"841":2,"842":1,"843":2,"844":1,"845":2,"846":1,"847":2},"2":{"221":4,"236":1,"816":1,"817":4,"818":8,"819":6,"820":2,"822":6,"832":1,"833":1,"836":1,"837":1,"840":1,"841":1,"842":1,"843":1,"1762":1,"1983":1,"2727":1,"2734":1}}],["is31fl3736b",{"2":{"885":1,"887":1}}],["is31fl3736",{"0":{"883":1,"893":1,"895":1,"897":1,"899":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1},"1":{"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"890":1,"891":1,"892":1,"893":1,"894":2,"895":1,"896":2,"897":1,"898":2,"899":1,"900":2,"901":1,"902":2,"903":1,"904":2,"905":1,"906":2,"907":1,"908":2,"909":1,"910":2,"911":1,"912":2,"913":1,"914":2,"915":1,"916":2},"2":{"211":3,"221":2,"236":2,"249":1,"883":1,"884":4,"885":14,"886":18,"887":7,"888":22,"889":1,"891":6,"901":1,"902":1,"905":1,"906":1,"909":1,"910":1,"911":1,"912":1,"1762":1,"1983":1,"2727":1,"2734":1}}],["is31fl3737b",{"2":{"145":1,"919":1,"921":1}}],["is31fl3737",{"0":{"917":1,"927":1,"929":1,"931":1,"933":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1},"1":{"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"924":1,"925":1,"926":1,"927":1,"928":2,"929":1,"930":2,"931":1,"932":2,"933":1,"934":2,"935":1,"936":2,"937":1,"938":2,"939":1,"940":2,"941":1,"942":2,"943":1,"944":2,"945":1,"946":2,"947":1,"948":2,"949":1,"950":2},"2":{"114":2,"176":1,"191":1,"221":2,"236":2,"917":1,"918":4,"919":14,"920":6,"921":7,"922":22,"923":1,"925":6,"935":1,"936":1,"939":1,"940":1,"943":1,"944":1,"945":1,"946":1,"1762":1,"1983":1,"2727":1,"2734":1}}],["is31fl3733b",{"2":{"134":1,"850":1,"853":1}}],["is31fl3733",{"0":{"848":1,"859":1,"861":1,"863":1,"865":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"2329":1},"1":{"849":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"856":1,"857":1,"858":1,"859":1,"860":2,"861":1,"862":2,"863":1,"864":2,"865":1,"866":2,"867":1,"868":2,"869":1,"870":2,"871":1,"872":2,"873":1,"874":2,"875":1,"876":2,"877":1,"878":2,"879":1,"880":2,"881":1,"882":2},"2":{"93":1,"160":1,"221":2,"236":2,"249":2,"848":1,"849":4,"850":22,"851":18,"852":5,"853":7,"854":22,"855":1,"857":6,"867":1,"868":1,"871":1,"872":1,"875":1,"876":1,"877":1,"878":1,"1762":1,"1983":1,"2727":1,"2734":1}}],["is31common",{"2":{"249":4}}],["is31",{"2":{"114":1}}],["isolated",{"2":{"2631":1}}],["isolation",{"2":{"241":2}}],["iso",{"2":{"102":3,"114":2,"122":3,"144":2,"154":2,"160":2,"168":2,"191":1,"199":1,"211":5,"217":2,"226":4,"236":2,"266":2,"277":1,"370":2,"385":1,"1305":3,"1384":1,"1392":2,"1415":2,"2307":1,"2341":5,"2592":1,"2656":1,"2658":2,"2725":5,"2742":18}}],["is",{"0":{"152":1,"339":1,"545":1,"547":1,"1277":1,"1289":1,"1294":1,"1520":1,"1525":1,"1779":1,"1883":1,"1918":1,"1919":1,"1978":1,"2006":1,"2361":1},"1":{"340":1,"1521":1,"1526":1,"1780":1,"1884":1,"1885":1,"2007":1},"2":{"0":2,"3":1,"7":1,"9":2,"10":2,"13":2,"14":1,"15":1,"18":4,"19":2,"23":2,"24":1,"25":1,"28":2,"30":1,"31":3,"34":2,"36":1,"39":2,"45":2,"48":1,"49":4,"50":3,"52":2,"70":23,"76":1,"88":1,"90":1,"94":1,"98":1,"103":1,"104":1,"113":2,"114":1,"118":1,"120":2,"123":1,"126":1,"127":1,"130":1,"134":3,"137":1,"138":3,"139":3,"141":3,"145":2,"152":1,"160":4,"166":1,"176":3,"179":1,"191":3,"194":4,"195":4,"196":1,"199":5,"201":2,"202":1,"203":2,"204":1,"206":1,"209":3,"211":2,"213":2,"218":1,"222":1,"224":3,"228":1,"230":1,"232":2,"233":3,"234":1,"235":2,"236":3,"238":1,"240":1,"244":1,"246":2,"249":4,"251":1,"262":2,"263":1,"266":2,"268":1,"273":1,"276":2,"282":3,"286":1,"288":1,"290":5,"292":1,"293":2,"300":1,"302":1,"303":1,"305":1,"306":1,"307":1,"312":1,"313":1,"315":4,"316":1,"317":2,"322":1,"323":1,"324":2,"325":1,"328":1,"329":1,"331":3,"334":1,"335":1,"336":1,"337":3,"339":1,"340":6,"341":10,"343":2,"344":2,"345":2,"346":3,"347":1,"349":2,"350":5,"352":2,"353":2,"354":1,"355":2,"366":1,"370":2,"371":5,"374":4,"378":1,"380":1,"381":1,"383":1,"385":2,"386":1,"387":1,"391":1,"393":2,"394":2,"402":1,"403":1,"405":1,"413":1,"416":1,"428":2,"430":6,"431":1,"433":1,"434":1,"435":1,"436":1,"437":1,"440":2,"445":1,"453":6,"454":2,"455":1,"457":2,"458":1,"462":1,"466":2,"467":3,"468":2,"469":1,"470":2,"471":1,"472":1,"474":3,"479":4,"481":1,"482":4,"483":2,"484":2,"495":1,"496":2,"497":2,"501":2,"502":17,"505":6,"506":5,"509":11,"510":8,"511":8,"512":3,"513":5,"515":3,"516":2,"519":1,"520":2,"521":1,"522":1,"526":1,"527":1,"529":7,"532":1,"533":1,"534":9,"537":2,"540":2,"541":1,"542":1,"546":1,"551":1,"552":2,"554":3,"555":1,"556":2,"557":3,"560":4,"562":1,"564":2,"566":1,"567":2,"568":1,"569":2,"570":2,"571":2,"572":2,"573":2,"574":5,"575":2,"578":4,"580":2,"581":2,"584":1,"586":1,"588":6,"589":3,"590":1,"592":10,"597":4,"598":7,"599":1,"600":1,"602":1,"605":1,"606":2,"607":1,"609":3,"610":2,"612":1,"614":2,"619":2,"620":2,"621":2,"623":2,"624":1,"626":3,"627":1,"628":1,"629":2,"630":1,"635":2,"636":3,"638":1,"639":1,"641":1,"643":1,"655":1,"671":5,"673":1,"674":5,"675":2,"676":1,"677":1,"678":5,"679":4,"680":3,"681":1,"682":5,"683":1,"684":2,"685":1,"688":3,"689":1,"690":1,"691":2,"693":1,"694":1,"695":2,"696":4,"697":2,"698":4,"700":1,"701":1,"702":1,"703":4,"707":1,"726":2,"730":1,"732":1,"734":2,"756":1,"758":1,"760":2,"785":1,"787":1,"790":1,"792":2,"817":1,"819":1,"822":2,"849":1,"855":1,"857":2,"884":1,"889":1,"891":2,"918":1,"920":1,"923":1,"925":2,"952":1,"954":1,"957":1,"959":2,"986":1,"988":1,"991":1,"993":2,"1020":1,"1025":1,"1027":2,"1054":1,"1059":1,"1061":2,"1088":1,"1093":1,"1095":2,"1121":2,"1122":3,"1123":3,"1125":3,"1126":5,"1127":1,"1128":4,"1129":4,"1130":1,"1132":3,"1133":4,"1134":4,"1137":1,"1142":4,"1144":1,"1146":1,"1169":1,"1170":1,"1171":1,"1172":1,"1174":1,"1180":1,"1181":1,"1183":1,"1185":2,"1212":1,"1213":2,"1214":2,"1218":1,"1219":1,"1233":1,"1234":1,"1242":1,"1248":1,"1249":1,"1250":1,"1251":1,"1252":1,"1253":1,"1254":1,"1256":2,"1258":2,"1259":1,"1260":2,"1262":6,"1267":2,"1272":1,"1273":1,"1275":3,"1280":1,"1282":1,"1287":3,"1288":1,"1289":2,"1290":1,"1291":3,"1294":1,"1295":2,"1296":1,"1297":1,"1307":3,"1308":1,"1309":3,"1310":2,"1312":1,"1313":1,"1315":4,"1320":2,"1321":6,"1323":1,"1324":5,"1327":1,"1330":2,"1331":1,"1335":1,"1337":6,"1339":1,"1340":6,"1341":1,"1347":1,"1349":1,"1350":1,"1351":1,"1353":3,"1354":2,"1355":1,"1357":1,"1358":2,"1362":3,"1363":14,"1365":1,"1366":18,"1367":1,"1368":5,"1369":8,"1370":1,"1371":1,"1372":9,"1373":4,"1375":1,"1376":1,"1377":5,"1378":8,"1381":6,"1382":1,"1383":1,"1388":1,"1390":2,"1392":1,"1393":2,"1394":1,"1396":16,"1397":6,"1398":1,"1402":3,"1405":3,"1412":7,"1414":3,"1415":1,"1416":2,"1417":3,"1418":1,"1420":3,"1421":2,"1425":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1435":6,"1436":11,"1437":4,"1438":1,"1440":4,"1441":1,"1442":2,"1443":3,"1447":1,"1448":9,"1451":3,"1452":3,"1453":6,"1460":3,"1462":1,"1464":1,"1467":7,"1468":5,"1472":1,"1473":3,"1475":5,"1476":3,"1477":3,"1478":6,"1479":1,"1482":6,"1483":3,"1485":2,"1486":2,"1487":5,"1488":11,"1489":2,"1491":2,"1492":1,"1494":1,"1495":3,"1496":4,"1497":1,"1498":1,"1499":2,"1500":3,"1501":1,"1506":1,"1508":4,"1521":1,"1526":1,"1528":3,"1529":3,"1531":1,"1532":5,"1533":3,"1534":4,"1536":9,"1537":1,"1538":3,"1540":2,"1541":2,"1542":2,"1543":5,"1544":1,"1545":1,"1547":1,"1548":3,"1549":1,"1551":1,"1553":1,"1555":5,"1556":2,"1557":2,"1558":4,"1559":1,"1562":2,"1563":5,"1564":1,"1565":1,"1566":4,"1567":2,"1568":2,"1569":1,"1571":4,"1572":3,"1575":1,"1576":1,"1589":1,"1591":3,"1592":2,"1593":1,"1594":3,"1598":2,"1600":1,"1601":2,"1605":2,"1606":4,"1608":4,"1611":14,"1612":1,"1614":2,"1615":4,"1617":2,"1619":1,"1620":5,"1632":3,"1636":1,"1637":1,"1638":1,"1647":1,"1650":2,"1651":1,"1652":2,"1653":1,"1654":1,"1656":1,"1659":1,"1664":1,"1666":1,"1668":2,"1669":1,"1670":1,"1671":4,"1676":1,"1686":1,"1691":1,"1692":1,"1693":1,"1694":2,"1695":1,"1696":2,"1698":1,"1701":1,"1703":3,"1704":1,"1706":2,"1708":10,"1709":5,"1710":1,"1711":7,"1712":7,"1713":18,"1716":1,"1718":2,"1720":2,"1721":2,"1722":4,"1731":1,"1732":3,"1734":1,"1735":1,"1752":1,"1753":1,"1754":1,"1755":2,"1756":2,"1757":1,"1760":2,"1762":2,"1763":13,"1764":3,"1766":1,"1768":1,"1769":1,"1771":1,"1774":1,"1776":1,"1778":1,"1780":1,"1787":1,"1790":1,"1792":1,"1796":1,"1798":1,"1802":1,"1804":1,"1807":1,"1813":1,"1814":2,"1816":2,"1818":2,"1821":2,"1832":1,"1836":1,"1840":1,"1841":6,"1842":4,"1843":7,"1844":3,"1845":3,"1846":1,"1847":1,"1852":1,"1853":1,"1854":5,"1855":2,"1857":1,"1858":3,"1859":6,"1860":16,"1862":1,"1863":2,"1864":1,"1865":4,"1866":1,"1868":1,"1869":1,"1870":2,"1885":1,"1892":1,"1893":1,"1897":2,"1899":1,"1901":2,"1904":1,"1906":1,"1907":3,"1910":5,"1911":4,"1912":2,"1913":2,"1914":1,"1915":3,"1917":2,"1918":8,"1919":3,"1921":1,"1925":4,"1927":6,"1933":1,"1935":1,"1936":2,"1937":3,"1940":8,"1942":1,"1943":4,"1945":1,"1947":1,"1948":2,"1949":1,"1950":6,"1951":1,"1952":6,"1953":2,"1956":13,"1958":4,"1959":1,"1960":7,"1965":6,"1966":1,"1967":1,"1969":1,"1970":1,"1971":2,"1972":2,"1974":4,"1975":1,"1977":1,"1978":4,"1980":3,"1981":1,"1983":2,"1984":13,"1985":4,"1986":10,"1987":2,"1988":3,"1992":2,"1993":1,"1995":1,"1997":2,"1998":1,"2001":1,"2003":1,"2005":1,"2007":1,"2014":1,"2017":1,"2019":1,"2023":1,"2025":1,"2029":1,"2031":1,"2035":1,"2037":1,"2041":1,"2043":1,"2046":1,"2052":1,"2058":1,"2059":2,"2061":2,"2063":2,"2066":2,"2069":1,"2070":3,"2072":10,"2073":1,"2074":3,"2075":1,"2076":1,"2078":1,"2079":2,"2080":4,"2082":3,"2083":2,"2089":4,"2093":2,"2094":3,"2095":1,"2098":1,"2100":1,"2101":3,"2103":1,"2104":1,"2109":6,"2110":2,"2111":3,"2112":3,"2114":1,"2123":1,"2125":1,"2129":1,"2131":1,"2133":1,"2135":1,"2140":1,"2145":6,"2149":1,"2150":2,"2151":3,"2152":4,"2156":2,"2157":1,"2158":1,"2161":1,"2162":2,"2163":7,"2164":4,"2165":3,"2166":4,"2167":10,"2168":5,"2169":12,"2170":4,"2171":1,"2172":1,"2177":1,"2178":5,"2180":2,"2181":9,"2182":1,"2183":1,"2185":5,"2186":3,"2187":4,"2188":1,"2190":13,"2192":2,"2193":3,"2194":1,"2196":2,"2199":15,"2200":22,"2205":1,"2206":1,"2207":24,"2208":2,"2209":16,"2211":2,"2215":2,"2218":6,"2219":3,"2220":1,"2221":6,"2222":1,"2230":1,"2232":1,"2234":1,"2235":1,"2236":1,"2250":1,"2251":1,"2264":6,"2266":4,"2267":1,"2268":2,"2270":2,"2271":1,"2272":4,"2273":3,"2274":3,"2275":3,"2276":1,"2277":1,"2278":2,"2279":2,"2280":3,"2281":3,"2282":3,"2283":3,"2285":3,"2287":2,"2288":3,"2290":1,"2291":4,"2293":1,"2295":1,"2296":2,"2297":4,"2298":1,"2300":6,"2301":9,"2303":1,"2305":1,"2306":1,"2307":2,"2308":1,"2309":2,"2311":2,"2312":5,"2313":2,"2314":1,"2315":3,"2316":3,"2317":1,"2318":3,"2319":1,"2321":1,"2323":2,"2333":1,"2334":3,"2336":1,"2337":1,"2338":2,"2339":3,"2340":1,"2341":4,"2342":1,"2344":3,"2347":1,"2348":1,"2349":1,"2350":17,"2352":2,"2353":3,"2354":1,"2355":1,"2356":2,"2357":3,"2358":1,"2361":1,"2365":1,"2366":2,"2367":2,"2374":1,"2378":1,"2380":1,"2381":1,"2383":3,"2384":2,"2385":1,"2386":5,"2387":2,"2388":2,"2389":4,"2392":5,"2393":1,"2395":1,"2402":1,"2405":1,"2406":2,"2415":10,"2416":10,"2423":1,"2439":3,"2441":4,"2442":1,"2444":1,"2445":4,"2446":5,"2447":1,"2450":4,"2452":1,"2453":1,"2456":2,"2457":2,"2460":1,"2461":1,"2462":2,"2463":1,"2464":1,"2466":3,"2467":3,"2468":1,"2470":1,"2471":1,"2475":2,"2480":2,"2481":2,"2485":2,"2487":1,"2489":4,"2490":2,"2491":1,"2493":4,"2494":1,"2498":2,"2499":2,"2502":2,"2507":3,"2508":4,"2512":2,"2513":4,"2514":1,"2515":2,"2516":1,"2525":2,"2526":3,"2527":6,"2528":1,"2529":5,"2530":7,"2531":2,"2534":1,"2535":1,"2536":4,"2537":3,"2540":1,"2542":2,"2545":4,"2546":2,"2548":1,"2549":2,"2552":2,"2553":1,"2554":2,"2555":3,"2556":1,"2557":4,"2558":3,"2560":1,"2561":1,"2562":4,"2563":6,"2564":5,"2565":4,"2566":1,"2568":2,"2569":2,"2578":2,"2580":5,"2582":2,"2583":2,"2584":1,"2585":2,"2587":7,"2588":1,"2589":1,"2590":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2602":1,"2603":9,"2605":12,"2606":2,"2607":2,"2608":5,"2609":2,"2611":1,"2612":4,"2613":3,"2614":5,"2615":39,"2616":29,"2617":3,"2620":1,"2623":3,"2624":4,"2625":2,"2626":2,"2629":3,"2630":2,"2631":4,"2632":2,"2633":1,"2634":2,"2635":6,"2636":6,"2642":4,"2644":2,"2645":1,"2646":1,"2647":1,"2650":6,"2653":4,"2654":3,"2655":1,"2658":2,"2664":1,"2666":1,"2668":1,"2669":1,"2672":1,"2673":1,"2680":3,"2681":1,"2686":1,"2690":1,"2693":2,"2698":1,"2699":1,"2703":2,"2705":1,"2708":2,"2710":2,"2712":2,"2716":2,"2719":1,"2725":3,"2727":1,"2728":1,"2730":1,"2733":2,"2734":1,"2740":3,"2741":4,"2743":3,"2744":1,"2749":1,"2751":2,"2753":2,"2754":1,"2755":1,"2757":3,"2758":6,"2759":2,"2760":1,"2766":5,"2767":7,"2768":11,"2773":4,"2774":11,"2775":7,"2776":6,"2777":1,"2778":1,"2779":4,"2782":5,"2783":6,"2784":6,"2785":3,"2786":1,"2787":1,"2788":6,"2789":1,"2791":2,"2792":1,"2796":4}}],["bndu",{"2":{"1831":1,"2410":1}}],["bndd",{"2":{"1831":1,"2410":1}}],["bn009",{"2":{"207":1,"211":1}}],["bn009r2",{"2":{"207":1}}],["bn006",{"2":{"191":1}}],["b♭",{"2":{"1831":6,"2410":6}}],["bb5",{"2":{"1831":1,"2410":1}}],["bb4",{"2":{"1831":1,"2410":1}}],["bb3",{"2":{"1831":1,"2410":1}}],["bb2",{"2":{"1831":1,"2410":1}}],["bb1",{"2":{"1831":1,"2410":1}}],["bb",{"2":{"1831":1,"2410":1}}],["bbs",{"2":{"266":1}}],["b9",{"2":{"1585":1,"2569":1}}],["b8",{"2":{"1506":1,"2563":1,"2569":1}}],["b87",{"2":{"211":2}}],["b3",{"2":{"576":2,"1213":3,"1600":6,"1629":1,"1755":1,"1831":1,"2369":1,"2371":2,"2373":1,"2410":1,"2569":2,"2597":1}}],["b2",{"2":{"576":2,"635":1,"1171":1,"1213":3,"1357":1,"1432":2,"1496":1,"1503":1,"1600":6,"1629":1,"1755":1,"1831":1,"2369":1,"2371":2,"2373":1,"2410":1,"2555":1,"2569":2,"2597":1,"2728":2}}],["b11",{"2":{"2569":1}}],["b10",{"2":{"2569":1}}],["b15",{"2":{"635":1,"1214":1,"2569":1}}],["b15288fb87",{"2":{"95":1}}],["b14",{"2":{"635":1,"1214":1,"1585":1,"2569":1}}],["b12",{"2":{"635":1,"1595":1,"1596":1,"2569":1}}],["b13",{"2":{"635":1,"1214":1,"1595":1,"1596":1,"2569":1}}],["b1²",{"2":{"635":1}}],["b1¹",{"2":{"635":1}}],["b1",{"2":{"576":2,"635":4,"1171":1,"1213":2,"1432":2,"1503":1,"1600":6,"1629":1,"1755":1,"1831":1,"2369":1,"2371":1,"2373":1,"2410":1,"2489":1,"2569":2,"2597":1,"2728":2}}],["b7",{"2":{"502":5,"510":2,"684":2,"703":1,"707":2,"1130":1,"1213":1,"1234":1,"1424":2,"1503":1,"2162":1,"2301":1,"2569":1,"2597":1}}],["b0²",{"2":{"635":1}}],["b0¹",{"2":{"635":1}}],["b007",{"2":{"629":1,"2281":1}}],["b0",{"2":{"502":2,"511":1,"576":2,"635":4,"1171":1,"1213":2,"1353":1,"1357":3,"1755":1,"2169":1,"2275":1,"2373":2,"2569":3,"2597":1,"2728":2}}],["b6",{"2":{"502":5,"633":1,"703":1,"707":2,"1127":1,"1130":1,"1213":1,"1424":2,"1503":1,"1629":1,"1950":1,"2369":1,"2371":1,"2569":2,"2597":1}}],["b5",{"2":{"502":5,"633":1,"684":2,"1213":2,"1424":2,"1503":1,"1831":1,"1950":1,"2371":1,"2410":1,"2558":1,"2569":2,"2597":1,"2736":1}}],["bgr",{"2":{"1253":1}}],["bg",{"2":{"433":1,"435":1,"2616":9}}],["bdfc",{"2":{"314":1,"315":1}}],["bdn9",{"2":{"160":1,"1349":1}}],["bc417",{"2":{"1528":1}}],["bcat",{"2":{"222":1}}],["bc",{"2":{"211":1}}],["bcd",{"2":{"160":1,"2738":1}}],["bx",{"2":{"211":2}}],["bsd",{"2":{"2218":2,"2221":2,"2222":3,"2423":3}}],["bspace",{"2":{"1568":1}}],["bspc",{"2":{"195":1,"313":1,"530":4,"1340":6,"1485":1,"1543":1,"1548":5,"1565":1,"1701":1,"1910":1,"1915":1,"2266":2,"2394":1,"2427":1,"2446":1,"2774":1,"2775":1}}],["bssl",{"2":{"1565":1}}],["bss",{"2":{"1324":1}}],["bsls",{"2":{"313":1,"530":2,"2394":1,"2427":1,"2446":1}}],["bs",{"2":{"191":3,"259":2,"266":1,"2113":1,"2409":3,"2435":3}}],["bépo",{"2":{"176":1,"2742":1}}],["bpm",{"2":{"1437":1}}],["bp",{"2":{"176":1}}],["bpiphany",{"2":{"154":2,"160":2}}],["bpp",{"2":{"145":1,"236":1}}],["bkf",{"2":{"154":2}}],["b4",{"2":{"111":1,"502":1,"576":2,"633":1,"684":2,"1213":2,"1218":1,"1529":1,"1755":1,"1831":1,"2371":1,"2410":1,"2569":2}}],["bmpgdbserialport",{"2":{"2552":2}}],["bmp",{"2":{"2552":1}}],["bm",{"2":{"134":1,"266":1}}],["bm68hsrgb",{"2":{"122":1,"154":2,"160":1}}],["bm68rgb",{"2":{"102":2,"122":1}}],["bm65hsrgb",{"2":{"122":1,"154":2,"160":1}}],["bm65iso",{"2":{"122":1}}],["bm60hsrgb",{"2":{"122":3}}],["bm60rgb",{"2":{"102":4,"122":2}}],["bm60poker",{"2":{"102":2,"122":1}}],["bm43a",{"2":{"102":2}}],["bm40hsrgb",{"2":{"102":2,"226":2,"236":1}}],["bm16s",{"2":{"102":2}}],["bm16a",{"2":{"102":2,"199":1}}],["b",{"0":{"2008":1,"2010":1},"1":{"2009":1,"2011":1},"2":{"98":2,"199":1,"211":5,"249":1,"266":1,"289":1,"292":1,"299":2,"313":1,"359":1,"360":1,"371":1,"400":2,"502":3,"513":2,"530":2,"554":1,"659":1,"662":1,"734":1,"737":1,"760":1,"763":1,"792":1,"795":1,"822":1,"825":1,"857":1,"860":1,"891":1,"894":1,"925":1,"928":1,"959":1,"962":1,"993":1,"996":1,"1027":1,"1030":1,"1061":1,"1064":1,"1095":1,"1098":1,"1148":1,"1151":1,"1169":3,"1171":2,"1185":1,"1188":1,"1254":2,"1540":1,"1545":3,"1546":1,"1547":2,"1548":1,"1560":2,"1565":1,"1568":1,"1587":3,"1595":4,"1596":3,"1599":1,"1600":2,"1711":2,"1712":2,"1713":2,"1831":13,"1910":2,"1927":2,"1950":2,"1986":1,"1995":1,"1997":1,"2009":1,"2011":1,"2072":1,"2089":10,"2113":1,"2168":2,"2169":1,"2186":2,"2191":2,"2207":1,"2327":1,"2356":2,"2394":3,"2410":13,"2415":1,"2425":3,"2446":1,"2489":2,"2527":3,"2723":2,"2769":1,"2770":10,"2771":29,"2772":17}}],["btn",{"2":{"1901":8}}],["btn8",{"2":{"1839":1,"2411":1}}],["btn7",{"2":{"1839":1,"2411":1}}],["btn6",{"2":{"1839":1,"2411":1}}],["btn5",{"2":{"1839":1,"2411":1}}],["btn4",{"2":{"1839":1,"2411":1}}],["btn3",{"2":{"1839":1,"2411":1}}],["btn2",{"2":{"1839":1,"2411":1}}],["btn1",{"2":{"1839":1,"1958":2,"2411":1}}],["bt",{"2":{"75":1,"134":1,"1531":1,"2400":1}}],["bfo",{"2":{"45":1}}],["bh",{"2":{"37":3,"144":6,"145":3}}],["baart",{"2":{"2518":1}}],["bay",{"2":{"2311":1}}],["ball",{"2":{"1948":1,"2774":1}}],["balance",{"2":{"211":1}}],["baud",{"0":{"1237":1},"1":{"1238":1},"2":{"1136":12,"1238":2,"2188":1}}],["baudrate",{"0":{"1136":1,"1264":1},"2":{"93":1,"1136":4,"1263":1,"1264":2}}],["baking",{"2":{"524":1}}],["bakingpy",{"2":{"515":1,"2301":1}}],["bakeneko",{"2":{"211":1}}],["bakeneko80",{"2":{"154":2}}],["bakeneko60",{"2":{"154":2}}],["bakeneko65",{"2":{"102":3,"114":1,"154":4}}],["baz",{"2":{"453":1}}],["bare",{"2":{"2309":1,"2587":1,"2605":2}}],["barring",{"2":{"1980":1}}],["barrel",{"0":{"1581":1,"1582":1},"2":{"1569":1,"1575":2,"1581":1,"1582":1}}],["bar",{"2":{"453":2,"459":1,"475":8,"476":2,"546":1,"570":2,"1715":1,"2183":1,"2191":12,"2221":1,"2777":1}}],["barleycorn",{"2":{"154":2}}],["bamfk",{"2":{"266":1}}],["bamfk1",{"2":{"222":1}}],["babyv",{"2":{"236":1}}],["badly",{"2":{"557":1}}],["bad",{"2":{"160":1,"453":1,"458":1,"474":1,"476":1,"1390":1,"1485":1,"2311":2,"2318":1,"2347":1,"2605":1}}],["battery",{"2":{"630":1,"2169":1}}],["bat43",{"2":{"154":4}}],["batch",{"2":{"133":1,"346":1,"349":1,"350":1,"1819":2,"1822":2,"2064":2,"2067":2}}],["bang",{"2":{"2219":3}}],["banging",{"2":{"1122":1,"1256":1}}],["banger",{"2":{"154":2,"160":1}}],["bandwidth",{"2":{"2585":1}}],["band",{"2":{"1766":10,"1987":20,"2750":6}}],["bandana",{"2":{"211":1}}],["bandominedoni",{"2":{"134":1}}],["bank",{"2":{"49":4,"176":1,"2563":8}}],["basing",{"2":{"2313":1}}],["basis",{"0":{"2302":1},"2":{"1292":1,"1763":1,"1984":1}}],["basics",{"0":{"1393":1},"1":{"1394":1},"2":{"2518":2,"2761":1,"2762":1}}],["basically",{"2":{"586":1,"1860":1,"2181":1,"2607":1}}],["basic",{"0":{"644":1,"656":1,"686":1,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1171":1,"1182":1,"1251":1,"1427":1,"1494":1,"1629":1,"1697":1,"1719":1,"1827":1,"1855":1,"1924":1,"2112":1,"2179":1,"2217":1,"2295":1,"2316":1,"2394":1,"2424":1},"1":{"657":1,"732":1,"758":1,"787":1,"788":1,"789":1,"790":1,"819":1,"820":1,"851":1,"852":1,"853":1,"854":1,"855":1,"886":1,"887":1,"888":1,"889":1,"920":1,"921":1,"922":1,"923":1,"954":1,"955":1,"956":1,"957":1,"988":1,"989":1,"990":1,"991":1,"1022":1,"1023":1,"1024":1,"1025":1,"1056":1,"1057":1,"1058":1,"1059":1,"1090":1,"1091":1,"1092":1,"1093":1,"1146":1,"1183":1,"1252":1,"1253":1,"1254":1,"1428":1,"1429":1,"1495":1,"1496":1,"1720":1,"1721":1,"1722":1,"1723":1,"1856":1,"1857":1,"2218":1,"2296":1,"2297":1,"2298":1,"2425":1,"2426":1,"2427":1,"2428":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1},"2":{"133":1,"134":1,"211":1,"222":1,"231":4,"248":1,"249":2,"306":1,"317":1,"378":1,"381":1,"391":1,"411":1,"540":1,"547":1,"560":1,"607":1,"621":1,"685":1,"689":1,"692":1,"696":1,"1315":1,"1373":1,"1394":1,"1427":2,"1430":1,"1482":1,"1483":1,"1595":1,"1692":1,"1701":1,"1703":1,"1704":2,"1715":1,"1825":2,"1827":2,"1922":1,"2110":1,"2113":1,"2187":1,"2199":1,"2208":1,"2219":1,"2294":1,"2307":1,"2316":1,"2362":1,"2394":1,"2424":1,"2448":1,"2450":1,"2452":1,"2463":1,"2482":1,"2496":1,"2519":1,"2605":2,"2610":2,"2612":1,"2624":1,"2631":1,"2679":1,"2715":1,"2762":1,"2777":1,"2781":2}}],["bashcompinit",{"2":{"450":3}}],["bashrc",{"2":{"450":1,"2507":2}}],["bash",{"2":{"448":1,"2507":2,"2545":1,"2547":1}}],["bastard",{"2":{"249":1}}],["bastardkb",{"2":{"114":1,"176":2,"266":1,"277":1,"2584":1}}],["base64",{"0":{"2137":1},"2":{"2650":2}}],["bases",{"2":{"560":2}}],["base",{"0":{"2446":1},"2":{"125":1,"163":1,"174":1,"185":1,"217":2,"221":1,"226":1,"270":2,"516":1,"532":1,"673":1,"674":4,"681":1,"1169":2,"1351":1,"1372":1,"1375":1,"1376":4,"1483":3,"1495":1,"1556":1,"1562":1,"1842":4,"2341":1,"2406":1,"2441":3,"2445":1,"2446":1,"2447":1,"2482":1,"2513":2,"2527":2,"2531":1,"2579":1,"2581":1,"2585":1,"2592":1,"2603":1,"2606":1}}],["based",{"0":{"25":1,"1424":1,"1426":1},"1":{"1425":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1},"2":{"25":1,"49":1,"50":1,"65":2,"74":1,"93":1,"113":1,"114":2,"123":1,"138":1,"145":1,"163":1,"164":1,"172":1,"191":1,"199":1,"210":1,"235":1,"236":1,"248":1,"263":2,"294":1,"349":1,"374":1,"385":1,"386":1,"391":1,"436":1,"508":1,"557":1,"580":6,"671":2,"679":1,"684":1,"685":1,"694":1,"1125":1,"1128":1,"1280":1,"1285":1,"1353":1,"1354":1,"1356":1,"1363":10,"1369":1,"1378":7,"1380":1,"1421":1,"1422":2,"1424":1,"1427":1,"1528":2,"1529":1,"1613":1,"1668":1,"1672":1,"1718":1,"1763":1,"1845":1,"1849":1,"1859":1,"1860":1,"1862":1,"1917":1,"1939":1,"1948":1,"1960":2,"1977":1,"1984":1,"1997":1,"2091":2,"2094":1,"2103":1,"2169":1,"2181":1,"2193":1,"2198":1,"2221":1,"2264":1,"2267":2,"2270":1,"2272":1,"2279":1,"2301":1,"2316":1,"2326":1,"2330":1,"2366":1,"2385":1,"2424":1,"2457":1,"2469":1,"2480":1,"2485":1,"2493":1,"2505":1,"2553":2,"2562":1,"2566":1,"2582":2,"2584":1,"2612":1,"2615":4,"2616":4,"2624":1,"2629":1,"2631":1,"2650":1,"2702":1,"2712":1,"2759":1}}],["backtick",{"2":{"1603":1,"1605":1}}],["backticks",{"2":{"292":1}}],["backlit",{"2":{"1491":1}}],["backlightx",{"2":{"2339":1}}],["backlighting",{"0":{"1491":1,"2399":1},"1":{"1492":1,"1493":1,"1494":1,"1495":1,"1496":1,"1497":1,"1498":1,"1499":1,"1500":1,"1501":1,"1502":1,"1503":1,"1504":1,"1505":1,"1506":1,"1507":1,"1508":1,"1509":1,"1510":1,"1511":1,"1512":1,"1513":1,"1514":1,"1515":1,"1516":1,"1517":1,"1518":1,"1519":1,"1520":1,"1521":1,"1522":1,"1523":1,"1524":1,"1525":1,"1526":1},"2":{"1492":1,"1761":1,"2199":1,"2301":1,"2339":1,"2399":1,"2649":1}}],["backlights",{"2":{"589":1,"1594":1}}],["backlight|led",{"2":{"176":1}}],["backlight",{"0":{"7":1,"14":2,"16":1,"1496":1,"1510":1,"1511":1,"1512":1,"1513":1,"1514":1,"1515":1,"1516":1,"1518":1,"1520":1,"1522":1,"1523":1,"1524":1,"1525":1,"2664":1,"2716":1},"1":{"1517":1,"1519":1,"1521":1,"1526":1},"2":{"14":4,"16":4,"32":1,"49":1,"50":1,"63":1,"70":1,"73":1,"93":1,"94":1,"110":1,"111":1,"112":4,"114":1,"134":4,"145":1,"160":1,"188":1,"191":4,"198":1,"199":6,"222":4,"231":3,"236":2,"249":3,"266":3,"502":7,"1271":2,"1353":1,"1354":1,"1493":14,"1494":21,"1495":4,"1496":10,"1497":1,"1498":1,"1500":1,"1501":5,"1503":1,"1504":1,"1506":4,"1507":1,"1508":3,"1510":1,"1511":1,"1512":1,"1513":1,"1514":1,"1515":1,"1516":1,"1517":1,"1518":1,"1519":2,"1520":1,"1521":1,"1522":1,"1523":1,"1524":1,"1525":1,"1526":1,"1761":1,"1764":1,"1985":1,"2301":3,"2302":3,"2339":3,"2399":14,"2570":1,"2605":2,"2616":11,"2664":1,"2716":9,"2763":1,"2788":1}}],["backslash",{"2":{"1308":1,"1622":2,"1715":1,"2394":2,"2409":3,"2427":2,"2435":3,"2748":1,"2777":1}}],["backspaced",{"2":{"2220":1}}],["backspaces",{"2":{"1484":2,"1485":3,"1488":1,"1489":1}}],["backspace",{"0":{"1340":1},"2":{"99":1,"137":1,"211":1,"255":1,"540":1,"546":1,"1308":1,"1340":2,"1488":3,"1536":1,"1548":1,"1622":1,"1694":1,"1701":1,"1910":1,"1915":4,"2113":1,"2264":1,"2394":2,"2409":6,"2427":2,"2435":6,"2748":1}}],["backgrounds",{"2":{"435":1}}],["background",{"2":{"435":5,"597":1,"2616":3}}],["backup",{"2":{"388":2}}],["backing",{"0":{"2515":1},"2":{"236":1,"678":1,"679":3,"680":3,"681":4,"2722":1}}],["backwards",{"2":{"114":1,"249":1,"262":1,"1561":1,"2151":1}}],["backward",{"2":{"75":1,"1910":2}}],["back",{"0":{"2357":1,"2365":1},"2":{"50":1,"55":13,"124":1,"134":1,"137":1,"331":1,"341":1,"430":1,"471":1,"529":1,"592":1,"621":1,"624":1,"1433":1,"1472":2,"1592":1,"1593":1,"1594":1,"1722":1,"1910":1,"1926":1,"1939":1,"1987":3,"2104":1,"2105":1,"2107":1,"2168":2,"2171":1,"2184":2,"2269":1,"2276":1,"2303":1,"2312":1,"2313":1,"2318":1,"2387":2,"2394":2,"2432":2,"2464":1,"2493":1,"2513":2,"2557":1,"2606":1,"2711":1,"2750":1,"2767":1,"2784":1}}],["backend",{"0":{"321":1},"2":{"49":1,"2545":1,"2722":1}}],["backport",{"0":{"5":1},"2":{"74":1}}],["bidirectional",{"2":{"1922":1}}],["bioses",{"2":{"516":1}}],["bios",{"0":{"1335":1},"2":{"263":1,"1325":1,"1329":1,"1335":1}}],["bioi",{"2":{"211":4,"236":1}}],["biacco42",{"2":{"154":3,"160":2}}],["bigram",{"2":{"1912":5}}],["bigrams",{"2":{"1912":2}}],["bigseries",{"2":{"154":8}}],["bigswitch",{"2":{"43":2,"266":1}}],["big",{"2":{"94":2,"349":1,"470":1,"545":1,"717":1,"723":1,"2301":1,"2617":1}}],["bigger",{"2":{"46":1,"515":1,"2350":1,"2463":1,"2796":1}}],["binding",{"2":{"2301":1}}],["bindings",{"2":{"1472":1,"2394":1,"2605":2}}],["bind",{"2":{"1715":1,"2777":1}}],["bin|hex",{"2":{"371":1}}],["binary",{"0":{"1487":1},"1":{"1488":1,"1489":1},"2":{"303":1,"316":1,"371":1,"522":2,"525":1,"527":2,"1340":1,"2300":1,"2342":1,"2390":1,"2392":1,"2501":1,"2605":1,"2713":1,"2796":1}}],["binaries",{"0":{"164":1},"2":{"93":1,"164":1,"176":1,"199":1,"519":1,"1286":1,"2280":1,"2349":2,"2552":1,"2588":1}}],["binepad",{"2":{"207":2,"211":1}}],["bin",{"2":{"23":1,"94":2,"95":2,"133":1,"134":1,"332":1,"371":1,"387":1,"513":1,"2278":1,"2280":1,"2281":1,"2282":1,"2288":1,"2291":1,"2300":1,"2392":2,"2466":1,"2476":1,"2491":2,"2507":2,"2547":1,"2552":3,"2713":1}}],["bit|status",{"2":{"2441":1}}],["bitmap",{"2":{"1859":1}}],["bitmask",{"2":{"1337":2,"1382":1,"1698":1,"1699":1,"1700":1,"1708":1,"1763":1,"1888":1,"1890":1,"1984":1,"2635":1}}],["bitfield",{"2":{"1709":1,"2727":1,"2734":1}}],["bitwise",{"2":{"701":1,"1337":2,"1372":1,"1488":1,"1859":1}}],["bits",{"2":{"316":1,"701":3,"1337":1,"1369":2,"1373":4,"1378":6,"1488":3,"1489":1,"1670":1,"1671":1,"1764":4,"1956":2,"1985":4,"2185":4,"2188":2,"2190":2,"2350":1,"2387":2,"2440":2,"2441":1,"2450":3,"2627":6}}],["bitbanging",{"2":{"1125":1,"1128":1}}],["bitbang",{"0":{"1122":1,"1256":1},"1":{"1123":1,"1124":1},"2":{"249":1,"1121":1,"1122":3,"1123":1,"1124":3,"1125":1,"1136":1,"1169":1,"1255":1,"1256":1,"1261":2,"2070":1,"2736":2,"2739":3}}],["bit",{"0":{"11":1,"1355":1},"2":{"11":2,"63":1,"114":1,"130":1,"134":1,"166":1,"176":2,"199":2,"211":1,"630":1,"641":4,"688":2,"689":1,"701":2,"709":1,"712":1,"714":1,"715":1,"717":1,"718":1,"720":1,"721":1,"723":1,"724":1,"727":2,"732":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1121":1,"1122":1,"1146":1,"1183":1,"1218":1,"1251":3,"1252":3,"1256":1,"1261":2,"1302":2,"1327":1,"1337":5,"1339":1,"1348":1,"1352":4,"1366":1,"1369":2,"1370":1,"1373":3,"1378":2,"1443":1,"1467":1,"1473":1,"1482":4,"1488":2,"1489":1,"1543":2,"1587":1,"1627":1,"1650":2,"1652":2,"1670":2,"1676":1,"1686":1,"1706":6,"1708":2,"1715":12,"1853":2,"1896":4,"1916":1,"1956":2,"1960":1,"2129":1,"2131":1,"2133":1,"2163":2,"2177":2,"2186":2,"2208":2,"2350":1,"2406":1,"2440":1,"2441":1,"2444":6,"2445":2,"2450":3,"2452":1,"2489":1,"2494":1,"2499":2,"2529":1,"2567":1,"2591":1,"2615":1,"2624":1,"2631":1,"2632":1,"2635":8,"2640":1,"2661":1,"2662":1,"2758":1,"2777":12,"2789":1}}],["bob",{"2":{"2789":1}}],["bout",{"2":{"1921":1}}],["bounce",{"0":{"1362":1},"1":{"1363":1,"1364":1,"1365":1,"1366":1,"1367":1},"2":{"1362":4,"2459":1}}],["bounce75",{"2":{"211":1}}],["bound",{"2":{"236":1,"1715":1,"2757":1,"2777":1}}],["boundary",{"2":{"191":1}}],["bounds",{"2":{"114":1,"145":1,"1860":3,"2181":3,"2331":1}}],["bounded",{"2":{"31":1,"34":1}}],["bold",{"2":{"288":1,"545":1,"1142":1}}],["bolt",{"0":{"2185":1},"2":{"231":1,"2184":1,"2185":3,"2186":1,"2187":2,"2188":1,"2190":2,"2191":4}}],["boy",{"2":{"211":1}}],["bocc",{"2":{"211":1}}],["bonsai",{"0":{"1357":1},"2":{"176":1,"189":1,"191":1,"1348":1,"1352":4,"1357":1,"2751":1}}],["boston",{"2":{"134":1,"211":1}}],["bodges",{"2":{"199":1}}],["bodge",{"2":{"114":1,"134":1,"160":1,"266":1}}],["box",{"2":{"114":1,"290":1,"537":1,"2170":1,"2171":1,"2311":1,"2491":1,"2784":1}}],["boilerplate",{"2":{"114":1,"565":1,"2299":2}}],["bottom",{"2":{"100":1,"160":1,"255":1,"502":1,"557":1,"1324":1,"1351":1,"1360":1,"1361":1,"1442":1,"1483":1,"1571":1,"1763":1,"1766":1,"1984":1,"1987":2,"2069":1,"2160":1,"2186":1,"2207":1,"2209":1,"2309":1,"2344":1,"2365":1,"2489":1,"2537":1,"2603":1,"2616":6,"2637":2,"2653":1,"2704":1}}],["both",{"0":{"2454":1},"2":{"35":1,"45":1,"58":1,"70":14,"98":1,"107":1,"114":1,"134":1,"137":1,"163":1,"173":1,"175":1,"190":1,"229":1,"232":1,"233":1,"236":1,"249":1,"303":1,"349":1,"388":1,"432":1,"435":1,"446":2,"453":1,"483":1,"505":1,"506":1,"511":1,"533":1,"540":1,"550":1,"570":1,"610":1,"630":1,"671":1,"1122":1,"1302":2,"1337":2,"1340":1,"1349":1,"1357":1,"1363":1,"1378":2,"1386":1,"1389":1,"1405":1,"1420":1,"1428":1,"1468":1,"1483":1,"1491":1,"1528":1,"1531":1,"1536":2,"1537":3,"1538":3,"1547":1,"1595":1,"1596":1,"1610":1,"1708":1,"1754":1,"1843":1,"1851":1,"1925":1,"1942":1,"1946":1,"1950":3,"1953":1,"1956":1,"1968":1,"1986":2,"2072":2,"2080":2,"2149":1,"2152":1,"2153":1,"2158":1,"2165":2,"2167":2,"2168":1,"2169":1,"2184":1,"2191":2,"2210":1,"2215":1,"2220":1,"2221":1,"2312":3,"2318":2,"2334":2,"2341":1,"2380":1,"2392":1,"2394":1,"2409":6,"2435":6,"2468":1,"2489":2,"2496":1,"2503":1,"2511":1,"2513":1,"2516":1,"2529":1,"2580":1,"2582":1,"2585":1,"2615":1,"2616":1,"2639":1,"2642":4,"2701":1,"2719":2,"2723":1,"2744":1,"2748":1,"2750":1,"2764":1,"2774":1,"2796":1}}],["boardinit",{"2":{"2565":1,"2605":2}}],["board",{"0":{"172":1,"189":1,"2565":1,"2581":1},"2":{"50":5,"76":1,"77":2,"113":1,"114":3,"134":1,"145":3,"167":1,"176":3,"182":1,"189":3,"191":1,"199":1,"211":2,"222":1,"233":1,"236":2,"248":1,"266":2,"277":1,"335":2,"495":1,"502":2,"506":1,"529":1,"587":1,"589":2,"592":1,"625":1,"626":2,"627":1,"658":1,"681":1,"686":1,"687":1,"703":2,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1129":1,"1147":1,"1174":1,"1184":1,"1214":2,"1235":1,"1263":1,"1267":1,"1307":5,"1331":1,"1352":2,"1353":1,"1357":1,"1359":1,"1369":1,"1415":1,"1421":1,"1429":1,"1438":1,"1442":1,"1501":1,"1506":1,"1507":1,"1528":1,"1529":1,"1763":1,"1859":1,"1865":1,"1948":1,"1953":1,"1984":1,"2152":2,"2156":1,"2166":1,"2169":2,"2218":1,"2303":1,"2305":1,"2308":4,"2309":1,"2313":1,"2314":2,"2317":1,"2344":1,"2367":1,"2378":1,"2381":3,"2385":1,"2466":1,"2489":2,"2493":2,"2552":1,"2562":4,"2563":1,"2564":1,"2565":3,"2569":1,"2572":2,"2578":1,"2580":2,"2581":3,"2585":1,"2588":1,"2603":2,"2604":1,"2605":16,"2606":1,"2617":1,"2646":2,"2647":1,"2694":1,"2703":1,"2704":1,"2712":7,"2750":1,"2767":1}}],["boardsource",{"2":{"176":4,"249":1,"277":2,"2580":1}}],["boards",{"0":{"43":1,"235":1,"1424":1,"1426":1,"1760":1,"2171":1,"2308":1,"2579":1},"1":{"1425":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"2580":1,"2581":1},"2":{"8":1,"10":1,"28":1,"45":1,"57":1,"72":1,"80":1,"93":1,"108":1,"114":7,"131":1,"134":3,"138":2,"145":3,"160":25,"163":1,"172":3,"185":1,"189":1,"191":4,"199":2,"211":8,"221":1,"222":4,"235":1,"249":1,"263":1,"266":1,"277":1,"496":1,"505":1,"509":3,"515":1,"626":1,"684":2,"685":1,"686":1,"692":1,"1125":1,"1128":1,"1257":1,"1272":1,"1279":1,"1353":1,"1354":1,"1420":1,"1421":3,"1422":4,"1424":1,"1442":1,"1528":2,"1532":1,"1534":1,"1669":1,"1760":1,"1992":1,"2156":1,"2170":3,"2171":1,"2268":2,"2271":1,"2275":1,"2278":1,"2280":1,"2281":1,"2288":1,"2301":1,"2308":1,"2367":1,"2385":1,"2456":2,"2553":1,"2562":1,"2578":1,"2579":2,"2580":2,"2584":1,"2585":1,"2590":1,"2591":1,"2605":4,"2606":1,"2612":1,"2711":1,"2751":1}}],["books",{"2":{"2789":1}}],["boost",{"2":{"1608":1,"2606":1}}],["bootstrap",{"2":{"2592":1}}],["bootsel",{"2":{"2287":2}}],["boot1",{"2":{"2555":1}}],["booted",{"2":{"1863":1}}],["bootable",{"2":{"679":1}}],["booting",{"2":{"679":1,"1854":1,"2441":1}}],["boot\`",{"2":{"624":1}}],["bootlader",{"2":{"236":1}}],["bootloadhid",{"0":{"2275":1,"2384":1},"1":{"2276":1,"2277":1},"2":{"114":1,"191":1,"514":1,"629":1,"2275":6,"2300":1}}],["bootloader>",{"2":{"371":2,"2392":1}}],["bootloaders",{"0":{"629":1},"2":{"49":1,"145":1,"160":1,"199":1,"371":3,"375":1,"626":1,"679":1,"1307":1,"2267":2,"2291":1,"2300":1,"2366":1,"2382":2,"2605":1}}],["bootloader",{"0":{"152":1,"625":1,"1277":1,"1278":1,"2267":1,"2381":1,"2386":1,"2389":1,"2489":1,"2560":1,"2583":1,"2648":1,"2666":1,"2732":1},"1":{"626":1,"627":1,"628":1,"629":1,"2268":1,"2269":1,"2270":1,"2271":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":1,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1,"2282":1,"2283":1,"2284":1,"2285":1,"2286":1,"2287":1,"2288":1,"2382":1,"2383":1,"2384":1,"2385":1,"2387":1,"2390":1,"2391":1,"2392":1},"2":{"49":4,"50":1,"65":1,"70":1,"74":1,"93":2,"111":1,"112":1,"114":3,"152":3,"160":8,"176":8,"191":4,"199":6,"211":1,"230":2,"231":1,"236":1,"240":3,"371":4,"375":1,"489":1,"509":3,"514":1,"592":4,"593":4,"594":3,"595":2,"624":2,"625":3,"626":6,"627":2,"628":2,"629":8,"1276":1,"1278":2,"1307":2,"1324":1,"1330":1,"1422":7,"1532":3,"1534":2,"1568":4,"1611":2,"1854":5,"2164":10,"2267":1,"2268":6,"2269":8,"2271":5,"2273":6,"2274":5,"2275":5,"2276":15,"2278":5,"2279":1,"2280":6,"2281":4,"2282":3,"2283":7,"2285":7,"2287":7,"2288":8,"2366":6,"2374":1,"2380":1,"2381":1,"2383":4,"2384":1,"2385":2,"2386":2,"2387":2,"2388":3,"2389":5,"2390":1,"2392":2,"2395":4,"2489":1,"2493":6,"2556":2,"2560":1,"2561":3,"2563":9,"2569":2,"2578":5,"2583":2,"2605":2,"2611":4,"2648":2,"2703":1,"2711":1,"2712":2,"2732":3}}],["boot20",{"2":{"2392":1}}],["boot2",{"2":{"236":1}}],["bootmapper",{"2":{"235":1,"1257":1,"2384":1,"2489":1}}],["bootmagic",{"0":{"87":1,"103":1,"104":1,"126":1,"127":1,"245":2,"1532":1,"1534":1,"2667":1,"2718":1},"1":{"88":1,"104":1,"127":1,"1533":1,"1534":1,"1535":1},"2":{"70":1,"87":8,"88":8,"93":2,"94":1,"103":3,"104":8,"111":1,"114":2,"126":3,"127":8,"134":1,"176":3,"199":3,"222":1,"245":4,"249":2,"515":3,"592":1,"624":1,"626":3,"1280":2,"1307":1,"1324":1,"1369":1,"1532":5,"1533":3,"1534":6,"1535":1,"1566":1,"1905":1,"2269":1,"2276":1,"2301":1,"2344":2,"2435":1,"2605":1,"2649":1,"2718":3,"2736":2,"2764":1}}],["boot",{"0":{"141":1,"167":1,"2578":1},"2":{"141":2,"160":1,"167":2,"176":1,"191":2,"199":1,"266":1,"277":1,"313":1,"515":1,"516":2,"530":2,"626":3,"679":1,"1324":1,"1435":1,"1436":1,"1854":2,"2268":1,"2271":1,"2273":1,"2274":2,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":4,"2395":1,"2497":1,"2563":1,"2578":1,"2580":1,"2605":1,"2611":1,"2648":1}}],["boot0",{"2":{"49":4,"2278":3,"2280":3}}],["boolean",{"0":{"90":1,"105":1},"2":{"93":1,"114":1,"134":1,"203":1,"588":1,"1340":3,"1369":1,"1402":1,"1757":1}}],["bool",{"0":{"749":3,"751":1,"776":3,"778":1,"840":3,"842":1,"875":3,"877":1,"909":3,"911":1,"943":3,"945":1,"977":3,"979":1,"1162":3,"1203":3,"1205":1,"1217":2,"1247":1,"1520":1,"1525":1,"1634":2,"1638":2,"1653":1,"1655":1,"1657":1,"1731":1,"1732":1,"1735":1,"1736":1,"1737":1,"1740":1,"1743":1,"1746":1,"1749":1,"1779":1,"1812":1,"1814":1,"1816":1,"1818":1,"1821":1,"1883":1,"2006":1,"2057":1,"2059":1,"2061":1,"2063":1,"2066":1,"2250":1,"2254":1,"2257":1},"1":{"750":3,"752":1,"777":3,"779":1,"841":3,"843":1,"876":3,"878":1,"910":3,"912":1,"944":3,"946":1,"978":3,"980":1,"1163":3,"1204":3,"1206":1,"1218":2,"1219":2,"1248":1,"1521":1,"1526":1,"1635":2,"1639":2,"1654":1,"1656":1,"1658":1,"1659":1,"1733":1,"1734":1,"1738":1,"1739":1,"1741":1,"1742":1,"1744":1,"1745":1,"1747":1,"1748":1,"1750":1,"1751":1,"1780":1,"1813":1,"1815":1,"1817":1,"1884":1,"1885":1,"2007":1,"2058":1,"2060":1,"2062":1,"2251":1,"2255":1,"2256":1,"2258":1},"2":{"22":2,"46":2,"90":6,"105":8,"114":1,"125":2,"185":2,"230":1,"534":1,"565":2,"566":1,"573":3,"588":2,"593":1,"594":1,"595":4,"597":1,"641":1,"750":3,"752":1,"777":3,"779":1,"841":3,"843":1,"876":3,"878":1,"910":3,"912":1,"944":3,"946":1,"978":3,"980":1,"1163":3,"1204":3,"1206":1,"1218":1,"1340":2,"1369":3,"1381":1,"1396":2,"1397":1,"1412":1,"1422":2,"1441":1,"1467":2,"1482":1,"1485":1,"1544":2,"1548":1,"1555":6,"1556":1,"1560":2,"1561":3,"1575":4,"1587":2,"1598":2,"1619":1,"1635":2,"1639":2,"1642":1,"1656":1,"1658":1,"1672":2,"1676":1,"1706":2,"1708":3,"1724":1,"1754":2,"1755":1,"1756":1,"1767":3,"1830":1,"1851":1,"1852":1,"1854":4,"1860":26,"1868":1,"1911":1,"1913":1,"1919":1,"1921":2,"1955":1,"1959":2,"1960":2,"1962":1,"1971":2,"1972":1,"1974":5,"1975":3,"1979":4,"1980":1,"1990":3,"2094":1,"2145":6,"2168":2,"2181":16,"2206":1,"2207":1,"2209":1,"2266":2,"2340":2,"2606":1,"2615":1,"2616":5,"2626":1,"2767":1,"2788":34}}],["buflen",{"2":{"2168":2}}],["buff",{"2":{"1853":4,"2177":4}}],["buffered",{"2":{"515":1}}],["buffers",{"0":{"669":1,"753":1,"780":1,"812":1,"844":1,"879":1,"913":1,"947":1,"981":1,"1015":1,"1049":1,"1083":1,"1117":1,"1164":1,"1207":1},"1":{"670":1,"781":1,"813":1,"845":1,"880":1,"914":1,"948":1,"982":1,"1016":1,"1050":1,"1084":1,"1118":1,"1165":1,"1208":1},"2":{"93":1,"249":2,"593":1,"594":1,"665":1,"741":1,"745":1,"768":1,"772":1,"800":1,"804":1,"832":1,"836":1,"867":1,"871":1,"901":1,"905":1,"935":1,"939":1,"969":1,"973":1,"1003":1,"1007":1,"1037":1,"1041":1,"1071":1,"1075":1,"1105":1,"1109":1,"1158":1,"1195":1,"1199":1,"1552":5,"2086":1,"2098":2,"2264":1}}],["buffer",{"0":{"689":1,"1265":1,"1552":1,"1853":1,"2177":1},"2":{"49":1,"93":1,"114":1,"176":1,"199":1,"211":1,"249":3,"641":3,"688":3,"689":8,"712":1,"1229":1,"1242":2,"1246":1,"1247":1,"1248":1,"1263":2,"1265":3,"1438":1,"1475":4,"1482":1,"1483":6,"1552":2,"1564":1,"1592":3,"1718":1,"1723":2,"1729":1,"1732":2,"1734":1,"1735":1,"1737":1,"1739":1,"1740":1,"1742":1,"1743":1,"1745":1,"1746":1,"1748":1,"1749":1,"1751":1,"1853":7,"1858":3,"1859":2,"1860":16,"1925":1,"1926":1,"1927":1,"1930":1,"1932":1,"2097":1,"2168":10,"2177":7,"2180":1,"2181":17,"2252":1,"2253":1,"2254":1,"2257":1,"2613":1,"2615":9,"2616":2}}],["bundled",{"2":{"2282":1}}],["bundle",{"2":{"2150":1,"2470":3,"2497":1}}],["bunch",{"2":{"254":1,"1296":1,"1368":1,"1420":1,"1421":1,"1422":1,"2350":1,"2549":1,"2749":1,"2753":1,"2779":1}}],["buzz",{"2":{"1610":3,"1611":12,"1616":7,"2167":1}}],["buzzer",{"2":{"1425":1}}],["burst",{"2":{"1950":1}}],["burnout",{"2":{"2608":1}}],["burns",{"2":{"2309":1}}],["burn",{"2":{"1324":1,"1855":2,"2179":1}}],["burden",{"2":{"213":1,"2605":1}}],["buy",{"2":{"624":1,"1279":1}}],["bumblebee",{"2":{"277":1}}],["bump",{"2":{"76":1,"114":2,"145":1,"236":1,"360":2,"1616":3}}],["buspirate",{"2":{"2378":1}}],["bus",{"0":{"2378":1},"1":{"2379":1},"2":{"191":2,"266":1,"277":1,"726":1,"2378":2,"2379":1,"2707":1}}],["busywait",{"0":{"1893":1},"1":{"1894":1,"1895":1,"1896":1,"1897":1},"2":{"1891":1,"1893":2,"2731":2}}],["busy",{"0":{"1653":1},"1":{"1654":1},"2":{"191":1,"703":1,"1500":1,"1654":1,"1659":1,"1660":1,"1662":1}}],["business",{"2":{"154":4}}],["bulk",{"2":{"182":1,"2200":1,"2272":1}}],["bullseye",{"2":{"114":1}}],["bugging",{"2":{"2463":1}}],["buggy",{"2":{"1443":1}}],["bug17281",{"2":{"199":1}}],["bugfix",{"2":{"176":1,"222":1,"236":1,"266":1,"340":1,"350":3}}],["bugfixes",{"2":{"10":2,"196":1,"340":1,"344":2,"345":2,"2695":1}}],["bugs",{"0":{"549":1},"2":{"114":1,"134":1,"145":1,"160":1,"176":1,"191":2,"199":1,"211":1,"222":1,"236":2,"249":1,"266":1,"277":1,"481":1,"1704":3}}],["bug",{"0":{"1298":1},"2":{"62":1,"73":1,"145":2,"160":1,"236":1,"315":1,"336":1,"483":1,"545":1,"549":1,"554":1,"560":2,"2365":1,"2382":1,"2507":3,"2552":1,"2796":1}}],["builtin",{"2":{"588":1,"696":2,"1291":2,"1429":1,"2188":1}}],["built",{"0":{"1296":1,"2146":1},"1":{"2147":1,"2148":1,"2149":1,"2150":1,"2151":1},"2":{"33":1,"49":1,"191":1,"228":1,"337":1,"403":2,"432":1,"588":1,"629":1,"684":1,"1134":1,"1363":1,"1435":1,"1443":1,"1767":1,"1950":1,"1990":1,"2164":1,"2182":1,"2221":2,"2271":1,"2297":1,"2300":1,"2323":1,"2456":1,"2467":1,"2479":1,"2486":1,"2488":1,"2588":1,"2612":1,"2618":1,"2655":1}}],["builder",{"2":{"391":1,"2306":1,"2307":1,"2316":2}}],["builddefs",{"2":{"160":1}}],["building",{"0":{"332":1,"1385":1,"2459":1,"2467":1,"2654":1},"1":{"1386":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2468":1,"2469":1,"2470":1,"2471":1,"2472":1,"2473":1,"2474":1,"2475":1,"2476":1,"2477":1,"2478":1,"2479":1},"2":{"114":2,"133":1,"134":1,"156":1,"199":1,"213":1,"224":1,"233":1,"304":1,"331":1,"363":1,"370":1,"513":1,"515":2,"536":1,"560":1,"1271":1,"1274":1,"1291":1,"1294":1,"1529":1,"2291":2,"2320":1,"2444":1,"2457":1,"2459":1,"2481":1,"2484":1,"2509":1,"2541":1,"2615":2}}],["builds",{"2":{"28":1,"49":1,"94":1,"114":3,"130":1,"134":4,"138":1,"145":3,"160":2,"176":1,"198":1,"209":1,"211":3,"241":1,"253":1,"270":1,"273":1,"393":3,"394":3,"1302":1,"1349":1,"1422":1,"2300":2,"2486":1,"2487":1,"2512":1,"2514":1,"2541":1,"2552":1,"2574":1,"2606":2,"2655":1,"2703":1}}],["build",{"0":{"23":1,"55":1,"152":1,"326":1,"513":1,"1271":1,"1274":1,"1418":1,"2306":1,"2460":1,"2464":1,"2485":1,"2486":1,"2497":1,"2508":1,"2533":1,"2541":1,"2601":1},"1":{"1272":1,"1275":1,"1276":1,"1277":1,"1278":1,"1279":1,"1280":1,"2498":1,"2499":1,"2500":1,"2501":1,"2502":1,"2503":1,"2504":1,"2505":1,"2506":1},"2":{"23":1,"55":3,"65":1,"70":1,"73":1,"92":2,"112":3,"114":6,"118":1,"126":1,"132":1,"133":1,"134":3,"145":2,"160":7,"164":1,"170":1,"176":2,"189":2,"191":4,"199":6,"201":2,"204":1,"206":1,"211":2,"222":1,"228":1,"234":3,"236":1,"249":1,"262":1,"266":23,"277":2,"292":1,"304":2,"326":1,"331":6,"332":1,"360":1,"365":1,"366":1,"374":1,"376":1,"387":1,"389":1,"390":1,"391":1,"393":4,"394":4,"395":2,"396":5,"401":4,"496":1,"516":1,"538":1,"540":1,"614":3,"624":3,"689":1,"1273":1,"1274":1,"1324":2,"1325":1,"1335":1,"1385":1,"1386":1,"1413":1,"1414":1,"1418":1,"1611":1,"2216":1,"2282":2,"2289":3,"2291":8,"2299":1,"2300":3,"2309":1,"2316":1,"2320":2,"2338":1,"2339":2,"2341":2,"2347":1,"2385":1,"2447":2,"2456":1,"2457":1,"2459":1,"2460":1,"2461":1,"2464":3,"2467":3,"2468":1,"2474":1,"2475":1,"2476":6,"2477":1,"2478":4,"2479":2,"2480":4,"2481":1,"2485":2,"2486":2,"2487":2,"2493":1,"2495":2,"2501":1,"2508":6,"2511":1,"2531":1,"2533":1,"2541":2,"2542":1,"2543":1,"2552":4,"2592":1,"2605":1,"2653":1,"2654":2,"2713":1,"2761":1,"2792":1,"2794":1}}],["butterstick",{"2":{"154":2}}],["button",{"0":{"1680":2,"1682":2,"1870":1,"1874":1,"1875":1,"1877":1,"1879":1,"1881":1,"1883":1,"1886":1,"1887":1,"1889":1,"1901":1,"2419":1},"1":{"1681":2,"1683":2,"1871":1,"1872":1,"1873":1,"1874":1,"1875":1,"1876":2,"1877":1,"1878":2,"1879":1,"1880":2,"1881":1,"1882":2,"1883":1,"1884":2,"1885":2,"1886":1,"1887":1,"1888":2,"1889":1,"1890":2},"2":{"49":1,"63":1,"134":1,"188":1,"190":1,"191":3,"231":5,"332":1,"334":1,"541":2,"542":2,"567":2,"624":2,"626":2,"1273":1,"1307":1,"1324":1,"1396":3,"1422":1,"1443":1,"1532":1,"1591":1,"1670":2,"1673":64,"1676":2,"1680":1,"1681":2,"1682":1,"1683":2,"1839":16,"1847":2,"1870":1,"1871":1,"1872":64,"1874":1,"1875":1,"1876":1,"1877":1,"1878":1,"1879":1,"1880":1,"1881":1,"1882":1,"1883":1,"1884":1,"1885":1,"1886":1,"1887":1,"1888":1,"1889":1,"1890":1,"1901":5,"1940":6,"1954":2,"1956":4,"1960":1,"1965":1,"2164":1,"2188":2,"2268":1,"2271":1,"2273":1,"2274":3,"2276":1,"2278":3,"2280":3,"2281":1,"2282":1,"2283":2,"2285":2,"2287":4,"2288":3,"2303":3,"2316":1,"2317":3,"2404":64,"2411":16,"2419":65,"2456":2,"2489":1,"2492":1,"2537":2,"2547":1,"2552":2,"2557":1,"2567":1,"2654":1,"2711":1,"2788":1}}],["buttons",{"0":{"1902":1},"2":{"49":1,"74":1,"114":1,"134":4,"160":1,"190":1,"222":1,"1569":1,"1668":1,"1670":1,"1676":1,"1836":1,"1870":1,"1901":4,"1902":2,"1943":2,"1954":2,"1956":1,"1958":3,"1965":1,"1980":1}}],["but",{"0":{"1299":1,"1410":1},"2":{"11":1,"49":1,"50":1,"99":1,"100":1,"120":1,"124":1,"125":2,"138":1,"141":1,"145":1,"170":1,"174":1,"185":2,"194":1,"202":1,"233":1,"251":1,"262":1,"273":2,"317":1,"334":1,"336":1,"341":1,"352":1,"355":1,"364":1,"371":1,"377":1,"401":1,"432":1,"446":1,"453":2,"458":1,"469":1,"471":1,"472":1,"473":1,"474":1,"479":1,"499":1,"504":1,"513":1,"515":1,"516":1,"529":1,"530":1,"532":1,"537":1,"540":1,"556":1,"557":1,"560":1,"567":1,"574":1,"578":2,"623":1,"626":1,"641":1,"642":1,"674":1,"675":1,"677":1,"678":1,"679":1,"680":1,"734":1,"760":1,"790":1,"792":1,"822":1,"855":1,"857":1,"889":1,"891":1,"923":1,"925":1,"957":1,"959":1,"991":1,"993":1,"1025":1,"1027":1,"1059":1,"1061":1,"1093":1,"1095":1,"1128":1,"1137":1,"1185":1,"1232":1,"1271":4,"1282":1,"1287":2,"1297":1,"1302":1,"1308":1,"1313":1,"1320":2,"1335":1,"1337":3,"1362":1,"1363":1,"1369":1,"1372":2,"1373":1,"1377":1,"1378":1,"1384":1,"1398":2,"1400":1,"1406":1,"1407":1,"1417":1,"1420":2,"1421":2,"1430":1,"1433":2,"1437":1,"1440":3,"1446":1,"1449":4,"1453":1,"1455":1,"1476":1,"1477":1,"1483":1,"1485":1,"1487":2,"1492":1,"1499":1,"1528":1,"1529":1,"1553":1,"1557":1,"1558":1,"1572":1,"1586":1,"1591":1,"1597":1,"1669":1,"1689":1,"1704":1,"1711":1,"1720":1,"1722":2,"1763":1,"1814":1,"1816":1,"1818":1,"1821":1,"1840":1,"1849":1,"1860":1,"1863":1,"1870":1,"1897":1,"1933":1,"1949":1,"1951":1,"1956":1,"1965":1,"1966":1,"1984":1,"1986":1,"2059":1,"2061":1,"2063":1,"2066":1,"2082":2,"2085":1,"2101":1,"2113":2,"2141":1,"2150":1,"2152":1,"2156":1,"2170":1,"2181":1,"2183":1,"2187":1,"2190":3,"2200":3,"2207":2,"2209":1,"2210":1,"2219":1,"2221":1,"2267":1,"2270":1,"2272":2,"2279":1,"2281":1,"2284":1,"2286":1,"2294":1,"2300":1,"2301":2,"2305":1,"2307":2,"2311":1,"2312":1,"2313":3,"2315":1,"2316":1,"2344":1,"2346":1,"2348":1,"2350":2,"2354":1,"2362":1,"2380":1,"2383":1,"2385":1,"2387":1,"2390":1,"2394":2,"2432":1,"2436":1,"2442":1,"2446":1,"2447":1,"2449":1,"2450":1,"2452":1,"2480":2,"2494":1,"2502":1,"2503":1,"2514":1,"2516":1,"2525":1,"2526":2,"2530":1,"2531":1,"2545":3,"2552":2,"2556":2,"2557":1,"2558":1,"2568":1,"2569":1,"2572":1,"2578":1,"2583":1,"2585":1,"2587":1,"2605":3,"2607":1,"2609":1,"2610":1,"2616":1,"2642":1,"2647":1,"2650":1,"2664":1,"2680":1,"2694":1,"2725":2,"2742":1,"2744":3,"2745":1,"2746":1,"2763":1,"2765":1,"2767":1,"2768":1,"2773":1,"2775":1,"2778":1,"2779":1,"2781":1,"2782":2,"2784":1,"2785":1,"2787":1,"2788":1,"2789":1,"2791":1,"2796":2}}],["blurb",{"0":{"2348":1},"2":{"540":1}}],["bluesmirf",{"2":{"1528":1}}],["blue",{"0":{"647":1,"649":1,"665":1,"667":1,"741":1,"743":1,"749":1,"768":1,"770":1,"776":1,"800":1,"802":1,"808":1,"832":1,"834":1,"840":1,"867":1,"869":1,"875":1,"901":1,"903":1,"909":1,"935":1,"937":1,"943":1,"969":1,"971":1,"977":1,"1003":1,"1005":1,"1011":1,"1037":1,"1039":1,"1045":1,"1071":1,"1073":1,"1079":1,"1105":1,"1107":1,"1113":1,"1158":1,"1160":1,"1162":1,"1176":1,"1178":1,"1195":1,"1197":1,"1203":1},"1":{"648":1,"650":1,"666":1,"668":1,"742":1,"744":1,"750":1,"769":1,"771":1,"777":1,"801":1,"803":1,"809":1,"833":1,"835":1,"841":1,"868":1,"870":1,"876":1,"902":1,"904":1,"910":1,"936":1,"938":1,"944":1,"970":1,"972":1,"978":1,"1004":1,"1006":1,"1012":1,"1038":1,"1040":1,"1046":1,"1072":1,"1074":1,"1080":1,"1106":1,"1108":1,"1114":1,"1159":1,"1161":1,"1163":1,"1177":1,"1179":1,"1196":1,"1198":1,"1204":1},"2":{"433":1,"435":1,"648":2,"650":2,"659":1,"662":1,"666":2,"668":2,"734":1,"737":1,"742":2,"744":2,"750":2,"760":1,"763":1,"769":2,"771":2,"777":2,"792":1,"795":1,"801":2,"803":2,"809":2,"822":1,"825":1,"833":2,"835":2,"841":2,"857":1,"860":1,"868":2,"870":2,"876":2,"891":1,"894":1,"902":2,"904":2,"910":2,"925":1,"928":1,"936":2,"938":2,"944":2,"959":1,"962":1,"970":2,"972":2,"978":2,"993":1,"996":1,"1004":2,"1006":2,"1012":2,"1027":1,"1030":1,"1038":2,"1040":2,"1046":2,"1061":1,"1064":1,"1072":2,"1074":2,"1080":2,"1095":1,"1098":1,"1106":2,"1108":2,"1114":2,"1148":1,"1151":1,"1159":2,"1161":2,"1163":2,"1171":1,"1177":2,"1179":2,"1185":1,"1188":1,"1196":2,"1198":2,"1204":2,"1254":1,"1864":1,"1991":2,"1995":2,"1996":1,"2009":1,"2011":1,"2072":1,"2096":2,"2415":1,"2499":1}}],["bluefruit",{"2":{"221":1,"515":1,"1528":4,"1529":6,"1530":1,"2717":1}}],["bluefruitle",{"0":{"153":1},"2":{"160":1,"221":1}}],["bluepill70",{"2":{"67":1}}],["bluepill",{"2":{"67":1,"72":1,"145":2,"191":1,"207":2,"489":1,"692":1,"2285":1,"2389":1,"2391":2,"2392":3}}],["bluetooth",{"0":{"1318":1,"1527":1,"1528":1,"1530":1,"1531":1,"2400":1,"2665":1,"2717":1},"1":{"1528":1,"1529":2,"1530":1,"1531":1},"2":{"50":2,"51":1,"70":1,"75":1,"111":1,"112":2,"133":1,"134":2,"153":1,"188":1,"191":4,"211":1,"221":4,"222":1,"515":1,"630":1,"1528":9,"1529":1,"1530":2,"1531":4,"2323":1,"2400":4,"2605":4,"2717":2}}],["blade",{"2":{"1766":1,"1987":2}}],["blank",{"2":{"262":1,"462":2,"540":1,"2291":1,"2340":1,"2597":1}}],["black",{"2":{"435":2,"502":1,"1425":1,"1428":3,"1432":2,"1853":1,"1991":2,"2096":2,"2307":1,"2312":1,"2350":2,"2552":5,"2635":4,"2784":1}}],["blackio83",{"2":{"253":2,"266":1}}],["blackpills",{"2":{"2152":1,"2553":2}}],["blackpill",{"0":{"2553":1},"1":{"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1},"2":{"93":1,"114":1,"145":2,"176":1,"191":2,"207":2,"253":1,"489":2,"2152":1,"2164":1,"2283":1,"2553":2,"2554":1,"2561":1,"2712":1,"2751":1}}],["blackheart",{"2":{"37":3}}],["blog",{"2":{"2518":2}}],["blowing",{"2":{"2312":1}}],["blow",{"2":{"2312":1}}],["blob",{"2":{"1312":1,"2624":2,"2631":2,"2632":2,"2635":1,"2636":1,"2638":1}}],["blobs",{"2":{"276":2}}],["blooming",{"2":{"236":1,"1987":3,"2750":1}}],["blok",{"0":{"1355":1},"2":{"176":1,"211":1,"1348":1,"1352":4,"2580":1,"2751":1}}],["bloat",{"2":{"114":1,"2301":1}}],["blocked",{"2":{"1440":1}}],["blocked65",{"2":{"144":2}}],["blocker",{"2":{"211":2}}],["blocks",{"0":{"292":1,"618":1},"1":{"619":1,"620":1},"2":{"191":2,"211":1,"231":1,"466":1,"618":1,"680":1,"1855":1,"1858":1,"1859":2,"1860":1,"2180":1,"2605":1,"2624":2,"2625":1,"2631":2,"2632":1}}],["block",{"0":{"2625":1,"2626":1,"2629":1,"2630":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1},"2":{"16":1,"31":3,"34":3,"134":1,"176":1,"188":1,"191":1,"290":1,"453":2,"534":1,"570":1,"573":1,"614":1,"679":1,"680":7,"694":2,"698":8,"1242":1,"1324":1,"1375":1,"1556":1,"1767":1,"1858":6,"1859":6,"1990":1,"2166":1,"2171":1,"2180":6,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2283":1,"2285":1,"2287":1,"2288":1,"2624":9,"2625":2,"2626":5,"2627":4,"2628":4,"2629":4,"2630":3,"2631":10,"2632":10,"2633":5,"2634":8,"2635":13,"2636":2,"2637":2,"2638":2,"2658":1,"2785":1}}],["bling",{"2":{"114":1}}],["blinks",{"2":{"2578":1}}],["blinked",{"2":{"2082":1}}],["blink",{"0":{"1634":1,"1638":1,"2082":1},"1":{"1635":1,"1639":1},"2":{"112":1,"506":2,"1594":1,"1635":2,"1639":2,"2082":9,"2199":1,"2557":1,"2733":1}}],["blinking",{"2":{"93":1,"145":1,"1592":1,"1631":1,"2082":3,"2733":1}}],["blindassassin111",{"2":{"37":2}}],["blend",{"2":{"2220":1}}],["ble",{"0":{"1529":1},"2":{"50":1,"133":1,"134":2,"153":1,"1528":2,"1529":1}}],["bl",{"0":{"7":1},"2":{"7":1,"313":1,"371":3,"530":6,"1493":7,"2164":3,"2399":7,"2444":2,"2446":1,"2447":1}}],["brmu",{"2":{"2394":1,"2431":1}}],["brmd",{"2":{"2394":1,"2428":1}}],["brk",{"2":{"2394":1,"2431":1}}],["brtg",{"2":{"1493":1,"2399":1}}],["brushing",{"2":{"246":1}}],["brutal",{"2":{"211":2}}],["brazilian",{"2":{"2742":2}}],["brazil",{"2":{"2742":1}}],["brass",{"2":{"2309":1}}],["brackets",{"2":{"2547":1}}],["bracket",{"2":{"1622":2,"2394":2,"2417":2,"2427":2,"2438":2}}],["braces",{"2":{"453":2,"454":1,"2117":1,"2208":1,"2700":1}}],["brace",{"2":{"453":5,"2417":2,"2438":2}}],["braking",{"2":{"1614":1,"1615":1}}],["brakefactor",{"2":{"1614":1,"1615":1}}],["brands",{"2":{"2282":1}}],["branding",{"2":{"1301":1}}],["brand",{"0":{"1301":1},"2":{"502":1,"624":1}}],["branching",{"2":{"1488":5,"1489":1}}],["branch",{"0":{"349":1,"2514":1,"2515":1,"2516":1,"2526":1},"1":{"2515":1,"2516":1},"2":{"51":2,"73":1,"76":1,"92":1,"94":1,"114":2,"251":1,"337":2,"346":1,"349":5,"357":1,"360":1,"361":2,"400":4,"520":1,"527":1,"529":1,"535":1,"554":3,"1488":2,"2477":1,"2511":1,"2512":2,"2513":12,"2514":3,"2515":5,"2516":3,"2525":4,"2526":3,"2527":19,"2528":1,"2603":7,"2605":1,"2606":1,"2607":7,"2759":2}}],["branches",{"2":{"51":1,"199":1,"347":1,"1488":1,"1489":1,"2525":1,"2526":1,"2607":3}}],["brauner",{"2":{"211":1}}],["brew",{"2":{"143":1,"365":1,"2276":1,"2390":1,"2470":1,"2501":1}}],["breadth",{"2":{"2606":1}}],["breath",{"2":{"502":1,"1494":1,"2301":1,"2312":1}}],["breathe",{"0":{"404":1},"2":{"404":2,"1986":2,"2072":1,"2076":2,"2415":1}}],["breathing",{"0":{"1522":1,"1523":1,"1524":1,"1525":1},"1":{"1526":1},"2":{"74":1,"93":1,"112":2,"134":1,"145":2,"199":1,"231":1,"404":1,"502":3,"582":2,"1493":2,"1494":5,"1500":1,"1522":1,"1523":1,"1524":1,"1525":1,"1526":1,"1766":3,"1986":1,"1987":7,"2072":1,"2074":2,"2075":2,"2076":2,"2078":2,"2101":2,"2399":2,"2415":1,"2716":6,"2727":1,"2733":1,"2734":1,"2750":3}}],["breakout",{"2":{"1948":1}}],["breaks",{"2":{"516":1,"683":1}}],["breakpoints",{"2":{"2552":2}}],["breakpoint",{"2":{"347":1,"349":2}}],["breakage",{"2":{"114":1}}],["break",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"105":2,"114":1,"236":1,"249":1,"337":1,"466":1,"468":1,"1369":6,"1380":5,"1396":4,"1397":2,"1412":1,"1421":2,"1422":1,"1467":2,"1477":1,"1478":1,"1483":2,"1548":2,"1560":2,"1561":1,"1587":4,"1606":1,"1851":3,"1864":4,"1913":2,"1916":1,"1921":10,"1958":1,"1960":2,"1962":2,"1977":2,"1978":3,"1996":3,"2082":3,"2099":1,"2175":3,"2205":3,"2207":12,"2208":8,"2209":4,"2452":1,"2511":1,"2706":1,"2767":4}}],["breaking",{"0":{"0":1,"9":1,"19":1,"39":1,"52":1,"66":1,"78":1,"96":1,"115":1,"135":1,"146":1,"161":1,"177":1,"192":1,"200":1,"212":1,"223":1,"237":1,"250":1,"267":1,"337":1,"338":1,"339":1,"351":1,"352":1,"1543":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"338":1,"339":1,"340":2,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"353":1,"354":1,"355":1,"356":1},"2":{"0":3,"9":2,"19":2,"23":1,"28":1,"39":2,"52":2,"103":1,"105":1,"107":1,"114":1,"116":1,"126":1,"131":1,"141":1,"163":1,"167":1,"172":1,"176":1,"182":1,"184":1,"187":1,"198":1,"201":1,"206":1,"213":2,"224":1,"238":1,"251":1,"254":1,"262":1,"265":2,"273":1,"275":1,"276":1,"337":3,"338":1,"339":1,"341":4,"342":1,"343":3,"344":3,"345":3,"346":1,"347":1,"349":3,"350":4,"351":1,"352":1,"353":1,"354":2,"481":1,"1540":1,"1541":1,"1543":2,"2606":1,"2759":2,"2760":1}}],["bridge",{"2":{"2278":2,"2280":2,"2288":2}}],["brid",{"2":{"1703":1,"1765":1,"1910":1,"2394":1,"2408":1,"2432":1}}],["briu",{"2":{"1703":1,"1765":1,"1910":1,"2394":1,"2408":1,"2432":1}}],["briefs",{"2":{"2182":1}}],["brief",{"2":{"1419":1,"1763":1,"1984":1,"2297":1}}],["briefly",{"2":{"624":1}}],["bricking",{"2":{"2288":1}}],["brick",{"2":{"199":1,"1324":1}}],["brightens",{"2":{"2076":1}}],["brighter",{"2":{"435":1}}],["bright",{"2":{"435":1}}],["brightness",{"0":{"652":2,"1703":1,"2084":1},"1":{"653":2},"2":{"111":1,"114":1,"145":1,"176":1,"191":2,"506":1,"644":2,"652":1,"653":2,"745":1,"746":1,"747":1,"748":1,"772":1,"773":1,"774":1,"775":1,"804":1,"805":1,"806":1,"807":1,"836":1,"837":1,"838":1,"839":1,"871":1,"872":1,"873":1,"874":1,"905":1,"906":1,"907":1,"908":1,"939":1,"940":1,"941":1,"942":1,"973":1,"974":1,"975":1,"976":1,"1007":1,"1008":1,"1009":1,"1010":1,"1041":1,"1042":1,"1043":1,"1044":1,"1075":1,"1076":1,"1077":1,"1078":1,"1109":1,"1110":1,"1111":1,"1112":1,"1199":1,"1200":1,"1201":1,"1202":1,"1491":1,"1493":1,"1494":2,"1496":1,"1694":1,"1703":7,"1760":5,"1765":4,"1766":4,"1768":4,"1781":1,"1782":1,"1783":1,"1784":1,"1795":1,"1796":1,"1797":1,"1798":1,"1799":1,"1800":1,"1811":1,"1855":3,"1860":4,"1910":1,"1986":2,"1987":7,"1992":5,"1997":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2071":1,"2072":4,"2073":3,"2076":1,"2084":2,"2394":6,"2399":1,"2408":4,"2415":4,"2416":2,"2428":1,"2431":1,"2432":4,"2616":1,"2635":3,"2714":2,"2716":6,"2727":5,"2733":5,"2734":4}}],["brigthness",{"2":{"176":1}}],["bringing",{"2":{"606":1}}],["brings",{"2":{"251":1,"268":1}}],["bring",{"2":{"114":1,"291":1,"1715":1,"2547":1,"2777":1}}],["brownfox",{"2":{"2309":1,"2320":1}}],["brown",{"2":{"674":1}}],["browsed",{"2":{"2540":1}}],["browser",{"2":{"522":1,"1910":1,"2394":7,"2432":7,"2443":1}}],["browse",{"2":{"331":1,"2494":1,"2782":1}}],["browsing",{"2":{"110":1,"402":1,"403":1}}],["brought",{"2":{"108":1}}],["broken",{"2":{"73":1,"93":1,"114":2,"134":2,"160":1,"176":1,"191":1,"199":1,"236":1,"277":1,"315":1,"352":1,"481":1,"560":1,"1349":1,"2367":1}}],["br",{"2":{"5":1,"282":1,"1392":1,"2190":1,"2191":3}}],["bypasses",{"2":{"2109":1}}],["bypassed",{"2":{"4":1}}],["bytecode",{"2":{"479":1}}],["byte",{"0":{"1253":1,"2133":1},"1":{"2134":1},"2":{"191":1,"674":1,"675":1,"679":1,"681":1,"701":1,"726":1,"1171":1,"1218":1,"1220":1,"1221":1,"1223":1,"1224":1,"1239":1,"1240":1,"1241":1,"1242":1,"1251":3,"1253":5,"1337":1,"1487":1,"1488":8,"1489":5,"1552":1,"1632":1,"1650":2,"1652":2,"1655":1,"1656":2,"1657":1,"1659":1,"1662":1,"1663":1,"1853":4,"1859":3,"1860":2,"1926":1,"1927":2,"1936":1,"1943":1,"2177":4,"2181":2,"2185":7,"2186":1,"2387":1,"2445":2,"2610":1,"2615":3,"2679":1,"2699":1}}],["bytes",{"2":{"25":1,"131":1,"134":1,"215":1,"222":1,"236":1,"641":1,"673":1,"674":3,"675":3,"676":1,"679":2,"680":2,"681":4,"682":11,"694":5,"708":1,"709":1,"711":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1225":1,"1226":1,"1228":1,"1229":1,"1243":1,"1244":1,"1245":1,"1246":1,"1253":1,"1368":1,"1488":2,"1489":1,"1650":1,"1652":1,"1853":3,"1925":1,"1927":2,"1930":1,"1932":1,"2166":1,"2168":1,"2177":3,"2185":1,"2186":2,"2264":1,"2267":1,"2303":1,"2380":1,"2386":4,"2387":1,"2392":2,"2464":1,"2492":4,"2508":1,"2616":2,"2626":1,"2627":1,"2632":1,"2633":1,"2635":1,"2637":1,"2638":1,"2722":2,"2744":1,"2796":1}}],["by",{"0":{"27":1,"43":1,"532":1,"536":1,"1563":1,"2162":1,"2163":1,"2164":1,"2165":1,"2351":1},"1":{"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"2352":1,"2353":1,"2354":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1},"2":{"3":1,"7":1,"15":1,"21":1,"25":2,"28":1,"31":1,"34":1,"37":6,"38":2,"43":2,"45":1,"49":2,"50":2,"58":1,"74":1,"82":1,"94":1,"114":6,"118":2,"119":2,"120":1,"124":1,"125":1,"134":5,"139":2,"160":2,"164":1,"169":1,"173":1,"174":1,"175":1,"176":5,"179":1,"182":1,"184":1,"185":1,"191":4,"194":1,"195":3,"199":4,"201":1,"209":3,"211":1,"215":1,"222":3,"233":1,"248":1,"263":1,"273":1,"278":1,"282":3,"285":1,"292":1,"317":2,"318":1,"321":1,"329":1,"331":1,"340":1,"341":3,"352":2,"370":1,"371":2,"374":1,"405":1,"408":1,"413":1,"415":1,"417":1,"423":1,"428":2,"430":4,"435":1,"441":1,"447":1,"454":1,"460":1,"461":1,"462":1,"470":1,"479":1,"481":1,"485":1,"492":1,"498":1,"502":3,"504":1,"505":1,"510":1,"511":1,"512":1,"513":2,"516":3,"520":1,"521":1,"522":1,"523":1,"527":1,"529":4,"530":1,"533":1,"537":1,"541":1,"554":1,"558":1,"559":1,"560":3,"569":1,"571":1,"572":1,"580":2,"581":1,"584":1,"589":2,"597":1,"598":1,"599":1,"600":1,"601":1,"610":1,"612":1,"613":1,"614":2,"616":2,"624":1,"626":3,"627":1,"628":1,"636":2,"641":3,"643":1,"654":1,"657":1,"659":1,"671":3,"674":2,"677":1,"678":2,"679":2,"680":3,"681":1,"682":1,"685":1,"686":1,"688":1,"689":1,"690":1,"691":1,"692":1,"700":1,"701":3,"726":1,"729":1,"734":1,"755":1,"760":1,"784":1,"788":1,"790":2,"792":1,"816":1,"822":1,"848":1,"852":1,"853":1,"855":2,"857":1,"883":1,"887":1,"889":2,"891":1,"917":1,"921":1,"923":2,"925":1,"951":1,"955":1,"957":2,"959":1,"985":1,"989":1,"991":2,"993":1,"1019":1,"1023":1,"1025":2,"1027":1,"1053":1,"1057":1,"1059":2,"1061":1,"1087":1,"1091":1,"1093":2,"1095":1,"1122":1,"1128":1,"1129":1,"1132":1,"1133":2,"1134":2,"1136":1,"1137":1,"1143":1,"1148":1,"1169":1,"1170":1,"1180":1,"1185":1,"1212":1,"1218":2,"1231":1,"1233":1,"1250":1,"1252":1,"1253":1,"1256":1,"1262":1,"1264":1,"1273":2,"1282":1,"1286":1,"1287":1,"1291":1,"1292":1,"1302":4,"1307":1,"1310":1,"1313":1,"1318":1,"1320":1,"1325":1,"1331":1,"1332":1,"1337":4,"1340":1,"1349":2,"1353":1,"1357":2,"1358":1,"1362":1,"1363":2,"1366":4,"1369":5,"1372":2,"1373":1,"1377":1,"1383":2,"1390":1,"1391":1,"1394":2,"1396":2,"1398":3,"1399":1,"1405":1,"1415":1,"1417":1,"1420":1,"1422":1,"1424":2,"1430":2,"1435":1,"1437":2,"1439":1,"1440":1,"1441":2,"1442":1,"1443":4,"1451":3,"1452":1,"1460":1,"1467":1,"1468":2,"1472":1,"1475":1,"1476":2,"1478":1,"1488":5,"1489":2,"1491":3,"1492":1,"1495":1,"1508":1,"1529":1,"1532":2,"1533":1,"1536":5,"1537":5,"1538":3,"1540":2,"1544":1,"1551":1,"1553":1,"1554":1,"1555":4,"1556":1,"1559":1,"1560":3,"1561":3,"1565":2,"1566":1,"1567":2,"1585":1,"1591":2,"1592":1,"1595":3,"1596":1,"1597":1,"1605":1,"1611":2,"1615":1,"1668":2,"1669":1,"1670":1,"1671":1,"1690":1,"1692":1,"1693":1,"1703":1,"1708":1,"1709":1,"1710":1,"1712":1,"1713":6,"1715":2,"1720":1,"1723":1,"1760":2,"1761":1,"1763":2,"1766":1,"1767":1,"1825":1,"1832":1,"1840":1,"1842":3,"1853":3,"1854":2,"1858":3,"1859":2,"1860":7,"1870":1,"1897":1,"1899":1,"1901":1,"1907":1,"1910":7,"1912":1,"1913":2,"1914":1,"1918":1,"1921":1,"1924":2,"1925":3,"1927":1,"1934":2,"1937":1,"1945":1,"1946":1,"1951":1,"1952":5,"1953":4,"1954":1,"1955":1,"1956":2,"1959":1,"1960":1,"1965":1,"1967":2,"1970":1,"1980":2,"1982":1,"1984":2,"1986":2,"1987":3,"1988":1,"1990":1,"1992":1,"2070":1,"2072":2,"2073":4,"2076":2,"2079":1,"2080":2,"2082":1,"2084":1,"2097":2,"2098":1,"2101":1,"2105":1,"2111":1,"2112":1,"2114":1,"2141":1,"2150":3,"2152":3,"2157":1,"2161":1,"2162":2,"2163":1,"2164":1,"2167":1,"2168":1,"2169":1,"2170":1,"2174":1,"2177":3,"2178":2,"2181":9,"2182":2,"2185":3,"2186":1,"2190":1,"2194":2,"2195":1,"2198":1,"2199":2,"2200":1,"2207":2,"2209":1,"2220":3,"2221":5,"2237":1,"2263":1,"2264":1,"2266":1,"2267":1,"2268":2,"2272":1,"2273":1,"2274":1,"2281":1,"2284":1,"2286":1,"2288":1,"2291":5,"2299":1,"2301":7,"2303":2,"2306":1,"2311":1,"2312":1,"2314":1,"2316":1,"2318":1,"2319":2,"2320":1,"2325":1,"2331":1,"2337":1,"2339":1,"2344":3,"2348":1,"2350":4,"2353":2,"2354":1,"2357":1,"2358":1,"2363":1,"2365":1,"2382":1,"2383":1,"2385":1,"2389":1,"2390":1,"2392":1,"2414":4,"2440":1,"2441":1,"2444":1,"2449":1,"2450":1,"2452":2,"2456":1,"2466":1,"2491":1,"2493":3,"2500":1,"2502":2,"2504":1,"2505":1,"2506":1,"2508":1,"2512":1,"2513":1,"2516":2,"2525":1,"2526":2,"2527":4,"2529":4,"2530":3,"2541":1,"2545":1,"2552":1,"2555":1,"2557":1,"2563":1,"2564":1,"2578":3,"2580":2,"2582":1,"2583":3,"2584":1,"2585":1,"2587":4,"2590":1,"2591":1,"2595":3,"2603":1,"2605":5,"2606":1,"2609":1,"2613":1,"2614":3,"2615":23,"2616":7,"2617":2,"2624":1,"2626":2,"2631":1,"2633":1,"2635":2,"2654":1,"2656":1,"2658":1,"2661":1,"2662":1,"2671":1,"2684":1,"2699":1,"2700":1,"2710":2,"2719":2,"2722":1,"2725":3,"2740":1,"2741":1,"2744":2,"2745":1,"2746":3,"2749":1,"2750":3,"2757":1,"2758":1,"2759":1,"2760":1,"2761":1,"2766":1,"2767":10,"2773":1,"2774":6,"2775":5,"2776":2,"2777":2,"2782":2,"2784":1,"2785":1,"2789":2,"2793":1,"2796":4}}],["beware",{"2":{"1611":1}}],["beat",{"2":{"2143":7}}],["beats",{"2":{"1437":1,"2143":2}}],["beacon",{"2":{"1766":3,"1987":6,"2750":2}}],["bear65",{"2":{"72":1}}],["bear",{"2":{"67":2,"277":2,"2307":1,"2314":1}}],["bespoke",{"2":{"2585":1}}],["besides",{"2":{"1410":1,"1430":1,"1917":1,"2300":1,"2764":1}}],["best",{"0":{"615":1,"2510":1},"1":{"2511":1},"2":{"233":1,"367":1,"453":1,"538":1,"546":1,"560":2,"562":1,"575":1,"615":1,"726":1,"1373":1,"1396":3,"1440":1,"1484":1,"1862":1,"1891":1,"1988":1,"2207":1,"2219":1,"2313":1,"2450":1,"2466":1,"2489":1,"2511":1,"2585":1,"2591":1,"2602":1,"2603":1,"2607":1,"2616":1,"2753":1}}],["bepo",{"2":{"1392":1,"2742":2}}],["beyond",{"0":{"1327":1},"2":{"680":1,"1327":1,"1919":1,"2458":1}}],["beneath",{"2":{"2315":1}}],["beneficial",{"2":{"680":1,"2623":1}}],["benefits",{"2":{"350":1,"1693":1,"2152":1}}],["benefit",{"2":{"215":1,"560":1,"1413":1,"2331":1}}],["bent",{"2":{"2312":2,"2313":1}}],["bends",{"2":{"2311":1}}],["bending",{"2":{"2309":1,"2311":1}}],["bend",{"2":{"231":1,"1831":4,"2311":1,"2410":4}}],["beck",{"2":{"2789":1}}],["becom",{"2":{"1916":1}}],["become",{"2":{"315":1,"1565":1,"2283":2,"2285":2,"2287":2,"2288":1,"2312":1,"2350":1,"2450":2}}],["becomes",{"2":{"213":1,"231":1,"505":1,"1536":1,"2346":1,"2366":1}}],["because",{"2":{"28":1,"352":1,"454":1,"537":1,"635":3,"1134":1,"1249":1,"1253":1,"1309":1,"1339":1,"1363":2,"1372":1,"1373":1,"1375":1,"1420":1,"1479":1,"1482":1,"1488":1,"1536":3,"1713":1,"1829":1,"1859":2,"1925":1,"1958":1,"1967":1,"1997":1,"1998":1,"2069":1,"2082":1,"2164":1,"2166":1,"2170":1,"2183":1,"2190":2,"2199":2,"2200":1,"2209":1,"2215":1,"2264":1,"2358":1,"2366":1,"2387":1,"2437":1,"2450":2,"2452":1,"2453":1,"2501":1,"2513":1,"2555":1,"2558":1,"2607":1,"2615":1,"2616":1,"2623":1,"2644":1,"2767":1,"2768":1,"2774":1,"2783":1,"2795":1}}],["bebol",{"2":{"211":1}}],["beekeeb",{"2":{"211":1}}],["beeps",{"2":{"1423":1}}],["beep",{"2":{"120":1,"1391":1,"1394":3,"1423":1,"2112":1,"2715":2}}],["been",{"0":{"338":1},"2":{"1":2,"3":1,"7":1,"8":2,"10":1,"14":2,"15":1,"16":1,"25":1,"36":1,"38":1,"49":2,"60":1,"67":2,"69":1,"70":3,"82":1,"84":1,"86":3,"90":1,"98":1,"114":2,"118":2,"123":1,"124":1,"125":1,"126":1,"128":1,"132":1,"139":1,"142":1,"148":1,"151":2,"153":1,"163":1,"164":1,"166":1,"167":1,"169":1,"175":2,"182":5,"183":1,"185":1,"194":2,"196":1,"198":2,"201":4,"202":1,"203":1,"206":1,"209":1,"213":2,"215":1,"218":1,"219":1,"220":1,"221":1,"224":1,"228":2,"230":1,"231":1,"233":2,"238":1,"243":1,"254":1,"262":3,"265":1,"271":1,"273":1,"349":1,"375":1,"400":1,"510":1,"523":1,"537":1,"575":1,"578":2,"585":1,"587":4,"598":1,"600":1,"606":2,"626":1,"692":1,"1353":1,"1354":1,"1396":1,"1397":2,"1489":1,"1532":1,"1679":1,"1712":1,"1720":1,"1768":5,"1843":1,"1865":1,"1918":1,"1920":1,"1929":1,"1974":1,"1987":1,"1992":7,"2082":1,"2140":1,"2156":1,"2166":2,"2190":2,"2198":1,"2200":1,"2207":2,"2287":1,"2344":1,"2350":1,"2386":1,"2463":1,"2484":1,"2489":1,"2493":1,"2494":1,"2512":1,"2526":1,"2527":1,"2531":1,"2533":1,"2564":2,"2605":2,"2615":1,"2616":2,"2640":1,"2672":1,"2758":1,"2773":1,"2782":1,"2787":1}}],["belgium",{"2":{"2742":2}}],["belgian",{"2":{"1392":1,"2742":4}}],["bel",{"2":{"2112":1,"2715":1}}],["belong",{"2":{"1132":1,"1133":1,"1449":1,"2605":2}}],["below",{"2":{"43":1,"55":1,"182":1,"196":2,"204":1,"224":1,"432":1,"462":1,"568":1,"597":1,"598":1,"602":1,"610":2,"623":1,"628":1,"671":3,"685":1,"693":1,"701":1,"707":1,"1127":1,"1130":1,"1132":1,"1133":1,"1216":1,"1237":1,"1255":1,"1275":1,"1288":1,"1341":1,"1372":1,"1453":1,"1467":1,"1497":1,"1533":1,"1536":2,"1537":1,"1547":1,"1610":1,"1671":1,"1696":1,"1700":1,"1708":1,"1718":2,"1721":1,"1762":1,"1858":1,"1860":1,"1895":1,"1910":1,"1933":1,"1955":1,"1965":2,"1978":1,"1979":1,"1983":1,"1987":1,"2070":1,"2071":1,"2097":1,"2113":1,"2157":1,"2185":1,"2186":1,"2199":1,"2200":1,"2207":1,"2208":2,"2216":1,"2300":2,"2307":1,"2321":1,"2424":1,"2462":2,"2583":1,"2605":1,"2612":1,"2616":3,"2624":1,"2626":3,"2631":1,"2635":3,"2740":1,"2741":1,"2764":1,"2788":2,"2792":1}}],["believe",{"2":{"352":1}}],["belt",{"2":{"199":1}}],["bells",{"2":{"2605":1}}],["bella",{"2":{"211":1}}],["bell",{"2":{"114":1,"1394":1,"1436":1,"2112":2}}],["began",{"2":{"2264":1}}],["begining",{"2":{"2181":2}}],["begins",{"2":{"1488":1,"1718":1,"1727":1,"2190":1,"2264":2,"2407":1,"2445":1,"2462":1}}],["beginner",{"2":{"1377":1}}],["beginners",{"0":{"1375":1}}],["beginning",{"0":{"2762":1},"2":{"203":1,"336":1,"453":1,"1412":1,"1488":3,"1593":1,"1842":1,"1860":2,"2185":1,"2186":1,"2200":1,"2209":1,"2217":3,"2313":1,"2513":1,"2653":1}}],["begin",{"2":{"94":1,"113":1,"114":1,"133":1,"134":1,"249":1,"1479":1,"1725":1,"1729":1,"1860":2,"2109":1,"2234":1,"2249":1,"2333":1,"2482":1,"2491":1,"2796":1}}],["begun",{"2":{"50":1}}],["bet",{"2":{"233":1,"1484":1,"2489":1}}],["beta",{"2":{"154":2,"211":1,"228":1}}],["better",{"0":{"2640":1},"1":{"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1},"2":{"50":1,"98":1,"145":1,"160":1,"191":2,"263":1,"458":1,"467":1,"482":1,"589":1,"1891":1,"1937":1,"2325":1,"2351":1,"2448":1,"2530":1,"2536":2,"2545":1,"2548":1,"2623":1,"2709":1,"2758":1,"2769":1,"2774":1,"2775":1,"2796":1}}],["between",{"0":{"1302":1,"1413":1,"1892":1,"2168":1},"1":{"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1},"2":{"32":1,"45":1,"49":2,"64":1,"76":1,"107":1,"114":1,"211":2,"249":1,"257":1,"258":1,"259":2,"266":1,"271":1,"276":1,"341":1,"413":1,"415":1,"453":1,"462":1,"468":1,"474":1,"502":2,"505":2,"511":3,"563":1,"592":1,"630":1,"685":1,"689":3,"699":1,"1121":1,"1211":1,"1232":1,"1254":1,"1262":1,"1302":1,"1309":1,"1325":1,"1337":1,"1339":2,"1362":1,"1376":2,"1377":1,"1378":6,"1413":1,"1414":1,"1422":1,"1488":1,"1508":1,"1531":2,"1533":1,"1537":1,"1566":1,"1571":1,"1595":1,"1597":1,"1605":1,"1625":1,"1671":1,"1715":1,"1755":1,"1841":4,"1842":2,"1843":8,"1845":3,"1846":1,"1860":1,"1868":1,"1891":1,"1892":1,"1914":1,"1922":1,"1937":1,"1959":1,"2071":1,"2074":1,"2076":1,"2078":6,"2089":13,"2091":2,"2092":2,"2093":2,"2107":1,"2117":1,"2121":1,"2125":1,"2145":1,"2155":1,"2156":2,"2157":1,"2158":1,"2164":1,"2167":3,"2168":1,"2169":1,"2171":1,"2184":1,"2186":1,"2187":1,"2195":1,"2199":1,"2207":1,"2217":1,"2255":1,"2263":1,"2265":2,"2269":1,"2276":1,"2296":1,"2310":1,"2311":1,"2334":1,"2381":1,"2388":1,"2400":1,"2459":1,"2513":2,"2534":1,"2547":1,"2610":2,"2613":1,"2623":1,"2624":1,"2631":1,"2650":1,"2653":1,"2701":1,"2713":2,"2728":1,"2733":1,"2768":1,"2774":1,"2776":1,"2777":1,"2796":1}}],["behind",{"2":{"49":1,"198":1,"201":1,"213":1,"224":1,"238":1,"251":1,"517":1,"2200":1,"2758":2}}],["behave",{"2":{"529":1,"1339":1,"1540":1,"1714":1,"1918":1,"1965":1,"2198":1,"2432":1,"2606":1,"2774":1}}],["behaves",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"337":1,"567":1,"1919":1,"2462":1}}],["behavioral",{"2":{"1308":1}}],["behaviors",{"0":{"505":1}}],["behavior",{"0":{"567":1,"571":1},"1":{"568":1,"572":1,"573":1},"2":{"4":1,"49":1,"64":1,"87":2,"88":1,"103":1,"104":1,"126":1,"127":1,"176":1,"194":2,"331":1,"352":3,"372":1,"430":2,"435":1,"481":1,"484":1,"511":1,"562":1,"566":2,"569":1,"571":2,"572":1,"589":1,"1308":1,"1440":1,"1452":1,"1566":1,"1592":1,"1593":1,"1693":1,"1697":1,"1700":1,"1704":1,"1708":1,"1709":1,"1711":1,"1712":1,"1713":1,"1714":1,"1754":1,"1755":1,"1862":1,"1919":1,"1956":2,"2169":1,"2208":1,"2210":1,"2234":1,"2235":1,"2236":1,"2345":1,"2350":1,"2455":1,"2529":1,"2541":1,"2578":2,"2580":1,"2667":1,"2765":1,"2768":2}}],["behaviours",{"2":{"198":1}}],["behaviour",{"0":{"194":1,"206":1,"1966":1},"2":{"2":1,"113":1,"114":1,"134":1,"160":2,"191":2,"206":1,"211":2,"587":1,"597":1,"1282":1,"1340":1,"1381":1,"1469":1,"1536":1,"1557":1,"1598":2,"1723":1,"1922":1,"1966":1,"1986":1,"2072":1,"2162":1,"2597":1}}],["being",{"2":{"6":1,"92":1,"114":1,"124":1,"176":1,"182":1,"234":1,"355":1,"560":1,"675":1,"688":2,"689":1,"694":1,"1290":1,"1340":1,"1349":1,"1366":1,"1383":1,"1388":1,"1400":1,"1402":1,"1413":2,"1421":1,"1449":1,"1474":1,"1479":1,"1496":1,"1508":1,"1537":1,"1552":1,"1591":1,"1594":3,"1693":1,"1713":3,"1865":1,"1918":2,"1938":1,"2069":1,"2075":1,"2190":2,"2199":2,"2207":3,"2301":2,"2307":2,"2318":1,"2350":14,"2402":1,"2446":1,"2464":1,"2489":1,"2493":1,"2525":1,"2526":1,"2529":2,"2534":1,"2561":1,"2587":1,"2607":1,"2615":3,"2656":1,"2751":1,"2760":1,"2764":1,"2778":1}}],["be",{"0":{"25":1,"263":1,"341":1,"503":1,"504":1,"505":1,"532":1,"2556":1,"2759":1,"2760":1},"2":{"5":1,"10":2,"11":1,"16":1,"22":1,"23":1,"24":1,"25":1,"28":1,"45":1,"49":2,"50":2,"58":1,"60":1,"63":2,"64":1,"70":1,"74":4,"88":2,"93":1,"100":1,"103":2,"104":2,"107":1,"109":1,"110":1,"118":1,"124":2,"125":1,"126":1,"127":2,"131":1,"134":4,"138":2,"139":1,"141":1,"142":1,"145":1,"148":1,"149":1,"164":1,"176":1,"184":1,"185":2,"191":2,"194":3,"195":2,"201":5,"203":1,"209":3,"210":1,"213":2,"220":1,"221":1,"228":3,"230":2,"231":1,"236":1,"249":1,"254":1,"262":2,"263":1,"265":3,"266":1,"268":1,"271":1,"273":1,"275":2,"276":2,"282":3,"291":1,"315":1,"316":1,"317":1,"324":1,"327":1,"331":3,"334":3,"335":1,"337":1,"340":1,"341":8,"343":2,"344":2,"345":3,"349":1,"350":10,"352":5,"357":2,"358":2,"361":1,"370":3,"371":2,"374":5,"384":1,"385":1,"387":1,"396":3,"400":1,"402":1,"403":2,"411":3,"414":1,"415":1,"416":1,"417":1,"424":1,"430":2,"433":1,"434":1,"435":2,"441":3,"446":1,"447":1,"450":1,"452":1,"453":1,"455":1,"457":1,"460":1,"462":1,"465":1,"466":2,"472":1,"473":1,"474":3,"478":1,"479":2,"481":3,"482":2,"483":1,"484":1,"486":1,"497":1,"498":1,"501":2,"502":4,"504":4,"505":1,"506":3,"509":3,"510":2,"511":3,"512":1,"515":2,"516":4,"519":2,"525":1,"529":4,"530":2,"532":1,"533":1,"534":1,"535":1,"537":2,"538":1,"539":1,"542":1,"546":1,"550":1,"551":1,"554":2,"556":2,"560":5,"561":1,"566":2,"567":1,"568":3,"570":1,"571":2,"574":1,"575":1,"580":1,"581":1,"584":2,"586":2,"588":1,"589":2,"592":2,"597":4,"598":9,"599":1,"600":2,"601":1,"602":1,"613":1,"617":1,"621":3,"626":4,"627":3,"628":4,"629":2,"630":1,"635":5,"636":2,"638":1,"639":3,"641":2,"646":1,"659":1,"663":1,"671":3,"673":1,"674":4,"675":1,"676":1,"678":1,"679":5,"680":5,"681":2,"688":1,"689":5,"690":2,"692":1,"693":1,"698":2,"701":4,"702":1,"703":1,"707":3,"726":1,"727":1,"734":1,"738":1,"760":1,"764":1,"788":1,"792":1,"796":1,"822":1,"826":1,"852":2,"853":1,"857":1,"861":1,"887":1,"891":1,"895":1,"921":1,"925":1,"929":1,"955":1,"959":1,"963":1,"989":1,"993":1,"997":1,"1023":2,"1027":1,"1031":1,"1057":2,"1061":1,"1065":1,"1091":1,"1095":1,"1099":1,"1121":1,"1125":1,"1127":1,"1128":1,"1129":4,"1130":1,"1132":2,"1133":2,"1134":2,"1135":1,"1138":1,"1142":1,"1148":1,"1152":1,"1185":1,"1189":1,"1213":1,"1214":4,"1216":2,"1218":2,"1235":1,"1237":2,"1249":1,"1252":1,"1253":2,"1254":2,"1255":1,"1258":1,"1260":3,"1265":1,"1267":1,"1273":1,"1279":1,"1280":3,"1284":1,"1285":1,"1286":1,"1289":1,"1290":1,"1291":1,"1302":1,"1307":3,"1310":1,"1312":1,"1330":2,"1331":1,"1332":1,"1335":1,"1336":2,"1337":4,"1340":1,"1341":1,"1347":2,"1351":1,"1356":1,"1362":1,"1363":3,"1365":1,"1366":1,"1368":3,"1369":2,"1372":4,"1373":2,"1374":1,"1375":2,"1376":1,"1377":4,"1378":1,"1379":1,"1383":2,"1384":4,"1385":1,"1386":1,"1388":1,"1390":1,"1396":3,"1397":1,"1398":2,"1401":1,"1402":1,"1403":1,"1404":1,"1405":2,"1412":2,"1413":2,"1414":5,"1415":1,"1416":2,"1417":1,"1420":2,"1421":1,"1422":2,"1424":2,"1427":1,"1428":1,"1430":1,"1431":2,"1433":1,"1435":5,"1437":1,"1439":1,"1440":1,"1441":2,"1443":1,"1448":1,"1451":1,"1452":1,"1453":1,"1460":1,"1467":1,"1468":7,"1472":1,"1473":1,"1477":2,"1478":1,"1482":1,"1483":2,"1484":1,"1488":2,"1496":2,"1504":1,"1529":2,"1531":1,"1532":1,"1534":1,"1537":1,"1538":1,"1543":2,"1548":1,"1550":1,"1551":2,"1552":4,"1553":3,"1555":8,"1563":2,"1566":1,"1568":1,"1569":1,"1571":2,"1572":3,"1575":1,"1586":2,"1587":1,"1589":2,"1591":1,"1595":4,"1596":1,"1597":2,"1598":1,"1599":2,"1600":4,"1608":1,"1611":5,"1612":1,"1615":1,"1616":2,"1617":2,"1627":1,"1632":2,"1634":2,"1659":2,"1668":3,"1670":1,"1671":3,"1676":1,"1689":2,"1692":2,"1695":1,"1697":1,"1699":1,"1701":1,"1703":2,"1704":1,"1706":1,"1708":13,"1709":3,"1710":1,"1711":2,"1712":1,"1714":2,"1715":2,"1722":1,"1723":1,"1754":1,"1755":1,"1763":3,"1767":2,"1769":1,"1781":1,"1783":1,"1825":1,"1842":2,"1844":1,"1845":1,"1846":2,"1847":1,"1849":1,"1852":2,"1853":2,"1855":1,"1857":1,"1859":1,"1860":4,"1862":1,"1863":1,"1865":1,"1866":1,"1870":2,"1895":1,"1896":1,"1897":2,"1899":1,"1901":3,"1904":1,"1907":1,"1910":1,"1911":1,"1912":3,"1913":1,"1914":2,"1915":1,"1916":3,"1917":1,"1919":1,"1920":3,"1921":1,"1924":1,"1925":3,"1926":2,"1932":2,"1933":2,"1934":1,"1937":3,"1940":1,"1943":3,"1945":4,"1946":2,"1949":1,"1950":3,"1951":2,"1952":3,"1954":1,"1956":4,"1960":3,"1964":2,"1965":5,"1966":1,"1967":3,"1970":1,"1972":1,"1974":3,"1975":1,"1977":4,"1978":2,"1979":2,"1980":2,"1981":2,"1984":3,"1986":2,"1989":1,"1990":2,"1991":1,"1993":1,"1997":2,"2008":1,"2010":1,"2069":1,"2070":1,"2072":2,"2073":2,"2074":1,"2075":2,"2080":3,"2082":2,"2096":1,"2099":2,"2101":1,"2103":1,"2104":2,"2105":1,"2110":2,"2113":2,"2140":1,"2152":1,"2156":2,"2158":2,"2162":2,"2163":3,"2164":2,"2166":3,"2167":1,"2168":6,"2169":2,"2170":1,"2177":2,"2181":2,"2183":1,"2184":2,"2185":1,"2188":1,"2190":7,"2191":2,"2194":1,"2199":4,"2200":1,"2206":1,"2207":6,"2208":1,"2209":6,"2210":1,"2212":1,"2213":1,"2214":1,"2216":1,"2220":6,"2221":2,"2234":1,"2235":1,"2236":1,"2237":1,"2255":1,"2263":1,"2264":4,"2266":1,"2267":2,"2268":2,"2273":2,"2275":3,"2276":1,"2278":3,"2280":2,"2281":2,"2282":1,"2283":1,"2285":1,"2287":1,"2288":3,"2293":2,"2295":3,"2297":1,"2298":2,"2300":5,"2301":7,"2303":3,"2307":2,"2308":1,"2309":2,"2310":1,"2311":2,"2312":7,"2313":3,"2314":2,"2315":2,"2316":2,"2318":4,"2319":1,"2321":1,"2323":1,"2325":1,"2333":1,"2334":2,"2335":3,"2338":2,"2339":2,"2340":1,"2342":2,"2344":1,"2346":1,"2347":1,"2348":2,"2350":4,"2351":1,"2354":1,"2355":1,"2357":1,"2366":1,"2367":1,"2369":1,"2370":1,"2371":1,"2373":1,"2374":1,"2381":1,"2383":1,"2385":1,"2386":3,"2387":2,"2388":1,"2389":2,"2390":3,"2391":1,"2392":1,"2394":1,"2406":1,"2437":1,"2440":2,"2441":1,"2442":2,"2444":3,"2448":1,"2450":3,"2452":4,"2453":1,"2460":1,"2462":3,"2466":2,"2467":2,"2470":2,"2478":1,"2479":4,"2480":1,"2482":1,"2486":2,"2487":2,"2489":4,"2490":1,"2491":1,"2493":1,"2495":1,"2496":1,"2505":2,"2507":1,"2508":2,"2515":1,"2516":1,"2526":1,"2527":4,"2529":2,"2530":2,"2534":1,"2536":1,"2537":1,"2540":3,"2545":2,"2547":1,"2551":1,"2552":12,"2553":1,"2554":1,"2555":3,"2556":5,"2557":5,"2558":4,"2560":1,"2561":1,"2563":6,"2564":1,"2565":1,"2568":1,"2569":1,"2572":1,"2573":1,"2574":1,"2578":1,"2580":1,"2581":1,"2582":1,"2583":2,"2584":1,"2585":1,"2587":6,"2588":3,"2589":2,"2590":1,"2591":2,"2592":1,"2594":1,"2596":1,"2599":2,"2602":1,"2603":11,"2604":6,"2605":32,"2606":13,"2608":2,"2609":1,"2610":1,"2612":2,"2613":5,"2614":4,"2615":42,"2616":30,"2618":1,"2623":1,"2626":2,"2627":2,"2628":1,"2631":1,"2632":1,"2633":2,"2634":1,"2635":3,"2637":2,"2639":1,"2640":1,"2644":4,"2653":2,"2672":1,"2706":1,"2709":1,"2711":2,"2712":1,"2713":2,"2715":1,"2716":1,"2717":1,"2718":1,"2722":3,"2725":1,"2727":2,"2728":1,"2731":1,"2732":1,"2733":2,"2734":2,"2736":2,"2737":1,"2738":1,"2739":1,"2741":1,"2743":1,"2744":1,"2749":1,"2750":1,"2753":1,"2757":2,"2758":3,"2759":7,"2760":2,"2761":1,"2762":1,"2764":1,"2767":5,"2768":1,"2773":2,"2774":5,"2775":3,"2776":5,"2777":2,"2779":2,"2782":1,"2784":1,"2788":3,"2791":3,"2792":2,"2793":1,"2794":1,"2795":1,"2796":2}}],["beforehand",{"2":{"2489":1}}],["before",{"0":{"343":1,"344":1,"345":1,"346":1},"2":{"1":1,"25":1,"45":1,"49":1,"55":1,"73":1,"90":1,"105":1,"145":2,"176":1,"191":1,"199":1,"203":2,"211":1,"234":1,"240":1,"246":1,"259":1,"263":1,"300":1,"306":1,"341":1,"345":1,"347":1,"350":9,"396":1,"409":1,"411":1,"447":1,"478":1,"505":7,"515":3,"554":1,"556":2,"558":1,"560":4,"568":1,"571":1,"574":1,"575":1,"578":1,"585":1,"587":1,"592":2,"598":2,"599":1,"600":1,"636":1,"698":2,"707":1,"1216":1,"1237":1,"1363":1,"1396":1,"1397":4,"1405":1,"1406":1,"1440":1,"1448":1,"1453":1,"1468":2,"1477":1,"1478":1,"1479":1,"1482":1,"1488":1,"1534":1,"1547":1,"1565":1,"1608":1,"1634":1,"1660":1,"1662":1,"1708":1,"1752":1,"1763":1,"1814":1,"1816":1,"1818":1,"1821":1,"1845":1,"1854":1,"1859":1,"1899":1,"1901":1,"1906":1,"1940":8,"1959":1,"1962":1,"1965":1,"1967":2,"1974":2,"1977":2,"1984":1,"2059":1,"2061":1,"2063":1,"2066":1,"2108":1,"2122":1,"2126":1,"2150":2,"2151":1,"2156":1,"2166":2,"2172":1,"2190":2,"2198":1,"2200":1,"2207":1,"2288":1,"2300":1,"2301":1,"2309":1,"2311":1,"2313":1,"2315":1,"2339":1,"2350":1,"2387":1,"2457":1,"2480":1,"2489":1,"2495":1,"2496":1,"2513":1,"2529":1,"2533":1,"2543":1,"2563":3,"2590":1,"2591":1,"2603":1,"2605":2,"2608":1,"2614":1,"2644":1,"2680":1,"2719":1,"2725":1,"2730":1,"2735":1,"2738":1,"2752":1,"2759":1,"2768":1,"2773":1,"2774":1}}],["m4",{"2":{"2567":1}}],["m32u4",{"2":{"2386":1}}],["m3n3van",{"2":{"154":2}}],["mrwd",{"2":{"1910":1,"2394":1,"2432":1}}],["mrelax",{"2":{"145":1}}],["mhz",{"2":{"1218":2}}],["mb85rs64v",{"2":{"675":2}}],["mb85rc256v",{"2":{"674":2}}],["mnt",{"2":{"2502":1}}],["mnemonic",{"2":{"2220":2,"2301":1}}],["mnxt",{"2":{"530":2,"1703":1,"1910":1,"2394":1,"2432":1}}],["mnk50",{"2":{"241":2}}],["mnk75",{"2":{"211":1,"241":2}}],["mnk1800s",{"2":{"211":1,"241":2}}],["mnk65",{"2":{"211":1}}],["mm",{"2":{"349":2,"1939":4,"1943":1,"2738":1}}],["mmcu=",{"2":{"292":1,"2273":1}}],["mmoskal",{"2":{"199":1}}],["m2s",{"2":{"2168":7}}],["m256ws",{"2":{"277":1}}],["m256wh",{"2":{"277":1}}],["m20add",{"2":{"114":1}}],["mj65",{"2":{"253":2}}],["mj6xy",{"2":{"211":1}}],["mfa",{"2":{"2545":1}}],["mffd",{"2":{"1910":1,"2394":1,"2432":1}}],["mf34",{"2":{"226":1,"236":1}}],["mf17",{"2":{"226":1,"236":1}}],["m60",{"2":{"199":1}}],["m65",{"2":{"114":1,"211":2}}],["mprv",{"2":{"1703":1,"1910":1,"2394":1,"2432":1}}],["mply",{"2":{"530":2,"1703":6,"2394":1,"2432":1}}],["mp",{"2":{"154":2}}],["mpaland",{"0":{"24":1},"2":{"176":1}}],["msel",{"2":{"2394":1,"2432":1}}],["msecs",{"2":{"1398":1}}],["mstp",{"2":{"2394":1,"2432":1}}],["msb",{"2":{"2186":2}}],["msbs",{"2":{"2185":1}}],["msg1967778",{"2":{"1335":2}}],["msg1884034",{"2":{"1334":2}}],["msg1127447",{"2":{"1326":2}}],["msg1492604",{"2":{"1312":2}}],["mschwingen",{"2":{"160":1,"207":2}}],["ms",{"0":{"1453":1},"2":{"145":1,"160":1,"209":2,"222":2,"231":2,"502":1,"505":1,"511":1,"588":2,"707":1,"1363":2,"1394":1,"1534":1,"1592":1,"1597":2,"1611":4,"1721":1,"1839":19,"1843":22,"1844":6,"1845":1,"1855":1,"1910":8,"1939":1,"1940":2,"1943":1,"1952":2,"1958":1,"1969":6,"1980":1,"1988":2,"2113":2,"2166":1,"2179":1,"2205":4,"2383":1,"2411":19,"2529":1,"2578":1,"2603":2,"2713":2,"2720":1,"2726":1,"2728":1,"2736":1,"2738":1,"2739":1}}],["msystem",{"2":{"2547":1}}],["msys2",{"0":{"2547":1},"2":{"143":1,"145":1,"625":1,"1278":1,"2386":1,"2390":1,"2470":1,"2497":1,"2498":1,"2499":1,"2547":2}}],["msys",{"2":{"143":1,"145":1,"240":1,"2282":1,"2386":1,"2470":1,"2474":1,"2497":1,"2498":1,"2499":3,"2507":1,"2547":2,"2552":4}}],["mctl",{"2":{"2394":1,"2432":1}}],["mcselec",{"2":{"1279":1}}],["mcmuffin",{"2":{"616":1}}],["mc",{"2":{"211":1}}],["mcp23018",{"2":{"159":1,"160":2,"191":2}}],["mcall",{"2":{"145":1}}],["mcu>",{"2":{"292":1,"2268":3,"2271":1,"2273":1,"2274":1,"2386":1}}],["mcuconf",{"2":{"50":2,"686":2,"687":2,"690":2,"703":2,"1132":4,"1133":4,"1174":2,"1214":2,"1235":1,"1263":1,"1267":2,"1506":1,"1507":1,"2575":1,"2576":1,"2577":1}}],["mcus",{"0":{"1139":1,"2552":1},"1":{"1140":1,"1141":1,"1142":1},"2":{"49":1,"76":1,"114":1,"160":1,"174":1,"191":1,"249":1,"322":1,"331":1,"334":1,"336":1,"486":1,"487":1,"630":1,"641":1,"678":1,"679":1,"683":1,"685":1,"699":1,"1127":3,"1129":4,"1130":4,"1132":2,"1133":2,"1211":1,"1232":1,"1264":1,"1331":1,"1427":1,"1670":2,"1859":1,"2164":1,"2278":1,"2288":1,"2385":1,"2563":5,"2570":1,"2588":1,"2589":3,"2606":1,"2615":1,"2661":1,"2662":1}}],["mcu",{"0":{"130":1,"156":1,"330":1,"514":1,"1589":1,"2585":1,"2586":1,"2589":1,"2591":1,"2689":1},"1":{"2586":1,"2587":2,"2588":2,"2589":1,"2590":1,"2591":1},"2":{"10":2,"73":1,"93":1,"114":1,"130":2,"134":1,"156":1,"160":1,"174":2,"176":5,"191":1,"199":4,"211":1,"236":1,"285":1,"322":1,"323":1,"326":1,"331":5,"334":1,"335":1,"512":1,"514":1,"515":2,"563":1,"586":1,"587":1,"638":1,"639":1,"671":1,"677":1,"678":2,"679":9,"682":3,"683":1,"685":2,"690":1,"692":1,"702":2,"703":3,"1121":1,"1125":1,"1127":1,"1129":3,"1130":1,"1132":4,"1133":5,"1134":1,"1213":2,"1214":1,"1218":2,"1234":2,"1235":1,"1260":3,"1262":2,"1264":1,"1267":1,"1272":1,"1273":2,"1331":1,"1368":1,"1431":1,"1506":1,"1508":3,"1529":1,"1585":1,"1589":1,"1599":1,"1611":1,"1612":1,"1897":1,"2099":1,"2152":1,"2269":1,"2275":1,"2276":1,"2301":1,"2323":1,"2367":2,"2381":1,"2382":1,"2383":1,"2384":1,"2385":2,"2386":1,"2387":1,"2552":5,"2563":2,"2568":2,"2569":4,"2572":1,"2585":8,"2587":3,"2589":1,"2591":1,"2592":1,"2596":1,"2605":3,"2606":1,"2613":3,"2617":1,"2666":2,"2670":1,"2674":1,"2687":1,"2721":1}}],["m0",{"2":{"134":1}}],["m0lly",{"2":{"43":2,"211":1}}],["md5",{"2":{"2300":2,"2392":1}}],["mdash",{"2":{"2187":1,"2525":2,"2526":2,"2527":1,"2656":2}}],["mdbt40",{"2":{"1529":1}}],["mdloader",{"2":{"134":1}}],["md",{"0":{"623":1,"624":1,"1417":1,"2336":1,"2593":1},"2":{"114":1,"134":1,"176":2,"222":1,"341":1,"347":1,"349":1,"350":1,"559":2,"607":1,"621":2,"1312":1,"1383":3,"1413":1,"2297":1,"2298":1,"2332":1,"2335":1,"2336":1,"2342":2,"2593":2,"2605":1}}],["m122",{"2":{"114":1,"207":8}}],["m12og",{"2":{"102":3}}],["mün",{"2":{"114":1}}],["mycoolkeeb",{"2":{"2592":4}}],["mycm",{"2":{"2394":1,"2432":1}}],["myusername",{"2":{"2482":1}}],["mylayout",{"2":{"1415":3}}],["mykeyboard",{"2":{"169":2,"184":2}}],["my",{"0":{"352":1,"442":1,"545":1,"546":1,"1280":1,"1307":1,"1308":1,"1323":1},"1":{"353":1,"354":1,"355":1,"356":1,"443":1,"444":1,"445":1,"446":1,"447":1},"2":{"114":1,"120":2,"272":4,"313":1,"331":1,"335":1,"414":1,"463":1,"464":1,"465":1,"474":2,"557":4,"570":1,"597":3,"598":3,"599":2,"600":2,"616":2,"621":5,"701":1,"1311":1,"1377":1,"1391":2,"1392":2,"1396":4,"1400":4,"1414":2,"1435":3,"1473":3,"1563":4,"1767":10,"1918":4,"1919":5,"1990":10,"2080":10,"2208":2,"2209":14,"2299":2,"2303":2,"2320":1,"2394":2,"2432":2,"2480":5,"2485":1,"2493":2,"2527":1,"2595":1,"2614":10,"2615":5,"2616":29}}],["mx",{"2":{"2305":1,"2745":1}}],["mx25l4006e",{"2":{"694":1}}],["mxss",{"2":{"211":2,"236":1}}],["mx1062",{"2":{"108":1}}],["mx5160",{"2":{"57":2,"211":1}}],["m",{"2":{"93":1,"102":1,"114":1,"143":2,"191":1,"204":2,"207":14,"211":1,"217":1,"222":1,"249":1,"266":5,"313":1,"347":1,"349":1,"358":2,"359":1,"366":1,"371":2,"378":2,"404":1,"429":1,"530":2,"554":1,"1478":1,"1548":2,"1568":1,"1913":6,"1986":4,"2072":10,"2303":1,"2387":3,"2394":3,"2415":10,"2425":3,"2446":1,"2477":2,"2504":1,"2513":1,"2527":1,"2738":1}}],["mumbo",{"0":{"1859":1}}],["mu",{"2":{"1440":4,"1445":4,"2396":4}}],["muhenkan",{"2":{"1317":1,"2430":1}}],["mux",{"2":{"638":4,"639":2}}],["mutually",{"2":{"1376":1}}],["mutable",{"2":{"474":1}}],["mute",{"2":{"231":1,"255":1,"2394":5,"2431":2,"2432":3}}],["mutex",{"2":{"145":1}}],["murcielago",{"2":{"253":2}}],["musical",{"2":{"1435":1,"1443":2}}],["music",{"0":{"1440":1,"1441":1,"1442":1},"1":{"1441":1,"1442":1},"2":{"191":1,"211":1,"592":1,"1434":1,"1435":15,"1436":20,"1440":13,"1441":6,"1442":6,"1445":8,"1587":2,"2396":8,"2746":2,"2788":1}}],["must",{"2":{"88":2,"104":2,"127":2,"152":1,"184":1,"194":1,"268":1,"331":1,"370":2,"399":1,"417":1,"465":1,"466":1,"474":1,"505":3,"508":1,"511":2,"515":1,"532":1,"535":1,"566":2,"609":1,"624":1,"629":1,"636":1,"638":1,"659":1,"680":1,"707":1,"734":1,"760":1,"792":1,"822":1,"852":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1023":1,"1027":1,"1057":1,"1061":1,"1095":1,"1124":1,"1129":1,"1148":1,"1185":1,"1216":1,"1237":1,"1260":2,"1267":1,"1291":1,"1310":1,"1362":1,"1373":1,"1374":1,"1384":4,"1396":1,"1468":3,"1477":1,"1495":1,"1503":1,"1530":1,"1532":1,"1553":2,"1554":1,"1555":9,"1559":1,"1566":1,"1568":1,"1571":1,"1600":1,"1627":1,"1632":1,"1669":1,"1670":1,"1671":2,"1708":2,"1715":2,"1735":1,"1837":1,"1843":1,"1844":1,"1897":1,"1901":2,"1925":2,"1932":2,"1946":1,"1967":1,"1977":1,"1981":1,"1992":1,"2069":1,"2070":2,"2073":1,"2099":1,"2104":1,"2152":1,"2169":1,"2171":1,"2209":1,"2220":1,"2255":1,"2278":1,"2288":2,"2299":1,"2301":2,"2349":1,"2390":1,"2394":1,"2479":2,"2484":1,"2489":1,"2519":1,"2529":1,"2533":2,"2552":1,"2585":1,"2598":1,"2603":4,"2604":1,"2605":7,"2606":2,"2614":1,"2615":3,"2626":2,"2627":2,"2628":1,"2632":1,"2633":2,"2635":1,"2637":1,"2653":1,"2712":1,"2713":2,"2715":1,"2716":1,"2717":1,"2722":2,"2727":2,"2728":1,"2731":1,"2733":2,"2734":2,"2736":2,"2737":1,"2739":1,"2741":1,"2776":1,"2777":2}}],["multitude",{"2":{"2562":1}}],["multiarch",{"2":{"2552":1}}],["multimeter",{"2":{"2318":1}}],["multisplash",{"2":{"1766":3,"1987":6,"2750":2}}],["multinexus",{"2":{"1766":3,"1987":3,"2750":1}}],["multicross",{"2":{"1766":3,"1987":3,"2750":1}}],["multiwide",{"2":{"1766":3,"1987":3,"2750":1}}],["multilingual",{"2":{"1392":1,"2742":3}}],["multiprocessing",{"0":{"478":1}}],["multiplier",{"2":{"1857":1,"1900":3,"1948":1}}],["multiplicative",{"2":{"1443":1}}],["multiplication",{"2":{"191":1}}],["multiples",{"2":{"1840":1}}],["multiplexing",{"0":{"1434":1},"2":{"1434":4,"1436":2,"2573":1}}],["multiplexer",{"2":{"563":1}}],["multiple",{"0":{"422":1,"424":1,"1383":1,"1496":1,"1600":1},"1":{"1384":1,"1385":1,"1386":1,"1387":1,"1388":1,"1389":1},"2":{"75":1,"114":1,"145":3,"211":1,"234":2,"236":1,"249":1,"313":1,"374":2,"396":1,"411":2,"415":2,"418":1,"424":1,"453":1,"468":1,"590":1,"617":1,"628":2,"639":1,"679":1,"680":1,"681":1,"697":1,"698":1,"703":1,"708":1,"711":1,"852":1,"1023":1,"1057":1,"1213":1,"1214":1,"1225":1,"1228":1,"1235":1,"1243":1,"1245":1,"1362":2,"1364":1,"1372":1,"1376":1,"1383":1,"1386":1,"1390":1,"1394":3,"1415":1,"1422":1,"1436":1,"1467":1,"1472":1,"1488":1,"1491":1,"1496":2,"1531":1,"1545":1,"1558":1,"1562":1,"1571":1,"1572":1,"1595":1,"1600":1,"1611":1,"1714":1,"1721":1,"1766":4,"1842":1,"1843":1,"1925":1,"1950":4,"1952":3,"1987":5,"2080":1,"2082":1,"2104":1,"2183":1,"2318":1,"2341":2,"2359":1,"2406":1,"2440":1,"2461":1,"2464":1,"2479":1,"2493":1,"2512":1,"2527":1,"2552":1,"2603":1,"2605":2,"2606":1,"2634":1,"2645":1,"2683":1,"2688":1,"2702":1,"2715":1,"2722":1}}],["multiply",{"2":{"25":1}}],["multi",{"0":{"852":1,"1023":1,"1057":1},"2":{"191":1,"211":1}}],["multibuild",{"2":{"160":1,"199":1}}],["mun",{"2":{"114":1}}],["much",{"0":{"2759":1},"2":{"98":1,"100":1,"123":1,"138":1,"163":1,"174":1,"175":1,"189":1,"244":1,"247":1,"248":1,"251":1,"263":1,"355":1,"477":1,"529":1,"555":1,"682":1,"1301":1,"1371":1,"1420":1,"1443":1,"1460":1,"1475":1,"1508":1,"1693":1,"1714":1,"1844":1,"1845":1,"1895":1,"1943":1,"1987":2,"2220":1,"2264":1,"2275":1,"2289":1,"2312":1,"2313":1,"2350":1,"2481":1,"2545":1,"2547":1,"2548":1,"2564":1,"2573":1,"2582":1,"2604":1,"2740":1}}],["mv",{"2":{"70":1}}],["med",{"2":{"1616":22}}],["medium",{"0":{"1142":1},"2":{"1614":1,"1615":1,"1616":5,"2392":2}}],["media",{"0":{"1703":1,"2432":1},"2":{"73":1,"176":1,"266":1,"502":1,"532":1,"1703":1,"1910":3,"1925":1,"2394":9,"2432":13,"2441":1,"2744":1}}],["meh",{"2":{"1336":1,"2412":2,"2413":1,"2449":3}}],["menu",{"0":{"1309":1},"2":{"628":1,"1309":1,"1715":2,"2164":1,"2221":1,"2394":3,"2431":3,"2499":1,"2777":2}}],["mentioned",{"2":{"228":1,"276":1,"682":1,"1305":1,"1701":1,"1763":1,"1984":1,"2200":1,"2374":1,"2389":1}}],["messing",{"2":{"1324":1}}],["messages",{"0":{"1287":1,"1829":1},"2":{"82":1,"145":1,"191":2,"199":2,"222":1,"375":5,"433":1,"556":1,"1138":3,"1284":1,"1285":1,"1286":1,"1287":1,"1825":1,"1829":1,"1944":1,"1964":2,"2301":10,"2318":1,"2527":1,"2678":2,"2794":1}}],["message",{"0":{"1292":1},"2":{"49":1,"93":1,"160":1,"236":1,"343":1,"344":1,"345":1,"349":1,"393":1,"394":1,"395":1,"396":1,"402":1,"403":1,"411":1,"545":1,"554":2,"1291":2,"1538":1,"1854":1,"2489":1,"2507":1,"2513":1,"2527":1,"2603":1,"2614":3,"2616":1}}],["mesh",{"2":{"560":1}}],["meck",{"2":{"253":2}}],["mechanics",{"2":{"2200":1}}],["mechanical",{"0":{"1313":1,"2360":1},"1":{"2361":1,"2362":1,"2363":1,"2364":1,"2365":1},"2":{"502":1,"624":1,"1294":1,"1313":2,"1362":1,"2353":1,"2361":1,"2456":1}}],["mechanism",{"2":{"145":1,"563":1,"569":1,"1610":1,"2578":1}}],["mechanisms",{"2":{"137":1,"606":1}}],["mechmerlin",{"2":{"370":2}}],["mechmini",{"2":{"154":4}}],["mechwild",{"2":{"211":1,"236":1,"266":2}}],["mechkeys",{"0":{"256":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"154":5,"160":2,"266":1}}],["mechloving",{"2":{"134":1}}],["mechlovin9",{"2":{"102":3,"114":1,"211":1}}],["mechlovin",{"2":{"102":3,"134":1,"191":1,"211":9,"222":1,"249":1,"266":2}}],["meant",{"2":{"1401":1,"2556":1,"2644":1}}],["meantime",{"2":{"341":1}}],["mean",{"0":{"562":1},"2":{"263":1,"550":1,"1315":1,"2444":1,"2603":1,"2605":1}}],["means",{"2":{"251":1,"263":1,"324":1,"337":1,"352":1,"396":1,"411":1,"502":1,"554":1,"562":1,"570":1,"613":1,"688":1,"1327":1,"1337":1,"1397":2,"1435":1,"1441":1,"1495":1,"1537":1,"1592":1,"1708":1,"1723":1,"1840":1,"1870":1,"1915":1,"2156":1,"2184":1,"2185":1,"2200":1,"2207":4,"2215":1,"2293":1,"2300":2,"2310":1,"2311":1,"2339":1,"2350":1,"2358":2,"2493":1,"2507":1,"2573":1,"2608":1,"2620":1,"2644":1,"2705":1,"2710":1,"2741":1,"2769":1}}],["meaningful",{"2":{"2608":1}}],["meaning",{"2":{"245":1,"707":1,"726":1,"1262":1,"1339":1,"1362":1,"1373":1,"1475":1,"1571":1,"1825":1,"1870":1,"1911":1,"2311":1,"2350":1,"2450":1,"2614":1}}],["measure",{"2":{"630":1,"1943":1}}],["measured",{"2":{"214":1,"1363":1,"1437":1,"1713":1,"2199":1,"2616":1}}],["measurement",{"2":{"199":1,"2264":1,"2563":1,"2616":1}}],["merchantability",{"2":{"1417":1,"2609":1}}],["mercutio",{"2":{"211":1}}],["merits",{"2":{"1302":1}}],["meridian",{"2":{"211":1}}],["merely",{"2":{"498":1,"2183":1}}],["merges",{"2":{"337":1,"340":1,"344":2,"345":1,"346":1,"350":3}}],["merged",{"2":{"114":1,"134":1,"340":4,"341":2,"343":1,"344":1,"345":1,"349":2,"350":4,"352":1,"399":1,"554":1,"2603":1,"2605":2,"2606":1,"2608":1}}],["merge",{"0":{"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"2512":1},"1":{"349":1,"350":1,"2513":1},"2":{"0":1,"1":1,"75":1,"114":2,"143":1,"176":1,"191":1,"199":2,"201":1,"211":1,"222":2,"275":1,"276":1,"282":3,"337":1,"340":1,"341":3,"345":1,"346":1,"347":2,"349":1,"350":17,"361":2,"478":1,"537":1,"1300":1,"1950":2,"2511":1,"2512":1,"2513":6,"2525":1,"2603":4,"2605":1,"2606":1,"2607":1,"2608":1,"2760":1}}],["merging",{"0":{"361":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"73":1,"191":1,"361":1,"2513":1,"2603":2}}],["metrics",{"2":{"1922":1,"2758":1}}],["met",{"2":{"1600":1}}],["meta",{"2":{"2394":2,"2429":2,"2449":2}}],["metal",{"2":{"2311":1}}],["metaclasses",{"2":{"479":1}}],["metadata",{"0":{"521":1,"2711":1},"2":{"188":1,"191":1,"266":1,"304":2,"317":3,"496":1,"519":2,"521":1,"2337":1,"2537":1,"2710":1}}],["meticulously",{"2":{"201":1}}],["methods=",{"0":{"306":1,"307":1,"308":1,"309":1}}],["methods",{"2":{"151":1,"432":2,"1275":1,"1308":1,"1362":2,"1366":1,"1537":1,"1752":1,"1759":1,"1767":2,"1990":2,"2168":1,"2267":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":2,"2283":2,"2285":2,"2287":2,"2288":1,"2309":1,"2457":1,"2552":1}}],["method",{"0":{"1366":1},"2":{"49":1,"169":1,"184":1,"236":1,"308":1,"309":1,"460":1,"510":1,"1362":1,"1537":2,"1767":1,"1990":1,"2152":1,"2159":1,"2164":2,"2182":1,"2215":1,"2220":1,"2221":2,"2267":1,"2359":1,"2644":1,"2650":1,"2677":1}}],["me",{"0":{"562":1},"2":{"169":2,"184":2,"199":1,"502":1,"550":1,"1311":1,"1369":1,"2209":1,"2456":1,"2461":1,"2467":1}}],["meishi",{"2":{"154":2}}],["meishi2",{"2":{"154":2}}],["meira",{"2":{"154":2}}],["mem",{"2":{"2616":9}}],["memset",{"2":{"1927":2}}],["members",{"0":{"662":1,"737":1,"763":1,"795":1,"825":1,"860":1,"894":1,"928":1,"962":1,"996":1,"1030":1,"1064":1,"1098":1,"1151":1,"1188":1,"1575":1,"1676":1,"1678":1},"2":{"1708":2,"2361":1,"2505":1,"2517":1}}],["member",{"2":{"352":1,"1708":1,"1710":1,"1711":1,"2608":1}}],["memory",{"0":{"1400":1,"2077":1},"2":{"145":1,"236":1,"560":1,"674":2,"675":1,"677":1,"1307":1,"1324":1,"1366":1,"1369":1,"1378":1,"1440":1,"1475":1,"1476":1,"1552":2,"1562":1,"1592":1,"1858":3,"1859":5,"1868":1,"2187":1,"2268":1,"2366":1,"2386":2,"2387":1,"2392":1,"2395":1,"2492":3,"2583":3,"2611":1,"2615":1,"2616":2,"2796":3}}],["memcmp",{"2":{"114":1}}],["melt",{"2":{"2311":1,"2313":1}}],["melting",{"2":{"2311":1}}],["melodies",{"2":{"222":1}}],["melody96",{"2":{"144":2,"145":1,"226":2,"236":1}}],["melgeek",{"2":{"134":1,"253":10}}],["meetup",{"2":{"134":1}}],["mtb60",{"2":{"211":1}}],["mtbkeys",{"2":{"211":1}}],["mt980",{"2":{"144":2}}],["mt84",{"2":{"144":2,"277":1}}],["mt64rgb",{"2":{"144":2,"211":1}}],["mt40",{"2":{"144":2}}],["mt",{"2":{"38":1,"144":6,"145":1,"277":1,"505":2,"1620":1,"2208":1,"2413":1,"2449":1,"2450":1,"2452":2}}],["mkand",{"2":{"2792":1}}],["mkdir",{"2":{"2474":1}}],["mkmakeifeq",{"2":{"2339":1}}],["mkmake",{"2":{"2339":1}}],["mk64fx512",{"2":{"491":1}}],["mk66fx1m0",{"2":{"133":1,"134":1,"491":1}}],["mk66f18",{"2":{"81":1,"93":2,"133":1,"134":1}}],["mk20dx256",{"2":{"491":1}}],["mk20dx128",{"2":{"491":1}}],["mkl26z64",{"2":{"491":1}}],["mk0",{"2":{"199":1}}],["mkiirgb",{"2":{"217":1}}],["mkii",{"2":{"114":1}}],["mk",{"0":{"512":1,"1414":1,"1530":1,"1608":1,"2301":1,"2339":1,"2744":1},"1":{"513":1,"514":1,"515":1,"516":1,"1415":1},"2":{"32":1,"49":1,"50":1,"70":29,"74":1,"76":1,"87":1,"94":1,"103":1,"114":2,"118":2,"119":1,"133":5,"134":8,"152":1,"160":2,"172":1,"191":3,"199":1,"202":1,"211":5,"235":1,"262":1,"266":11,"282":1,"286":1,"374":1,"496":2,"499":1,"508":1,"564":1,"565":1,"566":1,"596":1,"606":3,"607":1,"608":1,"610":2,"613":2,"614":5,"631":1,"643":1,"655":1,"671":1,"678":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1124":1,"1127":2,"1130":2,"1144":1,"1170":1,"1181":1,"1212":1,"1233":1,"1250":1,"1255":1,"1282":1,"1328":1,"1349":1,"1351":1,"1352":1,"1359":1,"1366":1,"1367":2,"1383":1,"1384":2,"1413":2,"1414":7,"1415":1,"1421":2,"1422":2,"1423":1,"1427":1,"1430":1,"1431":1,"1433":1,"1450":2,"1476":1,"1492":1,"1497":1,"1528":1,"1530":2,"1532":1,"1537":1,"1538":1,"1545":1,"1565":1,"1566":1,"1570":1,"1585":1,"1586":1,"1591":1,"1595":1,"1597":1,"1608":1,"1628":1,"1669":1,"1690":1,"1695":1,"1717":1,"1762":1,"1767":2,"1825":1,"1838":1,"1842":1,"1843":22,"1844":2,"1850":1,"1863":1,"1868":1,"1871":1,"1893":1,"1894":1,"1895":1,"1896":1,"1908":1,"1923":1,"1933":1,"1935":1,"1936":1,"1937":1,"1938":1,"1942":1,"1947":1,"1948":1,"1949":1,"1950":2,"1951":1,"1983":1,"1990":2,"2070":2,"2101":1,"2106":1,"2111":1,"2141":1,"2149":1,"2159":1,"2175":1,"2183":1,"2184":1,"2185":1,"2186":1,"2187":1,"2188":1,"2192":1,"2199":1,"2202":1,"2210":1,"2216":1,"2219":2,"2220":1,"2263":1,"2267":1,"2268":1,"2271":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2283":2,"2285":2,"2287":2,"2288":1,"2297":2,"2298":1,"2300":1,"2302":4,"2334":4,"2335":1,"2339":22,"2381":1,"2474":1,"2477":1,"2552":1,"2569":1,"2580":1,"2581":1,"2601":1,"2603":2,"2605":4,"2612":2,"2615":11,"2616":2,"2618":1,"2710":1,"2744":1,"2746":1,"2764":1,"2767":2,"2788":1,"2792":6,"2794":1}}],["mib",{"2":{"2303":2}}],["mimic",{"2":{"2207":1,"2209":1}}],["mi",{"2":{"1825":2,"1831":174,"1832":2,"2301":2,"2410":174}}],["mikrocontroller",{"2":{"1326":1}}],["mike1808",{"2":{"114":1}}],["might",{"2":{"335":1,"341":1,"358":1,"401":1,"502":1,"626":2,"674":2,"1324":2,"1362":2,"1363":6,"1372":1,"1377":1,"1396":1,"1413":1,"1479":1,"1533":1,"1538":1,"1558":1,"1562":1,"1829":1,"1937":1,"1943":1,"2184":1,"2199":1,"2296":1,"2298":1,"2318":1,"2341":1,"2540":1,"2588":1,"2791":1,"2796":1}}],["migrator",{"2":{"65":1}}],["migrations",{"2":{"77":1,"134":1,"199":1,"266":3}}],["migration",{"0":{"38":1,"69":1,"77":1,"265":1,"275":1},"2":{"70":1,"77":1,"113":1,"114":1,"134":2,"160":1,"188":1,"191":1,"199":3,"201":1,"213":1,"238":1,"265":1}}],["migrating",{"0":{"3":1,"7":1,"15":1,"30":1,"36":1},"1":{"31":1},"2":{"167":1,"232":1,"2605":1}}],["migrated",{"2":{"118":1,"126":1,"128":1,"151":1,"209":1,"262":1,"2599":1,"2605":2}}],["migrate",{"0":{"31":1,"34":1,"384":1},"2":{"75":1,"113":1,"114":4,"133":2,"134":6,"160":3,"176":1,"199":7,"211":1,"228":1,"236":9,"249":27,"266":66,"277":11,"384":1,"529":1}}],["mixture",{"2":{"2182":1}}],["mixing",{"2":{"2152":1}}],["mix",{"2":{"1254":1,"1369":1,"1373":1,"2450":1}}],["mixed",{"2":{"282":1,"357":1,"453":1,"560":1,"1449":1}}],["mixup",{"2":{"199":1}}],["mitchsplit",{"0":{"260":1},"2":{"256":1}}],["mitigates",{"2":{"1311":1}}],["mitigated",{"2":{"263":1,"2450":1}}],["mitigate",{"2":{"211":1,"1362":2,"2759":1}}],["mitigation",{"2":{"191":1}}],["miiiw",{"2":{"253":2,"266":1}}],["mice",{"2":{"1899":1,"2323":1,"2361":1}}],["michi",{"0":{"1355":1},"2":{"199":1,"1348":1,"1352":4,"2751":1}}],["micdrop",{"2":{"163":1}}],["microcontrol",{"2":{"2689":1}}],["microcontroller>",{"2":{"371":1}}],["microcontroller",{"0":{"2308":1},"2":{"81":1,"371":2,"486":2,"495":1,"516":1,"641":1,"689":1,"695":1,"697":1,"1498":1,"1508":1,"1668":1,"2164":1,"2305":1,"2314":3,"2317":1,"2350":1,"2366":2,"2378":1,"2386":1,"2387":1,"2605":1,"2712":2,"2757":1}}],["microcontrollers",{"0":{"486":1},"1":{"487":1,"488":1,"489":1,"490":1,"491":1,"492":1,"493":1,"494":1,"495":1},"2":{"69":1,"215":2,"263":1,"495":2,"1849":1,"2275":1,"2281":1,"2366":2,"2592":2,"2764":1}}],["microchip",{"2":{"674":3,"1249":1,"2069":1,"2382":1}}],["microsoft",{"2":{"1309":1,"2552":1}}],["micros",{"2":{"509":1,"625":1,"2157":1,"2158":1,"2370":1,"2578":1,"2584":1,"2694":1}}],["microseconds",{"2":{"502":1,"1251":1,"2728":1}}],["microdox",{"2":{"176":2}}],["micronucleus",{"2":{"160":1}}],["micro",{"0":{"271":1,"1352":1,"1355":1,"2368":1,"2370":1,"2580":1},"1":{"1353":1,"1354":1,"1355":1,"1356":1,"1357":1,"1358":1,"2369":1,"2371":1},"2":{"77":1,"86":2,"93":1,"163":1,"172":1,"176":1,"189":1,"271":2,"487":1,"629":4,"1277":1,"1330":2,"1350":1,"1352":2,"1357":1,"1360":1,"1361":1,"1842":1,"2152":1,"2154":1,"2164":2,"2170":1,"2271":1,"2272":1,"2305":1,"2307":1,"2308":3,"2368":2,"2369":3,"2370":2,"2371":3,"2383":4,"2386":5,"2387":1,"2466":1,"2553":1,"2566":1,"2568":1,"2569":6,"2578":1,"2580":2,"2581":1,"2751":3}}],["mio",{"2":{"154":2}}],["mirrored",{"2":{"2192":1}}],["mirrors",{"2":{"511":1,"2167":1,"2209":3,"2480":1,"2605":1}}],["mirroring",{"2":{"114":1,"126":1,"2605":1}}],["mirror",{"2":{"76":1,"114":1,"160":1,"511":1,"1768":1,"1992":1,"2167":1,"2736":10}}],["minted",{"2":{"2487":1}}],["minus",{"2":{"1622":1,"2394":2,"2427":1,"2433":1}}],["minute",{"0":{"2263":1},"1":{"2264":1,"2265":1,"2266":1},"2":{"1437":1,"2263":1,"2735":1}}],["minutes",{"2":{"1271":1,"2312":1}}],["mine",{"2":{"1420":1,"2303":1}}],["mind",{"2":{"453":1,"479":1,"551":1,"556":1,"560":1,"616":1,"1339":1,"1368":1,"1401":1,"1534":1,"1596":1,"1858":1,"2150":1,"2180":1,"2199":1,"2307":1,"2312":1,"2314":1,"2318":1,"2344":1,"2345":1,"2347":1,"2350":1,"2617":1,"2758":1}}],["mins",{"2":{"313":1,"530":2,"1536":2,"1543":1,"2394":1,"2427":1,"2446":1}}],["mino",{"2":{"222":1,"241":6}}],["minor",{"2":{"49":1,"51":1,"64":1,"86":1,"114":1,"160":1,"176":1,"191":1,"222":2,"1443":1}}],["min",{"0":{"1818":1,"1821":1,"2063":1,"2066":1},"2":{"211":1,"1254":1,"1443":2,"1477":1,"1611":3,"1670":3,"1678":1,"1767":4,"1771":1,"1819":1,"1822":1,"1937":2,"1990":4,"1995":1,"1996":6,"1997":3,"2064":1,"2067":1}}],["mingw64",{"2":{"2499":1,"2547":1,"2552":3}}],["mingw",{"2":{"143":1,"2390":2,"2499":2,"2500":1}}],["minizone",{"2":{"249":1}}],["miniaxe",{"2":{"241":2,"249":1}}],["minitkl",{"2":{"222":1}}],["minitomic",{"2":{"57":2}}],["mini36",{"2":{"191":1}}],["mini42",{"2":{"191":1}}],["minidox",{"2":{"154":2,"160":1,"217":1,"236":1,"277":1}}],["mini",{"2":{"134":1,"154":4,"160":1,"211":3,"1609":1,"2308":1}}],["minimize",{"2":{"556":1}}],["minimise",{"2":{"103":1,"677":1,"679":1,"2614":1,"2757":1}}],["minim",{"2":{"154":2}}],["minimally",{"2":{"2168":1,"2605":1}}],["minimal",{"2":{"128":1,"145":1,"176":1,"215":1,"2200":1,"2343":1,"2615":1,"2744":1,"2758":1,"2759":1}}],["minimum",{"2":{"70":1,"134":1,"222":1,"673":1,"688":2,"689":1,"1671":1,"1678":1,"1940":5,"1944":2,"2070":1,"2092":6,"2264":1,"2587":1,"2605":2,"2633":1,"2792":1}}],["midpoint",{"2":{"1678":1}}],["midway",{"2":{"574":1}}],["midway60",{"2":{"211":1}}],["mid",{"2":{"505":1,"1678":1,"1686":1}}],["middle",{"2":{"50":1,"222":1,"331":1,"698":1,"1398":1,"1572":1,"1901":2,"2787":1}}],["mididevice",{"2":{"1830":1}}],["midi",{"0":{"1444":1,"1824":1,"1827":1,"1828":1,"1830":1,"1834":1,"2410":1},"1":{"1825":1,"1826":1,"1827":1,"1828":1,"1829":2,"1830":2,"1831":1,"1832":1,"1833":1,"1834":1,"1835":1},"2":{"50":1,"63":1,"70":1,"75":1,"111":1,"114":1,"188":1,"191":2,"199":3,"222":1,"231":3,"249":1,"266":1,"515":2,"516":1,"592":1,"1436":4,"1444":1,"1825":4,"1826":1,"1827":2,"1828":2,"1829":3,"1830":15,"1831":147,"1832":1,"1834":2,"1835":9,"2140":1,"2301":3,"2361":1,"2410":148,"2605":2,"2788":1}}],["millimeters",{"2":{"1939":2,"1943":1}}],["millisecond",{"2":{"597":1,"1363":1,"1721":1}}],["milliseconds",{"2":{"25":1,"119":1,"195":1,"502":2,"505":2,"506":1,"597":1,"598":2,"703":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1137":1,"1145":1,"1182":1,"1257":1,"1363":1,"1365":1,"1366":7,"1394":1,"1398":1,"1405":2,"1537":1,"1541":1,"1720":1,"1768":2,"1840":1,"1841":1,"1842":2,"1845":1,"1846":1,"1863":1,"1865":1,"1867":1,"1937":1,"1939":1,"1943":1,"1948":1,"1988":1,"1992":2,"2076":1,"2078":6,"2082":1,"2113":1,"2122":1,"2126":1,"2166":3,"2199":1,"2200":1,"2217":1,"2271":1,"2414":1,"2613":2,"2623":1,"2635":1,"2713":2,"2719":1,"2720":1,"2726":1,"2727":2,"2728":1,"2730":1,"2734":2,"2736":3,"2738":1,"2739":1,"2766":1,"2767":1,"2776":1}}],["mild",{"2":{"211":1}}],["milc",{"2":{"65":2,"95":1,"430":3,"431":1}}],["milk",{"2":{"37":2}}],["misfires",{"2":{"1551":1,"1553":1,"1557":1,"1558":1}}],["miso",{"2":{"1213":2,"1214":5,"2367":1,"2369":1,"2371":2,"2373":1,"2375":2,"2377":2,"2379":2,"2557":1,"2580":1}}],["misterknife",{"2":{"211":3}}],["mistaken",{"2":{"2156":1}}],["mistakenly",{"2":{"243":1}}],["mistake",{"2":{"92":1}}],["mishandling",{"2":{"199":1}}],["mis",{"2":{"199":1,"211":1}}],["mismatch",{"2":{"191":1,"349":1}}],["mismatched",{"2":{"160":1}}],["miscellaneous",{"0":{"1322":1},"1":{"1323":1,"1324":1,"1325":1,"1326":1,"1327":1,"1328":1,"1329":1,"1330":1,"1331":1,"1332":1,"1333":1,"1334":1,"1335":1},"2":{"211":1,"222":1,"266":3}}],["misc",{"2":{"160":1,"249":2,"266":3,"277":1,"1910":1}}],["misconfigured",{"2":{"28":1}}],["miss",{"2":{"545":1,"2437":1,"2450":1}}],["mission",{"2":{"199":2,"2394":2,"2432":2}}],["missing",{"2":{"28":1,"73":1,"92":1,"93":1,"134":4,"145":1,"160":4,"176":2,"182":1,"191":3,"199":2,"201":1,"211":4,"236":2,"249":1,"2332":1,"2462":1,"2603":1,"2623":1}}],["missed",{"2":{"145":1,"160":1,"236":1}}],["misplaced",{"2":{"134":1}}],["mocks",{"2":{"2790":1}}],["mock",{"0":{"2790":1},"2":{"2790":1}}],["mocking",{"2":{"485":1,"2792":2}}],["moff",{"2":{"2194":1,"2422":1}}],["mood",{"2":{"2074":1,"2075":2,"2078":1,"2101":1,"2733":1,"2750":1}}],["moonlander",{"2":{"191":1,"199":1,"241":2,"249":1,"277":2}}],["mounting",{"2":{"2314":1}}],["mount",{"2":{"2305":1,"2308":1}}],["mounted",{"2":{"2069":1,"2567":1}}],["mousing",{"2":{"1963":1}}],["mousereport",{"2":{"1956":6}}],["mouse=true",{"2":{"1282":1}}],["mousekey",{"2":{"63":1,"70":1,"75":1,"111":1,"114":1,"188":1,"191":2,"209":1,"222":1,"236":1,"507":5,"515":1,"516":2,"1324":1,"1841":16,"1842":12,"1845":13,"1846":7,"2101":1,"2301":1,"2744":1}}],["mousekeysaccel",{"2":{"1841":1}}],["mousekeys",{"0":{"2691":1},"2":{"48":1,"145":1,"176":1,"191":1,"505":1,"1933":1,"2691":1}}],["mouse",{"0":{"246":1,"507":1,"1326":1,"1836":1,"1837":1,"1838":1,"1839":1,"1840":1,"1846":1,"1847":1,"1891":1,"1899":1,"1902":1,"1903":1,"1904":1,"1956":1,"1958":1,"1959":1,"1965":1,"1970":1,"1971":1,"1972":1,"1974":1,"1977":1,"1979":1,"1981":1,"2411":1,"2729":1},"1":{"1837":1,"1838":2,"1839":2,"1840":1,"1841":2,"1842":2,"1843":2,"1844":2,"1845":2,"1846":2,"1847":1,"1892":1,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1898":1,"1899":1,"1900":1,"1901":1,"1902":1,"1903":1,"1904":1,"1905":1,"1906":1,"1957":1,"1958":1,"1959":1,"1960":1,"1961":1,"1962":1,"1963":1,"1966":1,"1967":1,"1968":1,"1969":1,"1970":1,"1971":2,"1972":3,"1973":1,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1},"2":{"48":1,"74":3,"100":1,"112":7,"114":5,"133":1,"134":1,"145":3,"160":1,"175":5,"176":4,"190":6,"191":7,"211":2,"222":3,"231":1,"236":2,"246":3,"249":1,"266":2,"277":3,"502":1,"505":1,"515":1,"516":4,"540":1,"1468":1,"1528":1,"1568":2,"1569":2,"1836":2,"1837":3,"1838":1,"1839":39,"1840":1,"1842":5,"1843":2,"1845":1,"1846":4,"1847":3,"1891":1,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1899":18,"1900":5,"1901":12,"1902":1,"1903":4,"1904":3,"1905":5,"1906":4,"1910":4,"1925":1,"1940":6,"1950":8,"1951":4,"1952":3,"1954":14,"1955":9,"1956":13,"1958":4,"1959":12,"1960":17,"1961":1,"1962":10,"1963":3,"1965":7,"1966":7,"1967":15,"1968":1,"1969":9,"1970":5,"1971":4,"1972":3,"1973":1,"1974":33,"1975":11,"1977":10,"1978":16,"1979":10,"1980":8,"1981":10,"2184":1,"2188":1,"2411":39,"2463":1,"2691":1,"2729":3,"2731":2,"2738":2,"2783":1}}],["motivations",{"2":{"2758":1}}],["motion",{"2":{"190":1,"191":1,"1845":1,"1937":1,"1950":3,"1952":7,"1965":1}}],["motions",{"2":{"175":1}}],["motors",{"2":{"1613":1,"1614":1}}],["motor",{"0":{"1613":1},"1":{"1614":1,"1615":1},"2":{"1609":1,"1613":1,"1614":2,"1615":2}}],["momokai",{"2":{"266":1}}],["moment",{"2":{"211":2,"1148":1,"1713":5,"2529":1,"2531":1,"2654":1,"2787":1}}],["momentarily",{"2":{"73":1,"1372":4,"1844":1,"2211":2,"2406":3,"2529":1,"2767":1}}],["momentary",{"0":{"3":1,"2209":1},"2":{"199":1,"1312":1,"1372":1,"1555":5,"1620":2,"1693":1,"1706":3,"1843":8,"2194":4,"2210":1,"2422":4,"2529":1}}],["mojo75",{"2":{"253":2}}],["mojo68",{"2":{"253":2}}],["morgan65",{"2":{"211":2}}],["moreover",{"2":{"2152":1}}],["more",{"0":{"1694":1,"2300":1},"1":{"2301":1,"2302":1},"2":{"2":1,"6":2,"8":1,"10":2,"14":1,"16":1,"24":1,"46":1,"49":1,"76":1,"82":1,"93":1,"99":2,"107":1,"109":1,"111":1,"112":1,"114":6,"118":1,"133":2,"134":4,"137":1,"138":2,"145":1,"160":6,"166":1,"172":1,"174":1,"176":4,"179":1,"182":1,"190":3,"191":4,"194":2,"195":1,"196":1,"198":1,"199":6,"206":1,"211":6,"213":1,"222":2,"224":1,"228":2,"229":1,"231":1,"232":1,"236":3,"245":1,"247":1,"248":1,"249":1,"251":1,"265":1,"266":1,"318":1,"334":1,"341":1,"355":2,"363":1,"367":1,"371":1,"408":1,"409":1,"410":1,"418":1,"446":1,"453":1,"455":1,"462":1,"470":2,"479":1,"481":1,"482":1,"496":1,"502":2,"506":1,"511":2,"513":1,"515":2,"516":1,"540":1,"554":1,"556":1,"566":1,"567":3,"612":1,"615":1,"624":2,"626":2,"628":1,"630":2,"638":1,"639":1,"677":1,"680":1,"689":1,"701":2,"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1121":1,"1128":1,"1213":1,"1254":1,"1272":1,"1278":1,"1304":1,"1306":1,"1327":1,"1335":1,"1337":2,"1338":1,"1358":1,"1363":1,"1372":1,"1375":1,"1376":1,"1377":3,"1394":2,"1396":1,"1413":1,"1417":1,"1419":1,"1426":1,"1427":1,"1441":1,"1442":2,"1448":1,"1451":1,"1453":2,"1460":1,"1467":1,"1488":1,"1508":1,"1528":1,"1535":1,"1545":1,"1548":1,"1552":1,"1553":1,"1557":1,"1562":1,"1587":1,"1592":1,"1600":1,"1627":1,"1693":1,"1700":2,"1704":1,"1708":1,"1721":1,"1723":1,"1752":1,"1763":2,"1767":1,"1825":1,"1829":1,"1840":1,"1841":1,"1846":1,"1859":1,"1891":1,"1907":1,"1912":1,"1922":1,"1934":1,"1960":1,"1965":1,"1973":1,"1981":1,"1984":2,"1990":1,"1992":1,"1996":1,"1997":1,"2070":1,"2082":1,"2098":1,"2183":1,"2186":1,"2189":1,"2190":1,"2199":2,"2200":1,"2207":2,"2216":1,"2221":1,"2264":2,"2267":1,"2296":1,"2297":2,"2300":4,"2301":4,"2307":2,"2308":2,"2309":2,"2311":1,"2312":1,"2313":1,"2321":1,"2326":1,"2327":1,"2328":1,"2329":1,"2330":1,"2336":1,"2337":1,"2338":1,"2339":1,"2350":2,"2352":1,"2362":1,"2374":1,"2383":1,"2386":1,"2387":1,"2393":1,"2413":1,"2424":1,"2445":2,"2447":3,"2448":1,"2449":2,"2479":1,"2489":1,"2493":1,"2494":1,"2499":1,"2517":1,"2525":1,"2527":1,"2529":1,"2534":1,"2549":1,"2552":1,"2582":1,"2590":1,"2591":1,"2592":3,"2600":1,"2604":2,"2606":1,"2607":1,"2608":1,"2609":1,"2613":3,"2616":2,"2617":1,"2651":1,"2653":1,"2654":2,"2700":1,"2703":1,"2710":3,"2740":1,"2750":1,"2763":1,"2766":2,"2767":1,"2774":1,"2775":2,"2776":1,"2777":1,"2778":1,"2793":1,"2796":1}}],["monsgeek",{"2":{"2282":1}}],["monstargear",{"2":{"211":1}}],["mon",{"2":{"2194":1,"2422":1}}],["monitor",{"2":{"1845":1}}],["monitors",{"2":{"1571":1}}],["month",{"2":{"337":1,"2608":1}}],["months",{"2":{"251":1,"481":1,"2759":1}}],["montex",{"2":{"154":2,"160":1}}],["mono1bpp",{"2":{"2615":1}}],["mono16",{"2":{"2614":4}}],["mono2",{"2":{"2614":3,"2615":2}}],["mono256",{"2":{"2614":3}}],["mono4",{"2":{"2614":4}}],["monochrome",{"2":{"2612":6,"2615":1,"2616":3}}],["mono",{"2":{"249":2,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1181":1}}],["monokei",{"2":{"241":3,"249":1}}],["monksoffunk",{"2":{"160":1}}],["mona",{"2":{"102":3,"197":6}}],["mobile",{"2":{"145":1,"160":1}}],["movable",{"2":{"1668":1}}],["movements",{"2":{"1390":1,"1840":1,"1841":4,"1842":15,"1843":4,"1844":1,"1845":3,"1846":1,"2301":1}}],["movement",{"0":{"1906":1},"2":{"48":1,"74":1,"175":2,"246":1,"249":1,"1840":5,"1841":4,"1842":5,"1843":5,"1845":2,"1846":1,"1893":1,"1899":1,"1906":1,"1937":5,"1956":3,"1959":2,"1960":1,"1969":1,"1980":1}}],["moved",{"2":{"43":1,"50":1,"56":1,"57":1,"67":1,"72":1,"86":1,"102":1,"114":1,"122":1,"144":1,"154":1,"160":1,"168":1,"181":1,"197":1,"198":1,"201":2,"204":1,"222":1,"279":1,"602":1,"1341":1,"1906":1,"2321":1,"2523":1,"2524":1,"2605":1,"2743":1}}],["moves",{"0":{"37":1},"2":{"337":1,"1840":2,"1860":2,"2071":1,"2181":2,"2199":1,"2446":1,"2605":1}}],["move",{"2":{"21":1,"36":1,"37":1,"50":1,"72":1,"75":1,"94":1,"100":2,"113":6,"114":14,"133":7,"134":9,"141":1,"145":11,"160":58,"167":1,"176":6,"188":1,"191":7,"199":11,"211":38,"222":16,"236":6,"241":1,"249":12,"253":1,"255":2,"266":2,"270":1,"277":3,"388":1,"1378":1,"1381":1,"1442":1,"1605":1,"1637":1,"1641":1,"1642":2,"1643":1,"1665":1,"1667":1,"1789":1,"1790":1,"1791":1,"1792":1,"1831":2,"1836":1,"1840":1,"1841":1,"1842":3,"1845":4,"1846":2,"2016":1,"2017":1,"2018":1,"2019":1,"2117":1,"2199":1,"2312":1,"2315":1,"2346":1,"2410":2,"2465":1,"2489":1,"2509":1,"2605":2,"2654":1}}],["movings",{"2":{"303":1}}],["moving",{"0":{"16":1},"2":{"36":1,"37":1,"43":1,"111":1,"113":1,"191":1,"275":1,"453":1,"1373":1,"1722":1,"1844":1,"1859":1,"1860":2,"1901":1,"1933":1,"1945":1,"1952":1,"1959":1,"1987":3,"2181":2,"2309":1,"2312":1,"2450":1,"2607":1,"2750":1}}],["mosy",{"2":{"2307":1}}],["mosi",{"2":{"1213":2,"1214":5,"1260":1,"1263":2,"2367":1,"2369":1,"2371":2,"2373":1,"2375":2,"2377":2,"2379":2,"2557":1,"2580":1,"2615":2}}],["most",{"0":{"2743":1},"1":{"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1,"2750":1},"2":{"70":1,"118":1,"124":1,"131":1,"143":1,"182":2,"194":1,"214":1,"215":2,"221":1,"233":1,"234":1,"249":2,"251":1,"263":2,"307":1,"336":1,"432":1,"433":1,"434":1,"440":1,"453":1,"454":1,"455":1,"488":1,"498":1,"499":1,"502":2,"529":1,"555":1,"560":1,"569":1,"574":3,"575":1,"592":1,"610":1,"613":1,"623":2,"643":1,"679":1,"700":1,"1169":1,"1170":1,"1212":1,"1233":1,"1250":1,"1253":1,"1278":1,"1279":1,"1302":1,"1309":1,"1313":1,"1315":1,"1371":2,"1374":1,"1375":1,"1377":1,"1383":1,"1396":1,"1397":1,"1412":1,"1427":1,"1434":1,"1478":2,"1482":1,"1492":1,"1495":1,"1496":1,"1602":1,"1611":1,"1615":1,"1670":1,"1722":1,"1723":1,"1840":1,"1845":1,"1900":1,"1936":1,"1943":2,"1977":1,"2085":1,"2152":1,"2156":1,"2172":1,"2182":1,"2186":1,"2187":2,"2219":2,"2220":1,"2300":2,"2301":1,"2303":1,"2311":1,"2323":1,"2344":1,"2363":1,"2366":1,"2367":1,"2389":1,"2439":1,"2440":1,"2457":1,"2460":2,"2507":4,"2587":2,"2592":1,"2605":1,"2615":1,"2649":1,"2665":1,"2668":1,"2676":1,"2685":1,"2707":1,"2741":1,"2744":2,"2746":1,"2751":1,"2757":1,"2768":1,"2782":2,"2789":1}}],["mostly",{"2":{"8":1,"199":1,"377":1,"1302":1,"2152":1,"2383":1,"2547":1}}],["mosfet",{"2":{"14":2,"1495":2,"1508":2,"1611":1}}],["modu",{"2":{"1831":1,"2410":1}}],["modulation",{"2":{"1491":1,"1825":1,"1831":6,"1832":1,"2410":6}}],["modular",{"2":{"16":1}}],["modules",{"2":{"93":1,"479":2,"674":1,"675":1,"1528":1,"1627":2,"1849":2,"2174":1,"2323":1}}],["module",{"2":{"6":1,"428":1,"457":5,"460":1,"461":1,"470":2,"485":1,"674":1,"675":1,"1318":1,"1627":1,"1891":3,"1892":1,"1948":2,"2174":1,"2614":1,"2615":1}}],["modd",{"2":{"1831":1,"2410":1}}],["modded",{"2":{"176":1,"1407":1,"2266":2}}],["modtaps",{"2":{"1337":1}}],["modifer",{"2":{"2150":2,"2167":1}}],["modifying",{"2":{"453":1,"481":2,"626":1,"1375":1,"1487":1,"2348":1,"2354":1,"2363":1}}],["modify",{"2":{"125":1,"185":1,"211":1,"221":1,"236":1,"481":1,"529":1,"703":2,"1214":2,"1235":1,"1337":1,"1372":1,"1397":1,"1417":1,"1437":1,"1572":1,"1758":1,"1954":2,"1955":2,"1959":1,"1960":1,"2070":1,"2078":1,"2080":1,"2190":1,"2354":1,"2480":1,"2605":1,"2609":1,"2690":1,"2765":1}}],["modifiable",{"2":{"1933":1}}],["modification",{"0":{"2099":1},"2":{"65":1,"479":1,"1315":1,"1987":1,"2069":1,"2796":2}}],["modifications",{"2":{"21":1,"282":3,"341":1,"455":1,"1308":1,"2295":1,"2552":2,"2589":1,"2603":1,"2606":1}}],["modifiers",{"0":{"1321":1,"1451":1,"1697":1,"1698":1,"1699":1,"1700":1,"1706":1,"1715":1,"2412":1,"2429":1},"1":{"1711":1,"1712":1,"1713":1},"2":{"99":1,"112":1,"145":1,"222":1,"503":1,"505":1,"623":1,"1321":3,"1337":15,"1340":2,"1372":2,"1373":5,"1401":1,"1403":1,"1423":1,"1451":3,"1467":1,"1468":1,"1545":1,"1560":3,"1692":1,"1693":4,"1697":3,"1699":1,"1703":1,"1708":7,"1709":4,"1711":5,"1712":1,"1714":1,"1766":1,"1915":1,"1997":1,"2150":1,"2437":1,"2449":1,"2450":2,"2452":1,"2529":2,"2736":1,"2748":1}}],["modifier",{"0":{"1311":1,"1312":1,"1336":1,"1337":1,"1553":1,"1716":1,"2690":1,"2693":1},"1":{"1338":1,"1339":1,"1340":1,"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1722":1,"1723":1,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1},"2":{"74":1,"99":1,"194":2,"211":1,"231":4,"511":1,"1312":3,"1321":5,"1336":3,"1337":15,"1339":1,"1340":4,"1372":1,"1373":1,"1397":2,"1398":2,"1401":1,"1467":1,"1468":1,"1479":1,"1482":2,"1553":1,"1593":1,"1620":2,"1672":1,"1692":1,"1693":3,"1697":1,"1704":1,"1706":1,"1708":7,"1709":2,"1711":3,"1712":2,"1713":2,"1714":2,"1715":4,"1764":2,"1914":2,"1917":1,"1965":1,"1985":2,"1997":1,"2150":6,"2151":7,"2167":1,"2412":1,"2449":2,"2450":1,"2530":2,"2693":1,"2736":1,"2767":1,"2777":3}}],["modified",{"2":{"2":1,"8":1,"74":1,"160":1,"221":2,"453":1,"474":1,"1180":1,"1294":1,"1378":1,"1713":1,"1844":1,"1916":1,"2208":1,"2278":1,"2288":1,"2382":1,"2507":1,"2603":1,"2605":1,"2607":1,"2767":1,"2774":1,"2796":1}}],["modifies",{"2":{"0":1,"9":1,"19":1,"30":1,"33":1,"39":1,"52":1,"337":1,"1987":2,"2796":1}}],["moderate",{"2":{"2318":1}}],["modern",{"2":{"1129":1,"1309":1,"1313":1,"1536":1,"2219":1,"2301":1,"2309":1,"2316":1,"2320":1}}],["modernize",{"2":{"222":1,"236":2}}],["modernise",{"2":{"222":2}}],["modemmanager",{"2":{"1276":4}}],["mode=guest",{"2":{"624":1}}],["modelled",{"2":{"2168":1}}],["models",{"2":{"1366":1}}],["modelh",{"2":{"217":2}}],["modelm101",{"2":{"207":2}}],["modelm",{"0":{"204":1},"2":{"160":1,"207":3}}],["model",{"2":{"125":1,"154":2,"160":1,"185":1,"204":2,"207":12,"217":1,"222":2,"1939":1,"2605":1,"2795":1}}],["model01",{"2":{"37":2}}],["modes",{"0":{"124":1,"2221":1,"2768":1},"1":{"2769":1,"2770":1,"2771":1,"2772":1,"2773":1,"2774":1,"2775":1},"2":{"114":1,"124":2,"134":1,"186":2,"235":1,"1134":1,"1440":2,"1445":1,"1766":1,"1840":2,"1891":1,"1943":1,"1986":3,"1987":2,"2072":2,"2074":1,"2075":2,"2078":2,"2169":1,"2217":2,"2221":6,"2222":2,"2396":1,"2415":2,"2416":2,"2423":2,"2639":1,"2768":2,"2769":1}}],["mode",{"0":{"186":1,"429":1,"1217":1,"1277":1,"1440":1,"1618":1,"1785":2,"1787":2,"1793":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1944":1,"1945":1,"1946":1,"2012":2,"2014":2,"2020":1,"2090":1,"2091":1,"2224":1,"2226":2,"2228":1,"2229":1,"2230":2,"2232":2,"2489":1,"2773":1},"1":{"1218":1,"1219":1,"1441":1,"1442":1,"1786":2,"1788":2,"1794":1,"2013":2,"2015":2,"2021":1,"2225":1,"2227":2,"2231":2,"2233":2},"2":{"49":3,"93":1,"118":2,"134":1,"145":2,"175":1,"176":8,"183":4,"190":1,"191":2,"211":3,"230":1,"231":1,"240":2,"266":1,"429":1,"582":3,"626":4,"627":1,"629":1,"638":1,"656":2,"690":1,"696":2,"703":4,"707":2,"1126":1,"1127":1,"1129":2,"1130":2,"1140":1,"1141":1,"1142":1,"1169":1,"1214":10,"1218":3,"1231":1,"1235":8,"1262":2,"1263":2,"1267":1,"1276":1,"1282":2,"1287":2,"1307":2,"1320":1,"1323":1,"1324":2,"1325":2,"1369":10,"1433":1,"1434":1,"1435":7,"1436":8,"1438":1,"1440":13,"1441":1,"1442":2,"1443":3,"1445":7,"1500":1,"1506":1,"1610":3,"1611":2,"1617":3,"1618":1,"1627":1,"1765":2,"1767":2,"1768":2,"1786":1,"1788":1,"1811":1,"1841":2,"1842":3,"1843":3,"1844":5,"1845":6,"1846":2,"1854":1,"1857":2,"1859":1,"1899":5,"1936":2,"1943":10,"1945":2,"1946":2,"1961":1,"1962":7,"1986":15,"1989":3,"1990":2,"1992":2,"1998":1,"2013":1,"2015":1,"2056":1,"2072":22,"2073":3,"2074":15,"2075":10,"2076":1,"2090":9,"2095":2,"2164":1,"2167":1,"2183":1,"2184":1,"2187":4,"2190":8,"2217":4,"2218":6,"2221":22,"2222":8,"2224":1,"2225":1,"2226":1,"2227":2,"2228":1,"2229":1,"2230":1,"2231":2,"2232":1,"2233":2,"2234":1,"2235":1,"2236":1,"2237":1,"2268":1,"2273":1,"2275":1,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2301":1,"2303":1,"2383":1,"2395":3,"2396":7,"2408":2,"2415":22,"2416":2,"2423":8,"2489":3,"2494":1,"2556":1,"2563":2,"2569":1,"2605":1,"2611":3,"2615":11,"2711":1,"2746":2,"2768":9,"2769":1,"2774":4,"2775":6}}],["mods",{"0":{"1409":1,"1410":1,"1699":1,"1700":1,"1914":1,"1916":1,"2170":1},"1":{"1915":1,"1916":1,"1917":1,"2171":1},"2":{"38":5,"63":2,"160":1,"191":1,"199":2,"222":3,"266":1,"317":1,"502":1,"505":1,"511":2,"1321":4,"1337":40,"1339":1,"1340":3,"1401":1,"1408":1,"1409":1,"1410":1,"1422":5,"1440":1,"1467":2,"1482":1,"1483":5,"1538":1,"1543":2,"1553":2,"1560":5,"1561":2,"1568":1,"1699":1,"1706":2,"1708":5,"1709":2,"1711":2,"1712":2,"1715":5,"1766":3,"1907":3,"1910":1,"1911":6,"1912":1,"1913":1,"1914":1,"1915":1,"1916":7,"1917":4,"1919":1,"1920":5,"1921":5,"1987":3,"2150":1,"2167":1,"2208":2,"2266":6,"2406":2,"2444":2,"2450":2,"2529":3,"2530":30,"2605":1,"2727":1,"2734":1,"2750":1,"2777":4}}],["mod",{"0":{"194":1,"206":1,"1343":1,"1620":1,"2208":1,"2413":1,"2449":1,"2451":1},"1":{"2450":1,"2451":1,"2452":2,"2453":2,"2454":2,"2455":1},"2":{"22":2,"38":11,"98":1,"112":2,"134":1,"176":1,"191":1,"194":17,"199":3,"203":2,"206":2,"211":4,"317":1,"502":1,"505":5,"530":2,"1337":29,"1339":1,"1340":7,"1343":1,"1372":5,"1373":8,"1398":1,"1401":1,"1407":1,"1422":6,"1467":1,"1468":1,"1469":1,"1482":1,"1483":10,"1537":3,"1538":1,"1540":1,"1543":2,"1546":1,"1555":5,"1560":2,"1561":2,"1568":1,"1620":4,"1672":2,"1692":1,"1701":1,"1703":9,"1704":2,"1706":7,"1708":4,"1709":3,"1715":18,"1723":1,"1831":1,"1910":11,"1911":2,"1916":2,"1917":1,"1965":6,"1966":1,"1986":1,"2150":13,"2151":2,"2171":1,"2208":2,"2266":5,"2406":4,"2410":1,"2413":3,"2416":1,"2418":2,"2437":1,"2444":1,"2449":16,"2450":1,"2452":1,"2455":1,"2529":7,"2530":9,"2605":1,"2693":2,"2726":1,"2745":1,"2748":3,"2767":2,"2769":1,"2773":1,"2777":19}}],["mo",{"0":{"3":1},"2":{"313":5,"530":2,"532":2,"573":1,"1302":1,"1372":4,"1548":1,"1555":1,"1593":1,"1620":1,"1966":1,"2209":3,"2210":1,"2406":3,"2446":2,"2447":2,"2529":1,"2605":2}}],["mail",{"2":{"2394":2,"2432":2}}],["mainstream",{"2":{"1713":1}}],["mainly",{"2":{"198":1,"201":1,"213":1,"224":1,"238":2,"278":1,"1257":1,"1337":1}}],["maintenance",{"2":{"198":1,"213":1,"236":1,"238":1,"251":1,"268":1,"606":2,"2585":1,"2605":1}}],["maintenence",{"2":{"24":1}}],["maintains",{"2":{"559":1,"609":1,"1302":1,"1475":1,"2269":1,"2276":1,"2361":1,"2470":1,"2497":1,"2500":1}}],["maintained",{"2":{"262":1,"559":2,"610":1,"1302":2,"2505":1,"2595":1,"2711":1}}],["maintainers",{"0":{"320":1},"2":{"124":1,"173":1,"204":1,"265":1,"282":3,"318":1,"341":3,"529":1,"550":1,"1767":1,"1990":1,"2505":1,"2591":1,"2758":1}}],["maintainer",{"2":{"70":1,"111":1,"554":3,"559":1,"609":1,"624":1,"2592":2,"2595":1,"2605":1,"2654":1,"2710":1,"2711":2}}],["maintainability",{"2":{"262":1,"457":1,"468":1}}],["maintain",{"2":{"70":1,"114":1,"228":1,"367":1,"429":1,"462":1,"561":1,"606":1,"1422":1,"1435":1,"1756":1,"2301":2,"2480":2,"2585":1,"2758":1}}],["maintaining",{"2":{"70":1,"1987":1,"2331":1,"2764":1}}],["main",{"0":{"2783":1},"1":{"2784":1,"2785":1,"2786":1,"2787":1,"2788":1},"2":{"22":1,"49":1,"50":1,"65":1,"112":1,"113":1,"114":1,"191":1,"199":1,"228":2,"236":1,"305":1,"306":1,"323":1,"336":1,"428":1,"432":1,"496":1,"560":1,"574":1,"1330":2,"1340":1,"1443":1,"1501":1,"1860":1,"1927":1,"2167":2,"2181":1,"2200":1,"2290":1,"2346":2,"2355":1,"2443":1,"2445":1,"2457":1,"2477":2,"2480":1,"2484":2,"2489":1,"2605":1,"2736":1,"2758":1,"2782":6,"2783":2}}],["male",{"2":{"2314":1}}],["ma",{"2":{"502":1,"2738":1}}],["magnet",{"2":{"1615":1,"2309":1}}],["magenta",{"2":{"435":1,"1369":1,"1991":2,"2096":2}}],["magic+n",{"2":{"2301":1}}],["magic+d",{"2":{"1292":1,"2301":1}}],["magic",{"0":{"2344":1,"2409":1,"2435":1,"2748":1},"2":{"114":1,"160":1,"199":4,"226":2,"231":3,"236":2,"477":1,"502":1,"505":2,"515":2,"626":1,"1292":1,"1308":1,"1325":1,"1436":4,"1535":4,"1565":2,"1566":2,"1568":31,"2301":4,"2344":1,"2409":36,"2435":37,"2552":5,"2605":1,"2626":1,"2633":1,"2744":3,"2748":4,"2788":1}}],["making",{"0":{"1387":1,"2527":1},"1":{"1388":1,"1389":1},"2":{"130":1,"194":2,"282":3,"341":1,"401":1,"556":1,"559":1,"1324":1,"1363":1,"1367":1,"1422":1,"1467":1,"2156":1,"2269":2,"2276":2,"2313":1,"2444":1,"2456":1,"2530":2,"2616":2,"2751":1,"2783":1,"2785":2}}],["makemusic",{"2":{"2746":1}}],["makemidi",{"2":{"1825":1}}],["makelto",{"2":{"2744":1}}],["makeled",{"2":{"1762":1}}],["makeleader",{"2":{"1717":1}}],["makequantum",{"2":{"2612":1,"2615":11,"2618":1}}],["makeucis",{"2":{"2220":1}}],["makeunicodemap",{"2":{"2219":1}}],["makeunicode",{"2":{"2216":1,"2219":1}}],["makeuart",{"2":{"1233":1}}],["maketri",{"2":{"2210":1}}],["makepointing",{"2":{"1933":1,"1935":1,"1936":1,"1937":1,"1938":1,"1942":2,"1947":1,"1948":1,"1949":1,"1950":2,"1951":1}}],["makeps2",{"2":{"1893":1,"1894":1,"1896":1}}],["makeprogrammable",{"2":{"1871":1}}],["makeos",{"2":{"1863":1}}],["makeoled",{"2":{"1850":1,"1851":2}}],["makejoystick",{"2":{"1669":2}}],["makehd44780",{"2":{"1628":1}}],["makehaptic",{"2":{"1608":1}}],["makeencoder",{"2":{"1595":1,"1597":1}}],["makedip",{"2":{"1586":1}}],["makedigitizer",{"2":{"1570":1}}],["makeboard",{"2":{"2581":1}}],["makebootmagic",{"2":{"1532":1}}],["makebluetooth",{"2":{"1530":1}}],["makebacklight",{"2":{"1492":1,"1498":1,"1499":1,"1500":1,"1501":1}}],["makeifdef",{"2":{"1414":1}}],["makeifeq",{"2":{"1414":1,"1421":1,"1422":1}}],["makei2c",{"2":{"700":1}}],["makews2812",{"2":{"1250":1,"1256":1,"1257":1,"1258":1,"1259":1,"1260":1}}],["makeconsole",{"2":{"1868":1,"2744":1}}],["makecommand",{"2":{"1538":1,"1566":1,"2149":1}}],["makecommon",{"2":{"655":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1170":1,"1181":1}}],["makecaps",{"2":{"1537":1}}],["makecustom",{"2":{"565":1,"566":1}}],["makeavr",{"2":{"2744":1}}],["makeautocorrect",{"2":{"1476":1}}],["makeaudio",{"2":{"684":1}}],["makeapa102",{"2":{"643":1}}],["makeanalog",{"2":{"631":1}}],["makergblight",{"2":{"2070":2}}],["makergb",{"2":{"1983":1}}],["makeraw",{"2":{"1923":1}}],["makers",{"2":{"496":1}}],["makerepeat",{"2":{"202":1,"1908":1}}],["maker",{"0":{"1271":1},"1":{"1272":1},"2":{"114":1,"1271":2,"1272":1,"1273":2,"2334":1,"2336":1}}],["makefilepin",{"2":{"1351":1}}],["makefileifeq",{"2":{"292":1}}],["makefiles",{"2":{"222":2,"559":1}}],["makefile",{"0":{"2302":1},"2":{"49":1,"133":2,"134":2,"160":3,"198":1,"199":2,"291":1,"331":1,"512":1,"1291":1,"1324":1,"1325":1,"1335":1,"2300":1,"2540":1,"2552":1}}],["makesteno",{"2":{"2184":1,"2185":1,"2186":1,"2187":1}}],["makest7565",{"2":{"2175":1}}],["makespace",{"2":{"2744":1}}],["makesplit",{"2":{"2159":2}}],["makespi",{"2":{"1212":1}}],["makesequencer",{"2":{"2141":1}}],["makesend",{"2":{"2111":1}}],["makesecure",{"2":{"2106":1}}],["makeserial",{"2":{"1124":1,"1127":2,"1130":2}}],["makesrc",{"2":{"564":1,"2616":2}}],["makes",{"2":{"17":1,"123":1,"363":1,"453":1,"481":1,"496":1,"505":1,"513":1,"1302":1,"1336":1,"1339":1,"1469":1,"1536":1,"1553":1,"1841":2,"1842":1,"1845":1,"1862":1,"1910":1,"1914":1,"1937":1,"1974":1,"1977":1,"1992":1,"2166":1,"2263":1,"2289":1,"2339":1,"2350":1,"2447":1,"2457":1,"2547":1,"2549":1,"2604":1,"2616":1,"2703":1,"2774":2,"2775":1}}],["make",{"0":{"409":1,"554":1,"1306":1,"1697":1,"1698":1,"1699":1,"1700":1,"2270":1,"2272":1,"2277":1,"2279":1,"2284":1,"2286":1,"2300":1,"2363":1,"2640":1,"2686":1},"1":{"2301":1,"2302":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1},"2":{"2":1,"10":1,"18":4,"21":1,"24":1,"31":1,"36":2,"49":2,"55":1,"65":2,"70":1,"76":1,"94":2,"107":1,"114":7,"119":1,"131":1,"133":2,"134":4,"145":1,"160":2,"175":1,"176":8,"189":1,"191":2,"199":3,"211":5,"236":2,"249":2,"265":1,"304":1,"322":1,"331":1,"334":1,"355":1,"360":2,"370":4,"396":2,"401":1,"407":1,"411":3,"432":1,"435":3,"455":2,"466":1,"469":1,"470":1,"474":1,"478":1,"479":1,"504":1,"508":1,"512":1,"529":4,"530":1,"537":2,"548":1,"550":1,"554":2,"556":9,"560":3,"561":1,"581":1,"588":1,"606":1,"609":1,"616":1,"621":1,"624":5,"626":1,"627":1,"686":1,"687":1,"690":1,"1274":1,"1275":2,"1277":2,"1279":1,"1280":1,"1297":1,"1299":1,"1318":1,"1323":1,"1324":2,"1340":1,"1362":1,"1369":2,"1372":1,"1373":1,"1385":1,"1386":2,"1412":1,"1413":2,"1418":2,"1422":5,"1423":2,"1443":2,"1467":2,"1478":1,"1552":1,"1558":1,"1561":1,"1568":11,"1592":1,"1693":1,"1697":1,"1701":1,"1703":6,"1704":2,"1708":1,"1709":1,"1722":1,"1771":1,"1841":3,"1845":2,"1891":1,"1917":1,"1961":1,"1965":1,"1995":1,"2079":1,"2097":1,"2099":1,"2149":1,"2156":1,"2169":1,"2183":2,"2207":1,"2216":1,"2220":1,"2268":3,"2269":2,"2271":2,"2273":2,"2274":2,"2275":2,"2276":4,"2278":2,"2280":2,"2283":2,"2285":2,"2287":2,"2288":2,"2291":1,"2294":1,"2297":1,"2300":23,"2301":1,"2302":1,"2303":1,"2312":2,"2313":1,"2314":1,"2315":1,"2318":2,"2331":1,"2333":1,"2334":5,"2339":1,"2341":1,"2345":2,"2387":1,"2392":1,"2395":1,"2444":1,"2449":1,"2460":1,"2462":1,"2463":2,"2468":1,"2475":1,"2494":1,"2496":1,"2497":1,"2511":1,"2513":2,"2514":1,"2516":1,"2527":6,"2541":2,"2543":1,"2549":1,"2569":1,"2607":1,"2611":2,"2614":3,"2615":26,"2616":1,"2620":1,"2653":1,"2654":1,"2686":1,"2741":1,"2744":1,"2763":1,"2767":2,"2786":1,"2792":1,"2793":4,"2794":1,"2796":2}}],["majority",{"2":{"141":1,"166":1,"245":1,"248":1,"1132":1,"1295":1,"1532":1,"1534":1,"2766":1}}],["major",{"2":{"116":1,"199":1,"550":1,"1310":1,"1435":2,"1436":3,"1440":2,"2289":1}}],["macca",{"2":{"616":1}}],["mac",{"0":{"1316":1,"1317":1,"1320":1,"1333":1},"1":{"1334":1},"2":{"266":1,"1318":1,"1320":1,"2217":1,"2218":1,"2222":1,"2234":1,"2235":1,"2236":1,"2423":1,"2742":18}}],["machines",{"2":{"1134":1,"1866":1,"2184":1}}],["machine",{"2":{"263":1,"322":1,"323":1,"554":1,"1258":1,"2140":1,"2184":1,"2188":2,"2221":1,"2293":1,"2303":1,"2481":1,"2482":1,"2484":1,"2501":1,"2670":1}}],["mach80",{"2":{"134":1}}],["macos",{"0":{"365":1,"1315":1,"1704":1,"2293":1},"2":{"114":1,"143":1,"160":1,"176":1,"199":1,"236":1,"266":1,"505":2,"1286":1,"1310":2,"1405":1,"1605":1,"1606":1,"1704":3,"1711":1,"1863":1,"1864":1,"1870":1,"1925":1,"2217":1,"2218":1,"2221":3,"2222":2,"2234":1,"2235":1,"2236":1,"2283":1,"2285":1,"2287":1,"2293":1,"2386":1,"2390":1,"2394":3,"2423":2,"2428":1,"2431":1,"2432":1,"2468":1,"2490":1,"2491":1,"2496":1,"2551":2,"2552":2,"2595":1,"2742":11}}],["macro2",{"2":{"1421":1}}],["macro30",{"2":{"1870":1}}],["macro3",{"2":{"241":2,"249":1}}],["macro1",{"2":{"241":2,"1421":1}}],["macro0",{"2":{"199":1}}],["macropad",{"2":{"120":1,"176":3,"211":1,"236":1,"1391":1,"1392":1}}],["macros=",{"2":{"2300":2}}],["macros",{"0":{"17":1,"120":1,"696":1,"1390":1,"1391":1,"1395":1,"1397":1,"1422":1,"1591":2,"2402":1,"2598":1},"1":{"1391":1,"1392":2,"1393":2,"1394":2,"1395":1,"1396":2,"1397":2,"1398":2,"1399":2,"1400":2,"1401":2,"1402":2,"1403":2,"1404":2,"1405":2,"1406":2,"1407":2,"1408":2,"1409":2,"1410":2,"1411":2,"1412":2,"1592":2,"1593":2,"1594":2},"2":{"16":1,"17":1,"38":1,"50":1,"89":1,"114":1,"120":5,"134":2,"151":1,"176":2,"191":3,"196":1,"201":1,"211":2,"236":2,"249":1,"266":3,"277":1,"313":1,"388":1,"454":1,"567":1,"696":1,"1338":1,"1378":1,"1381":2,"1390":3,"1391":4,"1392":2,"1396":1,"1398":1,"1401":1,"1421":7,"1422":3,"1548":1,"1563":2,"1565":2,"1591":5,"1592":2,"1593":1,"1671":1,"1708":1,"1913":1,"1918":1,"1919":1,"1921":1,"2113":1,"2300":2,"2341":2,"2402":1,"2605":4,"2653":3,"2715":1,"2744":1,"2763":3,"2785":1}}],["macro",{"0":{"27":1,"151":1,"1393":1,"1401":1,"1593":1,"2160":1,"2672":1,"2688":1},"1":{"1394":1,"1402":1,"1403":1,"1404":1,"1405":1,"1406":1,"1407":1,"1408":1,"1409":1,"1410":1},"2":{"3":1,"7":1,"15":1,"27":1,"50":1,"75":1,"89":1,"114":3,"120":8,"134":1,"145":2,"151":2,"160":2,"188":2,"191":4,"199":3,"211":75,"222":3,"231":3,"236":1,"249":1,"255":2,"257":1,"258":1,"259":1,"277":2,"313":2,"529":2,"530":1,"570":1,"696":1,"698":1,"1338":1,"1363":1,"1377":1,"1389":1,"1391":4,"1392":1,"1393":2,"1394":1,"1396":9,"1401":3,"1412":1,"1421":2,"1422":1,"1442":1,"1567":1,"1591":22,"1592":12,"1593":6,"1594":14,"1616":1,"1713":1,"1767":2,"1771":1,"1870":1,"1913":3,"1918":7,"1919":6,"1990":2,"1995":1,"2080":2,"2085":1,"2097":1,"2110":1,"2113":1,"2138":1,"2139":1,"2187":1,"2199":3,"2207":1,"2221":1,"2338":1,"2341":4,"2402":10,"2439":1,"2446":3,"2529":1,"2598":3,"2605":2,"2647":2,"2649":2,"2653":1,"2654":1,"2655":2,"2672":2,"2688":1,"2715":1,"2767":3,"2785":6,"2786":2,"2788":1}}],["max660",{"2":{"1627":1}}],["maxfitlerouput",{"2":{"1478":1}}],["maxing",{"2":{"505":1}}],["maximus",{"2":{"222":1}}],["maximum",{"2":{"28":1,"166":2,"370":2,"502":2,"506":1,"511":2,"601":1,"654":1,"755":1,"784":1,"816":1,"848":1,"855":1,"883":1,"889":1,"917":1,"923":1,"951":1,"957":1,"985":1,"991":1,"1019":1,"1025":1,"1053":1,"1059":1,"1087":1,"1093":1,"1143":1,"1180":1,"1324":1,"1363":1,"1494":3,"1500":1,"1537":1,"1670":1,"1671":1,"1678":1,"1763":2,"1768":3,"1840":3,"1841":4,"1842":2,"1844":2,"1845":2,"1860":2,"1937":1,"1940":5,"1944":2,"1984":2,"1992":4,"2073":1,"2076":1,"2080":1,"2092":6,"2166":2,"2168":1,"2169":2,"2181":2,"2199":1,"2208":1,"2613":3,"2615":11,"2616":1,"2626":1,"2632":1,"2633":1,"2716":1,"2727":1,"2733":2,"2734":1,"2738":1,"2776":1}}],["max",{"0":{"1818":1,"1821":1,"2063":1,"2066":1},"2":{"112":4,"134":1,"145":1,"166":1,"176":1,"191":1,"194":1,"211":2,"231":1,"404":1,"502":1,"506":1,"507":2,"601":2,"656":2,"657":1,"688":4,"689":4,"1438":3,"1443":2,"1477":1,"1483":8,"1493":1,"1555":4,"1611":1,"1670":3,"1678":1,"1762":1,"1766":1,"1767":6,"1771":1,"1819":1,"1822":1,"1841":7,"1845":4,"1860":6,"1937":3,"1969":1,"1983":1,"1987":1,"1990":6,"1995":1,"1996":6,"1997":3,"2064":1,"2067":1,"2073":1,"2076":1,"2080":2,"2166":2,"2181":6,"2190":2,"2209":1,"2220":1,"2266":6,"2267":1,"2338":3,"2399":1,"2716":2,"2727":2,"2729":2,"2733":3,"2734":2,"2738":1,"2796":1}}],["maps",{"2":{"282":1,"607":1,"1316":1,"1440":1,"1442":1,"1858":1,"2740":1,"2785":1}}],["mapped",{"2":{"182":1,"209":2,"502":1,"624":1,"630":1,"659":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1185":1,"1353":2,"1357":2,"1472":3,"1496":1,"1605":1,"1986":3,"2113":1,"2355":1,"2358":1,"2616":3,"2636":3,"2682":1,"2773":2,"2774":2,"2775":1}}],["mappings",{"2":{"191":1,"211":1,"236":2,"610":2,"1862":1,"2605":1}}],["mapping",{"0":{"139":1,"247":1,"610":1,"659":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1185":1,"1839":1,"2195":1},"1":{"611":1,"612":1,"2196":1},"2":{"49":1,"114":1,"139":1,"145":2,"160":1,"191":6,"209":1,"211":1,"231":1,"236":1,"247":2,"266":1,"282":1,"607":1,"610":5,"612":1,"613":1,"1320":1,"1586":2,"1597":3,"1858":2,"2195":1,"2219":2,"2220":4,"2301":2,"2355":1,"2358":1,"2446":1,"2597":1,"2725":1,"2741":1,"2774":1,"2775":1}}],["maple",{"2":{"154":9,"160":1,"181":2,"270":2,"277":1,"629":1,"2389":1}}],["map",{"0":{"1442":1,"1586":1,"1597":1,"2785":1},"2":{"76":1,"134":1,"145":1,"176":2,"191":1,"199":2,"201":3,"209":1,"211":6,"218":1,"222":2,"247":2,"249":1,"277":1,"1324":1,"1442":4,"1471":1,"1571":1,"1586":3,"1597":5,"1598":1,"1837":1,"1839":1,"1858":2,"1859":1,"1937":1,"2097":3,"2098":2,"2191":2,"2193":1,"2195":1,"2219":4,"2220":3,"2222":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2248":1,"2301":1,"2423":1,"2605":2,"2653":1,"2733":1,"2785":2,"2786":2,"2788":2}}],["manjaro",{"2":{"2470":1,"2503":1}}],["manipulating",{"0":{"1956":1},"1":{"1957":1,"1958":1,"1959":1,"1960":1,"1961":1,"1962":1,"1963":1},"2":{"1400":1,"2481":1}}],["manipulation",{"2":{"243":1,"334":1,"580":1,"1134":1}}],["manipulations",{"2":{"64":1}}],["manipulate",{"2":{"1378":1,"1486":1,"1535":1,"1542":1,"1956":1,"1961":1,"2196":1}}],["man",{"2":{"1275":1,"2386":1}}],["manner",{"2":{"502":2,"511":1,"1565":1}}],["mango",{"2":{"226":1,"236":1}}],["mandatory",{"2":{"201":2,"2605":1}}],["managed",{"2":{"1302":1}}],["management",{"0":{"1565":1},"2":{"1302":1,"1329":1,"1860":1,"2181":1}}],["manager",{"0":{"324":1},"2":{"324":1,"358":1,"627":1,"628":1,"629":2,"1329":1,"1925":1,"2386":1,"2390":1,"2459":1,"2489":1,"2545":1}}],["manageable",{"2":{"251":1,"481":1}}],["manage",{"2":{"182":1,"554":1,"596":1,"1340":1}}],["manual",{"0":{"2569":1},"2":{"145":1,"160":1,"234":1,"249":2,"1264":1,"1275":1}}],["manually",{"2":{"134":1,"234":1,"244":1,"334":1,"366":1,"454":1,"521":1,"596":1,"1278":1,"1485":1,"1696":1,"1758":1,"1858":1,"1860":2,"1934":1,"1956":1,"2164":1,"2181":2,"2291":2,"2452":1,"2484":1,"2498":1,"2502":1,"2513":1,"2537":1,"2605":1,"2612":1,"2616":2,"2796":1}}],["manufacture",{"2":{"2297":1}}],["manufacturers",{"2":{"674":1,"1132":1,"1133":1}}],["manufacturer",{"2":{"70":3,"76":1,"111":1,"169":2,"184":2,"191":4,"213":1,"327":1,"502":1,"537":1,"671":1,"1927":3,"2269":1,"2276":1,"2595":3,"2604":1,"2605":1,"2710":1,"2711":3}}],["manuform",{"2":{"114":3,"160":2,"211":1,"217":2,"222":8,"226":1,"236":1,"2309":1}}],["manyboard",{"2":{"114":1}}],["many",{"2":{"30":1,"198":1,"265":1,"376":1,"430":1,"445":1,"479":1,"505":2,"578":1,"598":1,"602":1,"688":2,"1249":1,"1291":1,"1341":1,"1362":2,"1405":1,"1442":1,"1447":1,"1453":1,"1467":1,"1491":1,"1538":1,"1595":1,"1696":1,"1829":1,"1845":1,"1855":1,"1922":1,"2080":1,"2152":1,"2169":1,"2170":1,"2179":1,"2186":1,"2208":1,"2209":1,"2219":1,"2264":3,"2267":1,"2268":1,"2300":2,"2306":1,"2319":1,"2339":1,"2387":2,"2447":1,"2457":1,"2466":1,"2468":1,"2495":1,"2496":1,"2526":1,"2527":1,"2531":2,"2542":3,"2594":1,"2605":1,"2616":1,"2673":1,"2702":1,"2725":1,"2740":1,"2741":1,"2757":1,"2780":1,"2784":2,"2789":3,"2796":1}}],["maarten",{"0":{"57":1}}],["maartenwut",{"0":{"57":1},"2":{"57":23}}],["mario",{"2":{"1724":1}}],["mary",{"2":{"1603":2}}],["mar",{"2":{"55":1}}],["marked",{"2":{"685":1,"1142":1,"1503":1,"1576":1,"1679":1,"1766":1,"2383":1,"2513":1,"2711":1}}],["marker",{"2":{"290":1,"2388":1,"2639":8}}],["markers",{"2":{"266":22}}],["markdown",{"2":{"278":2,"341":1,"462":1,"621":1,"1383":1,"2549":2}}],["mark",{"2":{"48":1,"176":1,"191":1,"234":1,"236":1,"502":1,"2259":1,"2513":1,"2780":1}}],["marksard",{"2":{"154":3,"160":2}}],["marks",{"2":{"0":1,"2505":1,"2513":2}}],["matias",{"2":{"2305":1}}],["materials",{"2":{"2309":1,"2313":1}}],["material",{"2":{"2306":1}}],["mate",{"2":{"1528":1}}],["math",{"2":{"469":1,"1937":1}}],["matt",{"2":{"2792":1}}],["matte",{"2":{"2312":1}}],["matters",{"2":{"2080":1,"2447":1}}],["matter",{"2":{"194":1,"556":1,"1420":1,"1589":1,"2313":1,"2447":1,"2495":1,"2653":1}}],["matt3o",{"2":{"2309":2,"2320":1}}],["matthewdias",{"2":{"154":4,"160":2}}],["matrices",{"2":{"176":1,"1532":1,"1761":1,"1982":1,"2169":1,"2328":1,"2350":2}}],["matrix2",{"2":{"1171":1}}],["matrix1",{"2":{"1171":1}}],["matrix=true",{"2":{"374":1,"1282":1}}],["matrix",{"0":{"80":1,"84":1,"124":1,"214":1,"218":1,"563":1,"578":1,"579":1,"580":1,"584":1,"585":1,"586":1,"1172":1,"1289":1,"1327":1,"1590":1,"1761":1,"1766":1,"1767":1,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1781":1,"1783":1,"1785":1,"1787":1,"1789":1,"1790":1,"1791":1,"1792":1,"1793":1,"1795":1,"1796":1,"1797":1,"1798":1,"1799":1,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1807":1,"1809":1,"1811":1,"1812":1,"1814":1,"1816":1,"1818":1,"1821":1,"1982":1,"1987":1,"1988":1,"1989":1,"1990":1,"1998":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2008":1,"2010":1,"2012":1,"2014":1,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2046":1,"2048":1,"2050":1,"2052":1,"2054":1,"2056":1,"2057":1,"2059":1,"2061":1,"2063":1,"2066":1,"2163":1,"2307":1,"2309":1,"2322":1,"2350":1,"2408":1,"2416":1,"2596":1,"2597":1,"2687":1,"2727":1,"2728":1,"2734":1,"2784":1,"2785":1},"1":{"564":1,"565":1,"566":1,"579":1,"580":1,"585":1,"586":1,"1762":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":1,"1769":1,"1770":1,"1771":1,"1772":1,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1780":2,"1781":1,"1782":2,"1783":1,"1784":2,"1785":1,"1786":2,"1787":1,"1788":2,"1789":1,"1790":1,"1791":1,"1792":1,"1793":1,"1794":2,"1795":1,"1796":1,"1797":1,"1798":1,"1799":1,"1800":2,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1806":2,"1807":1,"1808":2,"1809":1,"1810":2,"1811":1,"1812":1,"1813":2,"1814":1,"1815":2,"1816":1,"1817":2,"1818":1,"1819":1,"1820":1,"1821":1,"1822":1,"1823":1,"1983":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":2,"1989":2,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":2,"2008":1,"2009":2,"2010":1,"2011":2,"2012":1,"2013":2,"2014":1,"2015":2,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":2,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":2,"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2033":2,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":2,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2045":2,"2046":1,"2047":2,"2048":1,"2049":2,"2050":1,"2051":1,"2052":1,"2053":2,"2054":1,"2055":2,"2056":1,"2057":1,"2058":2,"2059":1,"2060":2,"2061":1,"2062":2,"2063":1,"2064":1,"2065":1,"2066":1,"2067":1,"2068":1,"2308":1,"2310":1,"2311":1,"2312":1,"2313":1,"2597":1,"2785":1,"2786":1,"2787":1,"2788":1},"2":{"17":1,"31":8,"49":3,"63":2,"64":1,"65":4,"70":1,"74":4,"76":1,"80":2,"84":1,"92":4,"93":14,"94":5,"102":3,"111":2,"112":7,"113":1,"114":36,"124":2,"133":1,"134":11,"145":4,"160":13,"176":4,"183":22,"185":9,"191":16,"196":1,"199":7,"201":1,"211":14,"214":1,"218":1,"221":6,"222":18,"236":12,"238":1,"249":33,"266":10,"277":11,"334":1,"374":2,"378":2,"502":18,"510":4,"511":9,"515":2,"530":2,"563":2,"564":4,"565":10,"566":21,"574":1,"575":1,"578":1,"579":2,"580":18,"584":1,"586":4,"587":2,"588":2,"593":3,"594":3,"609":1,"624":1,"643":1,"654":1,"655":1,"659":1,"688":1,"689":1,"730":2,"756":2,"784":1,"785":2,"816":1,"817":2,"848":1,"849":2,"883":1,"884":2,"917":1,"918":2,"951":1,"952":2,"985":1,"986":2,"1019":1,"1020":2,"1053":1,"1054":2,"1087":1,"1088":2,"1143":1,"1144":1,"1148":1,"1168":1,"1169":1,"1170":1,"1171":12,"1172":2,"1180":1,"1181":2,"1250":1,"1251":1,"1289":1,"1290":8,"1327":1,"1331":1,"1363":3,"1366":1,"1367":2,"1369":1,"1373":1,"1396":4,"1412":1,"1442":5,"1491":1,"1533":2,"1534":3,"1568":2,"1585":2,"1598":4,"1611":1,"1761":1,"1762":3,"1763":5,"1765":12,"1766":64,"1767":23,"1768":15,"1769":1,"1771":8,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1780":1,"1782":1,"1812":1,"1813":1,"1830":2,"1855":1,"1858":3,"1861":8,"1864":4,"1982":1,"1983":3,"1984":5,"1986":4,"1987":148,"1988":7,"1989":1,"1990":23,"1992":19,"1993":1,"1995":8,"1996":10,"1997":7,"1998":4,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":1,"2009":1,"2057":1,"2058":1,"2072":1,"2079":2,"2108":1,"2155":1,"2160":3,"2163":11,"2167":2,"2169":4,"2179":1,"2180":2,"2193":3,"2202":2,"2269":1,"2276":1,"2297":1,"2301":3,"2306":1,"2307":4,"2314":1,"2315":1,"2316":2,"2322":1,"2323":1,"2328":1,"2329":1,"2338":1,"2340":3,"2341":4,"2350":6,"2408":13,"2416":1,"2440":3,"2445":6,"2446":1,"2450":1,"2462":2,"2476":3,"2479":1,"2558":1,"2596":7,"2597":6,"2598":20,"2605":10,"2606":1,"2616":3,"2623":1,"2653":5,"2687":1,"2713":1,"2718":2,"2721":3,"2725":3,"2727":6,"2728":8,"2734":6,"2735":1,"2736":7,"2746":1,"2750":46,"2763":2,"2764":2,"2779":1,"2783":2,"2784":8,"2785":6,"2786":4,"2787":4,"2796":1}}],["matched",{"2":{"374":2,"1468":1,"1483":1,"1724":1}}],["matches",{"2":{"341":1,"349":1,"628":1,"1132":1,"1133":1,"1442":1,"1478":9,"1489":2,"1597":1,"1739":1,"1742":1,"1745":1,"1748":1,"1751":1,"1943":1,"2387":1,"2484":2,"2552":1,"2614":1,"2616":2,"2785":1}}],["matchstickworks",{"2":{"226":2,"236":1}}],["match",{"2":{"65":1,"77":1,"105":1,"134":1,"160":1,"182":1,"191":1,"195":1,"349":1,"354":1,"374":5,"453":1,"540":1,"628":1,"703":1,"1214":1,"1235":1,"1315":1,"1337":2,"1369":1,"1373":1,"1384":2,"1388":1,"1392":1,"1475":1,"1482":1,"1563":1,"1858":1,"2195":1,"2259":1,"2356":1,"2387":1,"2450":1,"2572":2,"2614":1,"2623":1,"2626":1,"2653":1,"2654":1,"2786":1}}],["matchingsubstring",{"2":{"2793":2}}],["matching",{"2":{"50":1,"160":1,"243":1,"374":1,"411":1,"702":1,"1132":1,"1133":1,"1213":1,"1258":1,"1337":1,"1378":6,"1478":2,"2356":1,"2391":1,"2581":1,"2605":1,"2740":1,"2793":1}}],["masquerade",{"2":{"2589":1}}],["masked",{"2":{"1482":1,"2163":2,"2452":1}}],["mask",{"0":{"1441":1},"2":{"105":6,"114":1,"502":1,"1337":21,"1340":2,"1373":2,"1378":12,"1401":1,"1422":2,"1441":6,"1483":4,"1538":1,"1560":2,"1568":1,"1587":4,"1701":1,"1703":11,"1704":2,"1706":1,"1708":3,"1715":3,"1853":1,"1899":2,"1901":5,"1911":2,"1916":2,"1917":1,"2163":1,"2177":1,"2266":1,"2530":8,"2627":2,"2777":3}}],["masks",{"2":{"49":1,"1337":1,"1715":1,"1853":2,"2177":2,"2627":1,"2777":1}}],["massive",{"2":{"163":1}}],["massively",{"2":{"70":1}}],["mass",{"2":{"93":1,"199":1,"360":1,"1614":1,"2291":1,"2388":1,"2578":1}}],["massdrop",{"2":{"73":1,"114":1,"131":1,"134":1,"207":2,"624":3}}],["masterzen",{"2":{"2320":1}}],["master",{"0":{"699":1,"1211":1,"2515":1,"2525":1,"2526":1},"1":{"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"1212":1,"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1218":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1224":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1231":1,"2526":1,"2527":1,"2528":1},"2":{"31":3,"34":1,"45":1,"51":1,"74":1,"114":1,"134":2,"160":1,"169":1,"176":4,"191":1,"234":4,"236":1,"277":1,"317":2,"337":1,"340":4,"345":1,"346":3,"347":2,"349":8,"350":5,"361":4,"400":2,"509":4,"510":4,"511":7,"515":1,"520":1,"529":1,"530":2,"535":1,"674":3,"675":1,"694":1,"699":1,"700":2,"702":1,"852":3,"1023":3,"1057":3,"1129":2,"1130":1,"1211":1,"1212":2,"1312":1,"1854":3,"1945":1,"1980":1,"2089":4,"2165":3,"2166":4,"2167":3,"2168":18,"2169":6,"2170":1,"2178":3,"2263":1,"2303":3,"2409":2,"2435":2,"2511":1,"2512":1,"2513":8,"2514":4,"2515":6,"2516":4,"2525":2,"2526":7,"2527":1,"2603":3,"2605":2,"2606":1,"2607":4,"2615":3,"2760":1}}],["made",{"2":{"10":1,"73":1,"116":1,"124":1,"134":1,"172":1,"201":1,"243":1,"246":1,"263":1,"271":1,"272":1,"273":1,"315":1,"327":1,"428":1,"453":1,"455":1,"519":1,"554":5,"606":1,"624":1,"726":1,"1440":1,"1565":1,"2170":1,"2336":1,"2342":1,"2348":1,"2448":1,"2493":1,"2512":2,"2513":3,"2515":1,"2520":1,"2552":1,"2758":1,"2767":1}}],["maybe",{"0":{"2359":1}}],["may",{"0":{"19":1,"78":1,"135":1,"200":1,"250":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1},"2":{"10":1,"14":1,"24":1,"31":2,"34":1,"73":1,"88":1,"104":1,"124":2,"127":1,"142":1,"166":1,"182":1,"194":1,"240":1,"248":1,"251":1,"259":1,"282":3,"338":1,"341":1,"343":1,"344":1,"345":1,"351":5,"352":7,"355":2,"356":1,"374":3,"380":1,"396":1,"411":2,"452":2,"461":1,"466":1,"480":1,"481":1,"486":3,"502":2,"504":1,"505":4,"511":1,"539":2,"551":1,"556":1,"574":1,"578":1,"589":1,"624":1,"626":3,"627":2,"628":1,"629":1,"635":1,"658":1,"677":1,"678":1,"679":2,"680":2,"688":4,"692":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1174":1,"1184":1,"1213":1,"1214":2,"1232":1,"1238":1,"1253":3,"1256":1,"1260":2,"1263":1,"1264":1,"1267":1,"1277":1,"1278":2,"1280":2,"1291":1,"1307":2,"1315":1,"1330":1,"1331":1,"1366":1,"1368":1,"1372":1,"1392":2,"1398":1,"1401":2,"1414":3,"1421":1,"1422":2,"1435":1,"1443":1,"1449":1,"1468":1,"1477":1,"1484":1,"1504":1,"1506":1,"1507":1,"1532":1,"1536":1,"1537":2,"1552":2,"1571":1,"1586":1,"1591":1,"1597":1,"1600":2,"1611":5,"1643":1,"1689":1,"1699":1,"1700":1,"1704":1,"1708":1,"1711":1,"1714":1,"1715":1,"1722":2,"1723":1,"1752":1,"1826":1,"1841":1,"1849":1,"1853":1,"1855":1,"1857":1,"1862":1,"1863":1,"1866":1,"1868":1,"1870":1,"1893":1,"1897":1,"1910":1,"1911":1,"1912":1,"1916":1,"1919":1,"1925":2,"1951":1,"1960":1,"1965":1,"1979":1,"1988":1,"1992":1,"2099":2,"2151":1,"2158":1,"2163":1,"2167":1,"2169":1,"2171":1,"2177":1,"2183":2,"2188":1,"2199":1,"2207":1,"2215":1,"2219":1,"2220":1,"2221":2,"2268":1,"2271":1,"2273":1,"2275":1,"2276":2,"2278":3,"2280":1,"2281":1,"2282":1,"2283":1,"2285":1,"2288":1,"2291":1,"2295":2,"2298":1,"2300":1,"2301":1,"2303":1,"2306":1,"2308":1,"2311":2,"2312":3,"2315":1,"2318":3,"2333":2,"2344":1,"2345":1,"2349":1,"2358":1,"2366":1,"2380":1,"2381":1,"2385":1,"2387":4,"2390":1,"2392":1,"2432":1,"2437":2,"2440":1,"2444":2,"2450":1,"2458":1,"2462":2,"2480":1,"2489":1,"2491":1,"2505":1,"2530":1,"2534":1,"2545":1,"2549":2,"2552":1,"2553":1,"2555":1,"2556":1,"2557":1,"2560":1,"2563":2,"2568":3,"2603":5,"2606":1,"2610":1,"2615":4,"2616":2,"2623":2,"2631":1,"2632":1,"2640":1,"2644":1,"2741":1,"2743":1,"2744":2,"2757":1,"2758":1,"2759":3,"2762":1,"2765":1,"2767":1,"2768":2,"2777":1,"2779":3}}],["aabb",{"0":{"2770":1}}],["aa",{"2":{"2614":1}}],["aaron",{"2":{"1916":2}}],["ao",{"2":{"2191":1}}],["aoff",{"2":{"1831":1,"2410":1}}],["aozora",{"2":{"122":2}}],["a♯",{"2":{"1831":6,"2410":6}}],["a♭",{"2":{"1831":6,"2410":6}}],["a\`",{"2":{"1556":1}}],["azure",{"2":{"1991":2,"2096":2}}],["azerty",{"0":{"2663":1},"2":{"1392":1,"2742":2}}],["azoteq",{"0":{"1938":1},"1":{"1939":1,"1940":1,"1941":1},"2":{"236":1,"249":1,"1938":2,"1939":10,"1940":17,"1941":3}}],["a9",{"2":{"1235":1,"1895":2,"2556":1,"2569":1}}],["a8",{"2":{"685":2,"690":2,"1433":1,"1895":2,"2569":1}}],["a7²",{"2":{"635":1}}],["a7¹",{"2":{"635":1}}],["a7",{"2":{"633":1,"635":4,"2557":2,"2569":1}}],["a6²",{"2":{"635":1}}],["a6¹",{"2":{"635":1}}],["a6",{"2":{"633":1,"635":4,"2557":2,"2569":1}}],["a54",{"2":{"2569":1}}],["a5+dacd2",{"2":{"685":6}}],["a5²",{"2":{"635":1}}],["a5¹",{"2":{"635":1}}],["a5",{"2":{"633":1,"635":4,"685":1,"686":1,"1427":3,"1428":3,"1429":1,"1430":1,"1831":1,"2410":1,"2557":2,"2569":1}}],["a43",{"2":{"2569":1}}],["a4+a5",{"2":{"1429":1}}],["a4+dacd1",{"2":{"685":6}}],["a4²",{"2":{"635":1}}],["a4¹",{"2":{"635":1}}],["a4",{"2":{"633":1,"635":4,"685":1,"686":1,"1427":3,"1428":3,"1429":1,"1430":1,"1671":2,"1831":1,"2410":1,"2557":2,"2569":1}}],["a3²",{"2":{"635":2}}],["a3¹",{"2":{"635":2}}],["a3",{"2":{"633":1,"635":4,"1273":1,"1831":1,"2410":1}}],["a2²",{"2":{"635":2}}],["a2¹",{"2":{"635":2}}],["a2",{"2":{"633":1,"635":4,"1831":1,"2410":1,"2569":1,"2728":2}}],["a14",{"2":{"2569":1}}],["a145",{"2":{"2569":1}}],["a135",{"2":{"2569":1}}],["a13",{"2":{"1611":1,"2569":1}}],["a15",{"2":{"1585":1,"2569":1}}],["a12",{"2":{"1235":1,"2555":1}}],["a11",{"2":{"1235":1,"2555":1}}],["a10",{"2":{"1235":1,"1585":1,"2556":1,"2560":1,"2569":1}}],["a1²",{"2":{"635":2}}],["a1¹",{"2":{"635":2}}],["a1",{"2":{"633":1,"635":4,"1831":1,"2410":1,"2569":1,"2728":2,"2736":1}}],["a0²",{"2":{"635":2}}],["a0¹",{"2":{"635":2}}],["a0",{"2":{"633":1,"635":4,"639":1,"2179":2,"2275":1,"2557":1,"2558":1,"2569":1,"2728":2}}],["akko",{"2":{"2282":1}}],["akemipad",{"2":{"211":1}}],["akis",{"2":{"211":1}}],["akira",{"2":{"211":1}}],["akb",{"2":{"211":2}}],["aka",{"2":{"160":1,"194":1,"1438":1,"1439":1,"1536":2,"1715":1,"2157":1,"2158":1,"2190":1,"2777":1}}],["air",{"2":{"2171":1}}],["aim",{"2":{"2267":1}}],["aims",{"2":{"1933":1,"2103":1,"2511":1}}],["aiming",{"2":{"1829":1}}],["aimed",{"2":{"251":1,"605":1,"1771":1,"1995":1,"2517":1}}],["ain",{"2":{"454":1}}],["aids",{"2":{"2311":1}}],["aid",{"2":{"278":1,"468":1}}],["aide",{"2":{"249":1,"1944":1}}],["aidansmithdotdev",{"2":{"211":1}}],["ai03",{"2":{"160":1,"211":2,"388":1,"2306":1}}],["ae",{"2":{"2220":2}}],["aegis",{"2":{"211":1}}],["aeroboard",{"2":{"222":1}}],["aero",{"2":{"211":1}}],["aella",{"2":{"211":1}}],["aelith",{"2":{"197":2}}],["aeboards",{"0":{"60":1},"2":{"102":3,"114":1,"191":1,"211":3}}],["axis",{"0":{"1684":2,"1687":2},"1":{"1685":2,"1686":2,"1688":2},"2":{"183":2,"236":1,"1362":1,"1609":1,"1615":1,"1670":3,"1671":12,"1672":9,"1676":1,"1677":1,"1678":1,"1684":1,"1685":2,"1687":1,"1688":2,"1937":10,"1952":2,"1953":2,"1956":2,"2654":2,"2725":4,"2727":2,"2734":2}}],["axes",{"0":{"1671":1,"1672":1,"1903":1,"1904":1},"1":{"1672":1},"2":{"49":1,"183":2,"1668":3,"1670":1,"1671":4,"1672":2,"1676":1,"1903":2,"1980":1}}],["ajisai74",{"2":{"154":2}}],["awinic",{"2":{"654":1}}],["awesome",{"2":{"196":1,"313":1,"463":1,"464":1,"465":1,"1300":1,"1412":1,"1718":1,"2595":1}}],["awake",{"2":{"1956":1}}],["awaiting",{"2":{"1854":1}}],["awaited",{"2":{"131":1}}],["aware",{"2":{"370":1,"371":1,"378":1,"381":1,"383":1,"386":1,"452":1,"1552":1,"2394":1}}],["away",{"2":{"3":1,"15":1,"134":3,"176":1,"266":1,"388":1,"1476":1,"1722":1,"1766":4,"1853":1,"1987":6,"2177":1,"2209":1,"2307":1,"2312":1,"2350":1,"2704":1}}],["aw20216s",{"0":{"654":1,"661":1,"663":1,"665":1,"667":1,"669":1},"1":{"655":1,"656":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":2,"663":1,"664":2,"665":1,"666":2,"667":1,"668":2,"669":1,"670":2},"2":{"236":1,"249":1,"654":1,"655":3,"656":7,"657":1,"659":3,"665":1,"666":1,"1983":1,"2734":1}}],["aw20216",{"2":{"114":3,"176":1,"211":1,"221":2,"236":1}}],["ammount",{"2":{"1987":3}}],["amtel",{"2":{"2164":1}}],["amt",{"2":{"1950":4}}],["among",{"2":{"1606":1,"2387":1}}],["amounts",{"2":{"1371":1,"2613":1,"2615":1,"2616":1}}],["amount",{"2":{"107":1,"678":1,"679":1,"1282":1,"1373":1,"1405":1,"1552":2,"1592":1,"1597":1,"1720":1,"1722":1,"1865":2,"1904":1,"1969":1,"2082":1,"2122":1,"2126":1,"2166":1,"2187":1,"2198":1,"2217":1,"2311":3,"2318":1,"2343":1,"2450":1,"2530":1,"2553":1,"2603":1,"2613":3,"2615":1,"2719":1,"2720":1,"2726":1,"2728":1,"2730":1,"2736":2,"2738":1,"2757":1}}],["amazing",{"2":{"1301":1}}],["amag23",{"2":{"211":1}}],["am",{"2":{"360":1,"1473":3,"1979":2,"2513":1}}],["america",{"2":{"1305":1,"1392":1,"2742":3}}],["amet",{"2":{"301":1}}],["amended",{"2":{"2603":1}}],["amending",{"2":{"229":1}}],["amend",{"2":{"222":2}}],["amendment",{"2":{"222":1}}],["ambiguous",{"2":{"457":1,"460":1}}],["ambiguity",{"2":{"273":1,"2603":1}}],["amber80",{"2":{"211":1}}],["amux",{"2":{"249":1}}],["amj84",{"2":{"222":1}}],["amj",{"2":{"145":1}}],["amjpad",{"2":{"144":2}}],["amj96",{"2":{"144":2}}],["amj60",{"2":{"144":2}}],["amjkeyboard",{"2":{"144":4,"145":1,"222":1}}],["amj40",{"2":{"144":2}}],["ampr",{"2":{"2417":1,"2438":1}}],["ampersand",{"2":{"277":1,"2417":1,"2438":1}}],["amp",{"0":{"25":1,"471":1,"1335":1,"1396":1,"1703":1,"1858":1,"2758":1},"1":{"1397":1,"1398":1,"1399":1,"1400":1,"1859":1,"2759":1,"2760":1},"2":{"63":1,"72":1,"93":1,"114":5,"134":1,"145":1,"160":1,"190":1,"191":1,"199":2,"211":2,"249":1,"266":1,"636":1,"1279":4,"1337":2,"1401":1,"1436":1,"1484":2,"1504":2,"1595":1,"1708":1,"1763":2,"1858":1,"1902":1,"1984":2,"1987":1,"2306":1,"2386":1,"2394":1,"2395":1,"2417":1,"2425":1,"2438":1,"2507":2,"2611":1,"2792":1}}],["ahead",{"2":{"76":1,"453":1,"455":1,"2482":1,"2514":1}}],["apt",{"2":{"454":1,"2470":1,"2503":1}}],["apart",{"2":{"2155":1,"2311":1,"2318":1}}],["apa",{"2":{"222":1}}],["apa102",{"0":{"642":1,"646":1,"647":1,"649":1,"651":1,"652":1,"2714":1},"1":{"643":1,"644":1,"645":1,"646":1,"647":1,"648":2,"649":1,"650":2,"651":1,"652":1,"653":2},"2":{"75":1,"201":2,"211":1,"221":2,"234":2,"236":2,"249":2,"277":1,"642":1,"643":4,"644":3,"647":1,"648":1,"1983":1,"2069":1,"2070":7,"2714":2,"2733":1}}],["apm32",{"0":{"2278":1},"1":{"2279":1},"2":{"211":1,"222":1,"629":2,"2278":2}}],["apm32f103",{"2":{"134":1}}],["ap2",{"2":{"176":1}}],["aplyard",{"2":{"67":2,"72":1}}],["aplx6",{"2":{"67":3,"72":1}}],["apis",{"2":{"138":1,"236":1,"244":1,"643":1,"655":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1181":1,"1250":1,"2562":2,"2603":1,"2615":3,"2616":3}}],["api",{"0":{"220":1,"244":1,"305":1,"311":1,"318":1,"522":1,"645":1,"660":1,"706":1,"735":1,"761":1,"793":1,"823":1,"858":1,"892":1,"926":1,"960":1,"994":1,"1028":1,"1062":1,"1096":1,"1149":1,"1175":1,"1186":1,"1215":1,"1236":1,"1268":1,"1509":1,"1573":1,"1633":1,"1674":1,"1726":1,"1772":1,"1860":1,"1873":1,"1928":1,"1999":1,"2118":1,"2181":1,"2223":1,"2616":1,"2619":1},"1":{"306":1,"307":1,"308":1,"309":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"319":1,"320":1,"321":1,"523":1,"524":1,"525":1,"646":1,"647":1,"648":1,"649":1,"650":1,"651":1,"652":1,"653":1,"661":1,"662":1,"663":1,"664":1,"665":1,"666":1,"667":1,"668":1,"669":1,"670":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"736":1,"737":1,"738":1,"739":1,"740":1,"741":1,"742":1,"743":1,"744":1,"745":1,"746":1,"747":1,"748":1,"749":1,"750":1,"751":1,"752":1,"753":1,"754":1,"762":1,"763":1,"764":1,"765":1,"766":1,"767":1,"768":1,"769":1,"770":1,"771":1,"772":1,"773":1,"774":1,"775":1,"776":1,"777":1,"778":1,"779":1,"780":1,"781":1,"782":1,"783":1,"794":1,"795":1,"796":1,"797":1,"798":1,"799":1,"800":1,"801":1,"802":1,"803":1,"804":1,"805":1,"806":1,"807":1,"808":1,"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"824":1,"825":1,"826":1,"827":1,"828":1,"829":1,"830":1,"831":1,"832":1,"833":1,"834":1,"835":1,"836":1,"837":1,"838":1,"839":1,"840":1,"841":1,"842":1,"843":1,"844":1,"845":1,"846":1,"847":1,"859":1,"860":1,"861":1,"862":1,"863":1,"864":1,"865":1,"866":1,"867":1,"868":1,"869":1,"870":1,"871":1,"872":1,"873":1,"874":1,"875":1,"876":1,"877":1,"878":1,"879":1,"880":1,"881":1,"882":1,"893":1,"894":1,"895":1,"896":1,"897":1,"898":1,"899":1,"900":1,"901":1,"902":1,"903":1,"904":1,"905":1,"906":1,"907":1,"908":1,"909":1,"910":1,"911":1,"912":1,"913":1,"914":1,"915":1,"916":1,"927":1,"928":1,"929":1,"930":1,"931":1,"932":1,"933":1,"934":1,"935":1,"936":1,"937":1,"938":1,"939":1,"940":1,"941":1,"942":1,"943":1,"944":1,"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"961":1,"962":1,"963":1,"964":1,"965":1,"966":1,"967":1,"968":1,"969":1,"970":1,"971":1,"972":1,"973":1,"974":1,"975":1,"976":1,"977":1,"978":1,"979":1,"980":1,"981":1,"982":1,"983":1,"984":1,"995":1,"996":1,"997":1,"998":1,"999":1,"1000":1,"1001":1,"1002":1,"1003":1,"1004":1,"1005":1,"1006":1,"1007":1,"1008":1,"1009":1,"1010":1,"1011":1,"1012":1,"1013":1,"1014":1,"1015":1,"1016":1,"1017":1,"1018":1,"1029":1,"1030":1,"1031":1,"1032":1,"1033":1,"1034":1,"1035":1,"1036":1,"1037":1,"1038":1,"1039":1,"1040":1,"1041":1,"1042":1,"1043":1,"1044":1,"1045":1,"1046":1,"1047":1,"1048":1,"1049":1,"1050":1,"1051":1,"1052":1,"1063":1,"1064":1,"1065":1,"1066":1,"1067":1,"1068":1,"1069":1,"1070":1,"1071":1,"1072":1,"1073":1,"1074":1,"1075":1,"1076":1,"1077":1,"1078":1,"1079":1,"1080":1,"1081":1,"1082":1,"1083":1,"1084":1,"1085":1,"1086":1,"1097":1,"1098":1,"1099":1,"1100":1,"1101":1,"1102":1,"1103":1,"1104":1,"1105":1,"1106":1,"1107":1,"1108":1,"1109":1,"1110":1,"1111":1,"1112":1,"1113":1,"1114":1,"1115":1,"1116":1,"1117":1,"1118":1,"1119":1,"1120":1,"1150":1,"1151":1,"1152":1,"1153":1,"1154":1,"1155":1,"1156":1,"1157":1,"1158":1,"1159":1,"1160":1,"1161":1,"1162":1,"1163":1,"1164":1,"1165":1,"1166":1,"1167":1,"1176":1,"1177":1,"1178":1,"1179":1,"1187":1,"1188":1,"1189":1,"1190":1,"1191":1,"1192":1,"1193":1,"1194":1,"1195":1,"1196":1,"1197":1,"1198":1,"1199":1,"1200":1,"1201":1,"1202":1,"1203":1,"1204":1,"1205":1,"1206":1,"1207":1,"1208":1,"1209":1,"1210":1,"1216":1,"1217":1,"1218":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1224":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1231":1,"1237":1,"1238":1,"1239":1,"1240":1,"1241":1,"1242":1,"1243":1,"1244":1,"1245":1,"1246":1,"1247":1,"1248":1,"1269":1,"1270":1,"1510":1,"1511":1,"1512":1,"1513":1,"1514":1,"1515":1,"1516":1,"1517":1,"1518":1,"1519":1,"1520":1,"1521":1,"1522":1,"1523":1,"1524":1,"1525":1,"1526":1,"1574":1,"1575":1,"1576":1,"1577":1,"1578":1,"1579":1,"1580":1,"1581":1,"1582":1,"1583":1,"1584":1,"1634":1,"1635":1,"1636":1,"1637":1,"1638":1,"1639":1,"1640":1,"1641":1,"1642":1,"1643":1,"1644":1,"1645":1,"1646":1,"1647":1,"1648":1,"1649":1,"1650":1,"1651":1,"1652":1,"1653":1,"1654":1,"1655":1,"1656":1,"1657":1,"1658":1,"1659":1,"1660":1,"1661":1,"1662":1,"1663":1,"1664":1,"1665":1,"1666":1,"1667":1,"1675":1,"1676":1,"1677":1,"1678":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1780":1,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1,"1786":1,"1787":1,"1788":1,"1789":1,"1790":1,"1791":1,"1792":1,"1793":1,"1794":1,"1795":1,"1796":1,"1797":1,"1798":1,"1799":1,"1800":1,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1808":1,"1809":1,"1810":1,"1811":1,"1812":1,"1813":1,"1814":1,"1815":1,"1816":1,"1817":1,"1818":1,"1819":1,"1820":1,"1821":1,"1822":1,"1823":1,"1874":1,"1875":1,"1876":1,"1877":1,"1878":1,"1879":1,"1880":1,"1881":1,"1882":1,"1883":1,"1884":1,"1885":1,"1886":1,"1887":1,"1888":1,"1889":1,"1890":1,"1929":1,"1930":1,"1931":1,"1932":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":1,"2008":1,"2009":1,"2010":1,"2011":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":1,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2031":1,"2032":1,"2033":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":1,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2045":1,"2046":1,"2047":1,"2048":1,"2049":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2058":1,"2059":1,"2060":1,"2061":1,"2062":1,"2063":1,"2064":1,"2065":1,"2066":1,"2067":1,"2068":1,"2119":1,"2120":1,"2121":1,"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2132":1,"2133":1,"2134":1,"2135":1,"2136":1,"2137":1,"2138":1,"2139":1,"2224":1,"2225":1,"2226":1,"2227":1,"2228":1,"2229":1,"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2250":1,"2251":1,"2252":1,"2253":1,"2254":1,"2255":1,"2256":1,"2257":1,"2258":1,"2259":1,"2260":1,"2261":1,"2262":1,"2620":1,"2621":1},"2":{"51":1,"95":2,"113":1,"114":3,"133":3,"134":4,"145":2,"160":2,"176":1,"182":1,"188":1,"191":5,"196":1,"199":3,"211":2,"218":1,"222":2,"230":1,"236":1,"244":2,"248":1,"249":2,"266":3,"277":2,"303":4,"305":1,"306":2,"311":2,"312":2,"314":1,"315":1,"317":1,"318":2,"319":2,"320":1,"321":2,"519":1,"522":4,"526":1,"527":1,"529":1,"533":1,"598":1,"606":1,"636":1,"643":1,"700":1,"1144":1,"1170":2,"1212":1,"1233":1,"1250":1,"1364":1,"1501":1,"1762":1,"1860":1,"1861":2,"1983":1,"2110":2,"2216":1,"2337":1,"2563":1,"2564":1,"2612":1,"2615":9,"2616":1,"2617":1,"2653":1,"2655":1,"2710":1,"2733":1,"2764":2}}],["apps",{"2":{"2221":2}}],["approvals",{"2":{"2608":1}}],["approximately",{"2":{"1845":1,"2264":1}}],["approaching",{"2":{"2590":1,"2591":1,"2743":1}}],["approaches",{"2":{"1302":1}}],["approach",{"2":{"689":1,"1340":1}}],["approachable",{"2":{"455":1,"479":1}}],["appropriately",{"2":{"562":1,"617":1,"674":1,"1974":1,"1977":1}}],["appropriate",{"2":{"36":2,"49":1,"191":1,"232":1,"331":1,"434":1,"477":1,"481":1,"554":1,"607":1,"609":1,"621":1,"1127":1,"1130":1,"1142":1,"1277":1,"1366":1,"1499":1,"1858":1,"1974":2,"1981":1,"2099":1,"2171":1,"2190":1,"2199":1,"2385":1,"2491":1,"2552":1,"2603":1,"2605":1,"2612":1,"2740":1,"2767":1}}],["appreciated",{"2":{"355":1}}],["app",{"0":{"306":1,"307":1,"308":1,"309":1,"319":1},"2":{"319":1,"1307":1,"1309":1,"2394":1,"2431":1,"2489":1,"2507":2}}],["apparently",{"2":{"293":2,"1528":1}}],["appearance",{"2":{"2309":1}}],["appear",{"2":{"317":1,"332":1,"625":1,"1464":1,"2654":1}}],["appears",{"2":{"50":1,"625":1,"626":1,"627":1,"629":1,"1310":1,"2383":1,"2386":1,"2551":2,"2568":1,"2595":1,"2605":1}}],["appended",{"2":{"2269":1,"2276":1}}],["appendix",{"0":{"1487":1},"1":{"1488":1,"1489":1}}],["appending",{"2":{"1349":1,"2348":1}}],["append",{"2":{"211":1,"2605":1,"2791":1}}],["apple",{"2":{"1315":3,"1316":2,"1320":2,"2501":1}}],["applies",{"2":{"454":1,"505":1,"1469":1,"1569":1,"1708":1,"1713":1,"1840":2,"1899":1,"1943":1,"1950":2,"1954":1,"1955":1,"2529":1,"2553":1,"2591":1,"2604":1,"2692":1}}],["applied",{"2":{"233":1,"341":2,"597":1,"1340":1,"1407":1,"1468":1,"1543":1,"1596":1,"1615":1,"1846":1,"2288":1,"2311":1,"2513":1,"2615":2,"2616":1,"2659":1,"2767":1}}],["applicable",{"2":{"199":1,"628":1,"1367":1,"1715":1,"2336":1,"2605":3,"2712":2,"2777":1}}],["application",{"2":{"182":1,"305":1,"311":1,"314":1,"319":1,"414":1,"415":1,"417":1,"423":1,"424":1,"519":1,"820":1,"1309":1,"1840":1,"2268":1,"2269":1,"2273":1,"2275":1,"2276":2,"2278":1,"2280":1,"2281":1,"2282":1,"2283":1,"2285":1,"2287":1,"2366":1,"2390":1,"2394":2,"2431":2,"2491":1,"2534":1}}],["applications",{"2":{"182":1,"1339":2,"1715":1,"2350":1,"2552":1,"2777":1}}],["apply",{"0":{"1484":1,"1485":1},"1":{"1485":1},"2":{"92":1,"199":1,"222":1,"285":1,"331":2,"335":1,"498":1,"692":1,"1173":1,"1257":1,"1261":1,"1263":1,"1266":1,"1267":1,"1339":1,"1363":2,"1373":1,"1383":1,"1449":1,"1468":1,"1484":1,"1485":3,"1501":1,"1504":1,"1506":1,"1507":1,"1543":1,"1555":1,"1920":2,"2084":1,"2150":1,"2151":2,"2311":2,"2450":1,"2564":1,"2605":1}}],["applying",{"2":{"21":1,"2151":1,"2311":1,"2513":3}}],["adherence",{"2":{"2758":1}}],["adhere",{"2":{"2479":1}}],["adheres",{"2":{"2311":1}}],["adhlns",{"2":{"134":1}}],["adequate",{"2":{"2305":1}}],["adelie",{"2":{"211":1}}],["adelais",{"2":{"134":6,"191":1}}],["adj",{"2":{"1851":3,"2175":3}}],["adjusting",{"2":{"1443":1,"1668":1,"1842":1}}],["adjusts",{"2":{"1438":1,"1672":1,"2076":2,"2183":1}}],["adjusted",{"2":{"788":1,"853":1,"887":1,"921":1,"955":1,"989":1,"1091":1,"2656":1}}],["adjustments",{"2":{"2767":1}}],["adjustment",{"0":{"1252":1},"2":{"236":1,"1977":1,"2076":1,"2174":1,"2727":2,"2733":3,"2734":4}}],["adjustable",{"2":{"134":1}}],["adjust",{"2":{"105":4,"160":2,"191":3,"198":1,"211":1,"266":1,"450":1,"556":1,"657":1,"789":1,"790":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1263":1,"1264":1,"1369":1,"1380":1,"1438":1,"1587":2,"1841":1,"1842":1,"1843":1,"1954":1,"1955":1,"1960":1,"1977":1,"1979":1,"1988":1,"2081":1,"2102":2,"2183":1,"2210":2,"2211":2,"2212":4,"2213":6,"2580":1,"2643":4,"2645":2,"2767":1}}],["ad",{"2":{"758":1,"787":1,"819":1}}],["administrator",{"2":{"628":1,"2221":1}}],["adm42",{"2":{"226":2,"236":1}}],["advice",{"2":{"2603":1}}],["advised",{"2":{"1125":1,"1128":1,"1435":1,"2536":1}}],["adventurous",{"2":{"1555":1}}],["advertised",{"2":{"537":1}}],["advantageous",{"2":{"2623":1}}],["advantages",{"2":{"1125":1,"1128":1,"2531":1,"2542":1,"2547":1}}],["advantage",{"2":{"93":1,"606":1,"1710":1,"2363":1}}],["advances",{"2":{"1860":8,"2181":8}}],["advanced",{"0":{"602":1,"697":1,"1135":1,"1341":1,"1377":1,"1397":1,"1401":1,"1411":1,"1534":1,"1546":1,"1550":1,"1705":1,"1710":1,"1818":1,"1821":1,"1828":1,"1960":1,"1973":1,"1976":1,"2063":1,"2066":1,"2208":1,"2764":1},"1":{"603":1,"604":1,"1136":1,"1137":1,"1342":1,"1343":1,"1344":1,"1345":1,"1346":1,"1402":1,"1403":1,"1404":1,"1405":1,"1406":1,"1407":1,"1408":1,"1409":1,"1410":1,"1412":1,"1551":1,"1552":1,"1553":1,"1554":1,"1555":1,"1556":1,"1557":1,"1558":1,"1559":1,"1560":1,"1561":1,"1562":1,"1563":1,"1706":1,"1711":1,"1712":1,"1713":1,"1829":1,"1830":1,"1974":1,"1975":1,"1976":1,"1977":2,"1978":2,"1979":1},"2":{"49":1,"63":1,"93":1,"160":1,"249":1,"504":1,"505":1,"540":1,"547":1,"697":2,"1135":1,"1267":2,"1302":1,"1338":1,"1340":1,"1377":1,"1401":1,"1441":1,"1546":2,"1708":1,"1771":2,"1825":2,"1828":2,"1943":1,"1960":1,"1973":1,"1995":2,"1996":3,"1997":2,"2199":3,"2200":1,"2205":1,"2207":3,"2208":2,"2209":1,"2316":1,"2362":1,"2387":1,"2498":1,"2562":1,"2582":1,"2605":1,"2610":1,"2762":1,"2763":1,"2764":2,"2792":1}}],["advance",{"0":{"2759":1},"2":{"30":1,"33":1,"322":1,"334":1,"1860":3,"2181":3,"2759":1}}],["adopted",{"2":{"470":1}}],["adoption",{"2":{"128":1}}],["adkb96",{"2":{"253":2}}],["adpenrose",{"2":{"211":2}}],["ad65",{"2":{"211":1}}],["adns9800",{"0":{"273":1,"276":1},"2":{"118":1,"160":1,"273":3,"276":1,"277":1,"1936":6}}],["adns",{"0":{"1935":1,"1936":1},"2":{"118":2,"1935":2,"1936":2}}],["adns5050",{"2":{"118":1,"1935":4}}],["adcconfig",{"2":{"1943":5}}],["adc6",{"2":{"638":1}}],["adcrpenablets",{"2":{"636":1}}],["adcd1",{"2":{"636":2}}],["adc3",{"2":{"635":3}}],["adc2",{"2":{"635":2}}],["adc1",{"2":{"635":1,"639":1}}],["adcv3",{"2":{"635":1}}],["adcv1",{"2":{"635":1}}],["adcs",{"2":{"635":2,"639":2}}],["adc",{"0":{"630":1},"1":{"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1,"639":1,"640":1,"641":1},"2":{"93":1,"191":2,"234":2,"249":1,"630":1,"633":2,"635":7,"636":3,"638":5,"639":11,"641":12,"1668":2,"1669":1,"1670":1,"1671":2,"1937":1,"1943":5,"2570":1}}],["adb",{"2":{"75":1,"1316":2}}],["adalyn",{"2":{"154":2}}],["adafruitble",{"0":{"153":1},"2":{"153":1,"160":1}}],["adafruit",{"0":{"1354":1,"1529":1},"2":{"50":2,"133":1,"134":2,"153":1,"163":1,"176":3,"487":1,"629":3,"674":1,"675":1,"1352":1,"1355":1,"1358":1,"1528":1,"1529":4,"1611":1,"2374":1,"2378":1,"2383":3,"2580":1,"2605":1,"2751":1}}],["adapting",{"2":{"2348":1}}],["adapter",{"2":{"322":1,"2338":1}}],["adapted",{"2":{"179":1}}],["adapt",{"2":{"32":1,"191":1}}],["addenda",{"0":{"1535":1}}],["added",{"2":{"14":1,"49":8,"63":1,"67":1,"72":2,"74":1,"81":1,"82":1,"86":1,"93":1,"112":1,"114":2,"132":1,"134":1,"138":1,"139":1,"143":1,"145":1,"160":4,"173":1,"175":2,"176":8,"189":1,"191":2,"196":1,"201":1,"202":1,"203":1,"211":1,"222":2,"230":1,"231":1,"234":3,"236":3,"243":1,"249":2,"266":2,"277":1,"341":1,"393":1,"435":1,"450":1,"513":1,"554":1,"621":1,"1133":1,"1276":1,"1384":1,"1398":1,"1413":1,"1414":3,"1416":1,"1435":1,"1468":1,"1483":1,"1492":1,"1586":1,"1592":1,"1597":1,"1712":2,"1723":2,"1734":1,"1858":1,"1951":1,"1970":1,"2073":1,"2172":1,"2256":1,"2309":1,"2323":1,"2486":2,"2526":1,"2547":1,"2603":1,"2606":2,"2709":1}}],["addr2",{"2":{"851":1,"886":1,"1022":1,"1056":1,"1090":1}}],["addr1",{"2":{"851":1,"886":1,"1022":1,"1056":1,"1090":1}}],["addr",{"2":{"236":1,"674":1,"920":1,"954":1,"988":1,"1146":1,"1183":1,"1943":1,"2392":8}}],["addressed",{"2":{"675":1,"694":1}}],["addresses",{"2":{"236":1,"249":1,"661":1,"701":2,"736":1,"758":1,"762":1,"787":1,"794":1,"819":1,"824":1,"851":1,"859":1,"886":1,"893":1,"920":1,"927":1,"954":1,"961":1,"988":1,"995":1,"1022":1,"1029":1,"1056":1,"1063":1,"1090":1,"1097":1,"1146":1,"1150":1,"1183":1,"1187":1,"1912":1}}],["addressable",{"2":{"642":1,"1249":2,"2069":2}}],["addressing",{"0":{"701":1,"732":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1146":1,"1183":1},"2":{"198":1,"201":1,"213":1,"224":1,"238":1,"554":1,"701":1,"1859":1,"2097":1,"2325":1}}],["address",{"0":{"708":1,"711":1,"726":2,"1664":2,"1666":2},"1":{"709":1,"710":1,"712":1,"713":1,"727":2,"728":2,"1665":2,"1667":2},"2":{"50":1,"73":1,"114":2,"191":1,"236":1,"520":1,"521":1,"522":1,"554":1,"611":2,"662":3,"674":9,"675":1,"678":1,"694":2,"701":4,"709":2,"712":2,"714":1,"715":2,"717":1,"718":2,"720":1,"721":2,"723":1,"724":2,"726":2,"727":2,"732":2,"737":4,"740":1,"757":8,"758":5,"763":4,"767":1,"786":8,"787":5,"795":4,"799":1,"818":8,"819":5,"825":4,"829":1,"850":8,"851":17,"860":4,"864":1,"885":8,"886":17,"894":4,"898":1,"919":8,"920":5,"928":4,"932":1,"953":8,"954":5,"962":4,"966":1,"987":8,"988":5,"996":4,"1000":1,"1021":8,"1022":17,"1030":4,"1034":1,"1055":8,"1056":17,"1064":4,"1068":1,"1089":8,"1090":17,"1098":4,"1102":1,"1145":8,"1146":5,"1151":4,"1155":1,"1182":8,"1183":5,"1188":4,"1192":1,"1257":2,"1392":1,"1659":2,"1664":1,"1665":2,"1666":1,"1667":2,"1856":2,"1859":1,"1939":2,"1943":1,"1948":2,"2328":1,"2390":1,"2392":1,"2572":1,"2615":3,"2739":2}}],["additive",{"0":{"687":1,"1430":1},"2":{"222":3,"236":2,"249":1,"685":1,"689":2,"692":1,"1427":1,"1430":2,"1434":1,"2715":1}}],["addition",{"2":{"114":1,"176":1,"194":1,"211":34,"249":1,"1337":1,"1378":1,"1397":1,"1564":1,"1704":1,"1760":1,"1771":1,"1995":1,"2098":1,"2150":1,"2184":1,"2199":1,"2315":1,"2434":1,"2760":1,"2768":2}}],["additionally",{"2":{"67":1,"86":1,"175":1,"209":1,"262":1,"529":1,"592":1,"686":1,"687":1,"1174":1,"1299":1,"1368":1,"1369":1,"1416":1,"1417":1,"1435":1,"1449":1,"1476":1,"1479":1,"1484":1,"1532":1,"1587":1,"1594":1,"1595":1,"1596":1,"1605":1,"1698":1,"1699":1,"1700":1,"1829":1,"1945":1,"1956":1,"1965":1,"2209":1,"2266":1,"2269":1,"2276":1,"2390":1,"2437":1,"2450":1,"2480":1,"2529":1,"2608":1,"2656":1}}],["additional",{"0":{"535":1,"1768":1,"1898":1,"1921":1,"1971":1,"1992":1,"2172":1,"2458":1,"2559":1,"2599":1},"1":{"1899":1,"1900":1,"1901":1,"1902":1,"1903":1,"1904":1,"1905":1,"1906":1,"1972":1,"2560":1,"2561":1,"2600":1,"2601":1},"2":{"50":1,"86":2,"94":1,"114":1,"134":1,"176":1,"189":1,"191":3,"198":1,"201":1,"210":1,"211":1,"213":1,"236":1,"429":1,"496":1,"564":1,"641":1,"1138":1,"1142":1,"1288":1,"1299":1,"1356":1,"1360":1,"1361":1,"1362":1,"1372":1,"1378":1,"1401":1,"1414":2,"1484":1,"1486":1,"1490":1,"1534":3,"1592":1,"1594":1,"1627":1,"1697":1,"1700":1,"1766":1,"1846":1,"1858":1,"1907":1,"1911":1,"1914":1,"1921":1,"1935":1,"1947":1,"1949":1,"1954":2,"1964":1,"1965":1,"1970":1,"1975":1,"1978":1,"1987":2,"2070":1,"2074":1,"2075":1,"2152":1,"2166":1,"2167":1,"2208":1,"2215":1,"2216":1,"2268":1,"2273":1,"2276":1,"2300":1,"2319":1,"2323":1,"2338":1,"2341":3,"2455":1,"2603":1,"2645":1,"2744":1,"2745":1,"2788":1,"2792":2}}],["additions",{"0":{"49":1,"63":1,"74":1,"93":1},"2":{"160":1,"211":147,"222":1,"236":1,"249":1,"2295":1}}],["adding",{"0":{"14":1,"528":1,"608":1,"1837":1,"1970":1,"2484":1,"2485":1,"2589":1,"2590":1,"2591":1,"2592":1,"2792":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"1838":1,"1839":1,"1971":1,"1972":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2600":1,"2601":1},"2":{"74":1,"86":1,"99":1,"114":1,"173":1,"201":1,"213":1,"236":1,"249":1,"266":1,"277":1,"370":1,"441":1,"533":1,"537":1,"570":1,"608":1,"609":1,"613":1,"659":1,"678":1,"734":1,"760":1,"788":1,"792":1,"822":1,"853":1,"857":1,"887":1,"891":1,"921":1,"925":1,"955":1,"959":1,"989":1,"993":1,"1027":1,"1061":1,"1091":1,"1095":1,"1148":1,"1185":1,"1253":1,"1301":1,"1302":1,"1313":1,"1357":1,"1366":1,"1372":1,"1396":2,"1430":1,"1451":1,"1467":1,"1483":1,"1538":1,"1540":1,"1545":1,"1565":1,"1585":1,"1592":1,"1595":1,"1720":1,"1825":1,"1851":1,"1906":1,"1910":1,"1924":1,"1951":1,"1970":1,"1971":2,"1975":1,"2069":1,"2162":1,"2163":1,"2167":1,"2175":1,"2199":1,"2220":1,"2263":1,"2301":1,"2303":2,"2319":1,"2482":1,"2527":1,"2530":1,"2552":1,"2583":1,"2585":1,"2589":2,"2605":1,"2606":2,"2615":11,"2745":1,"2746":2,"2766":1,"2774":1,"2775":1,"2792":1,"2796":2}}],["add",{"0":{"35":1,"163":1,"173":1,"393":1,"609":1,"610":1,"613":1,"614":1,"1300":1,"1732":1,"1875":1,"1972":1,"2254":1,"2475":1,"2476":1},"1":{"36":1,"611":1,"612":1,"1301":1,"1733":1,"1734":1,"1876":1,"2255":1,"2256":1},"2":{"28":1,"31":1,"32":2,"34":2,"49":4,"63":5,"65":4,"70":1,"74":5,"76":2,"77":2,"92":1,"93":24,"110":2,"114":38,"119":1,"123":1,"130":2,"133":2,"134":26,"145":21,"160":21,"175":1,"176":33,"189":4,"190":1,"191":27,"199":25,"202":2,"211":25,"221":1,"222":18,"235":1,"236":30,"249":23,"266":15,"273":1,"277":7,"282":6,"341":1,"349":1,"358":1,"359":1,"393":2,"436":1,"446":1,"450":1,"451":1,"453":1,"481":1,"513":2,"528":1,"530":1,"534":1,"537":1,"554":4,"564":2,"565":2,"566":2,"588":2,"607":6,"609":1,"610":1,"613":1,"614":1,"621":2,"631":1,"643":1,"644":1,"655":1,"656":1,"657":1,"700":1,"730":1,"731":1,"756":1,"757":1,"785":1,"786":1,"789":1,"790":1,"817":1,"818":1,"820":1,"849":1,"850":1,"854":1,"855":1,"884":1,"885":1,"888":1,"889":1,"918":1,"919":1,"922":1,"923":1,"952":1,"953":1,"956":1,"957":1,"986":1,"987":1,"990":1,"991":1,"1020":1,"1021":1,"1024":1,"1025":1,"1054":1,"1055":1,"1058":1,"1059":1,"1088":1,"1089":1,"1092":1,"1093":1,"1124":1,"1132":2,"1133":2,"1138":1,"1142":1,"1144":1,"1145":1,"1170":1,"1171":1,"1181":1,"1182":1,"1212":1,"1233":1,"1250":1,"1251":1,"1254":1,"1262":1,"1264":1,"1265":1,"1271":1,"1282":1,"1289":1,"1290":1,"1315":1,"1321":1,"1331":1,"1337":3,"1349":1,"1351":1,"1353":1,"1367":1,"1369":4,"1381":1,"1392":1,"1396":1,"1412":1,"1414":4,"1415":1,"1416":1,"1420":3,"1421":2,"1422":7,"1423":1,"1427":1,"1428":1,"1434":1,"1435":1,"1440":2,"1442":2,"1443":1,"1450":1,"1453":3,"1460":1,"1467":1,"1468":1,"1472":1,"1476":1,"1484":1,"1494":1,"1495":1,"1496":1,"1530":1,"1532":1,"1533":1,"1534":1,"1537":3,"1543":2,"1545":1,"1548":1,"1565":1,"1570":1,"1586":1,"1591":1,"1593":1,"1594":1,"1597":2,"1628":1,"1629":1,"1631":1,"1669":1,"1695":1,"1717":2,"1721":1,"1722":1,"1723":1,"1732":1,"1733":1,"1762":1,"1767":2,"1827":1,"1828":1,"1838":1,"1850":1,"1863":1,"1868":2,"1871":1,"1905":1,"1908":1,"1910":1,"1911":1,"1923":1,"1933":1,"1935":1,"1936":1,"1937":1,"1938":1,"1942":1,"1947":1,"1948":1,"1949":1,"1950":2,"1964":1,"1975":1,"1983":1,"1989":1,"1990":2,"1991":1,"2070":1,"2075":1,"2083":1,"2084":1,"2096":1,"2106":1,"2111":1,"2112":1,"2116":1,"2141":1,"2159":2,"2162":1,"2163":2,"2164":1,"2165":2,"2167":1,"2168":1,"2169":1,"2171":1,"2175":1,"2183":2,"2184":1,"2185":1,"2186":1,"2187":1,"2202":3,"2207":3,"2208":2,"2209":1,"2210":1,"2212":1,"2216":1,"2217":1,"2218":1,"2219":4,"2220":1,"2221":3,"2254":1,"2255":1,"2269":1,"2276":1,"2300":2,"2303":3,"2315":1,"2348":1,"2387":1,"2453":1,"2462":1,"2463":1,"2476":1,"2477":2,"2485":4,"2513":2,"2516":2,"2526":3,"2527":5,"2547":1,"2578":1,"2581":1,"2605":1,"2612":1,"2613":1,"2616":4,"2618":1,"2623":1,"2640":1,"2645":2,"2647":1,"2741":1,"2744":1,"2745":2,"2748":2,"2750":1,"2766":2,"2767":1,"2774":2,"2775":2,"2776":3,"2777":3,"2792":2,"2794":1,"2796":7}}],["adds",{"2":{"13":1,"35":1,"49":2,"50":1,"74":1,"107":1,"114":1,"173":1,"222":1,"229":1,"249":1,"277":1,"384":1,"393":1,"506":1,"1422":1,"1443":1,"1488":1,"2168":1,"2183":1,"2199":1,"2268":1,"2527":1,"2552":1}}],["agin",{"2":{"2394":1,"2431":1}}],["age",{"2":{"1362":1}}],["ag",{"2":{"1337":1,"1435":4,"1436":8,"2409":7,"2435":7}}],["agaim",{"2":{"592":1}}],["again",{"2":{"114":1,"134":1,"160":1,"340":1,"504":1,"537":1,"627":2,"1280":1,"1412":1,"1433":1,"1448":1,"1476":1,"1489":1,"1561":1,"1562":1,"1572":1,"1591":2,"1689":2,"1691":1,"1703":1,"1709":1,"1712":1,"1713":1,"1915":1,"1918":2,"1966":1,"2082":1,"2166":1,"2199":1,"2200":1,"2272":1,"2299":1,"2350":1,"2392":1,"2394":4,"2405":1,"2431":4,"2506":1,"2529":1,"2605":1}}],["against",{"2":{"26":1,"49":1,"51":1,"134":1,"176":1,"251":1,"263":1,"265":2,"275":1,"343":1,"349":1,"350":1,"400":2,"435":1,"530":1,"674":1,"1478":1,"2297":1,"2311":1,"2386":1,"2513":1,"2602":1,"2607":1,"2706":1,"2758":1,"2787":1}}],["agreed",{"2":{"204":1,"2585":1}}],["agnostic",{"0":{"1387":1},"1":{"1388":1,"1389":1},"2":{"17":1,"114":1,"695":1,"1389":1}}],["abab",{"0":{"2772":1}}],["abba",{"0":{"2771":1}}],["abbreviate",{"2":{"460":1}}],["abbreviations",{"2":{"460":1,"1536":1}}],["abbreviation",{"2":{"460":1,"2572":1}}],["abuse",{"2":{"2605":1}}],["abuser",{"2":{"562":1}}],["ab5",{"2":{"1831":1,"2410":1}}],["ab4",{"2":{"1831":1,"2410":1}}],["ab3",{"2":{"1831":1,"2410":1}}],["ab375d3",{"2":{"74":1}}],["ab2",{"2":{"1831":1,"2410":1}}],["ab1",{"2":{"1831":1,"2410":1}}],["ab",{"2":{"1548":4,"1560":5,"1565":1,"1831":1,"2410":1,"2770":6,"2771":1,"2772":4}}],["abcd",{"2":{"266":1,"1291":2}}],["abcminiuser",{"2":{"12":1}}],["abort",{"2":{"2513":2}}],["aborted",{"2":{"703":1}}],["above",{"2":{"228":1,"233":1,"266":1,"276":1,"317":1,"349":1,"352":1,"366":1,"432":1,"454":1,"458":1,"530":1,"532":1,"560":1,"588":1,"597":1,"598":1,"613":1,"694":1,"698":2,"1252":1,"1292":1,"1308":1,"1324":1,"1369":5,"1372":1,"1375":1,"1400":1,"1422":1,"1453":2,"1488":4,"1501":1,"1555":1,"1611":1,"1753":1,"1832":1,"1910":1,"1919":1,"1939":1,"1944":1,"1951":1,"1953":1,"1955":1,"1977":1,"1979":1,"2081":1,"2082":1,"2089":1,"2151":2,"2166":1,"2171":1,"2193":1,"2199":1,"2208":1,"2209":4,"2219":1,"2221":1,"2268":1,"2299":1,"2307":2,"2338":1,"2342":1,"2389":1,"2392":1,"2442":1,"2460":1,"2477":1,"2489":1,"2508":1,"2552":2,"2560":1,"2587":1,"2592":1,"2598":1,"2605":1,"2606":1,"2615":2,"2616":4,"2627":1,"2628":1,"2767":1,"2773":3,"2774":3,"2775":1,"2785":1,"2786":1,"2787":1}}],["about",{"2":{"49":1,"50":1,"93":1,"110":1,"114":1,"145":1,"176":1,"240":1,"251":1,"315":1,"347":1,"352":1,"378":2,"481":2,"492":1,"511":6,"512":1,"519":1,"551":2,"554":2,"560":1,"561":1,"567":2,"573":1,"585":1,"606":1,"701":1,"1274":1,"1281":1,"1301":1,"1303":1,"1338":1,"1349":1,"1372":1,"1487":1,"1591":1,"1841":1,"1859":2,"1868":2,"1921":1,"1943":1,"2077":1,"2152":1,"2166":6,"2190":3,"2303":1,"2306":1,"2315":1,"2344":1,"2394":1,"2446":1,"2457":1,"2479":1,"2548":1,"2552":1,"2605":2,"2617":1,"2710":2,"2711":1,"2762":1,"2763":1,"2787":2}}],["abstracted",{"2":{"2562":1}}],["abstracting",{"2":{"2301":2}}],["abstraction",{"2":{"249":1,"277":1,"695":1,"697":1,"1762":1,"1983":1,"2585":1,"2603":1,"2683":1}}],["abstractions",{"2":{"244":1,"2603":2}}],["absence",{"2":{"686":1,"1122":1}}],["absent",{"2":{"374":2,"2727":1,"2733":1,"2734":1}}],["absinthe",{"2":{"144":2}}],["absolutely",{"2":{"2315":1,"2605":1}}],["absolute",{"0":{"1944":1,"1945":1},"2":{"100":1,"114":1,"405":1,"1569":1,"1583":1,"1943":4,"2143":1,"2386":1,"2725":4}}],["abelx",{"2":{"134":1}}],["ability",{"2":{"49":2,"65":1,"93":1,"100":1,"114":1,"131":1,"134":1,"138":1,"145":1,"164":1,"173":1,"174":1,"176":1,"199":1,"506":1,"596":1,"703":1,"1130":1,"1339":2,"1371":1,"1592":1,"2069":1,"2073":1,"2168":1,"2169":1,"2552":1,"2757":1,"2758":1,"2776":3}}],["able",{"2":{"23":1,"50":1,"114":1,"138":2,"228":1,"350":1,"441":1,"537":1,"542":1,"554":1,"560":1,"567":1,"570":1,"627":1,"1280":1,"1363":1,"1368":1,"1385":1,"1390":1,"1413":1,"1491":1,"1611":2,"1692":1,"1693":1,"1710":1,"1722":1,"1825":1,"1901":1,"1925":1,"1960":1,"2070":1,"2099":1,"2184":1,"2188":1,"2195":1,"2200":1,"2209":1,"2266":1,"2267":1,"2283":1,"2285":1,"2287":1,"2303":1,"2351":1,"2489":1,"2496":1,"2508":1,"2533":1,"2534":1,"2552":1,"2587":2,"2588":1,"2615":1,"2644":1,"2740":1,"2762":1,"2764":1,"2794":1}}],["abnt2",{"2":{"5":1,"1392":1,"2742":2}}],["acl2",{"2":{"1839":1,"1843":7,"1844":2,"2411":1}}],["acl1",{"2":{"1839":1,"1843":8,"1844":2,"2411":1}}],["acl0",{"2":{"1839":1,"1843":7,"1844":2,"2411":1}}],["achievable",{"2":{"2757":1}}],["achieved",{"2":{"1859":1,"2616":1,"2740":1}}],["achieve",{"2":{"1704":1,"2102":1,"2207":1,"2307":1,"2309":1,"2615":1}}],["acheron",{"2":{"211":2}}],["acm=y",{"2":{"1277":1}}],["acm",{"2":{"1277":1}}],["acknowledge",{"2":{"506":1,"2082":1}}],["acquire",{"2":{"277":1,"2291":1}}],["ac",{"2":{"236":1,"1396":1,"1476":1,"1479":1,"1480":3,"2117":1,"2398":3}}],["acid",{"2":{"211":1}}],["acid3",{"2":{"154":13,"160":2}}],["acr60",{"0":{"256":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"154":2,"256":1,"266":1}}],["across",{"2":{"31":1,"34":1,"118":1,"128":1,"148":1,"149":1,"167":1,"246":1,"262":1,"695":1,"1488":1,"1632":1,"2215":1,"2774":1}}],["accident",{"2":{"2767":1}}],["accidental",{"2":{"246":1,"1405":1,"1551":1,"1557":1}}],["accidentally",{"2":{"194":1,"198":1,"627":1,"1925":1,"2344":1}}],["accumulates",{"2":{"2082":1}}],["accumulate",{"2":{"1960":1}}],["accumulated",{"2":{"1960":13}}],["accuracy",{"2":{"1844":1,"2182":1}}],["accurately",{"2":{"1763":1,"1984":1,"2595":1}}],["accurate",{"2":{"10":1,"1125":1,"1128":1,"1254":1,"2264":1,"2350":1}}],["accomidate",{"2":{"1436":1}}],["accompanying",{"2":{"2606":1}}],["accompanied",{"2":{"118":1,"1451":1,"2760":1}}],["accomplish",{"2":{"1349":1,"1373":1,"2200":1,"2450":1,"2457":1}}],["accomplished",{"2":{"540":1}}],["accommodate",{"2":{"160":1,"1552":1}}],["accounted",{"2":{"1252":1}}],["account",{"2":{"160":1,"211":1,"222":1,"554":2,"2303":2,"2345":1,"2390":1,"2468":2,"2471":1,"2482":1,"2511":2}}],["according",{"2":{"134":2,"638":1,"639":1,"1870":1,"1988":1,"2339":1,"2475":1,"2493":1}}],["accordingly",{"2":{"126":1,"220":1,"278":1,"852":1,"1023":1,"1057":1,"2209":1,"2338":1,"2580":1,"2589":1}}],["accented",{"2":{"2741":1}}],["accel",{"2":{"1843":3}}],["accelerating",{"2":{"1842":1}}],["acceleration",{"2":{"48":2,"1839":6,"1840":1,"1841":4,"1842":3,"1843":1,"1844":4,"1845":1,"1846":4,"1906":1,"2411":6}}],["accelerate",{"2":{"2312":1,"2788":1}}],["accelerates",{"2":{"1840":4,"1845":1}}],["accelerated",{"0":{"1841":1},"2":{"1840":1,"1841":1,"1842":5,"1844":2,"1845":1}}],["accel2",{"2":{"231":1}}],["accessor",{"2":{"2616":2}}],["accessible",{"2":{"1307":1,"2315":1}}],["accessing",{"2":{"317":1,"1337":1,"2502":1,"2616":2}}],["accessed",{"2":{"501":1,"1337":1}}],["accesses",{"2":{"114":1}}],["access",{"2":{"222":1,"240":1,"328":1,"430":2,"433":1,"436":4,"441":1,"479":1,"597":1,"611":2,"633":1,"695":1,"1291":1,"1368":1,"1390":1,"1593":1,"1706":1,"1829":1,"2300":4,"2435":1,"2471":1,"2477":2,"2545":1,"2549":2,"2605":1,"2644":2,"2767":2}}],["acceptable",{"2":{"2603":1,"2605":1}}],["acceptance",{"2":{"341":1}}],["accepts",{"2":{"340":1,"374":1,"405":1,"522":1,"2614":1,"2616":2}}],["accepted",{"2":{"201":1,"265":1,"341":1,"550":1,"556":1,"1413":1,"2604":1,"2605":3}}],["accepting",{"2":{"199":1,"213":1,"224":1,"549":1,"1302":1,"2342":1,"2590":1,"2591":1}}],["accept",{"2":{"173":1,"453":1,"1372":1,"1653":1,"2113":1,"2301":1,"2303":1,"2346":1,"2386":1,"2449":1,"2605":1}}],["acts",{"2":{"2406":1,"2449":1,"2693":1}}],["actor",{"2":{"2476":3}}],["acto",{"2":{"2171":1}}],["act",{"2":{"671":1,"1337":1,"1536":1,"1910":1,"1975":1,"2206":1,"2350":1,"2526":1,"2529":2}}],["actuators",{"2":{"1615":1}}],["actuated",{"2":{"1611":4,"2318":1}}],["actuation",{"2":{"236":1,"1611":1}}],["actual",{"2":{"304":1,"335":1,"571":1,"573":1,"592":1,"1330":1,"1339":1,"1758":1,"1853":1,"1925":1,"1943":1,"2098":1,"2177":1,"2190":1,"2354":1,"2356":1,"2366":1,"2380":1,"2738":1,"2784":1,"2790":1}}],["actually",{"2":{"13":1,"28":1,"51":1,"83":1,"182":1,"396":1,"484":1,"527":1,"556":1,"635":1,"675":1,"679":1,"1297":1,"1304":1,"1309":1,"1315":1,"1320":1,"1362":1,"1373":1,"1420":1,"1421":1,"1479":1,"1859":1,"1956":1,"2110":1,"2113":1,"2156":1,"2157":1,"2190":1,"2207":1,"2318":2,"2354":1,"2357":2,"2387":1,"2589":1,"2641":1,"2653":1,"2740":2,"2767":1,"2779":1,"2796":1}}],["activating",{"2":{"246":1,"1372":1,"1709":3,"1906":1,"1965":1,"2574":1,"2776":1}}],["activation",{"0":{"246":1,"1556":1,"1711":1,"1980":1},"2":{"137":1,"246":1,"1339":1,"1340":1,"1405":1,"1537":1,"1561":1,"1611":2,"1706":1,"1708":1,"1709":3,"1711":1,"1969":2,"1974":2,"1980":6,"1981":1,"2145":2}}],["activates",{"2":{"1372":6,"1377":1,"1396":1,"1544":1,"1697":1,"1706":1,"1952":1,"2210":1,"2406":1,"2446":1,"2578":1}}],["activate",{"0":{"1966":1},"2":{"194":2,"211":1,"556":1,"1124":1,"1127":1,"1130":1,"1132":2,"1133":2,"1272":1,"1372":1,"1377":1,"1423":1,"1536":1,"1537":6,"1538":1,"1547":2,"1554":1,"1555":2,"1556":1,"1558":1,"1560":1,"1568":1,"1620":2,"1693":1,"1699":1,"1703":2,"1708":3,"1709":1,"1711":4,"1965":3,"1980":1,"2145":3,"2184":1,"2221":1,"2447":1,"2449":1,"2529":1,"2578":1,"2644":1,"2684":1,"2719":2,"2767":1,"2776":1}}],["activated",{"2":{"73":1,"236":1,"1372":4,"1377":1,"1396":1,"1435":1,"1436":2,"1496":1,"1538":1,"1552":1,"1559":1,"1560":1,"1611":1,"1708":3,"1711":1,"1843":1,"1980":1,"2084":1,"2350":1,"2578":1,"2580":1}}],["actively",{"2":{"1169":1,"2448":1}}],["active",{"0":{"1731":1,"1978":1,"2250":1},"1":{"2251":1},"2":{"105":8,"160":1,"191":1,"199":1,"249":1,"537":1,"1171":4,"1337":3,"1339":2,"1340":2,"1372":4,"1375":1,"1377":2,"1378":2,"1382":1,"1401":1,"1412":5,"1434":1,"1483":2,"1536":1,"1541":1,"1543":1,"1544":3,"1562":1,"1587":7,"1608":4,"1611":3,"1617":1,"1620":1,"1708":3,"1731":1,"1843":2,"1907":1,"1911":1,"1952":3,"1960":2,"1965":1,"1969":1,"1972":1,"1974":2,"1977":2,"1980":2,"1981":1,"2079":1,"2080":4,"2144":1,"2145":4,"2167":1,"2169":1,"2200":2,"2209":3,"2225":1,"2250":1,"2251":1,"2406":1,"2442":2,"2447":1,"2453":1,"2529":1,"2530":1,"2683":1,"2738":1}}],["activity",{"2":{"74":2,"211":2,"249":1,"588":5,"2105":1,"2109":2,"2167":3,"2557":1,"2727":1,"2734":1,"2736":2}}],["acting",{"2":{"14":1,"2649":1}}],["actioned",{"2":{"16":1}}],["actions",{"0":{"3":1,"7":1,"15":1,"1839":1,"2487":1},"2":{"3":2,"7":3,"15":2,"16":1,"38":1,"114":2,"134":2,"247":1,"340":1,"347":1,"355":1,"515":1,"520":1,"521":1,"1312":1,"1362":1,"1369":1,"1394":1,"1501":1,"1545":1,"1548":1,"1693":2,"1708":2,"1715":1,"1837":1,"1839":1,"1864":1,"2104":1,"2199":3,"2202":1,"2204":1,"2205":1,"2206":2,"2207":1,"2208":1,"2209":3,"2352":1,"2441":1,"2468":1,"2476":3,"2478":1,"2479":1,"2480":1,"2481":1,"2485":1,"2487":1,"2501":1,"2541":1,"2610":1,"2768":1,"2777":1}}],["action",{"0":{"3":1,"7":1,"15":1,"40":1,"53":1,"67":1,"72":1,"85":1,"101":1,"121":1,"140":1,"150":1,"151":1,"165":1,"180":1,"193":1,"205":1,"216":1,"225":1,"239":1,"252":1,"269":1,"2192":1,"2476":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"86":1,"87":1,"88":1,"89":1,"90":1,"102":1,"103":1,"104":1,"105":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"141":1,"142":1,"143":1,"144":1,"151":1,"152":1,"153":1,"154":1,"166":1,"167":1,"168":1,"169":1,"170":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"194":1,"195":1,"196":1,"197":1,"206":1,"207":1,"217":1,"218":1,"219":1,"220":1,"221":1,"226":1,"240":1,"241":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"270":1,"271":1,"272":1,"273":1,"2193":1,"2194":1,"2195":1,"2196":1},"2":{"16":1,"38":9,"49":1,"75":2,"120":7,"151":1,"160":2,"199":6,"203":1,"211":1,"291":1,"352":3,"428":1,"503":3,"505":1,"506":1,"520":1,"529":1,"546":1,"627":1,"1377":1,"1391":7,"1394":9,"1422":1,"1468":2,"1483":3,"1545":1,"1548":3,"1565":2,"1692":1,"1706":1,"1708":2,"1714":1,"1715":2,"1840":1,"1841":1,"1843":4,"1907":1,"1910":1,"1912":1,"2082":1,"2192":2,"2199":12,"2200":2,"2202":2,"2204":2,"2205":4,"2206":9,"2207":6,"2208":2,"2209":4,"2440":5,"2445":1,"2467":1,"2547":1,"2690":1,"2744":2,"2745":2,"2747":1,"2768":6,"2774":7,"2775":5,"2777":2,"2788":1}}],["averages",{"2":{"2608":1}}],["average",{"2":{"2263":1,"2264":2,"2766":1}}],["avail",{"2":{"2489":1}}],["availability",{"2":{"624":1,"2605":1}}],["available",{"0":{"1247":1,"2324":1},"1":{"1248":1,"2325":1,"2326":1,"2327":1,"2328":1,"2329":1,"2330":1},"2":{"10":1,"73":1,"83":1,"124":2,"138":1,"145":1,"164":1,"186":1,"189":1,"202":1,"210":1,"211":1,"213":1,"232":2,"235":1,"307":1,"315":1,"317":1,"349":1,"371":1,"375":1,"385":1,"411":3,"429":1,"451":1,"497":1,"511":4,"516":1,"519":1,"526":1,"556":1,"606":1,"609":1,"624":1,"641":1,"674":1,"675":1,"679":2,"683":1,"685":1,"732":1,"1121":1,"1125":1,"1130":1,"1134":1,"1140":1,"1141":1,"1142":1,"1169":1,"1171":1,"1232":1,"1271":1,"1283":1,"1286":1,"1302":1,"1304":2,"1307":1,"1348":1,"1356":1,"1362":1,"1392":1,"1414":1,"1421":1,"1434":1,"1435":2,"1439":1,"1440":2,"1443":1,"1482":1,"1549":1,"1608":2,"1700":1,"1766":1,"1862":1,"1891":1,"1897":1,"1901":1,"1951":1,"1953":1,"1955":1,"1987":1,"2101":1,"2187":1,"2263":2,"2267":1,"2268":1,"2270":1,"2271":1,"2272":1,"2273":1,"2276":1,"2277":1,"2279":1,"2282":1,"2283":2,"2285":2,"2287":2,"2288":1,"2300":2,"2311":1,"2317":1,"2334":1,"2336":1,"2342":1,"2358":1,"2366":1,"2385":1,"2393":1,"2490":1,"2498":1,"2507":1,"2553":1,"2565":1,"2582":1,"2594":1,"2600":1,"2601":1,"2605":1,"2616":6,"2741":1,"2748":1}}],["avalon",{"2":{"211":1}}],["avoids",{"2":{"1381":1,"2467":1}}],["avoided",{"0":{"2556":1},"2":{"472":1,"473":1,"478":1,"617":1,"2556":3,"2560":1,"2616":1}}],["avoiding",{"0":{"1478":1},"2":{"282":3,"341":1,"1377":1}}],["avoid",{"0":{"461":1},"2":{"34":1,"114":2,"176":1,"191":1,"195":1,"271":1,"435":1,"457":1,"469":1,"477":1,"556":1,"606":1,"616":1,"1172":1,"1291":1,"1368":1,"1374":1,"1378":2,"1435":1,"1508":1,"1536":1,"1598":1,"1632":1,"1860":1,"1925":1,"1956":1,"1974":1,"1978":2,"2264":1,"2288":1,"2315":3,"2467":1,"2536":1,"2784":1}}],["avrisp",{"2":{"2368":1,"2372":1,"2386":1}}],["avr109",{"2":{"2271":3}}],["avr8",{"2":{"514":1}}],["avrdudess",{"2":{"2271":1,"2274":1}}],["avrdude",{"2":{"236":1,"509":2,"1422":1,"2164":3,"2271":3,"2272":6,"2274":2,"2300":1,"2368":2,"2370":2,"2372":2,"2374":3,"2376":2,"2378":2,"2380":2,"2386":19,"2387":2}}],["avrs",{"2":{"145":1,"2268":1,"2744":1}}],["avr",{"0":{"123":1,"487":1,"514":1,"633":1,"638":1,"684":1,"702":1,"1213":1,"1234":1,"1424":1,"1502":1,"1894":1,"2325":1,"2662":1,"2743":1},"1":{"1425":1,"1503":1,"1504":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1,"2750":1},"2":{"2":1,"28":2,"74":1,"111":1,"113":1,"114":5,"123":2,"130":1,"134":3,"138":2,"145":4,"160":3,"166":1,"172":1,"176":5,"191":2,"199":1,"211":1,"215":2,"222":2,"266":2,"486":3,"511":2,"552":1,"560":1,"630":2,"671":2,"684":1,"696":2,"697":2,"1121":1,"1214":1,"1256":2,"1327":1,"1349":2,"1353":1,"1354":1,"1528":1,"1529":1,"1670":1,"1849":4,"1859":1,"1860":2,"2152":2,"2153":1,"2164":3,"2166":1,"2267":1,"2274":1,"2275":1,"2301":1,"2325":1,"2349":1,"2366":1,"2374":1,"2380":1,"2386":2,"2387":3,"2501":1,"2531":1,"2535":1,"2540":1,"2578":1,"2612":1,"2662":1,"2677":1,"2694":1,"2703":1,"2743":2,"2757":1,"2763":1,"2782":2}}],["aur",{"2":{"2505":1}}],["aurora",{"2":{"191":2}}],["auxiliary",{"2":{"2340":1}}],["au",{"2":{"1435":3,"1439":2,"1445":5,"2396":5}}],["audience",{"2":{"470":1}}],["audio",{"0":{"28":1,"215":1,"683":1,"1328":1,"1423":1,"1436":1,"1438":1,"1443":1,"1445":1,"2218":1,"2396":1,"2715":1,"2746":1},"1":{"684":1,"685":1,"686":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1,"1437":1,"1438":1,"1439":1,"1440":1,"1441":1,"1442":1,"1443":1,"1444":1,"1445":1,"2220":1},"2":{"28":6,"70":1,"74":1,"75":1,"105":4,"111":1,"112":2,"114":1,"133":1,"134":1,"160":1,"188":1,"191":3,"215":1,"222":6,"231":4,"236":1,"249":2,"266":3,"502":26,"515":3,"592":1,"683":2,"685":3,"686":4,"687":1,"688":12,"689":4,"690":5,"691":5,"1328":1,"1353":1,"1394":1,"1415":1,"1423":1,"1424":10,"1425":2,"1426":1,"1427":6,"1428":3,"1429":3,"1430":7,"1431":2,"1432":4,"1433":5,"1434":3,"1435":17,"1436":10,"1437":3,"1438":2,"1439":8,"1443":18,"1445":19,"1485":2,"1504":1,"1587":4,"1724":3,"1756":2,"2112":1,"2218":1,"2301":4,"2394":3,"2396":20,"2432":3,"2570":1,"2646":2,"2649":1,"2715":5,"2745":1,"2746":1,"2763":1,"2788":1}}],["austin",{"2":{"211":1}}],["authentication",{"0":{"2471":1}}],["authenticated",{"2":{"527":1,"2471":1}}],["author",{"2":{"2348":1,"2603":1}}],["authored",{"2":{"38":1}}],["authorship",{"2":{"1417":1}}],["authors",{"2":{"32":1}}],["autoload",{"2":{"450":1}}],["auto+retro",{"2":{"236":1}}],["autocorrected",{"2":{"1479":1,"1485":1}}],["autocorrection",{"0":{"1476":1},"2":{"1476":1,"1478":1,"1479":1,"1484":1,"1485":3,"1487":1,"1488":1}}],["autocorrect",{"0":{"179":1,"1474":1,"1477":1,"1479":1,"1482":1,"1483":1,"1484":1,"1485":1,"1486":1,"2398":1},"1":{"1475":1,"1476":1,"1477":1,"1478":2,"1479":1,"1480":2,"1481":1,"1482":1,"1483":2,"1484":1,"1485":2,"1486":1,"1487":1,"1488":1,"1489":1,"1490":1},"2":{"179":2,"188":1,"191":2,"211":1,"222":2,"1476":1,"1477":6,"1478":1,"1479":2,"1480":6,"1482":6,"1483":6,"1484":1,"1485":6,"1486":9,"1487":1,"1488":1,"2398":7}}],["automation",{"2":{"2531":1,"2542":1}}],["automatically",{"2":{"173":1,"201":1,"246":1,"347":1,"364":1,"370":1,"371":1,"376":1,"378":1,"381":1,"383":1,"386":1,"435":1,"436":1,"445":2,"454":2,"560":1,"597":1,"626":1,"643":1,"655":1,"679":2,"684":1,"700":1,"727":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1170":1,"1181":1,"1212":1,"1233":1,"1250":1,"1251":1,"1254":1,"1413":3,"1414":1,"1422":1,"1435":2,"1462":1,"1474":1,"1475":1,"1477":1,"1531":1,"1536":1,"1541":1,"1563":2,"1768":1,"1863":1,"1870":1,"1906":1,"1937":1,"1965":1,"1988":1,"1989":1,"1992":1,"2089":1,"2110":1,"2170":1,"2183":2,"2221":1,"2267":1,"2268":2,"2269":1,"2271":1,"2273":1,"2275":1,"2276":2,"2278":1,"2280":1,"2281":1,"2282":1,"2288":1,"2291":1,"2299":1,"2380":1,"2400":1,"2478":1,"2480":1,"2487":1,"2500":1,"2615":1,"2719":1}}],["automatic",{"0":{"246":1,"1965":1,"2105":1},"1":{"1966":1,"1967":1,"1968":1,"1969":1,"1970":1,"1971":1,"1972":1,"1973":1,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1},"2":{"134":1,"190":2,"191":1,"246":1,"679":1,"1353":1,"1354":1,"1449":1,"1981":1}}],["automata02",{"2":{"222":1}}],["automate",{"2":{"199":1}}],["automated",{"2":{"10":1,"198":1,"606":1,"1347":1,"2706":1}}],["autoshifted",{"2":{"1460":1}}],["autoshift",{"2":{"93":1,"191":1,"1453":4,"1467":3}}],["auto",{"0":{"454":1,"1446":1,"1447":1,"1449":1,"1450":1,"1452":1,"1453":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":2,"1463":1,"1464":1,"1465":1,"1466":1,"1470":1,"1974":1,"1977":1,"1979":1,"1981":1,"2397":1},"1":{"1447":1,"1448":1,"1449":1,"1450":1,"1451":1,"1452":1,"1453":2,"1454":2,"1455":2,"1456":2,"1457":2,"1458":2,"1459":2,"1460":2,"1461":2,"1462":2,"1463":2,"1464":2,"1465":2,"1466":2,"1467":1,"1468":1,"1469":1,"1470":1,"1471":2,"1472":2,"1473":2},"2":{"49":1,"63":1,"134":3,"176":1,"188":1,"191":1,"195":3,"211":3,"222":2,"246":1,"249":1,"266":1,"679":1,"1447":1,"1448":14,"1449":2,"1450":2,"1451":4,"1452":3,"1453":7,"1454":1,"1455":2,"1456":1,"1457":1,"1458":1,"1459":1,"1460":15,"1462":1,"1466":1,"1467":4,"1468":3,"1470":1,"1471":12,"1472":4,"1473":1,"1485":1,"1531":1,"1937":2,"1960":3,"1965":1,"1966":2,"1967":10,"1968":1,"1969":7,"1973":1,"1974":33,"1975":7,"1977":10,"1978":11,"1979":10,"1980":3,"1981":5,"2397":13,"2400":1,"2513":1,"2552":1,"2776":5,"2778":2,"2788":1}}],["august",{"0":{"96":1,"161":1,"267":1},"1":{"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"254":1,"268":1,"2671":1}}],["aug",{"0":{"0":1,"39":1,"212":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1},"2":{"88":1,"104":1,"127":1,"170":1,"315":2,"338":1,"340":1,"351":6}}],["aforementioned",{"2":{"1713":1}}],["aforementionned",{"2":{"1373":1}}],["af2",{"2":{"1506":1}}],["afnor",{"2":{"1392":1,"2742":3}}],["africa",{"2":{"1305":1}}],["afpp",{"2":{"1142":7}}],["afio",{"2":{"1142":1}}],["af4",{"2":{"1141":4}}],["af0",{"2":{"1141":4}}],["af1",{"2":{"1141":10}}],["af7",{"2":{"1140":22}}],["affecting",{"2":{"1337":4,"2071":1,"2318":1,"2344":1,"2606":1}}],["affect",{"2":{"221":1,"233":1,"435":2,"560":1,"1349":1,"2606":2,"2654":1,"2767":1,"2778":1}}],["affects",{"2":{"45":1,"49":1,"244":1,"1280":1,"1363":1,"2199":1,"2613":1}}],["affected",{"2":{"3":1,"4":1,"10":1,"14":1,"15":1,"221":1,"254":1,"1172":1,"1596":1,"1611":1,"2168":1,"2568":1,"2774":2,"2775":1}}],["afterwards",{"2":{"202":1,"1307":1,"2312":1,"2507":1}}],["aftermath",{"2":{"176":1}}],["after",{"0":{"25":1,"2204":1},"2":{"10":1,"11":1,"23":1,"24":1,"25":5,"49":1,"90":1,"105":1,"114":2,"134":4,"142":1,"160":1,"176":4,"191":3,"195":1,"199":5,"211":2,"222":1,"255":2,"259":1,"263":1,"315":1,"324":1,"340":1,"341":1,"344":1,"345":1,"349":1,"350":3,"453":1,"485":1,"502":2,"505":2,"510":1,"513":2,"515":1,"554":1,"559":1,"570":1,"575":1,"578":1,"582":1,"588":2,"596":1,"599":1,"624":1,"647":1,"665":1,"679":1,"689":1,"698":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1195":1,"1199":1,"1203":1,"1205":1,"1280":1,"1287":1,"1302":1,"1313":1,"1324":1,"1335":1,"1340":3,"1367":1,"1368":1,"1369":2,"1383":1,"1397":4,"1414":1,"1440":1,"1448":1,"1477":1,"1478":1,"1488":3,"1560":1,"1703":1,"1709":1,"1713":2,"1721":1,"1722":2,"1767":1,"1814":1,"1816":1,"1818":1,"1821":1,"1840":1,"1843":1,"1845":2,"1855":2,"1863":1,"1897":1,"1899":1,"1901":1,"1907":1,"1952":1,"1965":1,"1969":2,"1990":1,"2059":1,"2061":1,"2063":1,"2066":1,"2069":1,"2080":1,"2082":1,"2105":1,"2166":2,"2179":1,"2188":1,"2190":1,"2199":3,"2200":2,"2207":1,"2272":1,"2300":1,"2303":1,"2309":1,"2312":3,"2315":1,"2316":1,"2350":1,"2392":1,"2435":1,"2441":1,"2445":1,"2484":1,"2526":1,"2527":1,"2529":2,"2530":1,"2538":1,"2563":1,"2564":1,"2565":1,"2587":1,"2595":1,"2603":1,"2606":1,"2607":1,"2613":1,"2616":1,"2620":1,"2627":1,"2628":1,"2639":1,"2641":1,"2646":1,"2654":1,"2688":1,"2738":2,"2741":1,"2762":1,"2767":1,"2773":1,"2776":1,"2788":2}}],["arbitrary",{"2":{"318":1,"374":1,"1398":1,"1406":1,"1487":1,"1704":1,"2168":1,"2526":1,"2563":1}}],["arises",{"2":{"2350":1}}],["arise",{"2":{"273":1,"2463":1}}],["arrangement",{"2":{"2598":2}}],["arranged",{"2":{"2350":2,"2653":1}}],["arrange",{"2":{"1375":1}}],["arrays",{"2":{"191":1,"374":2,"530":1,"1715":2,"1859":2,"2186":1,"2439":3,"2596":1,"2777":2}}],["array",{"0":{"27":1},"2":{"27":1,"176":1,"249":1,"266":1,"529":2,"612":5,"666":1,"742":1,"746":1,"750":1,"752":1,"769":1,"773":1,"777":1,"779":1,"801":1,"805":1,"809":1,"811":1,"833":1,"837":1,"841":1,"843":1,"868":1,"872":1,"876":1,"878":1,"902":1,"906":1,"910":1,"912":1,"936":1,"940":1,"944":1,"946":1,"970":1,"974":1,"978":1,"980":1,"1004":1,"1008":1,"1012":1,"1014":1,"1038":1,"1042":1,"1046":1,"1048":1,"1072":1,"1076":1,"1080":1,"1082":1,"1106":1,"1110":1,"1114":1,"1116":1,"1159":1,"1163":1,"1196":1,"1200":1,"1204":1,"1206":1,"1270":2,"1316":1,"1389":1,"1393":1,"1396":1,"1488":3,"1548":1,"1554":1,"1555":3,"1595":1,"1611":1,"1629":1,"1650":1,"1652":1,"1671":1,"1676":2,"1695":2,"1858":2,"1937":2,"2080":4,"2108":1,"2163":1,"2193":2,"2195":1,"2199":2,"2219":2,"2241":1,"2243":1,"2244":1,"2245":1,"2247":1,"2248":1,"2341":1,"2439":4,"2440":1,"2597":1,"2634":1,"2636":1,"2638":1,"2664":1,"2682":1,"2785":2}}],["arrowmechanics",{"2":{"266":1}}],["arrow",{"2":{"255":2,"259":2,"266":1,"626":2,"1624":4,"1907":1,"1910":5,"1915":2,"1972":1,"2117":1,"2394":8,"2431":4,"2433":4,"2656":1,"2659":2}}],["arg",{"2":{"441":3,"597":2,"598":1,"1916":1}}],["args",{"2":{"176":1,"441":3,"462":1,"465":1,"1911":1,"2547":1}}],["arguments",{"0":{"436":1,"441":1,"465":1,"648":1,"650":1,"653":1,"664":1,"666":1,"668":1,"670":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"740":1,"742":1,"744":1,"746":1,"748":1,"750":1,"752":1,"765":1,"767":1,"769":1,"771":1,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"797":1,"799":1,"801":1,"803":1,"805":1,"807":1,"809":1,"811":1,"813":1,"815":1,"827":1,"829":1,"831":1,"833":1,"835":1,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":1,"866":1,"868":1,"870":1,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":1,"900":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":1,"934":1,"936":1,"938":1,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":1,"968":1,"970":1,"972":1,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":1,"1002":1,"1004":1,"1006":1,"1008":1,"1010":1,"1012":1,"1014":1,"1016":1,"1018":1,"1032":1,"1034":1,"1036":1,"1038":1,"1040":1,"1042":1,"1044":1,"1046":1,"1048":1,"1050":1,"1052":1,"1066":1,"1068":1,"1070":1,"1072":1,"1074":1,"1076":1,"1078":1,"1080":1,"1082":1,"1084":1,"1086":1,"1100":1,"1102":1,"1104":1,"1106":1,"1108":1,"1110":1,"1112":1,"1114":1,"1116":1,"1118":1,"1120":1,"1153":1,"1155":1,"1157":1,"1159":1,"1161":1,"1163":1,"1165":1,"1167":1,"1177":1,"1179":1,"1190":1,"1192":1,"1194":1,"1196":1,"1198":1,"1200":1,"1202":1,"1204":1,"1206":1,"1208":1,"1210":1,"1218":1,"1221":1,"1226":1,"1229":1,"1238":1,"1240":1,"1244":1,"1246":1,"1270":1,"1517":1,"1584":1,"1635":1,"1639":1,"1642":1,"1644":1,"1646":1,"1648":1,"1650":1,"1652":1,"1656":1,"1658":1,"1661":1,"1663":1,"1665":1,"1667":1,"1681":1,"1683":1,"1685":1,"1688":1,"1733":1,"1738":1,"1741":1,"1744":1,"1747":1,"1750":1,"1782":1,"1784":1,"1786":1,"1788":1,"1806":1,"1808":1,"1819":1,"1822":1,"1876":1,"1878":1,"1880":1,"1882":1,"1884":1,"1890":1,"1930":1,"1932":1,"2009":1,"2011":1,"2013":1,"2015":1,"2045":1,"2047":1,"2051":1,"2053":1,"2064":1,"2067":1,"2120":1,"2122":1,"2124":1,"2126":1,"2128":1,"2130":1,"2132":1,"2134":1,"2136":1,"2227":1,"2231":1,"2233":1,"2238":1,"2240":1,"2242":1,"2245":1,"2248":1,"2255":1,"2262":1},"1":{"437":1,"438":1,"439":1,"440":1,"441":1,"1820":1,"1823":1,"2065":1,"2068":1},"2":{"114":1,"385":1,"393":1,"394":1,"400":1,"401":1,"413":1,"414":1,"416":1,"432":2,"441":2,"462":1,"473":1,"1384":1,"1926":1,"2187":1,"2200":1,"2387":1,"2527":1,"2614":3,"2786":1}}],["argument",{"0":{"474":1},"2":{"46":1,"194":2,"199":1,"236":1,"266":1,"370":2,"371":1,"413":1,"415":2,"416":1,"430":6,"436":5,"441":3,"474":1,"573":2,"597":3,"598":1,"1214":1,"1337":1,"1352":1,"1359":1,"1373":4,"1386":1,"2190":2,"2386":1,"2450":1,"2527":1,"2530":1,"2614":7}}],["artifact",{"2":{"2476":1}}],["artifacts",{"2":{"114":1,"1172":1,"2478":1,"2620":1}}],["article",{"2":{"2267":1,"2350":2}}],["art",{"2":{"176":2}}],["archive",{"2":{"2476":1}}],["architecture",{"0":{"517":1},"2":{"517":2,"697":1}}],["arch",{"2":{"154":2,"176":1,"514":1,"2470":1,"2503":1,"2505":1}}],["arabica37",{"2":{"134":1}}],["arya",{"2":{"134":1}}],["arduinoisp",{"2":{"2370":1}}],["arduino",{"0":{"243":1,"1330":1,"2370":1},"1":{"2371":1},"2":{"113":1,"114":1,"133":1,"134":1,"243":2,"552":2,"629":4,"1330":8,"2271":1,"2325":1,"2370":2,"2383":4}}],["armtoolchainpath",{"2":{"2552":3}}],["arm",{"0":{"322":1,"325":1,"488":1,"634":1,"639":1,"641":1,"658":1,"685":1,"703":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1173":1,"1184":1,"1214":1,"1235":1,"1261":1,"1280":1,"1426":1,"1438":1,"1505":1,"1895":1,"2552":1,"2562":1,"2585":1,"2661":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"489":1,"490":1,"491":1,"492":1,"493":1,"635":1,"636":1,"686":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1,"704":1,"705":1,"1174":1,"1262":1,"1263":1,"1264":1,"1265":1,"1266":1,"1267":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1506":1,"1507":1,"2563":1,"2564":1,"2565":1,"2586":1,"2587":1,"2588":1,"2589":1,"2590":1,"2591":1},"2":{"11":1,"24":1,"69":1,"75":1,"92":1,"93":3,"107":2,"114":3,"123":1,"130":1,"134":2,"138":1,"145":2,"174":1,"191":1,"215":2,"248":1,"263":3,"277":1,"322":2,"325":2,"331":2,"334":1,"336":1,"486":2,"488":1,"508":1,"509":1,"511":2,"552":1,"556":1,"560":1,"630":3,"641":1,"671":1,"685":1,"686":1,"1121":1,"1122":1,"1124":1,"1125":1,"1128":1,"1173":1,"1259":1,"1260":1,"1261":1,"1280":1,"1349":1,"1353":2,"1354":2,"1434":1,"1438":1,"1647":1,"1651":1,"1669":2,"1849":5,"1860":2,"1895":1,"2070":1,"2123":1,"2125":1,"2138":1,"2139":1,"2152":3,"2153":1,"2164":2,"2169":1,"2170":3,"2181":2,"2301":1,"2349":1,"2366":1,"2501":1,"2552":3,"2562":1,"2566":1,"2575":1,"2576":1,"2585":2,"2605":1,"2712":1,"2751":2}}],["around",{"2":{"8":1,"191":2,"198":1,"201":1,"213":1,"222":1,"224":1,"266":1,"358":1,"618":1,"684":1,"1275":1,"1305":1,"1324":2,"1327":1,"1440":1,"1443":1,"1606":1,"1766":1,"1933":1,"1986":1,"1987":4,"2071":1,"2092":4,"2311":1,"2350":1,"2361":1,"2452":1,"2744":1,"2789":1,"2791":1,"2796":1}}],["aref",{"2":{"2315":1}}],["arep",{"2":{"202":1,"1908":1,"1909":1,"2420":1}}],["area",{"2":{"182":1,"585":1,"1860":1,"1988":1,"2527":2,"2615":2,"2616":1,"2666":1,"2758":1}}],["areas",{"2":{"113":1,"213":1,"341":1,"2606":2,"2758":2}}],["aren",{"0":{"1310":1},"2":{"173":1,"188":1,"211":1,"557":1,"560":1,"606":1,"1324":1,"1596":1,"1950":1,"2303":1,"2313":1,"2318":1,"2442":1,"2585":1,"2615":2}}],["are",{"0":{"90":1,"105":1,"546":1,"1299":1,"1302":1,"1305":1,"1308":1,"1321":1,"1449":1,"1543":1,"2351":1,"2780":1},"1":{"2352":1,"2353":1,"2354":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1},"2":{"3":1,"4":1,"11":1,"15":1,"16":2,"27":1,"31":3,"33":1,"34":2,"37":1,"55":1,"69":1,"70":1,"73":1,"75":1,"92":1,"94":1,"110":1,"111":1,"114":1,"119":1,"123":2,"124":1,"132":1,"137":1,"163":1,"176":1,"182":1,"187":1,"191":1,"194":1,"196":2,"201":2,"203":1,"206":1,"209":1,"210":1,"215":2,"221":1,"222":1,"231":1,"234":1,"241":1,"253":1,"254":1,"262":1,"263":2,"264":1,"268":1,"270":1,"274":1,"275":1,"282":6,"294":1,"304":1,"305":1,"311":1,"315":1,"317":4,"319":1,"321":1,"323":1,"324":1,"326":1,"331":2,"334":2,"337":2,"341":3,"349":2,"350":1,"352":2,"353":1,"354":2,"360":1,"364":1,"367":1,"370":1,"371":1,"373":1,"374":2,"378":1,"381":1,"383":1,"385":1,"386":1,"388":1,"399":2,"414":1,"416":3,"430":1,"432":1,"433":1,"434":1,"435":2,"448":1,"449":1,"453":2,"454":1,"457":1,"460":1,"465":1,"466":2,"467":2,"469":1,"470":1,"473":2,"480":1,"481":3,"482":1,"483":1,"484":1,"485":1,"488":1,"496":4,"498":1,"499":1,"502":2,"506":2,"509":1,"510":2,"511":1,"515":4,"516":3,"517":1,"520":1,"521":2,"522":2,"530":1,"537":1,"539":1,"548":1,"549":1,"551":1,"552":1,"554":2,"555":1,"556":2,"559":3,"560":7,"561":1,"562":3,"567":1,"571":3,"574":2,"587":2,"589":1,"592":1,"598":1,"601":1,"606":3,"609":4,"610":1,"611":1,"613":2,"614":1,"623":1,"625":1,"626":2,"627":1,"628":1,"629":1,"630":1,"633":2,"635":5,"639":1,"641":1,"642":1,"643":1,"647":1,"655":1,"665":1,"674":1,"675":1,"679":1,"684":1,"685":4,"687":1,"688":2,"690":2,"694":1,"696":1,"698":3,"700":1,"730":1,"741":1,"745":1,"749":1,"751":1,"756":1,"768":1,"772":1,"776":1,"778":1,"785":1,"788":1,"789":2,"800":1,"804":1,"808":1,"810":1,"817":1,"832":1,"836":1,"840":1,"842":1,"849":1,"851":1,"853":1,"854":2,"867":1,"871":1,"875":1,"877":1,"884":1,"886":1,"887":1,"888":2,"901":1,"905":1,"909":1,"911":1,"918":1,"921":1,"922":2,"935":1,"939":1,"943":1,"945":1,"952":1,"955":1,"956":2,"969":1,"973":1,"977":1,"979":1,"986":1,"989":1,"990":2,"1003":1,"1007":1,"1011":1,"1013":1,"1020":1,"1022":1,"1024":2,"1037":1,"1041":1,"1045":1,"1047":1,"1054":1,"1056":1,"1058":2,"1071":1,"1075":1,"1079":1,"1081":1,"1088":1,"1090":1,"1091":1,"1092":2,"1105":1,"1109":1,"1113":1,"1115":1,"1121":2,"1125":1,"1126":1,"1128":1,"1129":4,"1134":1,"1135":1,"1142":1,"1144":1,"1158":1,"1162":1,"1170":1,"1172":1,"1181":1,"1195":1,"1199":1,"1203":1,"1205":1,"1212":1,"1219":1,"1233":1,"1238":2,"1249":1,"1250":1,"1253":1,"1255":1,"1264":1,"1267":1,"1271":1,"1273":1,"1275":1,"1278":1,"1280":1,"1283":1,"1286":1,"1302":2,"1304":1,"1305":2,"1310":2,"1316":1,"1317":1,"1321":2,"1324":2,"1325":1,"1337":3,"1340":2,"1348":1,"1349":1,"1351":1,"1352":1,"1353":1,"1354":1,"1356":1,"1357":1,"1359":1,"1362":5,"1363":4,"1366":2,"1368":3,"1369":1,"1372":2,"1373":2,"1375":2,"1376":1,"1378":5,"1381":1,"1383":1,"1388":1,"1393":1,"1394":2,"1396":2,"1401":2,"1405":1,"1413":1,"1420":1,"1422":1,"1431":1,"1433":1,"1434":1,"1435":2,"1437":2,"1438":1,"1441":3,"1443":2,"1448":2,"1449":2,"1453":3,"1460":1,"1464":1,"1467":1,"1468":2,"1472":3,"1473":1,"1474":2,"1475":1,"1477":2,"1478":1,"1479":1,"1482":2,"1483":5,"1484":1,"1488":4,"1494":1,"1495":1,"1497":1,"1501":1,"1503":1,"1506":2,"1508":2,"1532":1,"1533":1,"1534":1,"1536":1,"1537":1,"1540":2,"1541":1,"1543":1,"1545":1,"1546":1,"1548":1,"1549":1,"1551":1,"1554":2,"1555":6,"1558":1,"1559":1,"1560":1,"1562":2,"1564":1,"1571":1,"1585":1,"1591":2,"1592":1,"1594":1,"1595":2,"1596":1,"1598":1,"1600":1,"1602":1,"1604":1,"1606":1,"1608":2,"1611":2,"1632":1,"1670":1,"1671":2,"1693":2,"1697":2,"1701":1,"1703":1,"1708":2,"1711":6,"1712":3,"1713":2,"1714":3,"1715":4,"1718":1,"1722":1,"1723":1,"1752":1,"1753":1,"1755":1,"1763":2,"1766":2,"1768":1,"1771":2,"1825":1,"1829":2,"1832":2,"1840":2,"1842":2,"1843":1,"1844":1,"1845":4,"1849":1,"1850":1,"1852":1,"1854":1,"1855":1,"1858":4,"1859":5,"1860":2,"1870":3,"1891":1,"1896":1,"1897":1,"1901":1,"1907":1,"1910":1,"1911":1,"1914":3,"1916":1,"1918":1,"1922":1,"1924":1,"1925":3,"1927":2,"1933":1,"1934":2,"1937":2,"1939":2,"1942":2,"1943":2,"1946":1,"1950":1,"1951":1,"1953":2,"1955":1,"1956":2,"1964":1,"1965":3,"1968":1,"1970":1,"1972":1,"1973":1,"1977":2,"1980":1,"1984":2,"1986":5,"1987":2,"1988":1,"1991":2,"1992":1,"1995":2,"2069":1,"2070":2,"2072":1,"2075":2,"2076":3,"2078":1,"2080":1,"2082":1,"2083":1,"2089":11,"2090":2,"2092":2,"2096":2,"2097":1,"2101":2,"2110":2,"2113":3,"2114":1,"2149":1,"2151":1,"2152":2,"2153":1,"2154":1,"2156":3,"2160":1,"2161":1,"2165":1,"2166":4,"2168":1,"2169":4,"2175":1,"2176":1,"2178":1,"2180":1,"2181":1,"2182":1,"2184":1,"2185":2,"2187":1,"2188":2,"2190":1,"2193":3,"2195":1,"2199":5,"2200":1,"2203":1,"2207":4,"2209":1,"2210":4,"2213":1,"2215":1,"2216":1,"2219":1,"2220":2,"2221":1,"2267":1,"2269":2,"2276":2,"2291":3,"2294":2,"2298":2,"2299":1,"2300":3,"2301":5,"2306":3,"2307":1,"2308":2,"2310":1,"2311":4,"2312":3,"2313":1,"2314":1,"2315":4,"2319":1,"2323":1,"2325":1,"2333":2,"2334":1,"2338":1,"2339":1,"2340":1,"2341":1,"2342":5,"2344":1,"2345":1,"2348":1,"2349":2,"2350":4,"2354":1,"2358":2,"2363":1,"2365":1,"2366":1,"2367":1,"2381":1,"2382":2,"2383":1,"2385":1,"2386":1,"2387":1,"2392":1,"2393":1,"2395":1,"2403":1,"2424":1,"2432":3,"2434":1,"2435":1,"2436":2,"2437":1,"2439":1,"2440":2,"2443":1,"2444":3,"2445":1,"2446":2,"2448":1,"2449":1,"2450":2,"2453":1,"2456":4,"2457":3,"2458":1,"2459":2,"2463":2,"2464":2,"2468":1,"2469":1,"2478":1,"2484":2,"2491":2,"2493":1,"2494":1,"2496":2,"2501":1,"2505":1,"2509":1,"2512":1,"2513":2,"2514":1,"2516":2,"2517":1,"2527":2,"2529":3,"2530":3,"2537":1,"2538":1,"2541":1,"2546":1,"2547":1,"2548":1,"2549":1,"2552":1,"2554":2,"2555":1,"2557":2,"2558":2,"2563":2,"2564":1,"2569":1,"2571":1,"2572":1,"2573":1,"2582":3,"2584":1,"2587":2,"2588":2,"2589":1,"2594":1,"2595":1,"2596":1,"2598":1,"2599":1,"2602":1,"2603":1,"2604":1,"2605":10,"2606":2,"2607":2,"2608":4,"2610":4,"2611":1,"2613":2,"2615":8,"2616":6,"2624":4,"2626":1,"2631":2,"2634":2,"2639":1,"2640":4,"2641":1,"2642":3,"2644":2,"2646":1,"2649":1,"2653":2,"2655":2,"2656":1,"2679":2,"2682":1,"2692":1,"2694":1,"2699":1,"2710":2,"2725":3,"2727":1,"2728":1,"2733":1,"2734":1,"2740":1,"2741":1,"2742":4,"2743":1,"2744":6,"2745":2,"2747":2,"2748":3,"2751":2,"2752":1,"2753":1,"2759":1,"2760":1,"2765":2,"2767":1,"2768":2,"2774":1,"2777":4,"2780":1,"2784":3,"2789":2,"2793":2,"2794":1,"2795":3,"2796":1}}],["al",{"2":{"2774":2,"2775":1}}],["albeit",{"2":{"2219":1}}],["alps",{"2":{"1313":1}}],["alphabet",{"2":{"2741":1}}],["alphabetical",{"2":{"1472":1}}],["alphanumeric",{"2":{"1996":1,"2658":1}}],["alphas",{"2":{"1766":3,"1987":3,"2727":1,"2734":1,"2750":1}}],["alpha",{"0":{"1458":1,"1463":1,"1621":1},"2":{"154":8,"1453":2,"1458":1,"1460":2,"1478":1,"1621":2}}],["alone",{"2":{"606":1,"1286":1}}],["alongside",{"2":{"113":1,"114":1}}],["along",{"2":{"69":1,"83":1,"113":1,"160":1,"166":1,"196":1,"230":1,"502":3,"1254":1,"1413":1,"1417":1,"1627":1,"1708":1,"1845":1,"1927":1,"1945":1,"1987":1,"2110":1,"2267":1,"2313":1,"2315":2,"2380":1,"2489":1,"2603":1,"2609":1}}],["alvicstep",{"2":{"211":1}}],["alf",{"2":{"211":2}}],["alcor",{"2":{"191":1}}],["alu84",{"2":{"154":2}}],["aleblazer",{"2":{"222":1}}],["alexa",{"2":{"211":1}}],["aleth42",{"2":{"154":2}}],["alerts",{"2":{"376":1,"397":1}}],["alert",{"2":{"28":1,"1616":2}}],["al1",{"2":{"145":1}}],["alisaie",{"2":{"222":1}}],["alice",{"2":{"211":1,"2785":1}}],["alicia",{"2":{"154":2,"211":1}}],["aligns",{"2":{"2309":1}}],["aligned",{"2":{"148":1,"2312":1,"2658":2}}],["alignment",{"2":{"114":1,"133":1,"134":1,"191":1,"266":1,"2314":1,"2604":1,"2616":1}}],["align",{"2":{"113":1,"114":3,"133":1,"134":3,"160":4,"176":2,"188":3,"191":3,"199":4,"222":1,"249":4,"266":4,"277":1}}],["aliasing",{"2":{"2614":1}}],["aliases",{"2":{"92":1,"111":1,"182":1,"188":1,"191":1,"222":4,"266":1,"1336":1,"1378":1,"1435":1,"1439":1,"1440":1,"1443":1,"1445":1,"1471":1,"1480":1,"1493":1,"1531":1,"1549":1,"1604":1,"1610":1,"1673":1,"1707":1,"1725":1,"1765":1,"1831":1,"1839":1,"1872":1,"1909":1,"1974":1,"1986":1,"2072":1,"2107":1,"2144":1,"2148":1,"2194":1,"2222":1,"2394":1,"2395":1,"2396":1,"2397":1,"2398":1,"2399":1,"2400":1,"2401":1,"2402":1,"2403":1,"2404":1,"2408":1,"2409":1,"2410":1,"2411":1,"2412":1,"2413":1,"2414":1,"2415":1,"2416":1,"2417":1,"2418":1,"2419":1,"2420":1,"2421":1,"2422":1,"2423":1,"2427":1,"2428":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2438":1,"2449":1,"2605":1,"2611":1,"2725":2,"2740":1,"2767":1}}],["alias",{"0":{"8":1},"2":{"8":2,"133":1,"134":1,"188":1,"191":2,"199":3,"211":1,"236":1,"249":1,"696":1,"1537":1,"1591":1,"1647":1,"1651":1,"1860":1,"1908":2,"2123":1,"2125":1,"2211":1,"2442":2,"2452":1,"2527":1}}],["almost",{"2":{"77":1,"83":1,"163":1,"268":1,"276":1,"327":1,"693":1,"694":1,"701":1,"1714":1,"2221":1,"2267":1,"2280":1,"2603":1,"2606":1,"2615":1,"2653":1,"2757":1,"2791":1}}],["already",{"0":{"2586":1},"1":{"2587":1,"2588":1},"2":{"75":1,"105":2,"118":1,"125":1,"169":2,"182":3,"185":1,"199":1,"221":1,"228":1,"232":1,"233":1,"241":1,"253":1,"270":1,"291":1,"373":1,"405":2,"539":1,"552":1,"588":1,"625":1,"1129":1,"1142":1,"1219":1,"1309":1,"1339":1,"1381":1,"1420":1,"1483":1,"1611":1,"1711":3,"1950":1,"1978":2,"1980":1,"2181":2,"2200":1,"2209":3,"2306":1,"2316":1,"2366":2,"2389":1,"2457":1,"2470":1,"2484":1,"2503":1,"2507":1,"2515":1,"2536":1,"2543":1,"2547":2,"2548":1,"2551":1,"2587":2,"2605":1,"2606":1,"2615":2,"2620":1,"2698":1,"2758":1,"2792":1}}],["algr",{"2":{"1336":1,"1398":1,"2394":1,"2412":1,"2413":1,"2429":1,"2449":1}}],["algorithm>",{"2":{"1366":1}}],["algorithms",{"0":{"1363":1,"1364":1},"1":{"1365":1,"1366":1,"1367":1},"2":{"114":1,"176":1,"222":1,"1362":1,"1363":6,"1364":1}}],["algorithm",{"2":{"74":1,"174":1,"176":1,"677":1,"679":1,"680":3,"681":1,"1363":10,"1366":4,"1367":2,"1841":1,"2639":1,"2713":1,"2722":1}}],["algernon",{"2":{"37":1,"2198":2,"2300":2}}],["altlp",{"2":{"2208":6}}],["altrep",{"2":{"1921":1}}],["altrep3",{"2":{"1921":12}}],["altrep2",{"2":{"1921":12}}],["alttab",{"2":{"1561":6}}],["alt↯tab",{"0":{"1412":1}}],["altered",{"2":{"2168":1}}],["altering",{"2":{"1491":1,"1565":1}}],["alter",{"2":{"1396":1,"1557":1,"1560":1,"1598":1,"2190":1,"2394":1}}],["alternating",{"2":{"2074":2,"2075":2,"2750":1}}],["alternatives",{"2":{"2457":1,"2758":1}}],["alternative",{"0":{"1399":1},"2":{"515":1,"1263":2,"1267":1,"1324":1,"1352":1,"1359":1,"1373":1,"1428":1,"1431":1,"1506":1,"1536":1,"1950":1,"2188":1,"2301":1,"2457":1,"2605":1,"2669":1,"2671":1}}],["alternatively",{"2":{"31":1,"454":1,"626":1,"674":1,"675":1,"1136":1,"1278":1,"1340":1,"1414":1,"1435":1,"1540":1,"1925":1,"2155":1,"2484":1,"2536":1,"2563":1,"2645":1,"2794":1}}],["alternate0",{"2":{"690":1}}],["alternate",{"0":{"1139":1,"1910":1,"1911":1,"1919":1,"1921":1,"2573":1},"1":{"1140":1,"1141":1,"1142":1,"1912":1,"1913":1},"2":{"36":1,"114":1,"202":2,"502":3,"511":1,"685":1,"690":5,"703":2,"707":2,"1122":1,"1127":2,"1129":2,"1130":2,"1137":1,"1142":2,"1214":3,"1235":4,"1433":1,"1565":1,"1568":3,"1909":1,"1910":7,"1911":6,"1912":2,"1913":1,"1914":1,"1918":2,"1919":10,"1920":2,"1921":1,"2394":2,"2420":1,"2431":2,"2578":1,"2605":2}}],["alt+tab",{"2":{"1561":1}}],["alt+escape",{"2":{"1339":1}}],["alt+shift+esc",{"2":{"1339":1}}],["alt+right",{"2":{"291":1,"1373":1}}],["although",{"2":{"1172":1,"1373":1,"1669":1,"1713":1,"1943":1,"2183":1,"2188":1,"2441":1}}],["altogether",{"2":{"689":1,"2166":1,"2747":1}}],["altgr+escape",{"2":{"1339":1}}],["altgr",{"2":{"145":1,"1336":1,"1916":1,"2394":1,"2412":2,"2413":2,"2429":1,"2449":2}}],["alt",{"0":{"1339":2},"2":{"73":1,"114":1,"131":2,"134":2,"145":1,"202":2,"231":1,"266":1,"502":3,"623":1,"685":1,"691":2,"1306":2,"1308":1,"1336":10,"1337":8,"1339":5,"1407":1,"1412":10,"1424":3,"1425":1,"1427":2,"1428":2,"1429":2,"1432":2,"1436":2,"1479":1,"1561":1,"1568":3,"1606":2,"1620":1,"1694":1,"1703":7,"1706":1,"1715":6,"1858":2,"1908":1,"1909":1,"1910":3,"1911":3,"1912":2,"1913":3,"1919":3,"1920":1,"2146":1,"2147":4,"2148":4,"2207":1,"2208":3,"2217":2,"2221":2,"2234":1,"2235":1,"2236":1,"2344":1,"2394":4,"2409":10,"2412":12,"2413":12,"2420":1,"2421":4,"2429":4,"2435":10,"2449":16,"2530":4,"2690":1,"2744":1,"2777":6}}],["always",{"2":{"14":1,"50":1,"141":1,"176":1,"191":1,"201":1,"235":1,"249":1,"277":1,"417":1,"430":1,"432":1,"453":1,"460":1,"462":1,"464":1,"465":1,"467":1,"474":1,"475":1,"509":1,"522":1,"549":1,"560":1,"698":1,"1142":2,"1262":1,"1372":1,"1376":2,"1420":1,"1422":2,"1441":1,"1449":1,"1467":2,"1532":1,"1562":1,"1605":1,"1606":4,"1708":1,"1862":1,"1914":1,"1925":1,"1926":1,"1930":2,"1932":2,"1967":1,"2074":1,"2156":1,"2163":1,"2165":3,"2190":1,"2319":1,"2338":1,"2441":1,"2453":1,"2491":1,"2606":1,"2626":1,"2633":1,"2634":1,"2653":1,"2664":1,"2701":1,"2757":2,"2768":1,"2776":1,"2793":1}}],["also",{"0":{"1280":1},"2":{"10":1,"16":1,"28":1,"50":1,"67":1,"86":1,"98":1,"125":1,"130":1,"138":1,"139":1,"141":1,"145":1,"166":1,"167":1,"176":1,"185":1,"194":1,"195":1,"231":1,"244":1,"337":1,"341":1,"352":1,"364":1,"371":3,"374":2,"387":1,"403":1,"418":1,"430":2,"435":1,"437":1,"470":1,"488":1,"516":2,"554":1,"557":1,"559":1,"560":2,"566":1,"586":1,"606":1,"635":1,"680":1,"686":1,"690":2,"691":1,"1180":1,"1254":1,"1260":1,"1279":1,"1286":1,"1302":1,"1307":1,"1329":1,"1336":1,"1337":1,"1339":1,"1349":1,"1362":2,"1373":1,"1378":1,"1396":1,"1398":3,"1401":1,"1415":1,"1420":1,"1422":2,"1434":1,"1437":1,"1448":1,"1467":1,"1483":1,"1485":1,"1508":1,"1535":2,"1536":1,"1537":1,"1538":1,"1546":1,"1552":1,"1557":1,"1559":1,"1560":1,"1572":1,"1591":1,"1595":3,"1615":1,"1620":2,"1670":1,"1693":1,"1697":1,"1704":1,"1711":2,"1712":2,"1714":1,"1735":1,"1760":1,"1768":1,"1843":1,"1868":1,"1899":1,"1900":1,"1901":1,"1907":1,"1910":1,"1917":1,"1918":1,"1925":2,"1927":1,"1943":1,"1950":1,"1956":1,"1960":1,"1979":2,"1988":1,"1992":1,"2070":1,"2074":1,"2078":1,"2080":1,"2082":1,"2099":1,"2101":1,"2113":1,"2140":1,"2158":1,"2159":1,"2164":1,"2183":2,"2184":1,"2188":1,"2195":1,"2211":2,"2215":1,"2216":1,"2220":1,"2221":1,"2264":1,"2267":1,"2268":1,"2270":1,"2272":1,"2278":1,"2279":1,"2284":1,"2286":1,"2288":1,"2289":1,"2291":2,"2300":3,"2301":1,"2306":1,"2308":1,"2311":3,"2315":1,"2320":1,"2334":1,"2336":1,"2337":1,"2338":1,"2339":1,"2345":1,"2367":1,"2370":1,"2381":1,"2383":1,"2386":1,"2394":1,"2395":1,"2396":1,"2397":1,"2398":1,"2399":1,"2400":1,"2401":1,"2402":1,"2403":1,"2404":1,"2405":1,"2406":1,"2407":1,"2408":1,"2409":1,"2410":1,"2411":1,"2412":1,"2413":1,"2414":1,"2415":1,"2416":1,"2417":1,"2418":1,"2419":1,"2420":1,"2421":1,"2422":1,"2423":1,"2444":3,"2450":2,"2453":1,"2460":1,"2489":1,"2497":1,"2505":1,"2529":1,"2530":3,"2536":1,"2537":1,"2547":1,"2552":1,"2560":1,"2569":2,"2585":2,"2595":1,"2598":1,"2605":2,"2612":1,"2614":2,"2615":1,"2616":1,"2617":1,"2624":1,"2631":1,"2654":1,"2693":1,"2710":1,"2732":1,"2742":1,"2744":1,"2747":1,"2773":2,"2774":3,"2775":1,"2776":1,"2778":1,"2785":1,"2789":1,"2790":1,"2792":1,"2793":2,"2796":3}}],["alleviate",{"2":{"1447":1,"1565":1}}],["allocation",{"2":{"2582":1}}],["allocate",{"2":{"1858":1,"2180":1,"2615":1}}],["allocated",{"2":{"679":1,"2615":1}}],["allowing",{"2":{"64":1,"82":1,"98":1,"103":1,"107":1,"109":1,"125":1,"126":1,"185":1,"229":1,"234":1,"496":1,"592":1,"606":1,"671":1,"1372":1,"1412":1,"1722":1,"1763":1,"1965":1,"1973":1,"1984":1,"2069":1,"2167":1,"2301":1,"2480":2,"2616":3,"2632":1,"2776":1}}],["allowed",{"2":{"28":1,"173":1,"189":1,"459":1,"688":1,"1708":1,"1711":1,"2166":1,"2199":1,"2634":1,"2776":1}}],["allows",{"2":{"24":1,"30":1,"33":1,"46":1,"49":3,"50":1,"99":1,"105":2,"107":2,"137":1,"138":1,"139":1,"164":1,"166":2,"172":1,"228":2,"230":2,"231":2,"246":1,"247":1,"262":1,"265":1,"308":1,"309":1,"328":1,"370":1,"374":1,"403":1,"405":1,"413":1,"502":1,"505":1,"508":1,"511":1,"515":3,"519":1,"597":2,"611":1,"679":1,"689":1,"1254":1,"1368":1,"1369":1,"1371":1,"1401":1,"1414":1,"1422":1,"1442":1,"1460":1,"1484":1,"1491":1,"1494":1,"1496":1,"1531":1,"1535":2,"1594":1,"1601":1,"1611":1,"1619":1,"1700":1,"1708":1,"1716":1,"1761":1,"1825":1,"1836":1,"1842":2,"1845":1,"1859":1,"1922":1,"1937":1,"1950":1,"1952":2,"1959":1,"1982":1,"1997":1,"2110":1,"2168":1,"2169":3,"2192":1,"2200":1,"2264":1,"2266":1,"2279":2,"2301":8,"2328":1,"2350":1,"2366":1,"2388":1,"2394":1,"2468":1,"2496":1,"2529":1,"2531":1,"2549":1,"2562":1,"2573":1,"2598":1,"2605":1,"2614":1,"2616":2,"2666":1,"2667":1,"2684":1,"2711":1,"2776":1,"2792":1}}],["allow",{"0":{"164":1,"1556":1},"2":{"6":2,"10":1,"45":1,"49":1,"63":4,"65":2,"70":1,"74":5,"90":2,"93":2,"99":1,"110":1,"113":1,"114":7,"118":1,"125":3,"145":5,"153":1,"160":1,"172":1,"176":7,"185":3,"189":1,"191":6,"199":5,"202":1,"203":1,"211":2,"213":1,"222":2,"234":1,"236":6,"249":2,"277":1,"334":1,"429":1,"431":2,"499":1,"505":1,"560":2,"567":1,"606":1,"695":1,"699":1,"1129":1,"1211":1,"1232":1,"1306":1,"1308":1,"1324":1,"1329":1,"1336":1,"1372":2,"1377":1,"1390":1,"1393":1,"1407":1,"1422":1,"1482":1,"1485":1,"1496":1,"1556":2,"1569":1,"1587":1,"1592":1,"1598":1,"1693":1,"1696":1,"1709":3,"1754":2,"1756":1,"1954":2,"1973":1,"2183":1,"2207":1,"2208":1,"2264":1,"2266":1,"2289":1,"2344":1,"2350":1,"2435":1,"2437":1,"2442":1,"2450":1,"2529":1,"2530":1,"2603":1,"2606":1,"2610":1,"2616":2,"2683":1,"2687":1,"2700":1,"2785":1}}],["alls",{"2":{"211":2}}],["all|txbolt|geminipr",{"2":{"176":1}}],["allison",{"2":{"154":4,"211":1}}],["all",{"0":{"426":1,"649":1,"667":1,"743":1,"747":1,"770":1,"774":1,"802":1,"806":1,"834":1,"838":1,"869":1,"873":1,"903":1,"907":1,"937":1,"941":1,"971":1,"975":1,"1005":1,"1009":1,"1039":1,"1043":1,"1073":1,"1077":1,"1107":1,"1111":1,"1160":1,"1178":1,"1197":1,"1201":1,"1418":1,"1783":1,"2010":1,"2603":1},"1":{"650":1,"668":1,"744":1,"748":1,"771":1,"775":1,"803":1,"807":1,"835":1,"839":1,"870":1,"874":1,"904":1,"908":1,"938":1,"942":1,"972":1,"976":1,"1006":1,"1010":1,"1040":1,"1044":1,"1074":1,"1078":1,"1108":1,"1112":1,"1161":1,"1179":1,"1198":1,"1202":1,"1784":1,"2011":1},"2":{"1":1,"3":1,"4":1,"7":1,"8":1,"14":1,"15":1,"16":1,"22":1,"25":1,"26":1,"32":1,"36":1,"49":3,"57":1,"65":1,"69":1,"77":1,"83":1,"98":1,"111":2,"113":1,"114":4,"120":1,"124":1,"126":1,"134":1,"145":1,"160":1,"163":2,"176":2,"182":1,"191":2,"194":2,"199":2,"204":1,"211":14,"249":1,"255":1,"265":2,"266":1,"268":3,"277":1,"313":2,"317":1,"318":1,"322":1,"331":1,"336":2,"349":2,"351":1,"352":1,"359":1,"360":2,"370":2,"374":2,"375":2,"382":1,"383":1,"387":1,"396":1,"400":3,"401":1,"429":1,"433":6,"435":1,"437":1,"451":1,"455":2,"462":1,"466":1,"482":1,"483":2,"496":2,"500":1,"505":1,"515":1,"530":4,"533":1,"538":1,"540":1,"546":1,"556":2,"557":1,"560":1,"572":2,"580":1,"587":1,"593":2,"594":2,"597":1,"612":1,"626":1,"627":2,"635":1,"649":1,"667":1,"678":1,"683":1,"690":1,"693":1,"694":2,"701":2,"734":1,"743":1,"747":1,"760":1,"770":1,"774":1,"792":1,"802":1,"806":1,"822":1,"834":1,"838":1,"857":1,"869":1,"873":1,"891":1,"903":1,"907":1,"925":1,"937":1,"941":1,"959":1,"971":1,"975":1,"993":1,"1005":1,"1009":1,"1027":1,"1039":1,"1043":1,"1061":1,"1073":1,"1077":1,"1095":1,"1107":1,"1111":1,"1128":1,"1148":1,"1160":1,"1178":1,"1185":1,"1197":1,"1201":1,"1252":1,"1260":1,"1278":1,"1292":1,"1302":2,"1307":1,"1308":1,"1310":1,"1337":2,"1349":1,"1362":1,"1363":3,"1366":1,"1369":2,"1372":1,"1373":1,"1375":1,"1378":5,"1383":3,"1391":1,"1392":1,"1394":1,"1396":2,"1408":1,"1409":1,"1410":1,"1413":1,"1414":1,"1418":3,"1420":1,"1422":5,"1431":1,"1435":3,"1440":1,"1441":1,"1442":1,"1447":1,"1453":1,"1468":1,"1469":1,"1488":2,"1496":1,"1508":1,"1534":1,"1536":1,"1547":1,"1555":4,"1559":1,"1562":1,"1563":2,"1568":1,"1598":1,"1608":1,"1610":1,"1611":1,"1689":1,"1695":1,"1697":1,"1701":1,"1703":2,"1708":2,"1709":1,"1710":1,"1711":2,"1712":1,"1724":2,"1760":2,"1763":2,"1764":3,"1768":1,"1783":1,"1829":2,"1831":2,"1844":1,"1858":1,"1860":3,"1861":2,"1864":4,"1914":1,"1925":1,"1943":1,"1956":1,"1958":1,"1965":1,"1970":1,"1972":1,"1980":1,"1984":2,"1985":3,"1986":2,"1987":4,"1992":1,"1996":1,"2010":1,"2075":1,"2079":1,"2082":3,"2101":1,"2104":1,"2110":1,"2113":1,"2144":4,"2145":7,"2150":2,"2151":1,"2166":1,"2170":1,"2180":1,"2183":1,"2186":1,"2187":3,"2193":1,"2200":4,"2203":2,"2205":1,"2206":1,"2209":1,"2215":1,"2219":1,"2220":1,"2221":4,"2267":1,"2268":1,"2273":1,"2278":1,"2288":1,"2291":2,"2298":1,"2300":13,"2301":4,"2303":1,"2309":1,"2311":1,"2312":1,"2314":1,"2315":1,"2318":2,"2319":1,"2333":2,"2334":1,"2336":1,"2338":1,"2341":4,"2344":1,"2347":1,"2350":3,"2358":1,"2359":1,"2361":1,"2383":1,"2386":1,"2392":2,"2394":1,"2406":1,"2410":2,"2413":1,"2440":1,"2444":1,"2449":1,"2450":1,"2459":1,"2463":1,"2470":1,"2477":1,"2486":2,"2487":1,"2489":1,"2497":1,"2500":1,"2507":5,"2513":1,"2516":1,"2525":1,"2527":1,"2538":1,"2541":3,"2543":1,"2545":1,"2553":1,"2560":1,"2565":1,"2568":1,"2569":1,"2573":1,"2580":1,"2581":1,"2585":1,"2587":2,"2592":1,"2603":2,"2605":7,"2606":1,"2607":1,"2610":1,"2613":1,"2615":12,"2616":5,"2624":2,"2625":1,"2631":2,"2632":1,"2686":1,"2695":1,"2710":1,"2725":1,"2737":2,"2745":1,"2747":2,"2750":1,"2751":1,"2761":1,"2763":1,"2766":1,"2767":1,"2774":3,"2775":3,"2779":1,"2783":1,"2786":1,"2788":1,"2791":1,"2793":3,"2794":1,"2796":2}}],["ast1109mltrq",{"2":{"2567":1}}],["astr",{"2":{"2417":1,"2438":1}}],["astro65",{"2":{"114":1}}],["asterisk",{"2":{"2394":1,"2417":1,"2433":1,"2438":1}}],["asian",{"2":{"2219":1}}],["aside",{"2":{"1337":1,"2358":1}}],["as5",{"2":{"1831":1,"2410":1}}],["as400",{"2":{"2394":1,"2433":1}}],["as4",{"2":{"1831":1,"2410":1}}],["as3",{"2":{"1831":1,"2410":1}}],["as2",{"2":{"1831":1,"2410":1}}],["as1",{"2":{"1831":1,"2410":1}}],["asd",{"2":{"1722":2}}],["asdf2",{"2":{"390":5}}],["ask",{"0":{"356":1},"2":{"466":1,"551":3,"559":1,"560":1,"2291":1,"2303":1,"2331":1,"2457":1,"2489":1,"2551":1,"2607":1,"2784":1}}],["asked",{"0":{"1274":1,"1293":1},"1":{"1275":1,"1276":1,"1277":1,"1278":1,"1279":1,"1280":1,"1294":1,"1295":1,"1296":1,"1297":1,"1298":1,"1299":1,"1300":1,"1301":1,"1302":1},"2":{"265":1,"275":1,"626":1,"2390":1,"2489":1,"2606":1}}],["aspects",{"2":{"313":1,"1383":1,"1535":1}}],["asynchronously",{"2":{"334":1}}],["asynchronous",{"2":{"312":1,"318":1}}],["asyncusb",{"2":{"266":1}}],["async",{"0":{"263":1},"2":{"266":1,"277":1}}],["asymmetric",{"2":{"145":1,"1363":2}}],["asym",{"2":{"114":1,"1363":5,"1366":1,"2713":1}}],["ashpil",{"2":{"207":2}}],["ascii",{"0":{"1314":1,"2127":1,"2627":1},"1":{"2128":1},"2":{"176":2,"1396":1,"1488":1,"1927":2,"2110":1,"2112":1,"2113":1,"2114":1,"2119":1,"2121":1,"2123":1,"2125":1,"2127":1,"2128":1,"2614":8,"2624":2,"2626":3,"2627":6,"2628":3,"2629":2,"2711":2,"2715":1,"2741":3}}],["asst",{"2":{"2394":1,"2432":1}}],["associate",{"2":{"2209":1}}],["associated",{"2":{"175":1,"240":1,"317":1,"503":1,"504":1,"554":2,"1488":1,"2185":1,"2186":1,"2209":3,"2350":1,"2574":1,"2606":1,"2638":1,"2639":3,"2727":1,"2734":1}}],["assistance",{"2":{"2489":1}}],["assistant",{"2":{"2394":2,"2432":2}}],["assist",{"2":{"1301":1,"2085":1}}],["assigns",{"2":{"2354":1,"2655":1}}],["assigned",{"2":{"629":1,"1563":1,"1954":1,"1955":1}}],["assigning",{"2":{"570":1,"2316":1,"2563":1}}],["assignment",{"0":{"2786":1},"2":{"133":1,"134":2,"473":1,"2603":1,"2725":1}}],["assignments",{"2":{"17":1,"114":1,"1568":2,"2569":1,"2615":2}}],["assign",{"2":{"48":1,"235":1,"629":1,"1272":1,"1273":1,"1595":1,"1690":1,"1762":1,"1908":1,"1960":1,"1983":1,"2080":1,"2358":2,"2435":1,"2702":1,"2740":1}}],["assembled",{"2":{"1865":1}}],["assembler",{"2":{"134":1}}],["assertion",{"2":{"335":1}}],["assert",{"2":{"334":1,"1218":1,"1577":1,"1579":1,"1581":1,"2626":1,"2627":1,"2632":1,"2633":1,"2635":1,"2637":1}}],["assuming",{"2":{"696":4,"1997":1,"2187":1,"2207":1,"2616":2}}],["assume",{"2":{"334":1,"567":1,"587":1,"2294":1,"2484":1,"2781":1}}],["assumes",{"2":{"322":1,"1122":1,"1171":1,"1399":1,"1851":1,"2114":1,"2150":1,"2154":1,"2162":1,"2166":1,"2169":2,"2175":1,"2207":1,"2294":1,"2303":1,"2511":1,"2580":1,"2741":1,"2781":2}}],["assumed",{"2":{"14":1,"152":1,"201":1,"278":1,"416":1,"509":1,"1351":1,"1369":1,"1769":1,"1993":1,"2162":1,"2190":1,"2306":1,"2552":1,"2583":1}}],["assumptions",{"2":{"160":1,"191":1}}],["as",{"0":{"6":1,"285":1,"1706":1,"1830":1,"1971":1,"2347":1,"2368":1,"2370":1,"2372":1},"1":{"1711":1,"1712":1,"1713":1,"1972":1,"2369":1,"2371":1,"2373":1},"2":{"6":1,"8":1,"31":2,"37":1,"49":3,"50":5,"55":1,"56":1,"57":1,"65":1,"67":1,"69":1,"76":1,"86":1,"87":1,"90":1,"99":1,"103":2,"107":2,"114":2,"116":1,"118":1,"120":1,"123":1,"124":2,"125":1,"126":2,"131":1,"132":4,"137":2,"138":3,"141":2,"145":2,"160":1,"163":1,"166":1,"169":1,"170":1,"173":2,"175":1,"176":3,"179":1,"184":2,"185":1,"189":1,"191":2,"194":2,"198":5,"199":2,"201":3,"211":1,"213":4,"215":3,"224":5,"228":1,"229":3,"230":1,"231":1,"232":3,"233":1,"234":3,"235":1,"236":1,"238":1,"240":3,"243":3,"244":1,"246":1,"249":2,"254":1,"262":1,"263":7,"265":2,"266":1,"272":2,"273":1,"275":1,"276":3,"278":1,"292":1,"302":1,"313":2,"317":1,"331":3,"334":1,"335":1,"341":1,"352":3,"363":1,"371":1,"374":5,"385":1,"401":1,"402":1,"403":1,"404":1,"414":1,"430":2,"432":3,"445":2,"453":4,"454":1,"455":3,"457":1,"461":1,"462":1,"466":2,"468":1,"472":2,"473":1,"479":1,"483":2,"487":1,"505":4,"511":3,"512":2,"513":2,"515":1,"516":1,"523":1,"524":1,"529":5,"533":1,"534":1,"539":1,"551":2,"554":1,"557":1,"560":2,"562":1,"568":1,"571":1,"575":2,"576":2,"581":2,"584":1,"586":4,"587":4,"592":5,"598":1,"606":4,"607":1,"610":1,"612":2,"619":1,"620":1,"625":3,"626":2,"628":3,"629":4,"630":2,"635":3,"639":1,"641":1,"659":1,"671":1,"674":5,"675":2,"679":1,"680":2,"681":2,"682":1,"683":1,"685":3,"689":2,"691":1,"694":6,"696":8,"700":1,"701":1,"703":1,"732":1,"792":1,"822":1,"852":4,"857":1,"891":1,"925":1,"959":1,"993":1,"1023":4,"1027":1,"1057":4,"1061":1,"1095":1,"1121":1,"1122":2,"1123":2,"1126":4,"1127":1,"1129":3,"1130":1,"1134":1,"1148":1,"1180":1,"1185":1,"1212":1,"1214":4,"1218":1,"1235":2,"1253":1,"1254":1,"1255":2,"1262":1,"1271":1,"1273":1,"1277":1,"1279":1,"1291":1,"1295":1,"1302":1,"1320":1,"1324":2,"1331":2,"1335":1,"1337":2,"1339":1,"1340":2,"1368":1,"1369":4,"1372":6,"1373":2,"1375":3,"1376":1,"1377":2,"1378":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1391":1,"1396":3,"1398":1,"1401":1,"1403":1,"1405":1,"1413":1,"1414":2,"1415":2,"1416":2,"1417":2,"1422":3,"1424":1,"1428":2,"1429":1,"1432":1,"1433":2,"1435":1,"1436":2,"1440":1,"1442":2,"1448":1,"1449":1,"1451":2,"1453":1,"1464":1,"1467":1,"1468":3,"1469":1,"1471":6,"1472":6,"1473":3,"1477":2,"1478":2,"1482":2,"1483":1,"1484":2,"1488":8,"1490":2,"1491":2,"1496":2,"1499":1,"1529":1,"1533":1,"1535":2,"1536":4,"1537":3,"1540":1,"1546":1,"1548":2,"1549":1,"1552":1,"1554":1,"1555":4,"1559":1,"1563":1,"1565":3,"1566":1,"1576":1,"1589":1,"1590":1,"1591":1,"1598":1,"1600":2,"1611":3,"1615":1,"1617":1,"1619":1,"1620":1,"1632":1,"1668":2,"1669":1,"1671":1,"1672":1,"1676":1,"1679":1,"1689":1,"1692":2,"1704":2,"1706":1,"1708":5,"1713":2,"1714":1,"1715":1,"1721":1,"1723":1,"1752":1,"1754":2,"1757":1,"1758":1,"1760":2,"1761":1,"1763":3,"1766":1,"1767":1,"1771":1,"1826":2,"1829":1,"1831":1,"1840":2,"1841":2,"1843":1,"1845":3,"1852":1,"1853":1,"1858":1,"1859":1,"1860":1,"1862":1,"1867":1,"1891":1,"1896":1,"1901":1,"1904":1,"1911":3,"1912":1,"1913":1,"1917":2,"1918":2,"1919":4,"1922":2,"1943":2,"1950":3,"1954":1,"1955":1,"1965":6,"1966":7,"1967":1,"1969":1,"1970":1,"1972":1,"1974":1,"1975":1,"1977":2,"1978":1,"1979":1,"1980":2,"1981":1,"1982":1,"1984":3,"1986":1,"1988":4,"1990":1,"1995":2,"2055":1,"2072":1,"2079":1,"2080":2,"2084":1,"2097":1,"2098":1,"2101":2,"2110":1,"2113":1,"2144":1,"2145":1,"2146":4,"2150":1,"2151":2,"2152":3,"2156":1,"2160":1,"2163":1,"2164":1,"2166":4,"2167":1,"2168":1,"2169":3,"2171":2,"2172":1,"2177":1,"2181":1,"2184":2,"2185":1,"2186":1,"2187":3,"2188":4,"2190":2,"2191":1,"2193":1,"2195":2,"2199":1,"2200":1,"2206":3,"2207":2,"2208":4,"2209":4,"2219":2,"2220":3,"2221":4,"2259":1,"2265":1,"2266":1,"2267":2,"2268":1,"2269":4,"2270":1,"2272":2,"2273":1,"2274":1,"2275":1,"2276":4,"2278":1,"2279":1,"2280":1,"2283":1,"2285":1,"2287":1,"2288":1,"2289":1,"2291":3,"2293":1,"2300":5,"2301":5,"2306":4,"2307":2,"2308":1,"2309":1,"2311":1,"2312":1,"2313":1,"2314":2,"2315":6,"2316":1,"2318":1,"2319":1,"2331":1,"2333":2,"2334":1,"2335":1,"2336":1,"2338":3,"2339":1,"2341":1,"2342":3,"2344":1,"2345":2,"2347":1,"2350":6,"2356":1,"2357":1,"2361":1,"2368":1,"2370":1,"2372":1,"2380":1,"2383":1,"2386":1,"2387":3,"2388":1,"2389":1,"2392":1,"2394":2,"2397":6,"2406":1,"2409":6,"2410":1,"2433":1,"2435":7,"2436":1,"2440":2,"2441":1,"2444":1,"2445":2,"2447":2,"2449":1,"2460":1,"2466":1,"2480":1,"2481":1,"2482":1,"2484":3,"2487":2,"2497":2,"2499":1,"2502":1,"2505":1,"2507":1,"2513":1,"2516":2,"2518":1,"2526":2,"2529":5,"2530":1,"2531":3,"2540":2,"2542":3,"2545":3,"2547":1,"2550":1,"2552":1,"2553":1,"2558":2,"2562":2,"2563":2,"2564":1,"2565":1,"2572":1,"2581":1,"2582":1,"2583":1,"2585":5,"2587":2,"2588":1,"2589":3,"2591":1,"2592":1,"2593":1,"2595":1,"2603":2,"2605":13,"2606":4,"2607":1,"2608":2,"2609":1,"2610":2,"2612":6,"2613":1,"2614":6,"2615":1,"2616":10,"2623":1,"2624":1,"2628":1,"2631":1,"2640":1,"2646":1,"2647":1,"2653":3,"2654":2,"2655":2,"2658":2,"2659":3,"2661":1,"2667":1,"2693":2,"2699":1,"2705":1,"2710":1,"2711":2,"2716":2,"2725":3,"2738":2,"2740":1,"2741":4,"2743":2,"2748":2,"2750":1,"2757":2,"2758":2,"2759":1,"2767":6,"2773":2,"2774":8,"2775":3,"2776":3,"2777":1,"2780":1,"2782":2,"2784":2,"2788":1,"2791":1,"2796":2}}],["at25sf128a",{"2":{"2583":2}}],["ation",{"2":{"1921":1}}],["atm32u4dfu",{"2":{"629":1}}],["atm16u4",{"2":{"629":1}}],["atmel",{"0":{"487":1,"2268":1,"2382":1},"1":{"2269":1,"2270":1},"2":{"111":1,"240":3,"514":2,"629":7,"2268":2,"2382":1,"2387":1,"2489":1,"2492":2,"2661":1,"2662":1}}],["atmega16",{"2":{"633":1,"702":2,"1213":1,"1234":2,"1503":2,"1504":2}}],["atmega16u4",{"2":{"487":1,"2382":1}}],["atmega16u2",{"2":{"64":1,"92":1,"487":1,"629":1}}],["atmega32a",{"2":{"235":1,"487":1,"633":1,"702":1,"1213":1,"1234":1,"1503":1,"1504":1,"2384":1,"2385":2}}],["atmega32u4",{"0":{"1894":1},"2":{"70":1,"111":1,"385":1,"487":1,"514":1,"638":1,"684":1,"692":1,"1275":4,"1277":1,"1330":1,"1424":1,"1859":1,"1896":1,"2152":1,"2308":5,"2382":1,"2383":1,"2386":1,"2489":1,"2492":5,"2584":1,"2592":1,"2757":1,"2782":1}}],["atmega32u2",{"2":{"63":1,"64":1,"487":1,"629":1}}],["atmega328p",{"2":{"64":1,"487":1,"2274":1,"2385":2}}],["atmega328",{"2":{"64":1,"487":1,"633":2,"702":1,"1213":1,"1234":1,"1503":1,"1504":1}}],["atlas",{"2":{"211":1}}],["atsam",{"2":{"75":1,"114":4,"134":1,"145":1,"277":1}}],["atop",{"2":{"69":1}}],["atomically",{"2":{"698":1}}],["atomic",{"0":{"698":1},"2":{"64":1,"277":1,"698":5}}],["atom47",{"2":{"57":4,"114":1}}],["at90usb1286",{"2":{"2308":1}}],["at90usb128",{"2":{"487":1,"629":1,"2374":2,"2382":2}}],["at90usb162",{"2":{"74":1,"487":1,"1503":1,"1504":1}}],["at90usb64",{"2":{"487":1,"629":1,"633":1,"702":1,"1213":1,"1234":1,"1503":1,"1504":1,"2382":2}}],["at90usb",{"2":{"63":1}}],["attain",{"2":{"2605":1}}],["attacking",{"2":{"1443":1}}],["attach",{"0":{"2620":1},"2":{"2620":4}}],["attachment",{"2":{"1326":1,"2620":1}}],["attaching",{"2":{"82":1,"2620":1}}],["attached",{"2":{"49":1,"1499":1,"1571":1,"1614":2,"1615":1,"1950":1,"2069":1,"2163":1,"2307":3,"2350":1}}],["attribution",{"2":{"2592":2}}],["attribute",{"2":{"436":1,"438":1,"439":1,"566":4,"1420":2,"1422":1,"1619":1,"2266":1,"2626":1,"2627":1,"2628":2,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2748":1}}],["attributes",{"2":{"110":1,"435":1,"2552":2}}],["attractive",{"2":{"2309":1}}],["attrs",{"2":{"1291":2}}],["attiny85",{"2":{"1257":2}}],["attenuate",{"2":{"1943":5}}],["attenuation",{"2":{"176":1,"191":1,"1943":6}}],["attention",{"2":{"341":1,"618":1,"2163":1,"2394":1,"2431":1}}],["attempted",{"2":{"263":1,"1349":1,"2489":1}}],["attempts",{"2":{"87":1,"302":1,"689":1,"2104":1,"2166":2,"2294":1,"2781":1}}],["attempting",{"2":{"51":1,"123":1,"240":1,"1289":1,"2168":1,"2392":1,"2492":1,"2563":1}}],["attempt",{"2":{"51":1,"123":1,"182":1,"726":2,"1422":1,"2166":3,"2259":1,"2272":1,"2309":1,"2493":1}}],["at101",{"2":{"37":2,"144":2,"145":1}}],["at",{"0":{"2205":1},"2":{"4":1,"11":1,"21":1,"25":1,"28":1,"65":2,"73":1,"75":1,"114":1,"124":1,"134":2,"137":1,"141":1,"142":1,"160":2,"191":2,"199":1,"203":1,"211":1,"222":1,"229":2,"231":1,"241":2,"249":3,"251":1,"265":3,"266":2,"277":1,"315":2,"336":1,"341":1,"349":1,"350":1,"352":1,"414":1,"430":2,"433":1,"453":5,"462":2,"465":1,"470":1,"482":1,"483":2,"485":1,"496":2,"497":1,"508":1,"515":1,"517":2,"533":2,"534":2,"545":2,"549":1,"557":1,"567":1,"568":3,"574":1,"576":1,"584":1,"586":1,"587":2,"588":1,"597":1,"598":2,"605":1,"614":1,"624":1,"626":1,"627":2,"631":1,"635":1,"658":1,"674":1,"679":3,"682":1,"689":1,"698":1,"726":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1121":1,"1127":1,"1130":1,"1147":1,"1148":1,"1174":1,"1184":1,"1218":2,"1238":1,"1263":1,"1267":1,"1278":1,"1279":1,"1287":1,"1290":1,"1307":1,"1337":1,"1348":1,"1349":1,"1366":2,"1372":1,"1373":2,"1417":1,"1420":1,"1422":1,"1427":1,"1431":1,"1434":3,"1435":1,"1437":1,"1442":1,"1453":2,"1477":1,"1478":1,"1483":1,"1488":2,"1489":2,"1496":2,"1506":1,"1507":1,"1508":1,"1536":2,"1538":1,"1545":1,"1551":1,"1559":1,"1568":1,"1569":1,"1571":2,"1586":1,"1591":1,"1593":1,"1597":1,"1600":2,"1615":1,"1619":1,"1627":1,"1658":1,"1659":1,"1670":1,"1713":1,"1714":1,"1735":1,"1769":1,"1771":1,"1836":1,"1837":1,"1840":2,"1841":1,"1842":6,"1843":1,"1844":1,"1845":3,"1852":1,"1853":1,"1859":1,"1860":12,"1862":1,"1896":1,"1925":1,"1934":1,"1936":1,"1943":1,"1950":3,"1952":1,"1965":1,"1986":1,"1987":7,"1993":1,"1995":1,"1997":1,"2070":1,"2072":1,"2074":1,"2078":1,"2082":1,"2089":5,"2092":12,"2096":1,"2143":1,"2149":1,"2150":1,"2155":2,"2158":2,"2163":4,"2168":1,"2177":1,"2181":11,"2183":1,"2184":1,"2188":2,"2189":1,"2190":2,"2200":1,"2207":2,"2209":1,"2219":1,"2222":2,"2264":3,"2281":1,"2283":1,"2285":1,"2287":1,"2300":1,"2301":3,"2303":1,"2309":1,"2311":1,"2312":3,"2313":1,"2318":1,"2341":2,"2342":2,"2346":1,"2348":1,"2350":4,"2355":1,"2359":1,"2365":1,"2388":1,"2392":9,"2417":1,"2423":2,"2438":1,"2440":1,"2443":1,"2444":1,"2450":2,"2456":1,"2461":1,"2462":1,"2471":1,"2477":1,"2482":1,"2486":1,"2489":1,"2493":1,"2505":1,"2506":1,"2507":1,"2513":4,"2516":1,"2517":1,"2527":1,"2529":1,"2536":1,"2537":3,"2552":5,"2560":1,"2562":1,"2563":2,"2564":1,"2565":1,"2568":1,"2593":1,"2595":1,"2603":1,"2605":7,"2606":1,"2609":1,"2612":1,"2613":3,"2614":1,"2615":2,"2616":8,"2617":1,"2626":2,"2633":2,"2675":1,"2692":1,"2701":1,"2710":2,"2738":1,"2740":1,"2747":1,"2759":3,"2767":2,"2769":1,"2782":1,"2784":1,"2785":2,"2786":1,"2787":2,"2788":3,"2792":1,"2795":1,"2796":1}}],["atreus",{"0":{"4":1},"2":{"176":1,"277":1}}],["ancient",{"2":{"2588":1}}],["anchors",{"2":{"279":3}}],["anchor",{"2":{"222":1,"279":1}}],["analysis",{"2":{"2531":1}}],["analogue",{"2":{"2314":1}}],["analogreference",{"2":{"638":1}}],["analogreadpinadc",{"2":{"639":1}}],["analogreadpin",{"2":{"50":1,"638":1,"639":1}}],["analogread",{"2":{"50":1,"133":1,"134":1}}],["analog",{"0":{"1937":1},"2":{"49":1,"74":1,"118":2,"160":1,"191":1,"199":2,"234":6,"236":1,"249":1,"630":1,"631":1,"638":1,"1668":2,"1669":2,"1671":1,"1676":1,"1678":4,"1684":1,"1829":1,"1937":22}}],["anatomy",{"0":{"2443":1},"1":{"2444":1,"2445":1,"2446":1,"2447":1}}],["anodes",{"2":{"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1185":1}}],["another",{"2":{"95":1,"160":2,"194":1,"233":1,"251":1,"268":1,"341":1,"450":1,"505":2,"623":1,"1357":1,"1377":1,"1396":2,"1412":1,"1428":1,"1430":1,"1433":1,"1448":1,"1468":1,"1483":1,"1488":1,"1538":1,"1552":1,"1556":1,"1562":2,"1592":1,"1611":1,"1709":1,"1712":1,"1907":1,"1908":1,"1911":1,"2156":1,"2188":1,"2190":2,"2200":1,"2207":1,"2215":1,"2273":1,"2283":1,"2285":1,"2287":1,"2348":1,"2366":1,"2387":1,"2443":1,"2513":1,"2536":1,"2537":1,"2547":1,"2605":2,"2615":2,"2690":1,"2693":1,"2768":3,"2774":4,"2775":4,"2777":3,"2790":1}}],["answer",{"2":{"465":1,"551":2,"2507":4}}],["ansi",{"0":{"35":1,"2417":1,"2436":1},"1":{"36":1,"2437":1,"2438":1},"2":{"35":1,"36":4,"99":1,"102":1,"114":1,"144":2,"160":1,"168":2,"176":1,"188":1,"191":1,"207":1,"211":4,"217":2,"226":6,"259":2,"260":1,"266":2,"277":1,"370":3,"385":1,"435":1,"1305":3,"1383":3,"1384":3,"1392":1,"1415":2,"2114":1,"2150":1,"2341":5,"2417":1,"2436":1,"2484":1,"2592":1,"2605":1,"2725":4,"2740":1,"2741":1,"2742":10}}],["anti",{"2":{"381":1,"2614":1,"2728":1}}],["anticipation",{"2":{"86":1}}],["anticipated",{"2":{"2":1,"1449":1}}],["annotation",{"2":{"480":1}}],["annotated",{"0":{"480":1}}],["announce",{"2":{"224":1,"345":1,"346":1,"349":1}}],["annepro2",{"2":{"191":1,"249":1,"266":2}}],["anim",{"2":{"2616":4}}],["animtion",{"2":{"191":1}}],["animate",{"2":{"2078":1,"2616":9}}],["animated",{"2":{"138":1,"2350":1,"2612":1,"2614":1,"2616":1}}],["animation",{"0":{"2075":1,"2076":1,"2078":1},"2":{"49":2,"145":1,"191":5,"222":1,"236":1,"249":1,"404":1,"1765":2,"1766":1,"1768":3,"1781":1,"1783":1,"1814":1,"1816":1,"1818":1,"1821":1,"1855":2,"1986":2,"1987":3,"1992":3,"2008":1,"2010":1,"2059":1,"2061":1,"2063":1,"2066":1,"2072":10,"2074":1,"2075":11,"2076":10,"2078":6,"2090":4,"2093":4,"2408":2,"2415":10,"2616":6,"2623":1,"2634":1,"2727":4,"2733":2,"2734":4}}],["animations",{"0":{"2074":1,"2087":1},"1":{"2075":1,"2076":1,"2077":1,"2078":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1},"2":{"32":1,"124":5,"138":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"1763":2,"1765":2,"1767":1,"1984":2,"1990":1,"2075":4,"2076":1,"2077":2,"2078":6,"2079":1,"2090":6,"2408":2,"2605":1,"2612":1,"2613":4,"2614":1,"2616":1,"2635":1,"2727":3,"2733":2,"2734":3,"2750":4}}],["angle65",{"2":{"211":1}}],["angle",{"2":{"176":2,"1950":2,"2417":2,"2438":2,"2725":1}}],["angel64",{"2":{"154":4}}],["angel17",{"2":{"154":2}}],["an",{"0":{"361":1,"608":1,"1297":1,"1473":1,"1590":1,"2514":1,"2585":1,"2586":1,"2589":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"2515":1,"2516":1,"2586":1,"2587":2,"2588":2,"2589":1,"2590":1,"2591":1},"2":{"5":1,"6":1,"14":1,"49":1,"50":1,"73":2,"99":3,"103":1,"126":1,"132":1,"143":1,"160":1,"172":1,"176":1,"182":1,"194":2,"201":1,"203":2,"234":1,"248":1,"249":1,"268":1,"290":1,"303":1,"311":1,"312":1,"318":1,"319":1,"322":2,"327":2,"388":1,"405":1,"409":1,"410":1,"413":1,"414":1,"417":1,"418":1,"428":1,"430":2,"432":1,"436":1,"437":1,"453":1,"454":1,"461":1,"464":1,"465":3,"466":1,"479":1,"485":1,"500":1,"502":2,"506":1,"511":1,"515":1,"519":1,"523":1,"532":1,"540":2,"545":1,"553":1,"554":4,"559":1,"560":2,"561":2,"564":1,"569":1,"570":1,"571":1,"585":2,"606":1,"609":2,"612":1,"613":1,"616":2,"623":2,"627":1,"628":1,"629":1,"636":1,"638":1,"639":1,"641":2,"659":1,"673":1,"674":1,"675":1,"677":1,"678":1,"679":2,"680":1,"683":1,"684":1,"686":1,"692":1,"696":4,"701":1,"703":3,"714":1,"720":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1126":1,"1128":1,"1132":1,"1133":1,"1134":2,"1137":1,"1148":1,"1185":1,"1214":1,"1217":1,"1218":2,"1235":1,"1254":1,"1257":1,"1262":1,"1271":1,"1275":1,"1280":1,"1291":1,"1295":1,"1298":1,"1301":1,"1304":1,"1315":1,"1324":1,"1337":1,"1359":1,"1362":2,"1369":2,"1380":1,"1388":1,"1393":1,"1394":1,"1396":3,"1402":1,"1428":1,"1430":1,"1431":1,"1442":1,"1443":1,"1448":1,"1449":1,"1467":2,"1468":1,"1477":1,"1478":2,"1495":1,"1499":1,"1508":1,"1529":2,"1536":2,"1544":1,"1548":1,"1555":1,"1560":1,"1585":1,"1595":1,"1596":1,"1597":1,"1599":1,"1603":1,"1611":1,"1627":1,"1629":1,"1647":1,"1650":1,"1651":1,"1656":1,"1668":3,"1676":1,"1704":1,"1706":2,"1708":1,"1711":1,"1712":2,"1715":1,"1721":1,"1722":1,"1752":1,"1756":1,"1762":2,"1767":1,"1768":2,"1771":1,"1781":1,"1783":1,"1831":2,"1842":2,"1859":1,"1868":1,"1897":1,"1911":1,"1912":1,"1919":1,"1922":1,"1927":1,"1931":1,"1935":1,"1936":1,"1937":2,"1947":1,"1948":1,"1949":1,"1952":1,"1953":1,"1965":1,"1983":2,"1990":1,"1992":2,"1995":1,"2008":1,"2010":1,"2055":1,"2079":2,"2080":2,"2099":2,"2109":2,"2112":1,"2113":1,"2123":1,"2125":1,"2127":1,"2129":1,"2146":1,"2151":2,"2152":1,"2158":1,"2163":1,"2167":2,"2169":1,"2171":1,"2182":2,"2183":1,"2184":1,"2188":1,"2190":1,"2195":2,"2199":1,"2207":4,"2219":2,"2220":1,"2221":1,"2243":1,"2264":1,"2269":1,"2273":1,"2275":1,"2276":1,"2279":3,"2288":1,"2301":1,"2303":1,"2307":1,"2313":2,"2319":1,"2325":1,"2330":1,"2333":1,"2341":4,"2342":2,"2350":2,"2356":1,"2361":1,"2367":1,"2368":1,"2370":2,"2372":1,"2386":1,"2388":1,"2389":1,"2390":1,"2392":1,"2410":2,"2439":1,"2442":1,"2443":1,"2446":1,"2447":1,"2448":1,"2456":1,"2466":2,"2467":3,"2484":1,"2501":1,"2507":1,"2511":1,"2527":2,"2530":1,"2531":3,"2536":1,"2541":1,"2542":1,"2556":1,"2557":2,"2563":1,"2566":1,"2568":1,"2569":1,"2578":1,"2583":2,"2584":1,"2585":2,"2587":1,"2588":1,"2589":4,"2591":1,"2593":2,"2599":1,"2602":1,"2603":3,"2605":8,"2606":2,"2612":1,"2614":3,"2615":2,"2616":5,"2617":2,"2620":1,"2624":1,"2626":2,"2631":1,"2633":1,"2634":1,"2635":1,"2636":1,"2638":1,"2649":2,"2651":1,"2654":2,"2659":1,"2664":1,"2669":1,"2671":1,"2673":1,"2677":1,"2678":1,"2680":1,"2681":1,"2682":1,"2683":1,"2709":1,"2723":1,"2725":1,"2727":2,"2732":1,"2734":2,"2741":1,"2751":1,"2755":1,"2757":1,"2774":1,"2775":1,"2777":1,"2785":1,"2787":1}}],["anding",{"2":{"1337":1}}],["andrebrait",{"2":{"114":2,"191":1}}],["andc",{"2":{"49":1}}],["and",{"0":{"22":1,"35":2,"49":1,"50":1,"51":1,"58":1,"63":1,"64":1,"65":1,"69":1,"70":1,"74":1,"75":1,"76":1,"77":1,"87":1,"93":1,"94":1,"95":1,"113":1,"133":1,"151":1,"190":1,"229":1,"233":1,"273":1,"276":1,"436":1,"442":2,"443":1,"468":1,"478":1,"549":1,"590":1,"1262":1,"1279":1,"1280":1,"1299":1,"1302":1,"1319":1,"1321":1,"1334":1,"1355":1,"1358":1,"1372":1,"1398":1,"1407":1,"1469":1,"1552":1,"1555":1,"1591":1,"1699":1,"1700":1,"1847":1,"1866":1,"1892":1,"1903":1,"1914":1,"1950":1,"1954":1,"1955":1,"1974":1,"2074":1,"2075":1,"2076":1,"2081":1,"2087":1,"2170":1,"2208":1,"2209":1,"2220":1,"2267":1,"2322":1,"2344":1,"2351":1,"2425":1,"2440":1,"2442":1,"2445":1,"2454":1,"2511":1,"2522":1,"2535":1,"2536":1,"2574":1,"2656":1,"2790":1},"1":{"36":2,"88":1,"437":1,"438":1,"439":1,"440":1,"441":1,"443":2,"444":2,"445":2,"446":2,"447":2,"1280":1,"1373":1,"1592":1,"1593":1,"1594":1,"1915":1,"1916":1,"1917":1,"2075":1,"2076":1,"2077":1,"2078":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2171":1,"2268":1,"2269":1,"2270":1,"2271":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":1,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1,"2282":1,"2283":1,"2284":1,"2285":1,"2286":1,"2287":1,"2288":1,"2352":1,"2353":1,"2354":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2441":1,"2442":1,"2446":1,"2447":1,"2523":1,"2524":1,"2536":1,"2537":1,"2538":1,"2575":1,"2576":1,"2577":1,"2657":1,"2658":1,"2659":1},"2":{"1":1,"2":2,"3":4,"4":1,"5":2,"6":1,"7":3,"8":1,"10":2,"11":1,"14":2,"15":4,"16":1,"17":1,"18":1,"21":2,"22":1,"24":2,"25":2,"28":2,"30":1,"31":3,"32":5,"33":2,"34":2,"35":1,"36":1,"37":1,"38":1,"43":1,"45":4,"49":12,"50":7,"57":1,"58":1,"63":1,"64":2,"65":3,"67":1,"69":1,"70":19,"72":1,"73":3,"74":2,"75":2,"76":1,"77":1,"84":1,"86":2,"87":2,"90":1,"92":1,"93":5,"94":3,"99":1,"103":1,"107":2,"108":1,"110":2,"113":4,"114":26,"116":1,"118":1,"119":1,"120":2,"124":3,"126":2,"128":1,"130":2,"132":2,"133":1,"134":9,"137":2,"138":6,"142":2,"145":6,"151":1,"160":10,"163":3,"169":1,"172":1,"173":2,"174":2,"175":5,"176":20,"179":1,"182":3,"185":1,"186":1,"187":1,"188":4,"189":1,"190":1,"191":23,"194":6,"195":2,"196":2,"198":6,"199":11,"201":2,"202":2,"203":2,"206":2,"210":2,"211":53,"213":3,"214":1,"218":1,"220":2,"221":1,"222":12,"224":1,"228":6,"229":2,"230":1,"231":3,"232":3,"233":3,"234":1,"235":3,"236":14,"240":2,"244":1,"245":2,"249":14,"251":2,"255":1,"256":1,"257":1,"258":1,"259":4,"262":1,"263":4,"265":2,"266":6,"268":1,"271":1,"273":2,"276":2,"277":6,"282":4,"284":1,"285":1,"288":1,"291":1,"303":5,"304":2,"306":1,"312":2,"313":1,"315":4,"316":1,"318":1,"322":3,"324":3,"328":1,"331":11,"332":1,"334":4,"335":3,"336":2,"340":1,"341":7,"349":1,"350":1,"352":2,"354":1,"355":3,"357":2,"363":4,"365":2,"366":2,"367":1,"370":2,"371":3,"374":7,"375":2,"376":4,"378":2,"381":4,"383":1,"384":1,"385":1,"386":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"401":3,"402":3,"403":3,"411":1,"413":3,"414":1,"424":2,"428":2,"429":1,"430":4,"431":4,"432":2,"435":2,"436":3,"441":1,"442":3,"446":2,"447":1,"448":1,"453":5,"454":4,"455":1,"457":5,"460":2,"461":1,"462":2,"465":1,"466":1,"468":1,"470":2,"471":1,"472":1,"474":1,"475":1,"479":5,"480":1,"481":5,"483":3,"484":3,"485":1,"486":1,"487":1,"495":3,"496":2,"498":2,"499":2,"501":2,"502":8,"503":1,"505":11,"506":1,"509":3,"510":2,"511":2,"512":1,"513":1,"515":6,"516":1,"519":2,"521":1,"522":3,"525":1,"527":2,"529":1,"533":1,"534":2,"537":2,"540":2,"546":1,"549":1,"550":5,"551":1,"552":3,"554":3,"556":3,"557":1,"558":1,"559":2,"560":5,"561":1,"562":2,"563":2,"564":1,"565":1,"566":3,"567":2,"570":2,"571":2,"572":1,"576":1,"578":1,"580":4,"584":1,"587":1,"588":4,"589":2,"591":2,"592":5,"597":2,"598":1,"606":9,"607":1,"609":4,"610":4,"613":3,"614":1,"615":1,"616":4,"617":2,"621":4,"622":1,"623":1,"624":4,"625":4,"626":5,"627":3,"628":5,"629":5,"630":2,"633":1,"635":4,"636":1,"639":4,"641":1,"642":1,"643":1,"655":1,"658":1,"659":1,"671":4,"674":1,"675":1,"676":1,"678":2,"679":8,"680":2,"681":2,"682":3,"683":1,"685":4,"686":3,"688":3,"689":1,"690":3,"691":1,"692":3,"696":1,"701":3,"702":2,"730":1,"733":1,"734":3,"756":1,"759":1,"760":3,"785":1,"789":3,"791":1,"792":3,"817":1,"821":1,"822":3,"849":1,"851":1,"852":1,"854":3,"856":1,"857":3,"884":1,"886":1,"888":3,"890":1,"891":3,"918":1,"922":3,"924":1,"925":3,"952":1,"956":3,"958":1,"959":3,"986":1,"990":3,"992":1,"993":3,"1020":1,"1022":1,"1023":1,"1024":3,"1026":1,"1027":3,"1054":1,"1056":1,"1057":1,"1058":3,"1060":1,"1061":3,"1088":1,"1090":1,"1092":3,"1094":1,"1095":3,"1121":4,"1122":2,"1123":1,"1125":2,"1126":1,"1127":1,"1128":1,"1129":6,"1130":2,"1132":1,"1133":1,"1134":4,"1136":1,"1144":1,"1147":1,"1148":3,"1170":1,"1172":2,"1174":1,"1181":1,"1184":1,"1185":3,"1213":2,"1231":2,"1232":1,"1234":1,"1238":2,"1249":3,"1250":1,"1252":2,"1253":1,"1254":1,"1256":1,"1258":3,"1259":2,"1260":4,"1261":2,"1262":2,"1263":2,"1264":2,"1267":2,"1272":1,"1273":1,"1274":1,"1275":1,"1277":1,"1278":2,"1280":2,"1286":1,"1289":1,"1291":2,"1295":1,"1296":1,"1298":1,"1299":2,"1300":1,"1301":2,"1302":9,"1305":3,"1306":1,"1307":5,"1308":1,"1309":2,"1310":2,"1312":1,"1313":3,"1315":1,"1316":1,"1320":1,"1321":1,"1323":1,"1324":2,"1325":2,"1327":1,"1328":1,"1330":2,"1331":1,"1335":2,"1336":30,"1337":8,"1340":4,"1347":1,"1349":1,"1351":1,"1353":2,"1354":1,"1356":1,"1357":3,"1362":3,"1363":11,"1365":1,"1366":2,"1368":8,"1369":18,"1370":3,"1371":1,"1372":6,"1373":7,"1375":2,"1376":1,"1377":4,"1378":16,"1381":2,"1383":4,"1384":2,"1386":1,"1388":1,"1389":2,"1390":2,"1391":1,"1393":1,"1396":4,"1397":3,"1398":6,"1400":1,"1401":2,"1403":2,"1405":2,"1407":1,"1408":1,"1412":1,"1413":1,"1414":2,"1415":4,"1416":2,"1417":3,"1420":3,"1421":6,"1422":10,"1423":1,"1424":2,"1425":2,"1427":1,"1428":6,"1430":2,"1431":1,"1433":3,"1434":2,"1435":4,"1439":2,"1440":2,"1441":3,"1442":5,"1443":4,"1446":2,"1448":2,"1449":2,"1450":1,"1453":3,"1454":1,"1456":1,"1460":1,"1465":1,"1466":1,"1467":2,"1468":4,"1470":1,"1471":1,"1472":5,"1473":1,"1475":3,"1476":1,"1477":6,"1478":3,"1479":1,"1482":3,"1483":3,"1484":4,"1485":5,"1487":1,"1488":8,"1489":1,"1490":1,"1491":2,"1495":1,"1496":3,"1499":1,"1500":1,"1508":1,"1529":1,"1531":2,"1532":3,"1536":4,"1537":3,"1538":1,"1540":4,"1543":3,"1545":7,"1546":1,"1548":4,"1549":2,"1552":1,"1553":1,"1555":5,"1556":2,"1557":1,"1559":1,"1560":2,"1561":3,"1562":2,"1563":1,"1564":1,"1566":1,"1569":2,"1571":3,"1577":1,"1578":1,"1579":1,"1580":1,"1581":1,"1582":1,"1583":2,"1585":2,"1589":1,"1590":1,"1591":6,"1593":1,"1594":2,"1595":1,"1596":1,"1597":2,"1598":3,"1599":1,"1600":1,"1601":1,"1603":1,"1606":1,"1608":1,"1611":6,"1612":2,"1614":1,"1615":3,"1616":1,"1620":4,"1625":1,"1632":1,"1638":1,"1650":1,"1652":1,"1653":1,"1659":1,"1660":2,"1666":1,"1668":1,"1670":2,"1671":6,"1672":1,"1680":1,"1682":1,"1684":1,"1689":2,"1690":1,"1692":1,"1693":2,"1697":2,"1700":1,"1703":6,"1704":2,"1706":3,"1708":7,"1709":1,"1711":4,"1712":2,"1713":4,"1714":4,"1715":5,"1718":1,"1722":1,"1723":1,"1729":1,"1755":4,"1760":1,"1763":4,"1766":4,"1767":5,"1811":1,"1825":4,"1826":1,"1829":1,"1832":1,"1836":1,"1837":1,"1840":3,"1841":3,"1842":3,"1843":4,"1844":4,"1845":6,"1847":2,"1851":2,"1852":2,"1853":2,"1854":1,"1858":2,"1859":8,"1860":9,"1862":2,"1863":1,"1866":1,"1868":6,"1870":1,"1879":1,"1881":1,"1891":2,"1892":2,"1894":2,"1895":2,"1896":1,"1897":1,"1900":1,"1901":1,"1903":1,"1906":1,"1907":1,"1908":1,"1910":1,"1911":5,"1912":1,"1913":2,"1914":3,"1915":1,"1917":2,"1918":1,"1919":2,"1921":3,"1922":1,"1924":2,"1925":7,"1926":1,"1927":7,"1933":3,"1935":1,"1937":1,"1938":2,"1939":1,"1940":2,"1942":2,"1943":2,"1945":1,"1946":1,"1947":2,"1949":1,"1950":4,"1951":1,"1952":6,"1953":4,"1954":5,"1955":6,"1956":5,"1958":2,"1959":2,"1960":7,"1961":1,"1962":2,"1963":1,"1965":4,"1966":2,"1967":1,"1968":1,"1970":1,"1972":2,"1974":2,"1975":1,"1977":1,"1979":1,"1980":2,"1981":1,"1984":4,"1986":3,"1987":10,"1989":1,"1990":5,"1997":1,"1998":1,"2050":1,"2052":1,"2054":1,"2056":1,"2070":2,"2071":2,"2072":1,"2074":1,"2075":1,"2076":1,"2077":1,"2080":5,"2081":1,"2082":2,"2089":19,"2090":1,"2091":2,"2092":2,"2093":2,"2098":2,"2099":1,"2101":1,"2102":1,"2103":1,"2107":1,"2109":1,"2116":1,"2117":1,"2137":1,"2142":1,"2145":1,"2146":3,"2147":3,"2150":6,"2152":6,"2153":1,"2154":1,"2155":4,"2156":5,"2157":1,"2158":5,"2160":2,"2162":1,"2163":2,"2164":5,"2165":2,"2166":4,"2167":3,"2168":3,"2169":7,"2170":1,"2171":4,"2172":1,"2175":1,"2177":2,"2178":1,"2180":1,"2181":7,"2182":5,"2183":1,"2184":5,"2185":1,"2186":3,"2187":2,"2188":4,"2190":3,"2192":1,"2193":2,"2195":1,"2198":3,"2199":11,"2200":8,"2202":1,"2207":11,"2208":4,"2209":6,"2210":3,"2213":2,"2215":1,"2216":1,"2219":4,"2220":10,"2221":11,"2234":1,"2235":1,"2236":1,"2255":2,"2259":1,"2263":2,"2264":3,"2266":2,"2267":4,"2268":1,"2269":5,"2270":2,"2271":3,"2272":2,"2273":2,"2274":1,"2275":2,"2276":6,"2277":1,"2278":2,"2279":2,"2280":2,"2281":2,"2282":1,"2283":1,"2284":1,"2285":1,"2286":1,"2287":1,"2288":3,"2289":2,"2291":3,"2293":2,"2297":2,"2298":2,"2299":2,"2300":6,"2301":18,"2302":1,"2303":11,"2305":2,"2306":3,"2307":5,"2308":2,"2309":5,"2310":1,"2311":8,"2312":12,"2313":6,"2314":2,"2315":3,"2316":3,"2317":3,"2318":9,"2319":1,"2320":1,"2323":4,"2325":2,"2331":3,"2332":1,"2333":3,"2334":3,"2335":1,"2336":1,"2338":4,"2339":5,"2340":1,"2341":3,"2342":3,"2343":1,"2344":5,"2345":2,"2346":1,"2347":2,"2348":1,"2350":12,"2351":1,"2352":1,"2353":2,"2355":1,"2358":1,"2361":2,"2363":2,"2365":2,"2366":3,"2367":2,"2370":1,"2374":3,"2380":1,"2381":1,"2382":2,"2383":3,"2384":1,"2385":2,"2386":1,"2387":4,"2388":2,"2389":2,"2390":2,"2392":5,"2394":61,"2400":1,"2406":1,"2409":25,"2412":32,"2413":13,"2424":1,"2425":36,"2427":13,"2428":1,"2430":2,"2432":2,"2433":10,"2435":26,"2436":1,"2437":1,"2440":2,"2441":2,"2442":1,"2444":7,"2445":4,"2446":2,"2447":1,"2449":19,"2450":7,"2453":2,"2454":1,"2456":3,"2457":3,"2458":1,"2459":2,"2460":1,"2462":3,"2464":2,"2467":2,"2468":4,"2469":1,"2470":2,"2474":1,"2475":2,"2476":1,"2477":1,"2478":1,"2479":4,"2480":3,"2481":1,"2482":2,"2483":1,"2484":1,"2485":1,"2486":1,"2487":2,"2489":10,"2490":1,"2491":1,"2493":5,"2494":2,"2495":1,"2496":4,"2497":1,"2499":1,"2500":2,"2501":1,"2503":1,"2507":10,"2511":3,"2512":1,"2513":16,"2514":1,"2516":2,"2525":2,"2526":4,"2527":6,"2529":11,"2531":2,"2535":1,"2536":3,"2537":2,"2540":2,"2541":3,"2542":1,"2543":1,"2545":2,"2546":1,"2547":4,"2548":3,"2549":3,"2551":4,"2552":10,"2553":2,"2555":3,"2556":1,"2557":6,"2558":5,"2561":1,"2562":3,"2563":2,"2564":6,"2565":1,"2568":2,"2569":2,"2572":1,"2574":2,"2579":1,"2580":3,"2581":2,"2582":4,"2583":1,"2585":1,"2587":1,"2588":3,"2589":1,"2592":2,"2594":1,"2595":5,"2596":3,"2597":4,"2598":2,"2601":1,"2603":10,"2604":1,"2605":23,"2606":3,"2607":1,"2608":4,"2609":1,"2610":4,"2612":1,"2613":2,"2614":6,"2615":11,"2616":20,"2617":3,"2620":1,"2621":1,"2623":1,"2624":4,"2625":1,"2626":2,"2629":1,"2630":1,"2631":6,"2633":1,"2635":1,"2642":2,"2644":4,"2646":2,"2647":1,"2650":3,"2651":1,"2653":4,"2654":8,"2655":3,"2658":1,"2661":1,"2664":1,"2672":1,"2676":1,"2677":1,"2682":1,"2687":1,"2690":1,"2691":1,"2693":1,"2695":1,"2696":1,"2698":1,"2701":3,"2704":1,"2709":1,"2710":4,"2713":2,"2716":1,"2722":2,"2725":4,"2726":1,"2728":2,"2736":2,"2739":1,"2740":2,"2741":2,"2743":1,"2744":6,"2745":1,"2746":1,"2749":1,"2750":1,"2751":1,"2753":1,"2757":3,"2758":4,"2759":2,"2760":1,"2761":1,"2762":1,"2763":1,"2764":1,"2766":3,"2767":14,"2768":5,"2769":1,"2773":1,"2774":12,"2775":4,"2776":3,"2777":7,"2779":1,"2782":3,"2783":3,"2784":2,"2785":1,"2786":1,"2787":2,"2788":1,"2789":2,"2790":1,"2791":4,"2792":3,"2795":2,"2796":5}}],["anymore",{"2":{"1548":1}}],["anything",{"2":{"352":1,"568":1,"574":1,"688":1,"689":1,"1297":1,"1373":1,"1390":1,"1420":1,"1441":1,"1911":1,"2183":1,"2301":1,"2355":1,"2387":1,"2444":1,"2450":1,"2527":1,"2552":1,"2555":1,"2560":1,"2565":1,"2606":1,"2706":1,"2776":1}}],["anyways",{"2":{"1137":1}}],["anyway",{"2":{"215":1,"505":1}}],["anywhere",{"2":{"201":1,"327":1,"2207":1,"2221":2,"2315":1}}],["anyone",{"2":{"123":1,"1390":1,"1487":1,"2289":1}}],["any",{"0":{"533":1,"571":1},"1":{"572":1,"573":1},"2":{"0":1,"5":1,"9":1,"19":1,"21":1,"22":1,"28":1,"36":1,"39":1,"43":1,"46":1,"49":1,"52":1,"70":1,"73":1,"99":1,"103":1,"124":1,"126":1,"131":1,"137":1,"153":1,"173":1,"175":1,"182":2,"194":1,"215":1,"245":2,"257":1,"258":1,"259":2,"265":2,"268":1,"275":3,"276":2,"290":1,"311":1,"317":2,"318":1,"337":3,"350":1,"370":1,"376":1,"385":1,"387":1,"388":1,"395":1,"415":1,"453":1,"455":1,"461":1,"466":1,"480":1,"485":1,"486":1,"488":1,"515":2,"533":1,"541":1,"554":3,"556":3,"562":1,"567":1,"571":1,"588":1,"592":1,"609":1,"621":2,"623":1,"626":1,"628":1,"635":1,"685":2,"707":1,"1134":1,"1142":1,"1214":1,"1216":1,"1237":1,"1258":1,"1273":1,"1277":1,"1279":2,"1280":1,"1301":1,"1329":1,"1337":4,"1363":2,"1366":5,"1369":3,"1375":1,"1380":1,"1384":1,"1396":2,"1416":1,"1417":2,"1420":1,"1422":4,"1431":1,"1435":1,"1438":1,"1451":1,"1467":1,"1468":1,"1472":1,"1477":2,"1483":1,"1494":1,"1496":1,"1503":1,"1504":1,"1532":1,"1536":1,"1537":1,"1553":1,"1555":1,"1563":1,"1601":1,"1611":1,"1634":1,"1671":1,"1692":1,"1697":1,"1709":1,"1711":2,"1714":1,"1764":2,"1767":1,"1868":1,"1894":2,"1895":1,"1897":1,"1907":1,"1911":2,"1952":1,"1965":2,"1974":1,"1975":1,"1977":2,"1980":2,"1985":2,"1990":1,"2079":1,"2080":1,"2101":1,"2102":1,"2111":1,"2147":1,"2151":1,"2152":1,"2155":1,"2168":2,"2169":1,"2182":1,"2183":1,"2190":1,"2207":2,"2208":1,"2209":2,"2214":1,"2221":1,"2266":1,"2268":1,"2271":2,"2273":1,"2274":1,"2275":2,"2276":1,"2278":1,"2280":1,"2281":1,"2282":1,"2283":3,"2285":3,"2287":3,"2288":1,"2289":1,"2291":1,"2299":1,"2300":1,"2302":1,"2313":1,"2315":1,"2342":1,"2346":1,"2350":1,"2386":1,"2435":1,"2437":1,"2444":1,"2457":1,"2462":1,"2463":1,"2472":1,"2481":1,"2487":1,"2499":1,"2513":1,"2516":1,"2525":1,"2526":1,"2527":2,"2530":4,"2549":1,"2556":1,"2580":1,"2581":1,"2582":1,"2583":1,"2602":1,"2605":4,"2606":2,"2607":1,"2608":1,"2609":2,"2613":2,"2614":5,"2616":8,"2629":1,"2644":1,"2692":1,"2705":1,"2750":1,"2752":1,"2759":1,"2773":1,"2782":2,"2788":1,"2789":1,"2791":2,"2793":1,"2794":1,"2796":1}}],["a",{"0":{"6":1,"21":1,"152":1,"314":1,"361":1,"551":1,"554":1,"568":1,"570":1,"599":1,"600":1,"610":1,"1131":1,"1290":1,"1298":1,"1300":1,"1319":1,"1383":1,"1384":1,"1385":1,"1418":1,"1446":1,"1556":1,"1694":1,"1716":1,"1915":1,"1918":1,"1919":1,"1978":1,"2197":1,"2205":1,"2302":1,"2310":1,"2322":1,"2350":1,"2353":1,"2388":1,"2443":1,"2461":1,"2472":1,"2475":1,"2476":1,"2484":1,"2589":1,"2590":1,"2591":1},"1":{"611":1,"612":1,"1132":1,"1133":1,"1134":1,"1301":1,"1384":1,"1385":1,"1386":2,"1387":1,"1388":1,"1389":1,"1447":1,"1448":1,"1449":1,"1450":1,"1451":1,"1452":1,"1453":1,"1454":1,"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1465":1,"1466":1,"1467":1,"1468":1,"1469":1,"1470":1,"1471":1,"1472":1,"1473":1,"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1722":1,"1723":1,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1,"2444":1,"2445":1,"2446":1,"2447":1},"2":{"0":5,"1":1,"3":1,"6":2,"8":2,"9":4,"10":3,"11":1,"14":1,"15":1,"16":2,"18":2,"19":4,"21":1,"23":1,"24":1,"25":2,"28":3,"39":4,"49":11,"50":2,"52":4,"62":1,"65":3,"70":4,"73":1,"76":1,"80":1,"82":1,"83":1,"84":1,"86":1,"89":1,"90":1,"94":1,"95":1,"98":4,"99":1,"100":4,"107":1,"110":1,"112":2,"114":8,"116":1,"118":1,"120":1,"125":2,"130":2,"131":2,"132":3,"134":3,"137":2,"138":3,"139":1,"141":2,"142":1,"145":2,"149":3,"156":1,"160":9,"163":3,"164":2,"166":2,"169":2,"172":3,"173":4,"174":4,"175":1,"176":3,"179":2,"182":5,"183":1,"185":2,"187":1,"189":3,"190":1,"191":7,"194":10,"195":2,"196":3,"198":3,"199":1,"201":1,"202":1,"203":1,"209":1,"211":11,"213":1,"218":1,"222":7,"224":2,"228":3,"229":1,"230":1,"231":2,"233":1,"234":1,"236":1,"238":2,"246":2,"247":2,"248":1,"249":3,"251":1,"254":1,"255":1,"262":2,"263":2,"265":2,"266":6,"272":1,"273":2,"282":7,"289":1,"290":4,"291":1,"292":2,"299":2,"302":1,"303":1,"304":6,"305":2,"306":2,"310":1,"313":5,"314":2,"315":4,"316":4,"317":4,"321":1,"324":3,"331":2,"332":1,"334":1,"337":4,"340":1,"341":12,"347":1,"349":4,"352":9,"353":2,"354":2,"355":3,"357":1,"358":2,"359":1,"360":1,"363":1,"367":4,"370":4,"371":3,"373":1,"377":2,"378":6,"379":2,"380":2,"381":3,"383":2,"385":1,"386":3,"387":1,"388":3,"389":2,"390":2,"391":3,"393":6,"394":6,"396":1,"400":2,"401":4,"402":1,"404":1,"405":1,"408":1,"409":1,"411":1,"413":4,"415":2,"418":1,"423":1,"424":1,"428":2,"430":5,"432":1,"433":3,"435":1,"436":2,"441":2,"445":1,"446":1,"447":2,"451":1,"452":1,"453":5,"454":2,"455":2,"456":1,"457":5,"459":1,"460":2,"462":3,"465":1,"466":4,"467":3,"468":5,"469":2,"470":1,"471":1,"473":1,"474":1,"478":1,"479":3,"481":4,"483":2,"484":1,"485":1,"492":1,"496":1,"497":1,"500":1,"501":1,"502":6,"504":1,"505":6,"506":3,"508":1,"509":2,"511":2,"512":1,"513":8,"515":4,"516":5,"517":1,"519":2,"520":2,"521":2,"522":1,"523":1,"526":2,"528":2,"529":4,"530":4,"532":2,"534":2,"537":3,"538":1,"540":4,"541":1,"545":1,"552":1,"554":11,"556":4,"557":1,"558":1,"559":7,"560":9,"561":2,"563":1,"564":1,"565":2,"566":1,"567":3,"568":3,"569":2,"570":3,"571":3,"572":3,"573":1,"584":1,"585":1,"586":2,"588":1,"589":2,"592":4,"596":2,"597":3,"598":6,"599":2,"600":2,"601":1,"602":2,"606":11,"607":3,"608":1,"609":3,"610":3,"611":1,"612":6,"613":2,"614":3,"615":1,"616":1,"620":2,"621":6,"623":2,"624":1,"625":4,"626":4,"627":2,"628":2,"629":2,"630":3,"635":1,"636":2,"638":2,"639":3,"641":3,"647":1,"654":1,"661":1,"665":1,"671":1,"674":2,"675":1,"678":2,"679":4,"680":7,"681":2,"683":1,"684":1,"686":1,"687":1,"688":4,"689":3,"690":2,"691":1,"694":1,"695":1,"699":1,"700":1,"703":2,"707":1,"709":2,"712":2,"714":1,"715":2,"717":2,"718":2,"720":1,"721":1,"723":2,"724":1,"726":5,"727":1,"736":1,"741":1,"745":1,"749":1,"751":1,"755":1,"762":1,"768":1,"772":1,"776":1,"778":1,"784":1,"794":1,"800":1,"804":1,"808":1,"810":1,"816":1,"824":1,"832":1,"836":1,"840":1,"842":1,"848":1,"859":1,"867":1,"871":1,"875":1,"877":1,"883":1,"893":1,"901":1,"905":1,"909":1,"911":1,"917":1,"927":1,"935":1,"939":1,"943":1,"945":1,"951":1,"961":1,"969":1,"973":1,"977":1,"979":1,"985":1,"995":1,"1003":1,"1007":1,"1011":1,"1013":1,"1019":1,"1029":1,"1037":1,"1041":1,"1045":1,"1047":1,"1053":1,"1063":1,"1071":1,"1075":1,"1079":1,"1081":1,"1087":1,"1097":1,"1105":1,"1109":1,"1113":1,"1115":1,"1121":1,"1122":2,"1123":1,"1125":1,"1126":2,"1127":1,"1129":3,"1130":1,"1132":1,"1133":1,"1134":2,"1136":1,"1137":1,"1142":1,"1143":1,"1150":1,"1158":1,"1162":1,"1169":1,"1172":1,"1176":1,"1180":2,"1187":1,"1195":1,"1199":1,"1203":1,"1205":1,"1211":1,"1212":1,"1214":4,"1220":1,"1223":1,"1226":1,"1229":1,"1232":1,"1233":1,"1234":6,"1235":1,"1239":1,"1241":1,"1244":1,"1246":1,"1249":5,"1251":3,"1252":6,"1253":1,"1254":2,"1257":1,"1261":2,"1262":2,"1263":1,"1265":1,"1267":2,"1270":1,"1271":10,"1272":1,"1273":4,"1275":3,"1279":2,"1285":1,"1287":5,"1288":1,"1289":1,"1291":1,"1292":2,"1294":2,"1295":2,"1296":2,"1297":1,"1298":1,"1300":1,"1301":1,"1302":8,"1308":1,"1309":2,"1310":1,"1315":2,"1321":1,"1324":3,"1327":1,"1330":1,"1332":2,"1336":6,"1337":9,"1340":2,"1341":2,"1347":1,"1350":1,"1351":1,"1352":2,"1359":1,"1362":4,"1363":6,"1366":9,"1367":1,"1368":3,"1369":7,"1370":1,"1371":3,"1372":3,"1373":5,"1374":1,"1375":3,"1377":7,"1378":3,"1381":4,"1383":5,"1384":3,"1385":1,"1386":2,"1389":2,"1390":4,"1391":2,"1392":3,"1394":5,"1396":8,"1397":5,"1398":11,"1399":2,"1400":1,"1401":3,"1402":1,"1405":1,"1406":1,"1413":2,"1414":1,"1415":1,"1417":5,"1418":2,"1419":2,"1420":5,"1421":3,"1422":6,"1423":2,"1424":2,"1425":1,"1427":3,"1430":2,"1431":2,"1434":6,"1435":7,"1436":2,"1437":1,"1438":2,"1439":1,"1440":6,"1441":1,"1442":6,"1443":8,"1446":2,"1447":1,"1448":7,"1449":4,"1451":2,"1452":1,"1453":10,"1458":1,"1460":2,"1463":2,"1464":1,"1465":1,"1466":1,"1467":1,"1468":7,"1469":1,"1473":6,"1474":1,"1475":12,"1476":3,"1477":4,"1478":7,"1479":3,"1482":6,"1483":3,"1484":2,"1485":3,"1488":23,"1489":2,"1491":4,"1495":2,"1496":2,"1499":1,"1501":3,"1503":1,"1506":1,"1508":4,"1529":3,"1532":3,"1533":1,"1534":2,"1536":7,"1537":3,"1538":1,"1540":2,"1541":1,"1543":2,"1544":1,"1545":7,"1546":1,"1547":2,"1548":4,"1549":1,"1552":3,"1553":2,"1555":4,"1556":2,"1558":1,"1560":5,"1561":1,"1563":4,"1564":1,"1565":2,"1566":2,"1569":2,"1572":2,"1586":1,"1587":3,"1590":1,"1591":3,"1592":3,"1593":1,"1594":4,"1595":5,"1596":6,"1597":1,"1599":1,"1600":5,"1601":2,"1603":2,"1605":1,"1608":3,"1609":1,"1611":7,"1614":2,"1615":9,"1616":1,"1617":1,"1619":1,"1620":5,"1621":2,"1622":1,"1623":1,"1624":1,"1625":1,"1629":1,"1643":1,"1645":1,"1647":1,"1649":1,"1651":1,"1652":1,"1655":1,"1657":1,"1660":1,"1662":1,"1668":3,"1670":1,"1671":2,"1672":1,"1676":1,"1677":1,"1680":1,"1682":1,"1686":1,"1689":3,"1690":1,"1693":5,"1695":1,"1696":1,"1697":2,"1698":1,"1699":1,"1700":2,"1703":1,"1704":1,"1706":3,"1708":11,"1709":3,"1710":1,"1711":5,"1712":3,"1713":21,"1714":1,"1715":7,"1716":3,"1718":3,"1720":1,"1721":1,"1722":1,"1723":5,"1754":1,"1755":1,"1756":1,"1758":1,"1763":7,"1764":3,"1766":5,"1767":6,"1769":1,"1771":1,"1781":1,"1829":4,"1831":19,"1832":1,"1836":2,"1840":2,"1841":2,"1842":3,"1845":8,"1846":1,"1852":1,"1853":3,"1854":2,"1855":1,"1858":1,"1859":4,"1860":13,"1862":1,"1865":2,"1867":1,"1870":1,"1875":1,"1877":1,"1879":1,"1881":1,"1883":1,"1890":1,"1891":5,"1892":1,"1897":1,"1899":2,"1901":3,"1904":1,"1906":1,"1907":2,"1908":1,"1910":1,"1913":3,"1914":1,"1916":1,"1918":4,"1919":1,"1921":6,"1922":1,"1925":3,"1926":2,"1927":5,"1929":1,"1930":1,"1932":1,"1933":2,"1934":2,"1935":1,"1937":1,"1938":1,"1940":1,"1943":3,"1945":4,"1946":1,"1947":1,"1948":1,"1949":1,"1950":1,"1951":2,"1952":8,"1953":3,"1954":5,"1955":5,"1956":6,"1958":2,"1959":1,"1960":1,"1961":1,"1962":1,"1963":2,"1965":9,"1966":3,"1968":1,"1974":1,"1979":2,"1980":1,"1981":1,"1984":7,"1985":3,"1986":1,"1987":14,"1988":2,"1990":6,"1993":1,"1995":1,"1997":3,"2008":1,"2069":6,"2070":1,"2074":3,"2078":1,"2079":1,"2080":2,"2082":2,"2085":2,"2089":4,"2100":1,"2103":2,"2104":1,"2105":1,"2107":3,"2108":1,"2112":2,"2113":3,"2114":1,"2116":1,"2119":1,"2121":2,"2123":1,"2125":2,"2131":1,"2133":1,"2135":1,"2137":3,"2140":2,"2150":3,"2151":2,"2152":4,"2155":1,"2156":2,"2159":1,"2160":2,"2162":1,"2163":6,"2164":4,"2166":5,"2168":12,"2169":9,"2171":4,"2172":1,"2176":1,"2177":3,"2178":1,"2181":11,"2182":2,"2183":1,"2184":8,"2185":5,"2186":4,"2187":2,"2188":5,"2190":6,"2191":5,"2192":2,"2193":1,"2194":1,"2195":2,"2198":3,"2199":8,"2200":13,"2202":3,"2206":1,"2207":18,"2208":5,"2209":4,"2210":3,"2214":1,"2217":4,"2218":5,"2219":2,"2220":6,"2221":6,"2237":2,"2239":1,"2246":1,"2255":1,"2263":1,"2264":3,"2265":1,"2266":1,"2267":1,"2268":1,"2269":5,"2270":1,"2271":4,"2272":2,"2273":2,"2274":3,"2275":2,"2276":7,"2277":1,"2278":6,"2280":4,"2281":2,"2282":1,"2283":1,"2284":1,"2285":1,"2286":1,"2287":1,"2288":6,"2289":3,"2290":1,"2291":2,"2294":1,"2295":1,"2296":2,"2297":4,"2298":2,"2299":2,"2300":3,"2301":8,"2302":2,"2303":6,"2305":2,"2306":3,"2307":8,"2308":4,"2310":4,"2311":14,"2312":5,"2313":5,"2314":2,"2315":5,"2316":5,"2318":9,"2319":3,"2320":1,"2321":2,"2322":1,"2323":3,"2327":1,"2329":1,"2332":1,"2333":2,"2334":7,"2336":1,"2337":1,"2338":4,"2339":6,"2340":1,"2341":5,"2344":4,"2345":1,"2346":3,"2347":1,"2350":21,"2352":1,"2353":2,"2354":5,"2355":2,"2356":5,"2357":2,"2358":8,"2359":4,"2361":1,"2363":1,"2365":3,"2366":4,"2368":3,"2370":1,"2372":3,"2380":1,"2382":1,"2383":3,"2385":4,"2386":2,"2387":4,"2388":4,"2389":2,"2393":3,"2394":10,"2406":2,"2407":1,"2409":2,"2410":19,"2412":1,"2425":3,"2435":2,"2436":2,"2439":4,"2440":1,"2441":2,"2442":5,"2443":1,"2444":4,"2445":2,"2446":2,"2447":2,"2448":1,"2449":4,"2450":4,"2452":1,"2454":1,"2456":7,"2457":3,"2460":1,"2461":3,"2462":3,"2463":4,"2464":2,"2466":3,"2467":3,"2468":3,"2470":2,"2472":1,"2474":2,"2475":2,"2477":1,"2479":1,"2480":1,"2481":3,"2482":2,"2483":1,"2484":3,"2485":4,"2487":1,"2488":1,"2489":4,"2491":1,"2493":2,"2494":1,"2496":4,"2497":2,"2499":1,"2500":1,"2507":1,"2508":6,"2511":3,"2512":4,"2513":6,"2514":2,"2515":3,"2516":4,"2518":2,"2520":1,"2525":3,"2526":2,"2527":4,"2529":10,"2530":7,"2531":2,"2534":1,"2537":2,"2540":2,"2541":1,"2542":3,"2547":4,"2549":2,"2552":6,"2553":5,"2554":3,"2555":3,"2556":2,"2560":2,"2562":5,"2563":4,"2564":2,"2565":1,"2569":5,"2574":1,"2578":2,"2580":1,"2581":1,"2582":1,"2583":2,"2584":3,"2585":2,"2587":3,"2588":1,"2589":1,"2590":1,"2591":2,"2592":6,"2594":2,"2595":2,"2597":2,"2598":2,"2599":1,"2601":1,"2602":2,"2603":12,"2604":1,"2605":26,"2606":7,"2607":2,"2608":3,"2609":2,"2610":2,"2614":8,"2615":21,"2616":26,"2617":3,"2620":1,"2623":3,"2624":4,"2626":1,"2628":1,"2630":1,"2631":3,"2632":3,"2633":1,"2634":1,"2635":7,"2636":1,"2639":2,"2640":2,"2644":3,"2646":3,"2647":2,"2649":1,"2650":6,"2653":3,"2654":6,"2655":4,"2656":1,"2658":2,"2659":1,"2661":2,"2662":1,"2664":2,"2665":2,"2666":2,"2667":1,"2668":1,"2671":1,"2672":1,"2677":1,"2679":2,"2680":2,"2681":1,"2682":1,"2683":1,"2684":2,"2685":1,"2687":2,"2688":2,"2690":1,"2691":1,"2692":1,"2693":3,"2694":1,"2695":1,"2696":1,"2698":2,"2699":3,"2700":1,"2701":3,"2702":1,"2703":3,"2704":1,"2705":1,"2706":1,"2707":1,"2709":1,"2710":1,"2711":5,"2713":1,"2715":2,"2716":2,"2720":1,"2721":2,"2722":1,"2723":3,"2725":8,"2726":1,"2727":2,"2728":6,"2732":2,"2733":1,"2734":2,"2735":1,"2736":1,"2738":4,"2740":2,"2741":5,"2742":2,"2743":2,"2744":1,"2745":1,"2748":1,"2749":2,"2750":1,"2751":1,"2752":1,"2753":1,"2758":2,"2759":1,"2760":1,"2762":1,"2764":3,"2766":4,"2767":13,"2769":4,"2770":8,"2771":8,"2772":5,"2773":11,"2774":14,"2775":6,"2776":11,"2777":8,"2779":2,"2780":2,"2781":2,"2782":2,"2784":7,"2785":6,"2786":1,"2787":3,"2788":5,"2789":2,"2791":1,"2792":12,"2793":1,"2794":1,"2795":3,"2796":9}}]],"serializationVersion":2}`;
+export {
+ _localSearchIndexroot as default
+};
diff --git a/assets/chunks/VPLocalSearchBox.BMX-VUFD.js b/assets/chunks/VPLocalSearchBox.BMX-VUFD.js
new file mode 100644
index 0000000..d3ab96b
--- /dev/null
+++ b/assets/chunks/VPLocalSearchBox.BMX-VUFD.js
@@ -0,0 +1,5147 @@
+var __defProp = Object.defineProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+import { Y as __vitePreload, j as ref, x as watch, an as unrefElement, ao as tryOnScopeDispose, d as defineComponent, G as shallowRef, ap as computedAsync, h as computed, aq as useSessionStorage, ar as useLocalStorage, y as watchEffect, as as watchDebounced, k as onMounted, S as nextTick, R as onKeyStroke, a6 as useRouter, at as useEventListener, Z as useScrollLock, V as inBrowser, au as onBeforeUnmount, o as openBlock, b as createBlock, l as createBaseVNode, a2 as withModifiers, m as unref, av as withDirectives, aw as vModelText, ax as isRef, c as createElementBlock, n as normalizeClass, e as createCommentVNode, E as renderList, F as Fragment, a as createTextVNode, t as toDisplayString, ay as Teleport, p as pushScopeId, q as popScopeId, az as markRaw, aA as createApp, ac as dataSymbol, ai as pathToFile, aB as escapeRegExp, _ as _export_sfc } from "./framework.Clpp4x2N.js";
+import { u as useData, c as createSearchTranslate } from "./theme.CvF3QDT6.js";
+const localSearchIndex = { "root": () => __vitePreload(() => import("./@localSearchIndexroot.Cbmy2VqK.js"), true ? [] : void 0) };
+/*!
+* tabbable 6.2.0
+* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
+*/
+var candidateSelectors = ["input:not([inert])", "select:not([inert])", "textarea:not([inert])", "a[href]:not([inert])", "button:not([inert])", "[tabindex]:not(slot):not([inert])", "audio[controls]:not([inert])", "video[controls]:not([inert])", '[contenteditable]:not([contenteditable="false"]):not([inert])', "details>summary:first-of-type:not([inert])", "details:not([inert])"];
+var candidateSelector = /* @__PURE__ */ candidateSelectors.join(",");
+var NoElement = typeof Element === "undefined";
+var matches = NoElement ? function() {
+} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
+var getRootNode = !NoElement && Element.prototype.getRootNode ? function(element) {
+ var _element$getRootNode;
+ return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);
+} : function(element) {
+ return element === null || element === void 0 ? void 0 : element.ownerDocument;
+};
+var isInert = function isInert2(node, lookUp) {
+ var _node$getAttribute;
+ if (lookUp === void 0) {
+ lookUp = true;
+ }
+ var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, "inert");
+ var inert = inertAtt === "" || inertAtt === "true";
+ var result = inert || lookUp && node && isInert2(node.parentNode);
+ return result;
+};
+var isContentEditable = function isContentEditable2(node) {
+ var _node$getAttribute2;
+ var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, "contenteditable");
+ return attValue === "" || attValue === "true";
+};
+var getCandidates = function getCandidates2(el, includeContainer, filter) {
+ if (isInert(el)) {
+ return [];
+ }
+ var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));
+ if (includeContainer && matches.call(el, candidateSelector)) {
+ candidates.unshift(el);
+ }
+ candidates = candidates.filter(filter);
+ return candidates;
+};
+var getCandidatesIteratively = function getCandidatesIteratively2(elements, includeContainer, options) {
+ var candidates = [];
+ var elementsToCheck = Array.from(elements);
+ while (elementsToCheck.length) {
+ var element = elementsToCheck.shift();
+ if (isInert(element, false)) {
+ continue;
+ }
+ if (element.tagName === "SLOT") {
+ var assigned = element.assignedElements();
+ var content = assigned.length ? assigned : element.children;
+ var nestedCandidates = getCandidatesIteratively2(content, true, options);
+ if (options.flatten) {
+ candidates.push.apply(candidates, nestedCandidates);
+ } else {
+ candidates.push({
+ scopeParent: element,
+ candidates: nestedCandidates
+ });
+ }
+ } else {
+ var validCandidate = matches.call(element, candidateSelector);
+ if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {
+ candidates.push(element);
+ }
+ var shadowRoot = element.shadowRoot || // check for an undisclosed shadow
+ typeof options.getShadowRoot === "function" && options.getShadowRoot(element);
+ var validShadowRoot = !isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));
+ if (shadowRoot && validShadowRoot) {
+ var _nestedCandidates = getCandidatesIteratively2(shadowRoot === true ? element.children : shadowRoot.children, true, options);
+ if (options.flatten) {
+ candidates.push.apply(candidates, _nestedCandidates);
+ } else {
+ candidates.push({
+ scopeParent: element,
+ candidates: _nestedCandidates
+ });
+ }
+ } else {
+ elementsToCheck.unshift.apply(elementsToCheck, element.children);
+ }
+ }
+ }
+ return candidates;
+};
+var hasTabIndex = function hasTabIndex2(node) {
+ return !isNaN(parseInt(node.getAttribute("tabindex"), 10));
+};
+var getTabIndex = function getTabIndex2(node) {
+ if (!node) {
+ throw new Error("No node provided");
+ }
+ if (node.tabIndex < 0) {
+ if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {
+ return 0;
+ }
+ }
+ return node.tabIndex;
+};
+var getSortOrderTabIndex = function getSortOrderTabIndex2(node, isScope) {
+ var tabIndex = getTabIndex(node);
+ if (tabIndex < 0 && isScope && !hasTabIndex(node)) {
+ return 0;
+ }
+ return tabIndex;
+};
+var sortOrderedTabbables = function sortOrderedTabbables2(a, b) {
+ return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
+};
+var isInput = function isInput2(node) {
+ return node.tagName === "INPUT";
+};
+var isHiddenInput = function isHiddenInput2(node) {
+ return isInput(node) && node.type === "hidden";
+};
+var isDetailsWithSummary = function isDetailsWithSummary2(node) {
+ var r = node.tagName === "DETAILS" && Array.prototype.slice.apply(node.children).some(function(child) {
+ return child.tagName === "SUMMARY";
+ });
+ return r;
+};
+var getCheckedRadio = function getCheckedRadio2(nodes, form) {
+ for (var i = 0; i < nodes.length; i++) {
+ if (nodes[i].checked && nodes[i].form === form) {
+ return nodes[i];
+ }
+ }
+};
+var isTabbableRadio = function isTabbableRadio2(node) {
+ if (!node.name) {
+ return true;
+ }
+ var radioScope = node.form || getRootNode(node);
+ var queryRadios = function queryRadios2(name) {
+ return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]');
+ };
+ var radioSet;
+ if (typeof window !== "undefined" && typeof window.CSS !== "undefined" && typeof window.CSS.escape === "function") {
+ radioSet = queryRadios(window.CSS.escape(node.name));
+ } else {
+ try {
+ radioSet = queryRadios(node.name);
+ } catch (err) {
+ console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s", err.message);
+ return false;
+ }
+ }
+ var checked = getCheckedRadio(radioSet, node.form);
+ return !checked || checked === node;
+};
+var isRadio = function isRadio2(node) {
+ return isInput(node) && node.type === "radio";
+};
+var isNonTabbableRadio = function isNonTabbableRadio2(node) {
+ return isRadio(node) && !isTabbableRadio(node);
+};
+var isNodeAttached = function isNodeAttached2(node) {
+ var _nodeRoot;
+ var nodeRoot = node && getRootNode(node);
+ var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;
+ var attached = false;
+ if (nodeRoot && nodeRoot !== node) {
+ var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;
+ attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));
+ while (!attached && nodeRootHost) {
+ var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;
+ nodeRoot = getRootNode(nodeRootHost);
+ nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;
+ attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));
+ }
+ }
+ return attached;
+};
+var isZeroArea = function isZeroArea2(node) {
+ var _node$getBoundingClie = node.getBoundingClientRect(), width = _node$getBoundingClie.width, height = _node$getBoundingClie.height;
+ return width === 0 && height === 0;
+};
+var isHidden = function isHidden2(node, _ref) {
+ var displayCheck = _ref.displayCheck, getShadowRoot = _ref.getShadowRoot;
+ if (getComputedStyle(node).visibility === "hidden") {
+ return true;
+ }
+ var isDirectSummary = matches.call(node, "details>summary:first-of-type");
+ var nodeUnderDetails = isDirectSummary ? node.parentElement : node;
+ if (matches.call(nodeUnderDetails, "details:not([open]) *")) {
+ return true;
+ }
+ if (!displayCheck || displayCheck === "full" || displayCheck === "legacy-full") {
+ if (typeof getShadowRoot === "function") {
+ var originalNode = node;
+ while (node) {
+ var parentElement = node.parentElement;
+ var rootNode = getRootNode(node);
+ if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true) {
+ return isZeroArea(node);
+ } else if (node.assignedSlot) {
+ node = node.assignedSlot;
+ } else if (!parentElement && rootNode !== node.ownerDocument) {
+ node = rootNode.host;
+ } else {
+ node = parentElement;
+ }
+ }
+ node = originalNode;
+ }
+ if (isNodeAttached(node)) {
+ return !node.getClientRects().length;
+ }
+ if (displayCheck !== "legacy-full") {
+ return true;
+ }
+ } else if (displayCheck === "non-zero-area") {
+ return isZeroArea(node);
+ }
+ return false;
+};
+var isDisabledFromFieldset = function isDisabledFromFieldset2(node) {
+ if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {
+ var parentNode = node.parentElement;
+ while (parentNode) {
+ if (parentNode.tagName === "FIELDSET" && parentNode.disabled) {
+ for (var i = 0; i < parentNode.children.length; i++) {
+ var child = parentNode.children.item(i);
+ if (child.tagName === "LEGEND") {
+ return matches.call(parentNode, "fieldset[disabled] *") ? true : !child.contains(node);
+ }
+ }
+ return true;
+ }
+ parentNode = parentNode.parentElement;
+ }
+ }
+ return false;
+};
+var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable2(options, node) {
+ if (node.disabled || // we must do an inert look up to filter out any elements inside an inert ancestor
+ // because we're limited in the type of selectors we can use in JSDom (see related
+ // note related to `candidateSelectors`)
+ isInert(node) || isHiddenInput(node) || isHidden(node, options) || // For a details element with a summary, the summary element gets the focus
+ isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {
+ return false;
+ }
+ return true;
+};
+var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable2(options, node) {
+ if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {
+ return false;
+ }
+ return true;
+};
+var isValidShadowRootTabbable = function isValidShadowRootTabbable2(shadowHostNode) {
+ var tabIndex = parseInt(shadowHostNode.getAttribute("tabindex"), 10);
+ if (isNaN(tabIndex) || tabIndex >= 0) {
+ return true;
+ }
+ return false;
+};
+var sortByOrder = function sortByOrder2(candidates) {
+ var regularTabbables = [];
+ var orderedTabbables = [];
+ candidates.forEach(function(item, i) {
+ var isScope = !!item.scopeParent;
+ var element = isScope ? item.scopeParent : item;
+ var candidateTabindex = getSortOrderTabIndex(element, isScope);
+ var elements = isScope ? sortByOrder2(item.candidates) : element;
+ if (candidateTabindex === 0) {
+ isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);
+ } else {
+ orderedTabbables.push({
+ documentOrder: i,
+ tabIndex: candidateTabindex,
+ item,
+ isScope,
+ content: elements
+ });
+ }
+ });
+ return orderedTabbables.sort(sortOrderedTabbables).reduce(function(acc, sortable) {
+ sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);
+ return acc;
+ }, []).concat(regularTabbables);
+};
+var tabbable = function tabbable2(container, options) {
+ options = options || {};
+ var candidates;
+ if (options.getShadowRoot) {
+ candidates = getCandidatesIteratively([container], options.includeContainer, {
+ filter: isNodeMatchingSelectorTabbable.bind(null, options),
+ flatten: false,
+ getShadowRoot: options.getShadowRoot,
+ shadowRootFilter: isValidShadowRootTabbable
+ });
+ } else {
+ candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));
+ }
+ return sortByOrder(candidates);
+};
+var focusable = function focusable2(container, options) {
+ options = options || {};
+ var candidates;
+ if (options.getShadowRoot) {
+ candidates = getCandidatesIteratively([container], options.includeContainer, {
+ filter: isNodeMatchingSelectorFocusable.bind(null, options),
+ flatten: true,
+ getShadowRoot: options.getShadowRoot
+ });
+ } else {
+ candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));
+ }
+ return candidates;
+};
+var isTabbable = function isTabbable2(node, options) {
+ options = options || {};
+ if (!node) {
+ throw new Error("No node provided");
+ }
+ if (matches.call(node, candidateSelector) === false) {
+ return false;
+ }
+ return isNodeMatchingSelectorTabbable(options, node);
+};
+var focusableCandidateSelector = /* @__PURE__ */ candidateSelectors.concat("iframe").join(",");
+var isFocusable = function isFocusable2(node, options) {
+ options = options || {};
+ if (!node) {
+ throw new Error("No node provided");
+ }
+ if (matches.call(node, focusableCandidateSelector) === false) {
+ return false;
+ }
+ return isNodeMatchingSelectorFocusable(options, node);
+};
+/*!
+* focus-trap 7.5.4
+* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
+*/
+function ownKeys(e, r) {
+ var t = Object.keys(e);
+ if (Object.getOwnPropertySymbols) {
+ var o = Object.getOwnPropertySymbols(e);
+ r && (o = o.filter(function(r2) {
+ return Object.getOwnPropertyDescriptor(e, r2).enumerable;
+ })), t.push.apply(t, o);
+ }
+ return t;
+}
+function _objectSpread2(e) {
+ for (var r = 1; r < arguments.length; r++) {
+ var t = null != arguments[r] ? arguments[r] : {};
+ r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
+ _defineProperty(e, r2, t[r2]);
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
+ Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
+ });
+ }
+ return e;
+}
+function _defineProperty(obj, key, value) {
+ key = _toPropertyKey(key);
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+function _toPrimitive(input, hint) {
+ if (typeof input !== "object" || input === null)
+ return input;
+ var prim = input[Symbol.toPrimitive];
+ if (prim !== void 0) {
+ var res = prim.call(input, hint || "default");
+ if (typeof res !== "object")
+ return res;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+ return (hint === "string" ? String : Number)(input);
+}
+function _toPropertyKey(arg) {
+ var key = _toPrimitive(arg, "string");
+ return typeof key === "symbol" ? key : String(key);
+}
+var activeFocusTraps = {
+ activateTrap: function activateTrap(trapStack, trap) {
+ if (trapStack.length > 0) {
+ var activeTrap = trapStack[trapStack.length - 1];
+ if (activeTrap !== trap) {
+ activeTrap.pause();
+ }
+ }
+ var trapIndex = trapStack.indexOf(trap);
+ if (trapIndex === -1) {
+ trapStack.push(trap);
+ } else {
+ trapStack.splice(trapIndex, 1);
+ trapStack.push(trap);
+ }
+ },
+ deactivateTrap: function deactivateTrap(trapStack, trap) {
+ var trapIndex = trapStack.indexOf(trap);
+ if (trapIndex !== -1) {
+ trapStack.splice(trapIndex, 1);
+ }
+ if (trapStack.length > 0) {
+ trapStack[trapStack.length - 1].unpause();
+ }
+ }
+};
+var isSelectableInput = function isSelectableInput2(node) {
+ return node.tagName && node.tagName.toLowerCase() === "input" && typeof node.select === "function";
+};
+var isEscapeEvent = function isEscapeEvent2(e) {
+ return (e === null || e === void 0 ? void 0 : e.key) === "Escape" || (e === null || e === void 0 ? void 0 : e.key) === "Esc" || (e === null || e === void 0 ? void 0 : e.keyCode) === 27;
+};
+var isTabEvent = function isTabEvent2(e) {
+ return (e === null || e === void 0 ? void 0 : e.key) === "Tab" || (e === null || e === void 0 ? void 0 : e.keyCode) === 9;
+};
+var isKeyForward = function isKeyForward2(e) {
+ return isTabEvent(e) && !e.shiftKey;
+};
+var isKeyBackward = function isKeyBackward2(e) {
+ return isTabEvent(e) && e.shiftKey;
+};
+var delay = function delay2(fn) {
+ return setTimeout(fn, 0);
+};
+var findIndex = function findIndex2(arr, fn) {
+ var idx = -1;
+ arr.every(function(value, i) {
+ if (fn(value)) {
+ idx = i;
+ return false;
+ }
+ return true;
+ });
+ return idx;
+};
+var valueOrHandler = function valueOrHandler2(value) {
+ for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ params[_key - 1] = arguments[_key];
+ }
+ return typeof value === "function" ? value.apply(void 0, params) : value;
+};
+var getActualTarget = function getActualTarget2(event) {
+ return event.target.shadowRoot && typeof event.composedPath === "function" ? event.composedPath()[0] : event.target;
+};
+var internalTrapStack = [];
+var createFocusTrap = function createFocusTrap2(elements, userOptions) {
+ var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document;
+ var trapStack = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.trapStack) || internalTrapStack;
+ var config = _objectSpread2({
+ returnFocusOnDeactivate: true,
+ escapeDeactivates: true,
+ delayInitialFocus: true,
+ isKeyForward,
+ isKeyBackward
+ }, userOptions);
+ var state = {
+ // containers given to createFocusTrap()
+ // @type {Array}
+ containers: [],
+ // list of objects identifying tabbable nodes in `containers` in the trap
+ // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap
+ // is active, but the trap should never get to a state where there isn't at least one group
+ // with at least one tabbable node in it (that would lead to an error condition that would
+ // result in an error being thrown)
+ // @type {Array<{
+ // container: HTMLElement,
+ // tabbableNodes: Array, // empty if none
+ // focusableNodes: Array, // empty if none
+ // posTabIndexesFound: boolean,
+ // firstTabbableNode: HTMLElement|undefined,
+ // lastTabbableNode: HTMLElement|undefined,
+ // firstDomTabbableNode: HTMLElement|undefined,
+ // lastDomTabbableNode: HTMLElement|undefined,
+ // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined
+ // }>}
+ containerGroups: [],
+ // same order/length as `containers` list
+ // references to objects in `containerGroups`, but only those that actually have
+ // tabbable nodes in them
+ // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__
+ // the same length
+ tabbableGroups: [],
+ nodeFocusedBeforeActivation: null,
+ mostRecentlyFocusedNode: null,
+ active: false,
+ paused: false,
+ // timer ID for when delayInitialFocus is true and initial focus in this trap
+ // has been delayed during activation
+ delayInitialFocusTimer: void 0,
+ // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any
+ recentNavEvent: void 0
+ };
+ var trap;
+ var getOption = function getOption2(configOverrideOptions, optionName, configOptionName) {
+ return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : config[configOptionName || optionName];
+ };
+ var findContainerIndex = function findContainerIndex2(element, event) {
+ var composedPath = typeof (event === null || event === void 0 ? void 0 : event.composedPath) === "function" ? event.composedPath() : void 0;
+ return state.containerGroups.findIndex(function(_ref) {
+ var container = _ref.container, tabbableNodes = _ref.tabbableNodes;
+ return container.contains(element) || // fall back to explicit tabbable search which will take into consideration any
+ // web components if the `tabbableOptions.getShadowRoot` option was used for
+ // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't
+ // look inside web components even if open)
+ (composedPath === null || composedPath === void 0 ? void 0 : composedPath.includes(container)) || tabbableNodes.find(function(node) {
+ return node === element;
+ });
+ });
+ };
+ var getNodeForOption = function getNodeForOption2(optionName) {
+ var optionValue = config[optionName];
+ if (typeof optionValue === "function") {
+ for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
+ params[_key2 - 1] = arguments[_key2];
+ }
+ optionValue = optionValue.apply(void 0, params);
+ }
+ if (optionValue === true) {
+ optionValue = void 0;
+ }
+ if (!optionValue) {
+ if (optionValue === void 0 || optionValue === false) {
+ return optionValue;
+ }
+ throw new Error("`".concat(optionName, "` was specified but was not a node, or did not return a node"));
+ }
+ var node = optionValue;
+ if (typeof optionValue === "string") {
+ node = doc.querySelector(optionValue);
+ if (!node) {
+ throw new Error("`".concat(optionName, "` as selector refers to no known node"));
+ }
+ }
+ return node;
+ };
+ var getInitialFocusNode = function getInitialFocusNode2() {
+ var node = getNodeForOption("initialFocus");
+ if (node === false) {
+ return false;
+ }
+ if (node === void 0 || !isFocusable(node, config.tabbableOptions)) {
+ if (findContainerIndex(doc.activeElement) >= 0) {
+ node = doc.activeElement;
+ } else {
+ var firstTabbableGroup = state.tabbableGroups[0];
+ var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;
+ node = firstTabbableNode || getNodeForOption("fallbackFocus");
+ }
+ }
+ if (!node) {
+ throw new Error("Your focus-trap needs to have at least one focusable element");
+ }
+ return node;
+ };
+ var updateTabbableNodes = function updateTabbableNodes2() {
+ state.containerGroups = state.containers.map(function(container) {
+ var tabbableNodes = tabbable(container, config.tabbableOptions);
+ var focusableNodes = focusable(container, config.tabbableOptions);
+ var firstTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[0] : void 0;
+ var lastTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : void 0;
+ var firstDomTabbableNode = focusableNodes.find(function(node) {
+ return isTabbable(node);
+ });
+ var lastDomTabbableNode = focusableNodes.slice().reverse().find(function(node) {
+ return isTabbable(node);
+ });
+ var posTabIndexesFound = !!tabbableNodes.find(function(node) {
+ return getTabIndex(node) > 0;
+ });
+ return {
+ container,
+ tabbableNodes,
+ focusableNodes,
+ /** True if at least one node with positive `tabindex` was found in this container. */
+ posTabIndexesFound,
+ /** First tabbable node in container, __tabindex__ order; `undefined` if none. */
+ firstTabbableNode,
+ /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */
+ lastTabbableNode,
+ // NOTE: DOM order is NOT NECESSARILY "document position" order, but figuring that out
+ // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition
+ // because that API doesn't work with Shadow DOM as well as it should (@see
+ // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,
+ // to address an edge case related to positive tabindex support, this seems like a much easier,
+ // "close enough most of the time" alternative for positive tabindexes which should generally
+ // be avoided anyway...
+ /** First tabbable node in container, __DOM__ order; `undefined` if none. */
+ firstDomTabbableNode,
+ /** Last tabbable node in container, __DOM__ order; `undefined` if none. */
+ lastDomTabbableNode,
+ /**
+ * Finds the __tabbable__ node that follows the given node in the specified direction,
+ * in this container, if any.
+ * @param {HTMLElement} node
+ * @param {boolean} [forward] True if going in forward tab order; false if going
+ * in reverse.
+ * @returns {HTMLElement|undefined} The next tabbable node, if any.
+ */
+ nextTabbableNode: function nextTabbableNode(node) {
+ var forward = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
+ var nodeIdx = tabbableNodes.indexOf(node);
+ if (nodeIdx < 0) {
+ if (forward) {
+ return focusableNodes.slice(focusableNodes.indexOf(node) + 1).find(function(el) {
+ return isTabbable(el);
+ });
+ }
+ return focusableNodes.slice(0, focusableNodes.indexOf(node)).reverse().find(function(el) {
+ return isTabbable(el);
+ });
+ }
+ return tabbableNodes[nodeIdx + (forward ? 1 : -1)];
+ }
+ };
+ });
+ state.tabbableGroups = state.containerGroups.filter(function(group) {
+ return group.tabbableNodes.length > 0;
+ });
+ if (state.tabbableGroups.length <= 0 && !getNodeForOption("fallbackFocus")) {
+ throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");
+ }
+ if (state.containerGroups.find(function(g) {
+ return g.posTabIndexesFound;
+ }) && state.containerGroups.length > 1) {
+ throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.");
+ }
+ };
+ var getActiveElement = function getActiveElement2(el) {
+ var activeElement = el.activeElement;
+ if (!activeElement) {
+ return;
+ }
+ if (activeElement.shadowRoot && activeElement.shadowRoot.activeElement !== null) {
+ return getActiveElement2(activeElement.shadowRoot);
+ }
+ return activeElement;
+ };
+ var tryFocus = function tryFocus2(node) {
+ if (node === false) {
+ return;
+ }
+ if (node === getActiveElement(document)) {
+ return;
+ }
+ if (!node || !node.focus) {
+ tryFocus2(getInitialFocusNode());
+ return;
+ }
+ node.focus({
+ preventScroll: !!config.preventScroll
+ });
+ state.mostRecentlyFocusedNode = node;
+ if (isSelectableInput(node)) {
+ node.select();
+ }
+ };
+ var getReturnFocusNode = function getReturnFocusNode2(previousActiveElement) {
+ var node = getNodeForOption("setReturnFocus", previousActiveElement);
+ return node ? node : node === false ? false : previousActiveElement;
+ };
+ var findNextNavNode = function findNextNavNode2(_ref2) {
+ var target = _ref2.target, event = _ref2.event, _ref2$isBackward = _ref2.isBackward, isBackward = _ref2$isBackward === void 0 ? false : _ref2$isBackward;
+ target = target || getActualTarget(event);
+ updateTabbableNodes();
+ var destinationNode = null;
+ if (state.tabbableGroups.length > 0) {
+ var containerIndex = findContainerIndex(target, event);
+ var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : void 0;
+ if (containerIndex < 0) {
+ if (isBackward) {
+ destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;
+ } else {
+ destinationNode = state.tabbableGroups[0].firstTabbableNode;
+ }
+ } else if (isBackward) {
+ var startOfGroupIndex = findIndex(state.tabbableGroups, function(_ref3) {
+ var firstTabbableNode = _ref3.firstTabbableNode;
+ return target === firstTabbableNode;
+ });
+ if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {
+ startOfGroupIndex = containerIndex;
+ }
+ if (startOfGroupIndex >= 0) {
+ var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;
+ var destinationGroup = state.tabbableGroups[destinationGroupIndex];
+ destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;
+ } else if (!isTabEvent(event)) {
+ destinationNode = containerGroup.nextTabbableNode(target, false);
+ }
+ } else {
+ var lastOfGroupIndex = findIndex(state.tabbableGroups, function(_ref4) {
+ var lastTabbableNode = _ref4.lastTabbableNode;
+ return target === lastTabbableNode;
+ });
+ if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {
+ lastOfGroupIndex = containerIndex;
+ }
+ if (lastOfGroupIndex >= 0) {
+ var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;
+ var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];
+ destinationNode = getTabIndex(target) >= 0 ? _destinationGroup.firstTabbableNode : _destinationGroup.firstDomTabbableNode;
+ } else if (!isTabEvent(event)) {
+ destinationNode = containerGroup.nextTabbableNode(target);
+ }
+ }
+ } else {
+ destinationNode = getNodeForOption("fallbackFocus");
+ }
+ return destinationNode;
+ };
+ var checkPointerDown = function checkPointerDown2(e) {
+ var target = getActualTarget(e);
+ if (findContainerIndex(target, e) >= 0) {
+ return;
+ }
+ if (valueOrHandler(config.clickOutsideDeactivates, e)) {
+ trap.deactivate({
+ // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,
+ // which will result in the outside click setting focus to the node
+ // that was clicked (and if not focusable, to "nothing"); by setting
+ // `returnFocus: true`, we'll attempt to re-focus the node originally-focused
+ // on activation (or the configured `setReturnFocus` node), whether the
+ // outside click was on a focusable node or not
+ returnFocus: config.returnFocusOnDeactivate
+ });
+ return;
+ }
+ if (valueOrHandler(config.allowOutsideClick, e)) {
+ return;
+ }
+ e.preventDefault();
+ };
+ var checkFocusIn = function checkFocusIn2(event) {
+ var target = getActualTarget(event);
+ var targetContained = findContainerIndex(target, event) >= 0;
+ if (targetContained || target instanceof Document) {
+ if (targetContained) {
+ state.mostRecentlyFocusedNode = target;
+ }
+ } else {
+ event.stopImmediatePropagation();
+ var nextNode;
+ var navAcrossContainers = true;
+ if (state.mostRecentlyFocusedNode) {
+ if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {
+ var mruContainerIdx = findContainerIndex(state.mostRecentlyFocusedNode);
+ var tabbableNodes = state.containerGroups[mruContainerIdx].tabbableNodes;
+ if (tabbableNodes.length > 0) {
+ var mruTabIdx = tabbableNodes.findIndex(function(node) {
+ return node === state.mostRecentlyFocusedNode;
+ });
+ if (mruTabIdx >= 0) {
+ if (config.isKeyForward(state.recentNavEvent)) {
+ if (mruTabIdx + 1 < tabbableNodes.length) {
+ nextNode = tabbableNodes[mruTabIdx + 1];
+ navAcrossContainers = false;
+ }
+ } else {
+ if (mruTabIdx - 1 >= 0) {
+ nextNode = tabbableNodes[mruTabIdx - 1];
+ navAcrossContainers = false;
+ }
+ }
+ }
+ }
+ } else {
+ if (!state.containerGroups.some(function(g) {
+ return g.tabbableNodes.some(function(n) {
+ return getTabIndex(n) > 0;
+ });
+ })) {
+ navAcrossContainers = false;
+ }
+ }
+ } else {
+ navAcrossContainers = false;
+ }
+ if (navAcrossContainers) {
+ nextNode = findNextNavNode({
+ // move FROM the MRU node, not event-related node (which will be the node that is
+ // outside the trap causing the focus escape we're trying to fix)
+ target: state.mostRecentlyFocusedNode,
+ isBackward: config.isKeyBackward(state.recentNavEvent)
+ });
+ }
+ if (nextNode) {
+ tryFocus(nextNode);
+ } else {
+ tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());
+ }
+ }
+ state.recentNavEvent = void 0;
+ };
+ var checkKeyNav = function checkKeyNav2(event) {
+ var isBackward = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
+ state.recentNavEvent = event;
+ var destinationNode = findNextNavNode({
+ event,
+ isBackward
+ });
+ if (destinationNode) {
+ if (isTabEvent(event)) {
+ event.preventDefault();
+ }
+ tryFocus(destinationNode);
+ }
+ };
+ var checkKey = function checkKey2(event) {
+ if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) {
+ event.preventDefault();
+ trap.deactivate();
+ return;
+ }
+ if (config.isKeyForward(event) || config.isKeyBackward(event)) {
+ checkKeyNav(event, config.isKeyBackward(event));
+ }
+ };
+ var checkClick = function checkClick2(e) {
+ var target = getActualTarget(e);
+ if (findContainerIndex(target, e) >= 0) {
+ return;
+ }
+ if (valueOrHandler(config.clickOutsideDeactivates, e)) {
+ return;
+ }
+ if (valueOrHandler(config.allowOutsideClick, e)) {
+ return;
+ }
+ e.preventDefault();
+ e.stopImmediatePropagation();
+ };
+ var addListeners = function addListeners2() {
+ if (!state.active) {
+ return;
+ }
+ activeFocusTraps.activateTrap(trapStack, trap);
+ state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function() {
+ tryFocus(getInitialFocusNode());
+ }) : tryFocus(getInitialFocusNode());
+ doc.addEventListener("focusin", checkFocusIn, true);
+ doc.addEventListener("mousedown", checkPointerDown, {
+ capture: true,
+ passive: false
+ });
+ doc.addEventListener("touchstart", checkPointerDown, {
+ capture: true,
+ passive: false
+ });
+ doc.addEventListener("click", checkClick, {
+ capture: true,
+ passive: false
+ });
+ doc.addEventListener("keydown", checkKey, {
+ capture: true,
+ passive: false
+ });
+ return trap;
+ };
+ var removeListeners = function removeListeners2() {
+ if (!state.active) {
+ return;
+ }
+ doc.removeEventListener("focusin", checkFocusIn, true);
+ doc.removeEventListener("mousedown", checkPointerDown, true);
+ doc.removeEventListener("touchstart", checkPointerDown, true);
+ doc.removeEventListener("click", checkClick, true);
+ doc.removeEventListener("keydown", checkKey, true);
+ return trap;
+ };
+ var checkDomRemoval = function checkDomRemoval2(mutations) {
+ var isFocusedNodeRemoved = mutations.some(function(mutation) {
+ var removedNodes = Array.from(mutation.removedNodes);
+ return removedNodes.some(function(node) {
+ return node === state.mostRecentlyFocusedNode;
+ });
+ });
+ if (isFocusedNodeRemoved) {
+ tryFocus(getInitialFocusNode());
+ }
+ };
+ var mutationObserver = typeof window !== "undefined" && "MutationObserver" in window ? new MutationObserver(checkDomRemoval) : void 0;
+ var updateObservedNodes = function updateObservedNodes2() {
+ if (!mutationObserver) {
+ return;
+ }
+ mutationObserver.disconnect();
+ if (state.active && !state.paused) {
+ state.containers.map(function(container) {
+ mutationObserver.observe(container, {
+ subtree: true,
+ childList: true
+ });
+ });
+ }
+ };
+ trap = {
+ get active() {
+ return state.active;
+ },
+ get paused() {
+ return state.paused;
+ },
+ activate: function activate(activateOptions) {
+ if (state.active) {
+ return this;
+ }
+ var onActivate = getOption(activateOptions, "onActivate");
+ var onPostActivate = getOption(activateOptions, "onPostActivate");
+ var checkCanFocusTrap = getOption(activateOptions, "checkCanFocusTrap");
+ if (!checkCanFocusTrap) {
+ updateTabbableNodes();
+ }
+ state.active = true;
+ state.paused = false;
+ state.nodeFocusedBeforeActivation = doc.activeElement;
+ onActivate === null || onActivate === void 0 || onActivate();
+ var finishActivation = function finishActivation2() {
+ if (checkCanFocusTrap) {
+ updateTabbableNodes();
+ }
+ addListeners();
+ updateObservedNodes();
+ onPostActivate === null || onPostActivate === void 0 || onPostActivate();
+ };
+ if (checkCanFocusTrap) {
+ checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);
+ return this;
+ }
+ finishActivation();
+ return this;
+ },
+ deactivate: function deactivate(deactivateOptions) {
+ if (!state.active) {
+ return this;
+ }
+ var options = _objectSpread2({
+ onDeactivate: config.onDeactivate,
+ onPostDeactivate: config.onPostDeactivate,
+ checkCanReturnFocus: config.checkCanReturnFocus
+ }, deactivateOptions);
+ clearTimeout(state.delayInitialFocusTimer);
+ state.delayInitialFocusTimer = void 0;
+ removeListeners();
+ state.active = false;
+ state.paused = false;
+ updateObservedNodes();
+ activeFocusTraps.deactivateTrap(trapStack, trap);
+ var onDeactivate = getOption(options, "onDeactivate");
+ var onPostDeactivate = getOption(options, "onPostDeactivate");
+ var checkCanReturnFocus = getOption(options, "checkCanReturnFocus");
+ var returnFocus = getOption(options, "returnFocus", "returnFocusOnDeactivate");
+ onDeactivate === null || onDeactivate === void 0 || onDeactivate();
+ var finishDeactivation = function finishDeactivation2() {
+ delay(function() {
+ if (returnFocus) {
+ tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));
+ }
+ onPostDeactivate === null || onPostDeactivate === void 0 || onPostDeactivate();
+ });
+ };
+ if (returnFocus && checkCanReturnFocus) {
+ checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);
+ return this;
+ }
+ finishDeactivation();
+ return this;
+ },
+ pause: function pause(pauseOptions) {
+ if (state.paused || !state.active) {
+ return this;
+ }
+ var onPause = getOption(pauseOptions, "onPause");
+ var onPostPause = getOption(pauseOptions, "onPostPause");
+ state.paused = true;
+ onPause === null || onPause === void 0 || onPause();
+ removeListeners();
+ updateObservedNodes();
+ onPostPause === null || onPostPause === void 0 || onPostPause();
+ return this;
+ },
+ unpause: function unpause(unpauseOptions) {
+ if (!state.paused || !state.active) {
+ return this;
+ }
+ var onUnpause = getOption(unpauseOptions, "onUnpause");
+ var onPostUnpause = getOption(unpauseOptions, "onPostUnpause");
+ state.paused = false;
+ onUnpause === null || onUnpause === void 0 || onUnpause();
+ updateTabbableNodes();
+ addListeners();
+ updateObservedNodes();
+ onPostUnpause === null || onPostUnpause === void 0 || onPostUnpause();
+ return this;
+ },
+ updateContainerElements: function updateContainerElements(containerElements) {
+ var elementsAsArray = [].concat(containerElements).filter(Boolean);
+ state.containers = elementsAsArray.map(function(element) {
+ return typeof element === "string" ? doc.querySelector(element) : element;
+ });
+ if (state.active) {
+ updateTabbableNodes();
+ }
+ updateObservedNodes();
+ return this;
+ }
+ };
+ trap.updateContainerElements(elements);
+ return trap;
+};
+function useFocusTrap(target, options = {}) {
+ let trap;
+ const { immediate, ...focusTrapOptions } = options;
+ const hasFocus = ref(false);
+ const isPaused = ref(false);
+ const activate = (opts) => trap && trap.activate(opts);
+ const deactivate = (opts) => trap && trap.deactivate(opts);
+ const pause = () => {
+ if (trap) {
+ trap.pause();
+ isPaused.value = true;
+ }
+ };
+ const unpause = () => {
+ if (trap) {
+ trap.unpause();
+ isPaused.value = false;
+ }
+ };
+ watch(
+ () => unrefElement(target),
+ (el) => {
+ if (!el)
+ return;
+ trap = createFocusTrap(el, {
+ ...focusTrapOptions,
+ onActivate() {
+ hasFocus.value = true;
+ if (options.onActivate)
+ options.onActivate();
+ },
+ onDeactivate() {
+ hasFocus.value = false;
+ if (options.onDeactivate)
+ options.onDeactivate();
+ }
+ });
+ if (immediate)
+ activate();
+ },
+ { flush: "post" }
+ );
+ tryOnScopeDispose(() => deactivate());
+ return {
+ hasFocus,
+ isPaused,
+ activate,
+ deactivate,
+ pause,
+ unpause
+ };
+}
+class DOMIterator {
+ /**
+ * @param {HTMLElement|HTMLElement[]|NodeList|string} ctx - The context DOM
+ * element, an array of DOM elements, a NodeList or a selector
+ * @param {boolean} [iframes=true] - A boolean indicating if iframes should
+ * be handled
+ * @param {string[]} [exclude=[]] - An array containing exclusion selectors
+ * for iframes
+ * @param {number} [iframesTimeout=5000] - A number indicating the ms to
+ * wait before an iframe should be skipped, in case the load event isn't
+ * fired. This also applies if the user is offline and the resource of the
+ * iframe is online (either by the browsers "offline" mode or because
+ * there's no internet connection)
+ */
+ constructor(ctx, iframes = true, exclude = [], iframesTimeout = 5e3) {
+ this.ctx = ctx;
+ this.iframes = iframes;
+ this.exclude = exclude;
+ this.iframesTimeout = iframesTimeout;
+ }
+ /**
+ * Checks if the specified DOM element matches the selector
+ * @param {HTMLElement} element - The DOM element
+ * @param {string|string[]} selector - The selector or an array with
+ * selectors
+ * @return {boolean}
+ * @access public
+ */
+ static matches(element, selector) {
+ const selectors = typeof selector === "string" ? [selector] : selector, fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector;
+ if (fn) {
+ let match = false;
+ selectors.every((sel) => {
+ if (fn.call(element, sel)) {
+ match = true;
+ return false;
+ }
+ return true;
+ });
+ return match;
+ } else {
+ return false;
+ }
+ }
+ /**
+ * Returns all contexts filtered by duplicates (even nested)
+ * @return {HTMLElement[]} - An array containing DOM contexts
+ * @access protected
+ */
+ getContexts() {
+ let ctx, filteredCtx = [];
+ if (typeof this.ctx === "undefined" || !this.ctx) {
+ ctx = [];
+ } else if (NodeList.prototype.isPrototypeOf(this.ctx)) {
+ ctx = Array.prototype.slice.call(this.ctx);
+ } else if (Array.isArray(this.ctx)) {
+ ctx = this.ctx;
+ } else if (typeof this.ctx === "string") {
+ ctx = Array.prototype.slice.call(
+ document.querySelectorAll(this.ctx)
+ );
+ } else {
+ ctx = [this.ctx];
+ }
+ ctx.forEach((ctx2) => {
+ const isDescendant = filteredCtx.filter((contexts) => {
+ return contexts.contains(ctx2);
+ }).length > 0;
+ if (filteredCtx.indexOf(ctx2) === -1 && !isDescendant) {
+ filteredCtx.push(ctx2);
+ }
+ });
+ return filteredCtx;
+ }
+ /**
+ * @callback DOMIterator~getIframeContentsSuccessCallback
+ * @param {HTMLDocument} contents - The contentDocument of the iframe
+ */
+ /**
+ * Calls the success callback function with the iframe document. If it can't
+ * be accessed it calls the error callback function
+ * @param {HTMLElement} ifr - The iframe DOM element
+ * @param {DOMIterator~getIframeContentsSuccessCallback} successFn
+ * @param {function} [errorFn]
+ * @access protected
+ */
+ getIframeContents(ifr, successFn, errorFn = () => {
+ }) {
+ let doc;
+ try {
+ const ifrWin = ifr.contentWindow;
+ doc = ifrWin.document;
+ if (!ifrWin || !doc) {
+ throw new Error("iframe inaccessible");
+ }
+ } catch (e) {
+ errorFn();
+ }
+ if (doc) {
+ successFn(doc);
+ }
+ }
+ /**
+ * Checks if an iframe is empty (if about:blank is the shown page)
+ * @param {HTMLElement} ifr - The iframe DOM element
+ * @return {boolean}
+ * @access protected
+ */
+ isIframeBlank(ifr) {
+ const bl = "about:blank", src = ifr.getAttribute("src").trim(), href = ifr.contentWindow.location.href;
+ return href === bl && src !== bl && src;
+ }
+ /**
+ * Observes the onload event of an iframe and calls the success callback or
+ * the error callback if the iframe is inaccessible. If the event isn't
+ * fired within the specified {@link DOMIterator#iframesTimeout}, then it'll
+ * call the error callback too
+ * @param {HTMLElement} ifr - The iframe DOM element
+ * @param {DOMIterator~getIframeContentsSuccessCallback} successFn
+ * @param {function} errorFn
+ * @access protected
+ */
+ observeIframeLoad(ifr, successFn, errorFn) {
+ let called = false, tout = null;
+ const listener = () => {
+ if (called) {
+ return;
+ }
+ called = true;
+ clearTimeout(tout);
+ try {
+ if (!this.isIframeBlank(ifr)) {
+ ifr.removeEventListener("load", listener);
+ this.getIframeContents(ifr, successFn, errorFn);
+ }
+ } catch (e) {
+ errorFn();
+ }
+ };
+ ifr.addEventListener("load", listener);
+ tout = setTimeout(listener, this.iframesTimeout);
+ }
+ /**
+ * Callback when the iframe is ready
+ * @callback DOMIterator~onIframeReadySuccessCallback
+ * @param {HTMLDocument} contents - The contentDocument of the iframe
+ */
+ /**
+ * Callback if the iframe can't be accessed
+ * @callback DOMIterator~onIframeReadyErrorCallback
+ */
+ /**
+ * Calls the callback if the specified iframe is ready for DOM access
+ * @param {HTMLElement} ifr - The iframe DOM element
+ * @param {DOMIterator~onIframeReadySuccessCallback} successFn - Success
+ * callback
+ * @param {DOMIterator~onIframeReadyErrorCallback} errorFn - Error callback
+ * @see {@link http://stackoverflow.com/a/36155560/3894981} for
+ * background information
+ * @access protected
+ */
+ onIframeReady(ifr, successFn, errorFn) {
+ try {
+ if (ifr.contentWindow.document.readyState === "complete") {
+ if (this.isIframeBlank(ifr)) {
+ this.observeIframeLoad(ifr, successFn, errorFn);
+ } else {
+ this.getIframeContents(ifr, successFn, errorFn);
+ }
+ } else {
+ this.observeIframeLoad(ifr, successFn, errorFn);
+ }
+ } catch (e) {
+ errorFn();
+ }
+ }
+ /**
+ * Callback when all iframes are ready for DOM access
+ * @callback DOMIterator~waitForIframesDoneCallback
+ */
+ /**
+ * Iterates over all iframes and calls the done callback when all of them
+ * are ready for DOM access (including nested ones)
+ * @param {HTMLElement} ctx - The context DOM element
+ * @param {DOMIterator~waitForIframesDoneCallback} done - Done callback
+ */
+ waitForIframes(ctx, done) {
+ let eachCalled = 0;
+ this.forEachIframe(ctx, () => true, (ifr) => {
+ eachCalled++;
+ this.waitForIframes(ifr.querySelector("html"), () => {
+ if (!--eachCalled) {
+ done();
+ }
+ });
+ }, (handled) => {
+ if (!handled) {
+ done();
+ }
+ });
+ }
+ /**
+ * Callback allowing to filter an iframe. Must return true when the element
+ * should remain, otherwise false
+ * @callback DOMIterator~forEachIframeFilterCallback
+ * @param {HTMLElement} iframe - The iframe DOM element
+ */
+ /**
+ * Callback for each iframe content
+ * @callback DOMIterator~forEachIframeEachCallback
+ * @param {HTMLElement} content - The iframe document
+ */
+ /**
+ * Callback if all iframes inside the context were handled
+ * @callback DOMIterator~forEachIframeEndCallback
+ * @param {number} handled - The number of handled iframes (those who
+ * wheren't filtered)
+ */
+ /**
+ * Iterates over all iframes inside the specified context and calls the
+ * callbacks when they're ready. Filters iframes based on the instance
+ * exclusion selectors
+ * @param {HTMLElement} ctx - The context DOM element
+ * @param {DOMIterator~forEachIframeFilterCallback} filter - Filter callback
+ * @param {DOMIterator~forEachIframeEachCallback} each - Each callback
+ * @param {DOMIterator~forEachIframeEndCallback} [end] - End callback
+ * @access protected
+ */
+ forEachIframe(ctx, filter, each, end = () => {
+ }) {
+ let ifr = ctx.querySelectorAll("iframe"), open = ifr.length, handled = 0;
+ ifr = Array.prototype.slice.call(ifr);
+ const checkEnd = () => {
+ if (--open <= 0) {
+ end(handled);
+ }
+ };
+ if (!open) {
+ checkEnd();
+ }
+ ifr.forEach((ifr2) => {
+ if (DOMIterator.matches(ifr2, this.exclude)) {
+ checkEnd();
+ } else {
+ this.onIframeReady(ifr2, (con) => {
+ if (filter(ifr2)) {
+ handled++;
+ each(con);
+ }
+ checkEnd();
+ }, checkEnd);
+ }
+ });
+ }
+ /**
+ * Creates a NodeIterator on the specified context
+ * @see {@link https://developer.mozilla.org/en/docs/Web/API/NodeIterator}
+ * @param {HTMLElement} ctx - The context DOM element
+ * @param {DOMIterator~whatToShow} whatToShow
+ * @param {DOMIterator~filterCb} filter
+ * @return {NodeIterator}
+ * @access protected
+ */
+ createIterator(ctx, whatToShow, filter) {
+ return document.createNodeIterator(ctx, whatToShow, filter, false);
+ }
+ /**
+ * Creates an instance of DOMIterator in an iframe
+ * @param {HTMLDocument} contents - Iframe document
+ * @return {DOMIterator}
+ * @access protected
+ */
+ createInstanceOnIframe(contents) {
+ return new DOMIterator(contents.querySelector("html"), this.iframes);
+ }
+ /**
+ * Checks if an iframe occurs between two nodes, more specifically if an
+ * iframe occurs before the specified node and after the specified prevNode
+ * @param {HTMLElement} node - The node that should occur after the iframe
+ * @param {HTMLElement} prevNode - The node that should occur before the
+ * iframe
+ * @param {HTMLElement} ifr - The iframe to check against
+ * @return {boolean}
+ * @access protected
+ */
+ compareNodeIframe(node, prevNode, ifr) {
+ const compCurr = node.compareDocumentPosition(ifr), prev = Node.DOCUMENT_POSITION_PRECEDING;
+ if (compCurr & prev) {
+ if (prevNode !== null) {
+ const compPrev = prevNode.compareDocumentPosition(ifr), after = Node.DOCUMENT_POSITION_FOLLOWING;
+ if (compPrev & after) {
+ return true;
+ }
+ } else {
+ return true;
+ }
+ }
+ return false;
+ }
+ /**
+ * @typedef {DOMIterator~getIteratorNodeReturn}
+ * @type {object.}
+ * @property {HTMLElement} prevNode - The previous node or null if there is
+ * no
+ * @property {HTMLElement} node - The current node
+ */
+ /**
+ * Returns the previous and current node of the specified iterator
+ * @param {NodeIterator} itr - The iterator
+ * @return {DOMIterator~getIteratorNodeReturn}
+ * @access protected
+ */
+ getIteratorNode(itr) {
+ const prevNode = itr.previousNode();
+ let node;
+ if (prevNode === null) {
+ node = itr.nextNode();
+ } else {
+ node = itr.nextNode() && itr.nextNode();
+ }
+ return {
+ prevNode,
+ node
+ };
+ }
+ /**
+ * An array containing objects. The object key "val" contains an iframe
+ * DOM element. The object key "handled" contains a boolean indicating if
+ * the iframe was handled already.
+ * It wouldn't be enough to save all open or all already handled iframes.
+ * The information of open iframes is necessary because they may occur after
+ * all other text nodes (and compareNodeIframe would never be true). The
+ * information of already handled iframes is necessary as otherwise they may
+ * be handled multiple times
+ * @typedef DOMIterator~checkIframeFilterIfr
+ * @type {object[]}
+ */
+ /**
+ * Checks if an iframe wasn't handled already and if so, calls
+ * {@link DOMIterator#compareNodeIframe} to check if it should be handled.
+ * Information wheter an iframe was or wasn't handled is given within the
+ * ifr dictionary
+ * @param {HTMLElement} node - The node that should occur after the iframe
+ * @param {HTMLElement} prevNode - The node that should occur before the
+ * iframe
+ * @param {HTMLElement} currIfr - The iframe to check
+ * @param {DOMIterator~checkIframeFilterIfr} ifr - The iframe dictionary.
+ * Will be manipulated (by reference)
+ * @return {boolean} Returns true when it should be handled, otherwise false
+ * @access protected
+ */
+ checkIframeFilter(node, prevNode, currIfr, ifr) {
+ let key = false, handled = false;
+ ifr.forEach((ifrDict, i) => {
+ if (ifrDict.val === currIfr) {
+ key = i;
+ handled = ifrDict.handled;
+ }
+ });
+ if (this.compareNodeIframe(node, prevNode, currIfr)) {
+ if (key === false && !handled) {
+ ifr.push({
+ val: currIfr,
+ handled: true
+ });
+ } else if (key !== false && !handled) {
+ ifr[key].handled = true;
+ }
+ return true;
+ }
+ if (key === false) {
+ ifr.push({
+ val: currIfr,
+ handled: false
+ });
+ }
+ return false;
+ }
+ /**
+ * Creates an iterator on all open iframes in the specified array and calls
+ * the end callback when finished
+ * @param {DOMIterator~checkIframeFilterIfr} ifr
+ * @param {DOMIterator~whatToShow} whatToShow
+ * @param {DOMIterator~forEachNodeCallback} eCb - Each callback
+ * @param {DOMIterator~filterCb} fCb
+ * @access protected
+ */
+ handleOpenIframes(ifr, whatToShow, eCb, fCb) {
+ ifr.forEach((ifrDict) => {
+ if (!ifrDict.handled) {
+ this.getIframeContents(ifrDict.val, (con) => {
+ this.createInstanceOnIframe(con).forEachNode(
+ whatToShow,
+ eCb,
+ fCb
+ );
+ });
+ }
+ });
+ }
+ /**
+ * Iterates through all nodes in the specified context and handles iframe
+ * nodes at the correct position
+ * @param {DOMIterator~whatToShow} whatToShow
+ * @param {HTMLElement} ctx - The context
+ * @param {DOMIterator~forEachNodeCallback} eachCb - Each callback
+ * @param {DOMIterator~filterCb} filterCb - Filter callback
+ * @param {DOMIterator~forEachNodeEndCallback} doneCb - End callback
+ * @access protected
+ */
+ iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) {
+ const itr = this.createIterator(ctx, whatToShow, filterCb);
+ let ifr = [], elements = [], node, prevNode, retrieveNodes = () => {
+ ({
+ prevNode,
+ node
+ } = this.getIteratorNode(itr));
+ return node;
+ };
+ while (retrieveNodes()) {
+ if (this.iframes) {
+ this.forEachIframe(ctx, (currIfr) => {
+ return this.checkIframeFilter(node, prevNode, currIfr, ifr);
+ }, (con) => {
+ this.createInstanceOnIframe(con).forEachNode(
+ whatToShow,
+ (ifrNode) => elements.push(ifrNode),
+ filterCb
+ );
+ });
+ }
+ elements.push(node);
+ }
+ elements.forEach((node2) => {
+ eachCb(node2);
+ });
+ if (this.iframes) {
+ this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb);
+ }
+ doneCb();
+ }
+ /**
+ * Callback for each node
+ * @callback DOMIterator~forEachNodeCallback
+ * @param {HTMLElement} node - The DOM text node element
+ */
+ /**
+ * Callback if all contexts were handled
+ * @callback DOMIterator~forEachNodeEndCallback
+ */
+ /**
+ * Iterates over all contexts and initializes
+ * {@link DOMIterator#iterateThroughNodes iterateThroughNodes} on them
+ * @param {DOMIterator~whatToShow} whatToShow
+ * @param {DOMIterator~forEachNodeCallback} each - Each callback
+ * @param {DOMIterator~filterCb} filter - Filter callback
+ * @param {DOMIterator~forEachNodeEndCallback} done - End callback
+ * @access public
+ */
+ forEachNode(whatToShow, each, filter, done = () => {
+ }) {
+ const contexts = this.getContexts();
+ let open = contexts.length;
+ if (!open) {
+ done();
+ }
+ contexts.forEach((ctx) => {
+ const ready = () => {
+ this.iterateThroughNodes(whatToShow, ctx, each, filter, () => {
+ if (--open <= 0) {
+ done();
+ }
+ });
+ };
+ if (this.iframes) {
+ this.waitForIframes(ctx, ready);
+ } else {
+ ready();
+ }
+ });
+ }
+ /**
+ * Callback to filter nodes. Can return e.g. NodeFilter.FILTER_ACCEPT or
+ * NodeFilter.FILTER_REJECT
+ * @see {@link http://tinyurl.com/zdczmm2}
+ * @callback DOMIterator~filterCb
+ * @param {HTMLElement} node - The node to filter
+ */
+ /**
+ * @typedef DOMIterator~whatToShow
+ * @see {@link http://tinyurl.com/zfqqkx2}
+ * @type {number}
+ */
+}
+let Mark$1 = class Mark {
+ // eslint-disable-line no-unused-vars
+ /**
+ * @param {HTMLElement|HTMLElement[]|NodeList|string} ctx - The context DOM
+ * element, an array of DOM elements, a NodeList or a selector
+ */
+ constructor(ctx) {
+ this.ctx = ctx;
+ this.ie = false;
+ const ua = window.navigator.userAgent;
+ if (ua.indexOf("MSIE") > -1 || ua.indexOf("Trident") > -1) {
+ this.ie = true;
+ }
+ }
+ /**
+ * Options defined by the user. They will be initialized from one of the
+ * public methods. See {@link Mark#mark}, {@link Mark#markRegExp},
+ * {@link Mark#markRanges} and {@link Mark#unmark} for option properties.
+ * @type {object}
+ * @param {object} [val] - An object that will be merged with defaults
+ * @access protected
+ */
+ set opt(val) {
+ this._opt = Object.assign({}, {
+ "element": "",
+ "className": "",
+ "exclude": [],
+ "iframes": false,
+ "iframesTimeout": 5e3,
+ "separateWordSearch": true,
+ "diacritics": true,
+ "synonyms": {},
+ "accuracy": "partially",
+ "acrossElements": false,
+ "caseSensitive": false,
+ "ignoreJoiners": false,
+ "ignoreGroups": 0,
+ "ignorePunctuation": [],
+ "wildcards": "disabled",
+ "each": () => {
+ },
+ "noMatch": () => {
+ },
+ "filter": () => true,
+ "done": () => {
+ },
+ "debug": false,
+ "log": window.console
+ }, val);
+ }
+ get opt() {
+ return this._opt;
+ }
+ /**
+ * An instance of DOMIterator
+ * @type {DOMIterator}
+ * @access protected
+ */
+ get iterator() {
+ return new DOMIterator(
+ this.ctx,
+ this.opt.iframes,
+ this.opt.exclude,
+ this.opt.iframesTimeout
+ );
+ }
+ /**
+ * Logs a message if log is enabled
+ * @param {string} msg - The message to log
+ * @param {string} [level="debug"] - The log level, e.g. warn
+ * error, debug
+ * @access protected
+ */
+ log(msg, level = "debug") {
+ const log = this.opt.log;
+ if (!this.opt.debug) {
+ return;
+ }
+ if (typeof log === "object" && typeof log[level] === "function") {
+ log[level](`mark.js: ${msg}`);
+ }
+ }
+ /**
+ * Escapes a string for usage within a regular expression
+ * @param {string} str - The string to escape
+ * @return {string}
+ * @access protected
+ */
+ escapeStr(str) {
+ return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
+ }
+ /**
+ * Creates a regular expression string to match the specified search
+ * term including synonyms, diacritics and accuracy if defined
+ * @param {string} str - The search term to be used
+ * @return {string}
+ * @access protected
+ */
+ createRegExp(str) {
+ if (this.opt.wildcards !== "disabled") {
+ str = this.setupWildcardsRegExp(str);
+ }
+ str = this.escapeStr(str);
+ if (Object.keys(this.opt.synonyms).length) {
+ str = this.createSynonymsRegExp(str);
+ }
+ if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
+ str = this.setupIgnoreJoinersRegExp(str);
+ }
+ if (this.opt.diacritics) {
+ str = this.createDiacriticsRegExp(str);
+ }
+ str = this.createMergedBlanksRegExp(str);
+ if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
+ str = this.createJoinersRegExp(str);
+ }
+ if (this.opt.wildcards !== "disabled") {
+ str = this.createWildcardsRegExp(str);
+ }
+ str = this.createAccuracyRegExp(str);
+ return str;
+ }
+ /**
+ * Creates a regular expression string to match the defined synonyms
+ * @param {string} str - The search term to be used
+ * @return {string}
+ * @access protected
+ */
+ createSynonymsRegExp(str) {
+ const syn = this.opt.synonyms, sens = this.opt.caseSensitive ? "" : "i", joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? "\0" : "";
+ for (let index in syn) {
+ if (syn.hasOwnProperty(index)) {
+ const value = syn[index], k1 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(index) : this.escapeStr(index), k2 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(value) : this.escapeStr(value);
+ if (k1 !== "" && k2 !== "") {
+ str = str.replace(
+ new RegExp(
+ `(${this.escapeStr(k1)}|${this.escapeStr(k2)})`,
+ `gm${sens}`
+ ),
+ joinerPlaceholder + `(${this.processSynomyms(k1)}|${this.processSynomyms(k2)})` + joinerPlaceholder
+ );
+ }
+ }
+ }
+ return str;
+ }
+ /**
+ * Setup synonyms to work with ignoreJoiners and or ignorePunctuation
+ * @param {string} str - synonym key or value to process
+ * @return {string} - processed synonym string
+ */
+ processSynomyms(str) {
+ if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
+ str = this.setupIgnoreJoinersRegExp(str);
+ }
+ return str;
+ }
+ /**
+ * Sets up the regular expression string to allow later insertion of
+ * wildcard regular expression matches
+ * @param {string} str - The search term to be used
+ * @return {string}
+ * @access protected
+ */
+ setupWildcardsRegExp(str) {
+ str = str.replace(/(?:\\)*\?/g, (val) => {
+ return val.charAt(0) === "\\" ? "?" : "";
+ });
+ return str.replace(/(?:\\)*\*/g, (val) => {
+ return val.charAt(0) === "\\" ? "*" : "";
+ });
+ }
+ /**
+ * Sets up the regular expression string to allow later insertion of
+ * wildcard regular expression matches
+ * @param {string} str - The search term to be used
+ * @return {string}
+ * @access protected
+ */
+ createWildcardsRegExp(str) {
+ let spaces = this.opt.wildcards === "withSpaces";
+ return str.replace(/\u0001/g, spaces ? "[\\S\\s]?" : "\\S?").replace(/\u0002/g, spaces ? "[\\S\\s]*?" : "\\S*");
+ }
+ /**
+ * Sets up the regular expression string to allow later insertion of
+ * designated characters (soft hyphens & zero width characters)
+ * @param {string} str - The search term to be used
+ * @return {string}
+ * @access protected
+ */
+ setupIgnoreJoinersRegExp(str) {
+ return str.replace(/[^(|)\\]/g, (val, indx, original) => {
+ let nextChar = original.charAt(indx + 1);
+ if (/[(|)\\]/.test(nextChar) || nextChar === "") {
+ return val;
+ } else {
+ return val + "\0";
+ }
+ });
+ }
+ /**
+ * Creates a regular expression string to allow ignoring of designated
+ * characters (soft hyphens, zero width characters & punctuation) based on
+ * the specified option values of ignorePunctuation and
+ * ignoreJoiners
+ * @param {string} str - The search term to be used
+ * @return {string}
+ * @access protected
+ */
+ createJoinersRegExp(str) {
+ let joiner = [];
+ const ignorePunctuation = this.opt.ignorePunctuation;
+ if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) {
+ joiner.push(this.escapeStr(ignorePunctuation.join("")));
+ }
+ if (this.opt.ignoreJoiners) {
+ joiner.push("\\u00ad\\u200b\\u200c\\u200d");
+ }
+ return joiner.length ? str.split(/\u0000+/).join(`[${joiner.join("")}]*`) : str;
+ }
+ /**
+ * Creates a regular expression string to match diacritics
+ * @param {string} str - The search term to be used
+ * @return {string}
+ * @access protected
+ */
+ createDiacriticsRegExp(str) {
+ const sens = this.opt.caseSensitive ? "" : "i", dct = this.opt.caseSensitive ? [
+ "aàáảãạăằắẳẵặâầấẩẫậäåāą",
+ "AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ",
+ "cçćč",
+ "CÇĆČ",
+ "dđď",
+ "DĐĎ",
+ "eèéẻẽẹêềếểễệëěēę",
+ "EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ",
+ "iìíỉĩịîïī",
+ "IÌÍỈĨỊÎÏĪ",
+ "lł",
+ "LŁ",
+ "nñňń",
+ "NÑŇŃ",
+ "oòóỏõọôồốổỗộơởỡớờợöøō",
+ "OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ",
+ "rř",
+ "RŘ",
+ "sšśșş",
+ "SŠŚȘŞ",
+ "tťțţ",
+ "TŤȚŢ",
+ "uùúủũụưừứửữựûüůū",
+ "UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ",
+ "yýỳỷỹỵÿ",
+ "YÝỲỶỸỴŸ",
+ "zžżź",
+ "ZŽŻŹ"
+ ] : [
+ "aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ",
+ "cçćčCÇĆČ",
+ "dđďDĐĎ",
+ "eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ",
+ "iìíỉĩịîïīIÌÍỈĨỊÎÏĪ",
+ "lłLŁ",
+ "nñňńNÑŇŃ",
+ "oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ",
+ "rřRŘ",
+ "sšśșşSŠŚȘŞ",
+ "tťțţTŤȚŢ",
+ "uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ",
+ "yýỳỷỹỵÿYÝỲỶỸỴŸ",
+ "zžżźZŽŻŹ"
+ ];
+ let handled = [];
+ str.split("").forEach((ch) => {
+ dct.every((dct2) => {
+ if (dct2.indexOf(ch) !== -1) {
+ if (handled.indexOf(dct2) > -1) {
+ return false;
+ }
+ str = str.replace(
+ new RegExp(`[${dct2}]`, `gm${sens}`),
+ `[${dct2}]`
+ );
+ handled.push(dct2);
+ }
+ return true;
+ });
+ });
+ return str;
+ }
+ /**
+ * Creates a regular expression string that merges whitespace characters
+ * including subsequent ones into a single pattern, one or multiple
+ * whitespaces
+ * @param {string} str - The search term to be used
+ * @return {string}
+ * @access protected
+ */
+ createMergedBlanksRegExp(str) {
+ return str.replace(/[\s]+/gmi, "[\\s]+");
+ }
+ /**
+ * Creates a regular expression string to match the specified string with
+ * the defined accuracy. As in the regular expression of "exactly" can be
+ * a group containing a blank at the beginning, all regular expressions will
+ * be created with two groups. The first group can be ignored (may contain
+ * the said blank), the second contains the actual match
+ * @param {string} str - The searm term to be used
+ * @return {str}
+ * @access protected
+ */
+ createAccuracyRegExp(str) {
+ const chars = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";
+ let acc = this.opt.accuracy, val = typeof acc === "string" ? acc : acc.value, ls = typeof acc === "string" ? [] : acc.limiters, lsJoin = "";
+ ls.forEach((limiter) => {
+ lsJoin += `|${this.escapeStr(limiter)}`;
+ });
+ switch (val) {
+ case "partially":
+ default:
+ return `()(${str})`;
+ case "complementary":
+ lsJoin = "\\s" + (lsJoin ? lsJoin : this.escapeStr(chars));
+ return `()([^${lsJoin}]*${str}[^${lsJoin}]*)`;
+ case "exactly":
+ return `(^|\\s${lsJoin})(${str})(?=$|\\s${lsJoin})`;
+ }
+ }
+ /**
+ * @typedef Mark~separatedKeywords
+ * @type {object.}
+ * @property {array.} keywords - The list of keywords
+ * @property {number} length - The length
+ */
+ /**
+ * Returns a list of keywords dependent on whether separate word search
+ * was defined. Also it filters empty keywords
+ * @param {array} sv - The array of keywords
+ * @return {Mark~separatedKeywords}
+ * @access protected
+ */
+ getSeparatedKeywords(sv) {
+ let stack = [];
+ sv.forEach((kw) => {
+ if (!this.opt.separateWordSearch) {
+ if (kw.trim() && stack.indexOf(kw) === -1) {
+ stack.push(kw);
+ }
+ } else {
+ kw.split(" ").forEach((kwSplitted) => {
+ if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) {
+ stack.push(kwSplitted);
+ }
+ });
+ }
+ });
+ return {
+ // sort because of https://git.io/v6USg
+ "keywords": stack.sort((a, b) => {
+ return b.length - a.length;
+ }),
+ "length": stack.length
+ };
+ }
+ /**
+ * Check if a value is a number
+ * @param {number|string} value - the value to check;
+ * numeric strings allowed
+ * @return {boolean}
+ * @access protected
+ */
+ isNumeric(value) {
+ return Number(parseFloat(value)) == value;
+ }
+ /**
+ * @typedef Mark~rangeObject
+ * @type {object}
+ * @property {number} start - The start position within the composite value
+ * @property {number} length - The length of the string to mark within the
+ * composite value.
+ */
+ /**
+ * @typedef Mark~setOfRanges
+ * @type {object[]}
+ * @property {Mark~rangeObject}
+ */
+ /**
+ * Returns a processed list of integer offset indexes that do not overlap
+ * each other, and remove any string values or additional elements
+ * @param {Mark~setOfRanges} array - unprocessed raw array
+ * @return {Mark~setOfRanges} - processed array with any invalid entries
+ * removed
+ * @throws Will throw an error if an array of objects is not passed
+ * @access protected
+ */
+ checkRanges(array) {
+ if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== "[object Object]") {
+ this.log("markRanges() will only accept an array of objects");
+ this.opt.noMatch(array);
+ return [];
+ }
+ const stack = [];
+ let last2 = 0;
+ array.sort((a, b) => {
+ return a.start - b.start;
+ }).forEach((item) => {
+ let { start, end, valid } = this.callNoMatchOnInvalidRanges(item, last2);
+ if (valid) {
+ item.start = start;
+ item.length = end - start;
+ stack.push(item);
+ last2 = end;
+ }
+ });
+ return stack;
+ }
+ /**
+ * @typedef Mark~validObject
+ * @type {object}
+ * @property {number} start - The start position within the composite value
+ * @property {number} end - The calculated end position within the composite
+ * value.
+ * @property {boolean} valid - boolean value indicating that the start and
+ * calculated end range is valid
+ */
+ /**
+ * Initial validation of ranges for markRanges. Preliminary checks are done
+ * to ensure the start and length values exist and are not zero or non-
+ * numeric
+ * @param {Mark~rangeObject} range - the current range object
+ * @param {number} last - last index of range
+ * @return {Mark~validObject}
+ * @access protected
+ */
+ callNoMatchOnInvalidRanges(range, last2) {
+ let start, end, valid = false;
+ if (range && typeof range.start !== "undefined") {
+ start = parseInt(range.start, 10);
+ end = start + parseInt(range.length, 10);
+ if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last2 > 0 && end - start > 0) {
+ valid = true;
+ } else {
+ this.log(
+ `Ignoring invalid or overlapping range: ${JSON.stringify(range)}`
+ );
+ this.opt.noMatch(range);
+ }
+ } else {
+ this.log(`Ignoring invalid range: ${JSON.stringify(range)}`);
+ this.opt.noMatch(range);
+ }
+ return {
+ start,
+ end,
+ valid
+ };
+ }
+ /**
+ * Check valid range for markRanges. Check ranges with access to the context
+ * string. Range values are double checked, lengths that extend the mark
+ * beyond the string length are limitied and ranges containing only
+ * whitespace are ignored
+ * @param {Mark~rangeObject} range - the current range object
+ * @param {number} originalLength - original length of the context string
+ * @param {string} string - current content string
+ * @return {Mark~validObject}
+ * @access protected
+ */
+ checkWhitespaceRanges(range, originalLength, string) {
+ let end, valid = true, max = string.length, offset = originalLength - max, start = parseInt(range.start, 10) - offset;
+ start = start > max ? max : start;
+ end = start + parseInt(range.length, 10);
+ if (end > max) {
+ end = max;
+ this.log(`End range automatically set to the max value of ${max}`);
+ }
+ if (start < 0 || end - start < 0 || start > max || end > max) {
+ valid = false;
+ this.log(`Invalid range: ${JSON.stringify(range)}`);
+ this.opt.noMatch(range);
+ } else if (string.substring(start, end).replace(/\s+/g, "") === "") {
+ valid = false;
+ this.log("Skipping whitespace only range: " + JSON.stringify(range));
+ this.opt.noMatch(range);
+ }
+ return {
+ start,
+ end,
+ valid
+ };
+ }
+ /**
+ * @typedef Mark~getTextNodesDict
+ * @type {object.}
+ * @property {string} value - The composite value of all text nodes
+ * @property {object[]} nodes - An array of objects
+ * @property {number} nodes.start - The start position within the composite
+ * value
+ * @property {number} nodes.end - The end position within the composite
+ * value
+ * @property {HTMLElement} nodes.node - The DOM text node element
+ */
+ /**
+ * Callback
+ * @callback Mark~getTextNodesCallback
+ * @param {Mark~getTextNodesDict}
+ */
+ /**
+ * Calls the callback with an object containing all text nodes (including
+ * iframe text nodes) with start and end positions and the composite value
+ * of them (string)
+ * @param {Mark~getTextNodesCallback} cb - Callback
+ * @access protected
+ */
+ getTextNodes(cb) {
+ let val = "", nodes = [];
+ this.iterator.forEachNode(NodeFilter.SHOW_TEXT, (node) => {
+ nodes.push({
+ start: val.length,
+ end: (val += node.textContent).length,
+ node
+ });
+ }, (node) => {
+ if (this.matchesExclude(node.parentNode)) {
+ return NodeFilter.FILTER_REJECT;
+ } else {
+ return NodeFilter.FILTER_ACCEPT;
+ }
+ }, () => {
+ cb({
+ value: val,
+ nodes
+ });
+ });
+ }
+ /**
+ * Checks if an element matches any of the specified exclude selectors. Also
+ * it checks for elements in which no marks should be performed (e.g.
+ * script and style tags) and optionally already marked elements
+ * @param {HTMLElement} el - The element to check
+ * @return {boolean}
+ * @access protected
+ */
+ matchesExclude(el) {
+ return DOMIterator.matches(el, this.opt.exclude.concat([
+ // ignores the elements itself, not their childrens (selector *)
+ "script",
+ "style",
+ "title",
+ "head",
+ "html"
+ ]));
+ }
+ /**
+ * Wraps the instance element and class around matches that fit the start
+ * and end positions within the node
+ * @param {HTMLElement} node - The DOM text node
+ * @param {number} start - The position where to start wrapping
+ * @param {number} end - The position where to end wrapping
+ * @return {HTMLElement} Returns the splitted text node that will appear
+ * after the wrapped text node
+ * @access protected
+ */
+ wrapRangeInTextNode(node, start, end) {
+ const hEl = !this.opt.element ? "mark" : this.opt.element, startNode = node.splitText(start), ret = startNode.splitText(end - start);
+ let repl = document.createElement(hEl);
+ repl.setAttribute("data-markjs", "true");
+ if (this.opt.className) {
+ repl.setAttribute("class", this.opt.className);
+ }
+ repl.textContent = startNode.textContent;
+ startNode.parentNode.replaceChild(repl, startNode);
+ return ret;
+ }
+ /**
+ * @typedef Mark~wrapRangeInMappedTextNodeDict
+ * @type {object.}
+ * @property {string} value - The composite value of all text nodes
+ * @property {object[]} nodes - An array of objects
+ * @property {number} nodes.start - The start position within the composite
+ * value
+ * @property {number} nodes.end - The end position within the composite
+ * value
+ * @property {HTMLElement} nodes.node - The DOM text node element
+ */
+ /**
+ * Each callback
+ * @callback Mark~wrapMatchesEachCallback
+ * @param {HTMLElement} node - The wrapped DOM element
+ * @param {number} lastIndex - The last matching position within the
+ * composite value of text nodes
+ */
+ /**
+ * Filter callback
+ * @callback Mark~wrapMatchesFilterCallback
+ * @param {HTMLElement} node - The matching text node DOM element
+ */
+ /**
+ * Determines matches by start and end positions using the text node
+ * dictionary even across text nodes and calls
+ * {@link Mark#wrapRangeInTextNode} to wrap them
+ * @param {Mark~wrapRangeInMappedTextNodeDict} dict - The dictionary
+ * @param {number} start - The start position of the match
+ * @param {number} end - The end position of the match
+ * @param {Mark~wrapMatchesFilterCallback} filterCb - Filter callback
+ * @param {Mark~wrapMatchesEachCallback} eachCb - Each callback
+ * @access protected
+ */
+ wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) {
+ dict.nodes.every((n, i) => {
+ const sibl = dict.nodes[i + 1];
+ if (typeof sibl === "undefined" || sibl.start > start) {
+ if (!filterCb(n.node)) {
+ return false;
+ }
+ const s = start - n.start, e = (end > n.end ? n.end : end) - n.start, startStr = dict.value.substr(0, n.start), endStr = dict.value.substr(e + n.start);
+ n.node = this.wrapRangeInTextNode(n.node, s, e);
+ dict.value = startStr + endStr;
+ dict.nodes.forEach((k, j) => {
+ if (j >= i) {
+ if (dict.nodes[j].start > 0 && j !== i) {
+ dict.nodes[j].start -= e;
+ }
+ dict.nodes[j].end -= e;
+ }
+ });
+ end -= e;
+ eachCb(n.node.previousSibling, n.start);
+ if (end > n.end) {
+ start = n.end;
+ } else {
+ return false;
+ }
+ }
+ return true;
+ });
+ }
+ /**
+ * Filter callback before each wrapping
+ * @callback Mark~wrapMatchesFilterCallback
+ * @param {string} match - The matching string
+ * @param {HTMLElement} node - The text node where the match occurs
+ */
+ /**
+ * Callback for each wrapped element
+ * @callback Mark~wrapMatchesEachCallback
+ * @param {HTMLElement} element - The marked DOM element
+ */
+ /**
+ * Callback on end
+ * @callback Mark~wrapMatchesEndCallback
+ */
+ /**
+ * Wraps the instance element and class around matches within single HTML
+ * elements in all contexts
+ * @param {RegExp} regex - The regular expression to be searched for
+ * @param {number} ignoreGroups - A number indicating the amount of RegExp
+ * matching groups to ignore
+ * @param {Mark~wrapMatchesFilterCallback} filterCb
+ * @param {Mark~wrapMatchesEachCallback} eachCb
+ * @param {Mark~wrapMatchesEndCallback} endCb
+ * @access protected
+ */
+ wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) {
+ const matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
+ this.getTextNodes((dict) => {
+ dict.nodes.forEach((node) => {
+ node = node.node;
+ let match;
+ while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== "") {
+ if (!filterCb(match[matchIdx], node)) {
+ continue;
+ }
+ let pos = match.index;
+ if (matchIdx !== 0) {
+ for (let i = 1; i < matchIdx; i++) {
+ pos += match[i].length;
+ }
+ }
+ node = this.wrapRangeInTextNode(
+ node,
+ pos,
+ pos + match[matchIdx].length
+ );
+ eachCb(node.previousSibling);
+ regex.lastIndex = 0;
+ }
+ });
+ endCb();
+ });
+ }
+ /**
+ * Callback for each wrapped element
+ * @callback Mark~wrapMatchesAcrossElementsEachCallback
+ * @param {HTMLElement} element - The marked DOM element
+ */
+ /**
+ * Filter callback before each wrapping
+ * @callback Mark~wrapMatchesAcrossElementsFilterCallback
+ * @param {string} match - The matching string
+ * @param {HTMLElement} node - The text node where the match occurs
+ */
+ /**
+ * Callback on end
+ * @callback Mark~wrapMatchesAcrossElementsEndCallback
+ */
+ /**
+ * Wraps the instance element and class around matches across all HTML
+ * elements in all contexts
+ * @param {RegExp} regex - The regular expression to be searched for
+ * @param {number} ignoreGroups - A number indicating the amount of RegExp
+ * matching groups to ignore
+ * @param {Mark~wrapMatchesAcrossElementsFilterCallback} filterCb
+ * @param {Mark~wrapMatchesAcrossElementsEachCallback} eachCb
+ * @param {Mark~wrapMatchesAcrossElementsEndCallback} endCb
+ * @access protected
+ */
+ wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) {
+ const matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
+ this.getTextNodes((dict) => {
+ let match;
+ while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== "") {
+ let start = match.index;
+ if (matchIdx !== 0) {
+ for (let i = 1; i < matchIdx; i++) {
+ start += match[i].length;
+ }
+ }
+ const end = start + match[matchIdx].length;
+ this.wrapRangeInMappedTextNode(dict, start, end, (node) => {
+ return filterCb(match[matchIdx], node);
+ }, (node, lastIndex) => {
+ regex.lastIndex = lastIndex;
+ eachCb(node);
+ });
+ }
+ endCb();
+ });
+ }
+ /**
+ * Callback for each wrapped element
+ * @callback Mark~wrapRangeFromIndexEachCallback
+ * @param {HTMLElement} element - The marked DOM element
+ * @param {Mark~rangeObject} range - the current range object; provided
+ * start and length values will be numeric integers modified from the
+ * provided original ranges.
+ */
+ /**
+ * Filter callback before each wrapping
+ * @callback Mark~wrapRangeFromIndexFilterCallback
+ * @param {HTMLElement} node - The text node which includes the range
+ * @param {Mark~rangeObject} range - the current range object
+ * @param {string} match - string extracted from the matching range
+ * @param {number} counter - A counter indicating the number of all marks
+ */
+ /**
+ * Callback on end
+ * @callback Mark~wrapRangeFromIndexEndCallback
+ */
+ /**
+ * Wraps the indicated ranges across all HTML elements in all contexts
+ * @param {Mark~setOfRanges} ranges
+ * @param {Mark~wrapRangeFromIndexFilterCallback} filterCb
+ * @param {Mark~wrapRangeFromIndexEachCallback} eachCb
+ * @param {Mark~wrapRangeFromIndexEndCallback} endCb
+ * @access protected
+ */
+ wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) {
+ this.getTextNodes((dict) => {
+ const originalLength = dict.value.length;
+ ranges.forEach((range, counter) => {
+ let { start, end, valid } = this.checkWhitespaceRanges(
+ range,
+ originalLength,
+ dict.value
+ );
+ if (valid) {
+ this.wrapRangeInMappedTextNode(dict, start, end, (node) => {
+ return filterCb(
+ node,
+ range,
+ dict.value.substring(start, end),
+ counter
+ );
+ }, (node) => {
+ eachCb(node, range);
+ });
+ }
+ });
+ endCb();
+ });
+ }
+ /**
+ * Unwraps the specified DOM node with its content (text nodes or HTML)
+ * without destroying possibly present events (using innerHTML) and
+ * normalizes the parent at the end (merge splitted text nodes)
+ * @param {HTMLElement} node - The DOM node to unwrap
+ * @access protected
+ */
+ unwrapMatches(node) {
+ const parent = node.parentNode;
+ let docFrag = document.createDocumentFragment();
+ while (node.firstChild) {
+ docFrag.appendChild(node.removeChild(node.firstChild));
+ }
+ parent.replaceChild(docFrag, node);
+ if (!this.ie) {
+ parent.normalize();
+ } else {
+ this.normalizeTextNode(parent);
+ }
+ }
+ /**
+ * Normalizes text nodes. It's a workaround for the native normalize method
+ * that has a bug in IE (see attached link). Should only be used in IE
+ * browsers as it's slower than the native method.
+ * @see {@link http://tinyurl.com/z5asa8c}
+ * @param {HTMLElement} node - The DOM node to normalize
+ * @access protected
+ */
+ normalizeTextNode(node) {
+ if (!node) {
+ return;
+ }
+ if (node.nodeType === 3) {
+ while (node.nextSibling && node.nextSibling.nodeType === 3) {
+ node.nodeValue += node.nextSibling.nodeValue;
+ node.parentNode.removeChild(node.nextSibling);
+ }
+ } else {
+ this.normalizeTextNode(node.firstChild);
+ }
+ this.normalizeTextNode(node.nextSibling);
+ }
+ /**
+ * Callback when finished
+ * @callback Mark~commonDoneCallback
+ * @param {number} totalMatches - The number of marked elements
+ */
+ /**
+ * @typedef Mark~commonOptions
+ * @type {object.}
+ * @property {string} [element="mark"] - HTML element tag name
+ * @property {string} [className] - An optional class name
+ * @property {string[]} [exclude] - An array with exclusion selectors.
+ * Elements matching those selectors will be ignored
+ * @property {boolean} [iframes=false] - Whether to search inside iframes
+ * @property {Mark~commonDoneCallback} [done]
+ * @property {boolean} [debug=false] - Wheter to log messages
+ * @property {object} [log=window.console] - Where to log messages (only if
+ * debug is true)
+ */
+ /**
+ * Callback for each marked element
+ * @callback Mark~markRegExpEachCallback
+ * @param {HTMLElement} element - The marked DOM element
+ */
+ /**
+ * Callback if there were no matches
+ * @callback Mark~markRegExpNoMatchCallback
+ * @param {RegExp} regexp - The regular expression
+ */
+ /**
+ * Callback to filter matches
+ * @callback Mark~markRegExpFilterCallback
+ * @param {HTMLElement} textNode - The text node which includes the match
+ * @param {string} match - The matching string for the RegExp
+ * @param {number} counter - A counter indicating the number of all marks
+ */
+ /**
+ * These options also include the common options from
+ * {@link Mark~commonOptions}
+ * @typedef Mark~markRegExpOptions
+ * @type {object.}
+ * @property {Mark~markRegExpEachCallback} [each]
+ * @property {Mark~markRegExpNoMatchCallback} [noMatch]
+ * @property {Mark~markRegExpFilterCallback} [filter]
+ */
+ /**
+ * Marks a custom regular expression
+ * @param {RegExp} regexp - The regular expression
+ * @param {Mark~markRegExpOptions} [opt] - Optional options object
+ * @access public
+ */
+ markRegExp(regexp, opt) {
+ this.opt = opt;
+ this.log(`Searching with expression "${regexp}"`);
+ let totalMatches = 0, fn = "wrapMatches";
+ const eachCb = (element) => {
+ totalMatches++;
+ this.opt.each(element);
+ };
+ if (this.opt.acrossElements) {
+ fn = "wrapMatchesAcrossElements";
+ }
+ this[fn](regexp, this.opt.ignoreGroups, (match, node) => {
+ return this.opt.filter(node, match, totalMatches);
+ }, eachCb, () => {
+ if (totalMatches === 0) {
+ this.opt.noMatch(regexp);
+ }
+ this.opt.done(totalMatches);
+ });
+ }
+ /**
+ * Callback for each marked element
+ * @callback Mark~markEachCallback
+ * @param {HTMLElement} element - The marked DOM element
+ */
+ /**
+ * Callback if there were no matches
+ * @callback Mark~markNoMatchCallback
+ * @param {RegExp} term - The search term that was not found
+ */
+ /**
+ * Callback to filter matches
+ * @callback Mark~markFilterCallback
+ * @param {HTMLElement} textNode - The text node which includes the match
+ * @param {string} match - The matching term
+ * @param {number} totalCounter - A counter indicating the number of all
+ * marks
+ * @param {number} termCounter - A counter indicating the number of marks
+ * for the specific match
+ */
+ /**
+ * @typedef Mark~markAccuracyObject
+ * @type {object.}
+ * @property {string} value - A accuracy string value
+ * @property {string[]} limiters - A custom array of limiters. For example
+ * ["-", ","]
+ */
+ /**
+ * @typedef Mark~markAccuracySetting
+ * @type {string}
+ * @property {"partially"|"complementary"|"exactly"|Mark~markAccuracyObject}
+ * [accuracy="partially"] - Either one of the following string values:
+ *
+ *
partially: When searching for "lor" only "lor" inside
+ * "lorem" will be marked
+ *
complementary: When searching for "lor" the whole word
+ * "lorem" will be marked
+ *
exactly: When searching for "lor" only those exact words
+ * will be marked. In this example nothing inside "lorem". This value
+ * is equivalent to the previous option wordBoundary
+ *
+ * Or an object containing two properties:
+ *
+ *
value: One of the above named string values
+ *
limiters: A custom array of string limiters for accuracy
+ * "exactly" or "complementary"
+ *
+ */
+ /**
+ * @typedef Mark~markWildcardsSetting
+ * @type {string}
+ * @property {"disabled"|"enabled"|"withSpaces"}
+ * [wildcards="disabled"] - Set to any of the following string values:
+ *
+ *
disabled: Disable wildcard usage
+ *
enabled: When searching for "lor?m", the "?" will match zero
+ * or one non-space character (e.g. "lorm", "loram", "lor3m", etc). When
+ * searching for "lor*m", the "*" will match zero or more non-space
+ * characters (e.g. "lorm", "loram", "lor123m", etc).
+ *
withSpaces: When searching for "lor?m", the "?" will
+ * match zero or one space or non-space character (e.g. "lor m", "loram",
+ * etc). When searching for "lor*m", the "*" will match zero or more space
+ * or non-space characters (e.g. "lorm", "lore et dolor ipsum", "lor: m",
+ * etc).
+ *
+ */
+ /**
+ * @typedef Mark~markIgnorePunctuationSetting
+ * @type {string[]}
+ * @property {string} The strings in this setting will contain punctuation
+ * marks that will be ignored:
+ *
+ *
These punctuation marks can be between any characters, e.g. setting
+ * this option to ["'"] would match "Worlds", "World's" and
+ * "Wo'rlds"
+ *
One or more apostrophes between the letters would still produce a
+ * match (e.g. "W'o''r'l'd's").
+ *
A typical setting for this option could be as follows:
+ *
This
+ * setting includes common punctuation as well as a minus, en-dash,
+ * em-dash and figure-dash
+ * ({@link https://en.wikipedia.org/wiki/Dash#Figure_dash ref}), as well
+ * as an underscore.
The QMK CLI (command line interface) makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more.
QMK requires Python 3.7 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in requirements.txt. These are installed automatically when you install the QMK CLI.
If you have installed Homebrew you can tap and install QMK:
brew install qmk/qmk/qmk\nexport QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`\nqmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
If your system is not listed above you can install QMK manually. First ensure that you have Python 3.7 (or later) installed and have installed pip. Then install QMK with this command:
python3 -m pip install qmk\nexport QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`\nqmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
We are looking for people to create and maintain a qmk package for more operating systems. If you would like to create a package for your OS please follow these guidelines:
Follow best practices for your OS when they conflict with these guidelines
Document why in a comment when you do deviate
Install using a virtualenv
Instruct the user to set the environment variable QMK_HOME to have the firmware source checked out somewhere other than ~/qmk_firmware.
', 14);
+const _hoisted_15 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_15);
+}
+const cli = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ cli as default
+};
diff --git a/assets/cli.md.BmxhRPcP.lean.js b/assets/cli.md.BmxhRPcP.lean.js
new file mode 100644
index 0000000..eb7d272
--- /dev/null
+++ b/assets/cli.md.BmxhRPcP.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK CLI","description":"","frontmatter":{},"headers":[],"relativePath":"cli.md","filePath":"cli.md"}');
+const _sfc_main = { name: "cli.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 14);
+const _hoisted_15 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_15);
+}
+const cli = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ cli as default
+};
diff --git a/assets/cli_commands.md.bKM86b65.js b/assets/cli_commands.md.bKM86b65.js
new file mode 100644
index 0000000..b24e064
--- /dev/null
+++ b/assets/cli_commands.md.bKM86b65.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK CLI Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli_commands.md","filePath":"cli_commands.md"}');
+const _sfc_main = { name: "cli_commands.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This command allows you to compile firmware from any directory. You can compile JSON exports from https://config.qmk.fm, compile keymaps in the repo, or compile the keyboard in the current working directory.
This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.
Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with --keymap <keymap_name>
qmk compile
Usage for building all keyboards that support a specific keymap:
qmk compile -kb all -km <keymap_name>
Example:
$ qmk config compile.keymap=default\n$ cd ~/qmk_firmware/keyboards/planck/rev6\n$ qmk compile\nΨ Compiling keymap with make planck/rev6:default\n...
or with optional keymap argument
$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4\n$ qmk compile -km 66_iso\nΨ Compiling keymap with make clueboard/66/rev4:66_iso\n...
or in keymap directory
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak\n$ qmk compile\nΨ Compiling keymap with make gh60/satan:colemak\n...
Usage in Layout Directory:
Must be under qmk_firmware/layouts/, and in a keymap folder.
qmk compile -kb <keyboard_name>
Example:
$ cd ~/qmk_firmware/layouts/community/60_ansi/mechmerlin-ansi\n$ qmk compile -kb dz60\nΨ Compiling keymap with make dz60:mechmerlin-ansi\n...
Parallel Compilation:
It is possible to speed up compilation by adding the -j/--parallel flag.
qmk compile -j <num_jobs> -kb <keyboard_name>
The num_jobs argument determines the maximum number of jobs that can be used. Setting it to zero will enable parallel compilation without limiting the maximum number of jobs.
This command is similar to qmk compile, but can also target a bootloader. The bootloader is optional, and is set to :flash by default. To specify a different bootloader, use -bl <bootloader>. Visit the Flashing Firmware guide for more details of the available bootloaders.
This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.
This command can also flash binary firmware files (hex or bin) such as the ones produced by Configurator.
This command allows for searching through keyboard/keymap targets, filtering by specific criteria. info.json and rules.mk files contribute to the search data, as well as keymap configurations, and the results can be filtered using "dotty" syntax matching the overall info.json file format.
For example, one could search for all keyboards using STM32F411:
qmk find -f 'processor=STM32F411'
...and one can further constrain the list to keyboards using STM32F411 as well as rgb_matrix support:
qmk find [-h] [-km KEYMAP] [-p PRINT] [-f FILTER]\n\noptions:\n -km KEYMAP, --keymap KEYMAP\n The keymap name to build. Default is 'default'.\n -p PRINT, --print PRINT\n For each matched target, print the value of the supplied info.json key. May be passed multiple times.\n -f FILTER, --filter FILTER\n Filter the list of keyboards based on their info.json data. Accepts the formats key=value, function(key), or function(key,value), eg. 'features.rgblight=true'. Valid functions are 'absent', 'contains', 'exists' and 'length'. May be passed multiple times; all filters need to match. Value may include wildcards such as '*' and '?'.
This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with CONSOLE_ENABLE=yes.
Formats a JSON file in a (mostly) human-friendly way. Will usually correctly detect the format of the JSON (info.json or keymap.json) but you can override this with --format if necessary.
Displays information about keyboards and keymaps in QMK. You can use this to get information about a keyboard, show the layouts, display the underlying key matrix, or to pretty-print JSON keymaps.
Usage:
qmk info [-f FORMAT] [-m] [-l] [-km KEYMAP] [-kb KEYBOARD]
This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.
This command creates a new keyboard based on available templates.
Any arguments that are not provided will prompt for input. If -u is not passed and user.name is set in .gitconfig, it will be used as the default username in the prompt.
This command an generate a keymap.json from a VIA keymap backup. Both the layers and the macros are converted, enabling users to easily move away from a VIA-enabled firmware without writing any code or reimplementing their keymaps in QMK Configurator.
This command imports a data-driven info.json keyboard into the repo.
Usage:
usage: qmk import-keyboard [-h] filename
Example:
$ qmk import-keyboard ~/Downloads/forever60.json\nΨ Importing forever60.json.\n\nΨ Imported a new keyboard named forever60.\nΨ To start working on things, `cd` into keyboards/forever60,\nΨ or open the directory in your preferred text editor.\nΨ And build with qmk compile -kb forever60 -km default.
This command imports a data-driven keymap.json keymap into the repo.
Usage:
usage: qmk import-keymap [-h] filename
Example:
qmk import-keymap ~/Downloads/asdf2.json\nΨ Importing asdf2.json.\n\nΨ Imported a new keymap named asdf2.\nΨ To start working on things, `cd` into keyboards/takashicompany/dogtag/keymaps/asdf2,\nΨ or open the directory in your preferred text editor.\nΨ And build with qmk compile -kb takashicompany/dogtag -km asdf2.
$ qmk import-kbfirmware ~/Downloads/gh62.json\nΨ Importing gh62.json.\n\n⚠ Support here is basic - Consider using 'qmk new-keyboard' instead\nΨ Imported a new keyboard named gh62.\nΨ To start working on things, `cd` into keyboards/gh62,\nΨ or open the directory in your preferred text editor.\nΨ And build with qmk compile -kb gh62 -km default.
This command adds a keyboard/keymap to the External Userspace build targets.
Usage:
qmk userspace-add [-h] [-km KEYMAP] [-kb KEYBOARD] [builds ...]\n\npositional arguments:\n builds List of builds in form <keyboard>:<keymap>, or path to a keymap JSON file.\n\noptions:\n -h, --help show this help message and exit\n -km KEYMAP, --keymap KEYMAP\n The keymap to build a firmware for. Ignored when a configurator export is supplied.\n -kb KEYBOARD, --keyboard KEYBOARD\n The keyboard to build a firmware for. Ignored when a configurator export is supplied.
Example:
$ qmk userspace-add -kb planck/rev6 -km default\nΨ Added planck/rev6:default to userspace build targets\nΨ Saved userspace file to /home/you/qmk_userspace/qmk.json
This command removes a keyboard/keymap from the External Userspace build targets.
Usage:
qmk userspace-remove [-h] [-km KEYMAP] [-kb KEYBOARD] [builds ...]\n\npositional arguments:\n builds List of builds in form <keyboard>:<keymap>, or path to a keymap JSON file.\n\noptions:\n -h, --help show this help message and exit\n -km KEYMAP, --keymap KEYMAP\n The keymap to build a firmware for. Ignored when a configurator export is supplied.\n -kb KEYBOARD, --keyboard KEYBOARD\n The keyboard to build a firmware for. Ignored when a configurator export is supplied.
Example:
$ qmk userspace-remove -kb planck/rev6 -km default\nΨ Removed planck/rev6:default from userspace build targets\nΨ Saved userspace file to /home/you/qmk_userspace/qmk.json
This command lists the External Userspace build targets.
Usage:
qmk userspace-list [-h] [-e]\n\noptions:\n -h, --help show this help message and exit\n -e, --expand Expands any use of `all` for either keyboard or keymap.
Example:
$ qmk userspace-list\nΨ Current userspace build targets:\nΨ Keyboard: planck/rev6, keymap: you\nΨ Keyboard: clueboard/66/rev3, keymap: you
This command compiles all the External Userspace build targets.
Usage:
qmk userspace-compile [-h] [-e ENV] [-n] [-c] [-j PARALLEL] [-t]\n\noptions:\n -h, --help show this help message and exit\n -e ENV, --env ENV Set a variable to be passed to make. May be passed multiple times.\n -n, --dry-run Don't actually build, just show the commands to be run.\n -c, --clean Remove object files before compiling.\n -j PARALLEL, --parallel PARALLEL\n Set the number of parallel make jobs; 0 means unlimited.\n -t, --no-temp Remove temporary files during build.
This command formats text files to have proper line endings.
Every text file in the repository needs to have Unix (LF) line ending. If you are working on Windows, you must ensure that line endings are corrected in order to get your PRs merged.
Run it with no arguments to format all core code that has been changed. Default checks origin/master with git diff, branch can be changed using -b <branch_name>
Run it with -a to format all core code, or pass filenames on the command line to run it on specific files.
Usage for specified files:
qmk format-c [file1] [file2] [...] [fileN]
Usage for all core files:
qmk format-c -a
Usage for only changed files against origin/master:
Does your IDE/editor use a language server but doesn't quite find all the necessary include files? Do you hate red squigglies? Do you wish your editor could figure out #include QMK_KEYBOARD_H? You might need a compilation database! The qmk tool can build this for you.
This command needs to know which keyboard and keymap to build. It uses the same configuration options as the qmk compile command: arguments, current directory, and config files.
Example:
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak\n$ qmk generate-compilation-database\nΨ Making clean\nΨ Gathering build instructions from make -n gh60/satan:colemak\nΨ Found 50 compile commands\nΨ Writing build database to /Users/you/src/qmk_firmware/compile_commands.json
Now open your dev environment and live a squiggly-free life.
This command allows you to generate QMK documentation locally. It can be uses for general browsing or improving the docs. Use the -s/--serve flag to also serve the static site once built. Default port is 4173.
This command requires node and yarn to be installed as prerequisites, and requires the operating system to support symlinks.
Usage:
usage: qmk generate-docs [-h] [-s]\n\noptions:\n -h, --help show this help message and exit\n -s, --serve Serves the generated docs once built.
This command generates a lookup table (LUT) header file for the RGB Lighting feature's breathing animation. Place this file in your keyboard or keymap directory as rgblight_breathe_table.h to override the default LUT in quantum/rgblight/.
This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite info.json if it is already present. Use the -f or --force flag to overwrite.
Usage:
qmk kle2json [-f] <filename>
Examples:
$ qmk kle2json kle.txt\n☒ File info.json already exists, use -f or --force to overwrite.
$ qmk kle2json -f kle.txt -f\nΨ Wrote out to info.json
This command converts images to a format usable by QMK, i.e. the QGF File Format. See the Quantum Painter documentation for more information on this command.
This command converts a TTF font to an intermediate format for editing, before converting to the QFF File Format. See the Quantum Painter documentation for more information on this command.
This command runs the C unit test suite. If you make changes to C code you should ensure this runs successfully.
Usage:
qmk test-c [-h] [-t TEST] [-l] [-c] [-e ENV] [-j PARALLEL]\n\noptions:\n -h, --help show this help message and exit\n -t TEST, --test TEST Test to run from the available list. Supports wildcard globs. May be passed multiple times.\n -l, --list List available tests.\n -c, --clean Remove object files before compiling.\n -e ENV, --env ENV Set a variable to be passed to make. May be passed multiple times.\n -j PARALLEL, --parallel PARALLEL\n Set the number of parallel make jobs; 0 means unlimited.
Examples:
Run entire test suite:
qmk test-c
List available tests:
qmk test-c --list
Run matching test:
qmk test-c --test unicode*
Run single test:
qmk test-c --test basic
', 296);
+const _hoisted_297 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_297);
+}
+const cli_commands = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ cli_commands as default
+};
diff --git a/assets/cli_commands.md.bKM86b65.lean.js b/assets/cli_commands.md.bKM86b65.lean.js
new file mode 100644
index 0000000..77cb427
--- /dev/null
+++ b/assets/cli_commands.md.bKM86b65.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK CLI Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli_commands.md","filePath":"cli_commands.md"}');
+const _sfc_main = { name: "cli_commands.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 296);
+const _hoisted_297 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_297);
+}
+const cli_commands = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ cli_commands as default
+};
diff --git a/assets/cli_configuration.md.CY0YDFkc.js b/assets/cli_configuration.md.CY0YDFkc.js
new file mode 100644
index 0000000..f01c063
--- /dev/null
+++ b/assets/cli_configuration.md.CY0YDFkc.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK CLI Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"cli_configuration.md","filePath":"cli_configuration.md"}');
+const _sfc_main = { name: "cli_configuration.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Configuration for the QMK CLI is a key/value system. Each key consists of a subcommand and an argument name separated by a period. This allows for a straightforward and direct translation between config keys and the arguments they set.
Sometimes you want to share a setting between multiple commands. For example, multiple commands take the argument --keyboard. Rather than setting this value for every command you can set a user value which will be used by any command that takes that argument.
Example:
$ qmk config user.keyboard=clueboard/66/rev4 user.keymap=default\nuser.keyboard: None -> clueboard/66/rev4\nuser.keymap: None -> default\nΨ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
The qmk config command is used to interact with the underlying configuration. When run with no argument it shows the current configuration. When arguments are supplied they are assumed to be configuration tokens, which are strings containing no spaces with the following form:
You can read configuration values for the entire configuration, a single key, or for an entire section. You can also specify multiple keys to display more than one value.
The QMK CLI operates using the subcommand pattern made famous by git. The main qmk script is simply there to setup the environment and pick the correct entrypoint to run. Each subcommand is a self-contained module with an entrypoint (decorated by @cli.subcommand()) that performs some action and returns a shell returncode, or None.
MILC is the CLI framework qmk uses to handle argument parsing, configuration, logging, and many other features. It lets you focus on writing your tool without wasting your time writing glue code.
Subcommands in the local CLI are always found in qmk_firmware/lib/python/qmk/cli.
Let's start by looking at an example subcommand. This is lib/python/qmk/cli/hello.py:
python
"""QMK Python Hello World\n\nThis is an example QMK CLI script.\n"""\nfrom milc import cli\n\n\n@cli.argument('-n', '--name', default='World', help='Name to greet.')\n@cli.subcommand('QMK Hello World.')\ndef hello(cli):\n """Log a friendly greeting.\n """\n cli.log.info('Hello, %s!', cli.config.hello.name)
First we import the cli object from milc. This is how we interact with the user and control the script's behavior. We use @cli.argument() to define a command line flag, --name. This also creates a configuration variable named hello.name (and the corresponding user.name) which the user can set so they don't have to specify the argument. The cli.subcommand() decorator designates this function as a subcommand. The name of the subcommand will be taken from the name of the function.
Once inside our function we find a typical "Hello, World!" program. We use cli.log to access the underlying Logger Object, whose behavior is user controllable. We also access the value for name supplied by the user as cli.config.hello.name. The value for cli.config.hello.name will be determined by looking at the --name argument supplied by the user, if not provided it will use the value in the qmk.ini config file, and if neither of those is provided it will fall back to the default supplied in the cli.argument() decorator.
MILC and the QMK CLI have several nice tools for interacting with the user. Using these standard tools will allow you to colorize your text for easier interactions, and allow the user to control when and how that information is displayed and stored.
There are two main methods for outputting text in a subcommand- cli.log and cli.echo(). They operate in similar ways but you should prefer to use cli.log.info() for most general purpose printing.
You can use special tokens to colorize your text, to make it easier to understand the output of your program. See Colorizing Text below.
Both of these methods support built-in string formatting using python's printf style string format operations. You can use tokens such as %s and %d within your text strings then pass the values as arguments. See our Hello, World program above for an example.
You should never use the format operator (%) directly, always pass values as arguments.
The cli.log object gives you access to a Logger Object. We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong.
The default log level is INFO. If the user runs qmk -v <subcommand> the default log level will be set to DEBUG.
Sometimes you simply need to print text outside of the log system. This is appropriate if you are outputting fixed data or writing out something that should never be logged. Most of the time you should prefer cli.log.info() over cli.echo.
You can colorize the output of your text by including color tokens within text. Use color to highlight, not to convey information. Remember that the user can disable color, and your subcommand should still be usable if they do.
You should generally avoid setting the background color, unless it's integral to what you are doing. Remember that users have a lot of preferences when it comes to their terminal color, so you should pick colors that work well against both black and white backgrounds.
Colors prefixed with 'fg' will affect the foreground (text) color. Colors prefixed with 'bg' will affect the background color.
QMK handles the details of argument parsing and configuration for you. When you add a new argument it is automatically incorporated into the config tree based on your subcommand's name and the long name of the argument. You can access this configuration in cli.config, using either attribute-style access (cli.config.<subcommand>.<argument>) or dictionary-style access (cli.config['<subcommand>']['<argument>']).
Under the hood QMK uses ConfigParser to store configurations. This gives us an easy and straightforward way to represent the configuration in a human-editable way. We have wrapped access to this configuration to provide some nicities that ConfigParser does not normally have.
You can interact with cli.config in all the ways you'd normally expect. For example the qmk compile command gets the keyboard name from cli.config.compile.keyboard. It does not need to know whether that value came from the command line, an environment variable, or the configuration file.
Iteration is also supported:
for section in cli.config:\n for key in cli.config[section]:\n cli.log.info('%s.%s: %s', section, key, cli.config[section][key])
The configuration is not written out when it is changed. Most commands do not need to do this. We prefer to have the user change their configuration deliberately using qmk config.
You can use cli.save_config() to write out the configuration.
Some arguments should not be propagated to the configuration file. These can be excluded by adding arg_only=True when creating the argument.
Example:
@cli.argument('-o', '--output', arg_only=True, help='File to write to')\n@cli.argument('filename', arg_only=True, help='Configurator JSON file')\n@cli.subcommand('Create a keymap.c from a QMK Configurator export.')\ndef json_keymap(cli):\n pass
You will only be able to access these arguments using cli.args. For example:
cli.log.info('Reading from %s and writing to %s', cli.args.filename, cli.args.output)
Our tests can be found in lib/python/qmk/tests/. You will find both unit and integration tests in this directory. We hope you will write both unit and integration tests for your code, but if you do not please favor integration tests.
If your PR does not include a comprehensive set of tests please add comments like this to your code so that other people know where they can help:
We use flake8 to lint our code. Your code should pass flake8 before you open a PR. This will be checked when you run qmk pytest and by CI when you submit a PR.
If you are using Bash 4.2 or later, Zsh, or FiSH you can enable Tab Completion for the QMK CLI. This will let you tab complete the names of flags, keyboards, files, and other qmk options.
In some cases a symlink may not work. Instead you can copy the file directly into place. Be aware that updates to the tab complete script may happen from time to time, you will want to recopy the file periodically.
cp util/qmk_tab_complete.sh /etc/profile.d
', 16);
+const _hoisted_17 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_17);
+}
+const cli_tab_complete = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ cli_tab_complete as default
+};
diff --git a/assets/cli_tab_complete.md.NVbK-H31.lean.js b/assets/cli_tab_complete.md.NVbK-H31.lean.js
new file mode 100644
index 0000000..d063264
--- /dev/null
+++ b/assets/cli_tab_complete.md.NVbK-H31.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Tab Completion for QMK","description":"","frontmatter":{},"headers":[],"relativePath":"cli_tab_complete.md","filePath":"cli_tab_complete.md"}');
+const _sfc_main = { name: "cli_tab_complete.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 16);
+const _hoisted_17 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_17);
+}
+const cli_tab_complete = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ cli_tab_complete as default
+};
diff --git a/assets/coding_conventions_c.md.DpXNhaZf.js b/assets/coding_conventions_c.md.DpXNhaZf.js
new file mode 100644
index 0000000..1eaf8df
--- /dev/null
+++ b/assets/coding_conventions_c.md.DpXNhaZf.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Coding Conventions (C)","description":"","frontmatter":{},"headers":[],"relativePath":"coding_conventions_c.md","filePath":"coding_conventions_c.md"}');
+const _sfc_main = { name: "coding_conventions_c.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Most of our style is pretty easy to pick up on, but right now it's not entirely consistent. You should match the style of the code surrounding your change, but if that code is inconsistent or unclear use the following guidelines:
We indent using four (4) spaces (soft tabs)
We use a modified One True Brace Style
Opening Brace: At the end of the same line as the statement that opens the block
Closing Brace: Lined up with the first character of the statement that opens the block
Else If: Place the closing brace at the beginning of the line and the next opening brace at the end of the same line.
Optional Braces: Always include optional braces.
Good: if (condition) { return false; }
Bad: if (condition) return false;
We encourage use of C style comments: /* */
Think of them as a story describing the feature
Use them liberally to explain why particular decisions were made.
Do not write obvious comments
If you're not sure if a comment is obvious, go ahead and include it.
In general we don't wrap lines, they can be as long as needed. If you do choose to wrap lines please do not wrap any wider than 76 columns.
We use #pragma once at the start of header files rather than old-style include guards (#ifndef THIS_FILE_H, #define THIS_FILE_H, ..., #endif)
We accept both forms of preprocessor if's: #ifdef DEFINED and #if defined(DEFINED)
If you are not sure which to prefer use the #if defined(DEFINED) form.
Do not change existing code from one style to the other, except when moving to a multiple condition #if.
When deciding how (or if) to indent preprocessor directives, keep these points in mind:
Readability is more important than consistency.
Follow the file's existing style. If the file is mixed, follow the style that makes sense for the section you are modifying.
When indenting, keep the hash at the start of the line and add whitespace between # and if, starting with 4 spaces after the #.
You can follow the indentation level of the surrounding C code, or preprocessor directives can have their own indentation levels. Choose the style that best communicates the intent of your code.
Here is an example for easy reference:
c
/* Enums for foo */\nenum foo_state {\n FOO_BAR,\n FOO_BAZ,\n};\n\n/* Returns a value */\nint foo(void) {\n if (some_condition) {\n return FOO_BAR;\n } else {\n return -1;\n }\n}
Clang-format is part of LLVM and can automatically format your code for you, because ain't nobody got time to do it manually. We supply a configuration file for it that applies most of the coding conventions listed above. It will only change whitespace and newlines, so you will still have to remember to include optional braces yourself.
Use the full LLVM installer to get clang-format on Windows, or use sudo apt install clang-format on Ubuntu.
If you run it from the command-line, pass -style=file as an option and it will automatically find the .clang-format configuration file in the QMK root directory.
If you use VSCode, the standard C/C++ plugin supports clang-format, alternatively there is a separate extension for it.
Some things (like LAYOUT macros) are destroyed by clang-format, so either don't run it on those files, or wrap the sensitive code in // clang-format off and // clang-format on.
', 11);
+const _hoisted_12 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_12);
+}
+const coding_conventions_c = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ coding_conventions_c as default
+};
diff --git a/assets/coding_conventions_c.md.DpXNhaZf.lean.js b/assets/coding_conventions_c.md.DpXNhaZf.lean.js
new file mode 100644
index 0000000..7e8636c
--- /dev/null
+++ b/assets/coding_conventions_c.md.DpXNhaZf.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Coding Conventions (C)","description":"","frontmatter":{},"headers":[],"relativePath":"coding_conventions_c.md","filePath":"coding_conventions_c.md"}');
+const _sfc_main = { name: "coding_conventions_c.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 11);
+const _hoisted_12 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_12);
+}
+const coding_conventions_c = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ coding_conventions_c as default
+};
diff --git a/assets/coding_conventions_python.md.CssZF_dh.js b/assets/coding_conventions_python.md.CssZF_dh.js
new file mode 100644
index 0000000..ae9d2ad
--- /dev/null
+++ b/assets/coding_conventions_python.md.CssZF_dh.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Coding Conventions (Python)","description":"","frontmatter":{},"headers":[],"relativePath":"coding_conventions_python.md","filePath":"coding_conventions_python.md"}');
+const _sfc_main = { name: "coding_conventions_python.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
We don't have a hard and fast rule for when to use import ... vs from ... import .... Understandability and maintainability is our ultimate goal.
Generally we prefer to import specific function and class names from a module to keep code shorter and easier to understand. Sometimes this results in a name that is ambiguous, and in such cases we prefer to import the module instead. You should avoid using the "as" keyword when importing, unless you are importing a compatibility module.
Imports should be one line per module. We group import statements together using the standard python rules- system, 3rd party, local.
Do not use from foo import *. Supply a list of objects you want to import instead, or import the whole module.
Function names, variable names, and filenames should be descriptive; eschew abbreviation. In particular, do not use abbreviations that are ambiguous or unfamiliar to readers outside your project, and do not abbreviate by deleting letters within a word.
Always use a .py filename extension. Never use dashes.
def my_awesome_function():\n """Return the number of seconds since 1970 Jan 1 00:00 UTC.\n\n This function always returns an integer number of seconds.\n """\n return int(time.time())
def my_awesome_function(start=None, offset=0):\n """Return the number of seconds since 1970 Jan 1 00:00 UTC.\n\n This function always returns an integer number of seconds.\n\n\n Args:\n start\n The time to start at instead of 1970 Jan 1 00:00 UTC\n\n offset\n Return an answer that has this number of seconds subtracted first\n\n Returns:\n An integer describing a number of seconds.\n\n Raises:\n ValueError\n When `start` or `offset` are not positive numbers\n """\n if start < 0 or offset < 0:\n raise ValueError('start and offset must be positive numbers.')\n\n if not start:\n start = time.time()\n\n return int(start - offset)
Exceptions are used to handle exceptional situations. They should not be used for flow control. This is a break from the python norm of "ask for forgiveness." If you are catching an exception it should be to handle a situation that is unusual.
If you use a catch-all exception for any reason you must log the exception and stacktrace using cli.log.
Make your try/except blocks as short as possible. If you need a lot of try statements you may need to restructure your code.
When defining one-item tuples always include a trailing comma so that it is obvious you are using a tuple. Do not rely on implicit one-item tuple unpacking. Better still use a list which is unambiguous.
This is particularly important when using the printf-style format strings that are commonly used.
We have configured YAPF to differentiate between sequence styles with a trailing comma. When a trailing comma is omitted YAPF will format the sequence as a single line. When a trailing comma is included YAPF will format the sequence with one item per line.
You should generally prefer to keep short definition on a single line. Break out to multiple lines sooner rather than later to aid readability and maintainability.
Avoid excessive parentheses, but do use parentheses to make code easier to understand. Do not use them in return statements unless you are explicitly returning a tuple, or it is part of a math expression.
We generally prefer printf-style format strings. Example:
name = 'World'\nprint('Hello, %s!' % (name,))
This style is used by the logging module, which we make use of extensively, and we have adopted it in other places for consistency. It is also more familiar to C programmers, who are a big part of our casual audience.
Our included CLI module has support for using these without using the percent (%) operator. Look at cli.echo() and the various cli.log functions (EG, cli.log.info()) for more details.
We encourage the liberal use of comprehensions and generators, but do not let them get too complex. If you need complexity fall back to a for loop that is easier to understand.
When specifying default values in argument lists always be careful to specify objects that can't be modified in place. If you use a mutable object the changes you make will persist between calls, which is usually not what you want. Even if that is what you intend to do it is confusing for others and will hinder understanding.
Python is an extremely flexible language and gives you many fancy features such as custom metaclasses, access to bytecode, on-the-fly compilation, dynamic inheritance, object reparenting, import hacks, reflection, modification of system internals, etc.
Don't use these.
Performance is not a critical concern for us, and code understandability is. We want our codebase to be approachable by someone who only has a day or two to play with it. These features generally come with a cost to easy understanding, and we would prefer to have code that can be readily understood over faster or more compact code.
Note that some standard library modules use these techniques and it is ok to make use of those modules. But please keep readability and understandability in mind when using them.
We recognize that long functions are sometimes appropriate, so no hard limit is placed on function length. If a function exceeds about 40 lines, think about whether it can be broken up without harming the structure of the program.
Even if your long function works perfectly now, someone modifying it in a few months may add new behavior. This could result in bugs that are hard to find. Keeping your functions short and simple makes it easier for other people to read and modify your code.
You could find long and complicated functions when working with some code. Do not be intimidated by modifying existing code: if working with such a function proves to be difficult, you find that errors are hard to debug, or you want to use a piece of it in several different contexts, consider breaking up the function into smaller and more manageable pieces.
It is OK to leave FIXMEs in code. Why? Encouraging people to at least document parts of code that need to be thought out more (or that are confusing) is better than leaving this code undocumented.
All FIXMEs should be formatted like:
FIXME(username): Revisit this code when the frob feature is done.
We use a combination of Integration and Unit testing to ensure that the our code is as bug-free as possible. All the tests can be found in lib/python/qmk/tests/. You can run all the tests with qmk pytest.
At the time of this writing our tests are not very comprehensive. Looking at the current tests and writing new test cases for untested situations is a great way to both familiarize yourself with the codebase and contribute to QMK.
Integration tests can be found in lib/python/qmk/tests/test_cli_commands.py. This is where CLI commands are actually run and their overall behavior is verified. We use subprocess to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened.
The other test_*.py files in lib/python/qmk/tests/ contain unit tests. You can write tests for individual functions inside lib/python/qmk/ here. Generally these files are named after the module, with dots replaced by underscores.
At the time of this writing we do not do any mocking for our tests. If you would like to help us change this please open an issue or join #cli on Discord and start a conversation there.
', 108);
+const _hoisted_109 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_109);
+}
+const coding_conventions_python = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ coding_conventions_python as default
+};
diff --git a/assets/coding_conventions_python.md.CssZF_dh.lean.js b/assets/coding_conventions_python.md.CssZF_dh.lean.js
new file mode 100644
index 0000000..fe17089
--- /dev/null
+++ b/assets/coding_conventions_python.md.CssZF_dh.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Coding Conventions (Python)","description":"","frontmatter":{},"headers":[],"relativePath":"coding_conventions_python.md","filePath":"coding_conventions_python.md"}');
+const _sfc_main = { name: "coding_conventions_python.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 108);
+const _hoisted_109 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_109);
+}
+const coding_conventions_python = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ coding_conventions_python as default
+};
diff --git a/assets/color-wheel.DWgAL3vL.svg b/assets/color-wheel.DWgAL3vL.svg
new file mode 100644
index 0000000..83e5994
--- /dev/null
+++ b/assets/color-wheel.DWgAL3vL.svg
@@ -0,0 +1,441 @@
+
+
+
diff --git a/assets/compatible_microcontrollers.md.CS5LLpe-.js b/assets/compatible_microcontrollers.md.CS5LLpe-.js
new file mode 100644
index 0000000..66fb9af
--- /dev/null
+++ b/assets/compatible_microcontrollers.md.CS5LLpe-.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Compatible Microcontrollers","description":"","frontmatter":{},"headers":[],"relativePath":"compatible_microcontrollers.md","filePath":"compatible_microcontrollers.md"}');
+const _sfc_main = { name: "compatible_microcontrollers.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
QMK runs on any USB-capable AVR or ARM microcontroller with enough flash space - generally 32kB+ for AVR, and 64kB+ for ARM. With significant disabling of features, QMK may just squeeze into 16kB AVR MCUs.
Features within QMK may or may not be compatible with every microcontroller.
ChibiOS-Contrib has support for the GigaDevice GD32VF103 series microcontrollers and provides configurations for the SiPeed Longan Nano development board that uses this microcontroller. It is largely pin and feature compatible with STM32F103 and STM32F303 microcontrollers.
', 24);
+const _hoisted_25 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_25);
+}
+const compatible_microcontrollers = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ compatible_microcontrollers as default
+};
diff --git a/assets/compatible_microcontrollers.md.CS5LLpe-.lean.js b/assets/compatible_microcontrollers.md.CS5LLpe-.lean.js
new file mode 100644
index 0000000..d05424b
--- /dev/null
+++ b/assets/compatible_microcontrollers.md.CS5LLpe-.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Compatible Microcontrollers","description":"","frontmatter":{},"headers":[],"relativePath":"compatible_microcontrollers.md","filePath":"compatible_microcontrollers.md"}');
+const _sfc_main = { name: "compatible_microcontrollers.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 24);
+const _hoisted_25 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_25);
+}
+const compatible_microcontrollers = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ compatible_microcontrollers as default
+};
diff --git a/assets/config_options.md.B6nk2VgQ.js b/assets/config_options.md.B6nk2VgQ.js
new file mode 100644
index 0000000..3730091
--- /dev/null
+++ b/assets/config_options.md.B6nk2VgQ.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Configuring QMK","description":"","frontmatter":{},"headers":[],"relativePath":"config_options.md","filePath":"config_options.md"}');
+const _sfc_main = { name: "config_options.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
QMK is nearly infinitely configurable. Wherever possible we err on the side of allowing users to customize their keyboard, even at the expense of code size. That level of flexibility makes for a daunting configuration experience, however.
There are three main types of configuration files in QMK:
config.h, which contains various preprocessor directives (#define, #ifdef)
This page will only discuss the first two types, config.h and rules.mk.
TIP
While not all settings have data-driven equivalents yet, keyboard makers are encouraged to utilize the info.json file to set the metadata for their boards when possible. See the info.json Format page for more details.
These files exist at various levels in QMK and all files of the same type are combined to build the final configuration. The levels, from lowest priority to highest priority, are:
Every available setting in QMK has a default. If that setting is not set at the Keyboard, Folder, or Keymap level this is the setting that will be used.
This level contains config options that should apply to the whole keyboard. Some settings won't change in revisions, or most keymaps. Other settings are merely defaults for this keyboard and can be overridden by folders and/or keymaps.
Some keyboards have folders and sub-folders to allow for different hardware configurations. Most keyboards only go 1 folder deep, but QMK supports structures up to 5 folders deep. Each folder can have its own config.h and rules.mk files that are incorporated into the final configuration.
This level contains all of the options for that particular keymap. If you wish to override a previous declaration, you can use #undef <variable> to undefine it, where you can then redefine it without an error.
This is a C header file that is one of the first things included, and will persist over the whole project (if included). Lots of variables can be set here and accessed elsewhere. The config.h file shouldn't be including other config.h files.
may be omitted by the keyboard designer if matrix reads are handled in an alternate manner. See low-level matrix overrides for more information.
#define MATRIX_IO_DELAY 30
the delay in microseconds when between changing matrix pin state and reading values
#define MATRIX_HAS_GHOST
define is matrix has ghost (unlikely)
#define MATRIX_UNSELECT_DRIVE_HIGH
On un-select of matrix pins, rather than setting pins to input-high, sets them to output-high.
#define DIODE_DIRECTION COL2ROW
COL2ROW or ROW2COL - how your matrix is configured. COL2ROW means the black mark on your diode is facing to the rows, and between the switch and the rows.
key combination that allows the use of magic commands (useful for debugging)
#define USB_MAX_POWER_CONSUMPTION 500
sets the maximum power (in mA) over USB for the device (default: 500)
#define USB_POLLING_INTERVAL_MS 10
sets the USB polling rate in milliseconds for the keyboard, mouse, and shared (NKRO/media keys) interfaces
#define USB_SUSPEND_WAKEUP_DELAY 0
sets the number of milliseconds to pause after sending a wakeup packet. Disabled by default, you might want to set this to 200 (or higher) if the keyboard does not wake up properly after suspending.
#define F_SCL 100000L
sets the I2C clock rate speed for keyboards using I2C. The default is 400000L, except for keyboards using split_common, where the default is 100000L.
If you define these options you will enable the associated feature, which may increase your code size.
#define ENABLE_COMPILE_KEYCODE
Enables the QK_MAKE keycode
#define FORCE_NKRO
NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
#define STRICT_LAYER_RELEASE
force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
enables handling for per key HOLD_ON_OTHER_KEY_PRESS settings
#define LEADER_TIMEOUT 300
how long before the leader key times out
If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the LEADER_PER_KEY_TIMING option, which resets the timeout after each key is tapped.
#define LEADER_PER_KEY_TIMING
sets the timer for leader key chords to run on each key press rather than overall
#define LEADER_KEY_STRICT_KEY_PROCESSING
Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A.
#define MOUSE_EXTENDED_REPORT
Enables support for extended reports (-32767 to 32767, instead of -127 to 127), which may allow for smoother reporting, and prevent maxing out of the reports. Applies to both Pointing Device and Mousekeys.
#define ONESHOT_TIMEOUT 300
how long before oneshot times out
#define ONESHOT_TAP_TOGGLE 2
how many taps before oneshot toggle is triggered
#define COMBO_TERM 200
how long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
#define COMBO_MUST_HOLD_MODS
Flag for enabling extending timeout on Combos containing modifiers
#define COMBO_MOD_TERM 200
Allows for extending COMBO_TERM for mod keys while mid-combo.
#define COMBO_MUST_HOLD_PER_COMBO
Flag to enable per-combo COMBO_TERM extension and get_combo_must_hold() function
#define COMBO_TERM_PER_COMBO
Flag to enable per-combo COMBO_TERM extension and get_combo_term() function
#define COMBO_STRICT_TIMER
Only start the combo timer on the first key press instead of on all key presses.
#define COMBO_NO_TIMER
Disable the combo timer completely for relaxed combos.
#define TAP_CODE_DELAY 100
Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds and defaults to 0.
#define TAP_HOLD_CAPS_DELAY 80
Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPS_LOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
Lets you define lighting layers that can be toggled on or off. Great for showing the current keyboard layer or caps lock state.
#define RGBLIGHT_MAX_LAYERS
Defaults to 8. Can be expanded up to 32 if more lighting layers are needed.
Note: Increasing the maximum will increase the firmware size and slow sync on split keyboards.
#define RGBLIGHT_LAYER_BLINK
Adds ability to blink a lighting layer for a specified number of milliseconds (e.g. to acknowledge an action).
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
If defined, then lighting layers will be shown even if RGB Light is off.
#define RGBLIGHT_LED_COUNT 12
number of LEDs
#define RGBLIGHT_SPLIT
Needed if both halves of the board have RGB LEDs wired directly to the RGB output pin on the controllers instead of passing the output of the left half to the input of the right half
#define RGBLED_SPLIT { 6, 6 }
number of LEDs connected that are directly wired to the RGB pin on each half of a split keyboard
First value indicates number of LEDs for left half, second value is for the right half
When RGBLED_SPLIT is defined, RGBLIGHT_SPLIT is implicitly defined.
#define RGBLIGHT_HUE_STEP 12
units to step when in/decreasing hue
#define RGBLIGHT_SAT_STEP 25
units to step when in/decreasing saturation
#define RGBLIGHT_VAL_STEP 12
units to step when in/decreasing value (brightness)
For using high/low pin to determine handedness, low = right hand, high = left hand. Replace B7 with the pin you are using. This is optional, and if you leave SPLIT_HAND_PIN undefined, then you can still use the EE_HANDS method or MASTER_LEFT / MASTER_RIGHT defines like the stock Let's Split uses.
#define SPLIT_HAND_MATRIX_GRID <out_pin>,<in_pin>
The handedness is determined by using the intersection of the keyswitches in the key matrix, which does not exist. Normally, when this intersection is shorted (level low), it is considered right. If you define #define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT, it is determined to be left when the level is low.
#define EE_HANDS (only works if SPLIT_HAND_PIN and SPLIT_HAND_MATRIX_GRID are not defined)
Reads the handedness value stored in the EEPROM after eeprom-lefthand.eep/eeprom-righthand.eep has been flashed to their respective halves.
For using I2C instead of Serial (default is serial; serial transport is supported on ARM -- I2C is AVR-only)
#define SOFT_SERIAL_PIN D0
When using serial, define this. D0 or D1,D2,D3,E6.
#define MATRIX_ROW_PINS_RIGHT { <row pins> }
#define MATRIX_COL_PINS_RIGHT { <col pins> }
If you want to specify a different pinout for the right half than the left half, you can define MATRIX_ROW_PINS_RIGHT/MATRIX_COL_PINS_RIGHT. Currently, the size of MATRIX_ROW_PINS must be the same as MATRIX_ROW_PINS_RIGHT and likewise for the definition of columns.
may be omitted by the keyboard designer if matrix reads are handled in an alternate manner. See low-level matrix overrides for more information.
If you want to specify a different direct pinout for the right half than the left half, you can define DIRECT_PINS_RIGHT. Currently, the size of DIRECT_PINS must be the same as DIRECT_PINS_RIGHT.
This is a make file that is included by the top-level Makefile. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
Used to specify a default folder when a keyboard has more than one sub-folder.
FIRMWARE_FORMAT
Defines which format (bin, hex) is copied to the root qmk_firmware folder after building.
SRC
Used to add files to the compilation/linking list.
LIB_SRC
Used to add files as a library to the compilation/linking list. The files specified by LIB_SRC is linked after the files specified by SRC. For example, if you specify:
Enables Link Time Optimization (LTO) when compiling the keyboard. This makes the process take longer, but it can significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable).
Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.
USB 6-Key Rollover - Instead of stopping any new input once 6 keys are pressed, the oldest key is released and the new key is pressed.
AUDIO_ENABLE
Enable the audio subsystem.
KEY_OVERRIDE_ENABLE
Enable the key override feature
RGBLIGHT_ENABLE
Enable keyboard underlight functionality
LEADER_ENABLE
Enable leader key chording
MIDI_ENABLE
MIDI controls
UNICODE_ENABLE
Unicode
BLUETOOTH_ENABLE
Current options are bluefruit_le, rn42
SPLIT_KEYBOARD
Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common
CUSTOM_MATRIX
Allows replacing the standard matrix scanning routine with a custom one.
DEBOUNCE_TYPE
Allows replacing the standard key debouncing routine with an alternative or custom one.
USB_WAIT_FOR_ENUMERATION
Forces the keyboard to wait for a USB connection to be established before it starts up
NO_USB_STARTUP_CHECK
Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
DEFERRED_EXEC_ENABLE
Enables deferred executor support -- timed delays before callbacks are invoked. See deferred execution for more information.
DYNAMIC_TAPPING_TERM_ENABLE
Allows to configure the global tapping term on the fly.
In order to provide services over USB, QMK has to use USB endpoints. These are a finite resource: each microcontroller has only a certain number. This limits what features can be enabled together. If the available endpoints are exceeded, a build error is thrown.
The following features can require separate endpoints:
MOUSEKEY_ENABLE
EXTRAKEY_ENABLE
CONSOLE_ENABLE
NKRO_ENABLE
MIDI_ENABLE
RAW_ENABLE
VIRTSER_ENABLE
In order to improve utilisation of the endpoints, the HID features can be combined to use a single endpoint. By default, MOUSEKEY, EXTRAKEY, and NKRO are combined into a single endpoint.
The base keyboard functionality can also be combined into the endpoint, by setting KEYBOARD_SHARED_EP = yes. This frees up one more endpoint, but it can prevent the keyboard working in some BIOSes, as they do not implement Boot Keyboard protocol switching.
Combining the mouse also breaks Boot Mouse compatibility. The mouse can be uncombined by setting MOUSE_SHARED_EP = no if this functionality is required.
', 59);
+const _hoisted_60 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_60);
+}
+const config_options = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ config_options as default
+};
diff --git a/assets/config_options.md.B6nk2VgQ.lean.js b/assets/config_options.md.B6nk2VgQ.lean.js
new file mode 100644
index 0000000..9af9241
--- /dev/null
+++ b/assets/config_options.md.B6nk2VgQ.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Configuring QMK","description":"","frontmatter":{},"headers":[],"relativePath":"config_options.md","filePath":"config_options.md"}');
+const _sfc_main = { name: "config_options.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 59);
+const _hoisted_60 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_60);
+}
+const config_options = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ config_options as default
+};
diff --git a/assets/configurator_architecture.md.CmFDpVLe.js b/assets/configurator_architecture.md.CmFDpVLe.js
new file mode 100644
index 0000000..7b61209
--- /dev/null
+++ b/assets/configurator_architecture.md.CmFDpVLe.js
@@ -0,0 +1,16 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const _imports_0 = "/assets/configurator_diagram.CbZon-ao.svg";
+const __pageData = JSON.parse('{"title":"QMK Configurator Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_architecture.md","filePath":"configurator_architecture.md"}');
+const _sfc_main = { name: "configurator_architecture.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This page describes the web architecture behind QMK Configurator at a high level. If you are interested in the architecture of the QMK Configurator code itself you should start at the qmk_configurator repository.
QMK Configurator is a Single Page Application that allows users to create custom keymaps for their QMK-compatible keyboard. They can export JSON representation of their keymaps and compile firmware binaries that can be flashed to their keyboard using a tool like QMK Toolbox.
Configurator gets metadata about keyboards from the Keyboard Metadata store and submits compile requests to the QMK API. The results of those compile requests will be made available on Digital Ocean Spaces, an S3-compatible data store.
The Keyboard Metadata is generated every time a keyboard in qmk_firmware changes. The resulting JSON files are uploaded to Spaces and used by Configurator to generate UI for each keyboard. You can view the status of this job on the qmk_firmware actions tab. If you are a QMK Collaborator you can manually run this job using the workflow_dispatch event trigger.
The QMK API accepts keymap.json files for compilation. These are the same files you can use directly with qmk compile and qmk flash. When a keymap.json is submitted the browser will poll the status of the job periodically (every 2 seconds or longer, preferably) until the job has completed. The final status JSON will contain pointers to source and binary downloads for the keymap.
QMK API always presents the source and binary downloads side-by-side to comply with the GPL.
There are 3 non-error status responses from the API-
QMK API uses RQ to distribute jobs to the available QMK Compiler nodes. When a keymap.json is received it's put into the RQ queue, where a qmk_compiler node will pick it up from.
QMK Compiler is what actually performs the compilation of the keymap.json. It does so by checking out the requested qmk_firmware branch, running qmk compile keymap.json, and then uploading the resulting source and binary to Digital Ocean Spaces.
When users download their source/binary, API will redirect them to the authenticated Spaces download URL.
', 30);
+const _hoisted_31 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_31);
+}
+const configurator_architecture = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ configurator_architecture as default
+};
diff --git a/assets/configurator_architecture.md.CmFDpVLe.lean.js b/assets/configurator_architecture.md.CmFDpVLe.lean.js
new file mode 100644
index 0000000..105f2d0
--- /dev/null
+++ b/assets/configurator_architecture.md.CmFDpVLe.lean.js
@@ -0,0 +1,16 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const _imports_0 = "/assets/configurator_diagram.CbZon-ao.svg";
+const __pageData = JSON.parse('{"title":"QMK Configurator Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_architecture.md","filePath":"configurator_architecture.md"}');
+const _sfc_main = { name: "configurator_architecture.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 30);
+const _hoisted_31 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_31);
+}
+const configurator_architecture = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ configurator_architecture as default
+};
diff --git a/assets/configurator_default_keymaps.md.Db0fQLFV.js b/assets/configurator_default_keymaps.md.Db0fQLFV.js
new file mode 100644
index 0000000..ce66fc8
--- /dev/null
+++ b/assets/configurator_default_keymaps.md.Db0fQLFV.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Adding Default Keymaps to QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_default_keymaps.md","filePath":"configurator_default_keymaps.md"}');
+const _sfc_main = { name: "configurator_default_keymaps.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
QMK Configurator uses JSON as its native file format for keymaps. As much as possible, these should be kept such that they behave the same as running make <keyboard>:default from qmk_firmware.
Keymaps in this directory require four key-value pairs:
keyboard (string)
This is the name of the keyboard, the same as would be used when running a compile job through make (e.g. make 1upkeyboards/1up60rgb:default).
keymap (string)
Should be set to default.
layout (string)
This is the layout macro used by the default keymap.
layers (array)
The keymap itself. This key should contain one array per layer, which themselves should contain the keycodes that make up that layer.
Additionally, most keymaps contain a commit key. This key is not consumed by the API that back-stops QMK Configurator, but is used by Configurator's maintainers to tell which version of a keymap was used to create the JSON keymap in this repository. The value is the SHA of the last commit to modify a board's default keymap.c in the qmk_firmware repository. The SHA is found by checking out the master branch of the qmk/qmk_firmware repository and running git log -1 --pretty=oneline -- keyboards/<keyboard>/keymaps/default/keymap.c (use keymap.json if the keyboard in question has this file instead), which should return something similar to:
f14629ed1cd7c7ec9089604d64f29a99981558e8 Remove/migrate action_get_macro()s from default keymaps (#5625)
In this example, f14629ed1cd7c7ec9089604d64f29a99981558e8 is the value that should be used for commit.
If one wished to add a default keymap for the H87a by Hineybush, one would run the git log command above against the H87a's default keymap in qmk_firmware:
The default keymap uses the LAYOUT_all macro, so that will be the value of the layout key. Compiled to a QMK Configurator JSON keymap, our resulting file should be:
Features that require adding functions to the keymap.c file, such as Tap Dance or Unicode, can not be compiled in Configurator at all. Even setting TAP_DANCE_ENABLE = yes in the qmk_firmware repository at the keyboard level will prevent Configurator from compiling any firmware for that keyboard. This is limited both by the API and the current spec of our JSON keymap format.
There is a way to support custom keycodes: if the logic for a custom keycode is implemented at the keyboard level instead of the keymap level in qmk_firmware, that keycode can be used in Configurator and it will compile and work. Instead of using the following in your keymap.c:
c
enum custom_keycodes {\n CUSTOM_1 = SAFE_RANGE,\n CUSTOM_2,\n CUSTOM_3\n};\n...\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch(keycode) {\n case CUSTOM_1:\n if (record->event.pressed) {\n SEND_STRING("This is custom keycode #1.");\n }\n return false;\n case CUSTOM_2:\n if (record->event.pressed) {\n SEND_STRING("This is custom keycode #2.");\n }\n return false;\n case CUSTOM_3:\n if (record->event.pressed) {\n SEND_STRING("This is custom keycode #3.");\n }\n return false;\n }\n return true;\n};
... add the keycode enum block to your keyboard's header file (<keyboard>.h) as follows (note that the enum is named keyboard_keycodes here):
For QMK Configurator to support your keyboard, your keyboard must be present in the master branch of the qmk_firmware repository. For instructions on this, please see Supporting Your Keyboard in QMK Configurator.
', 34);
+const _hoisted_35 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_35);
+}
+const configurator_default_keymaps = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ configurator_default_keymaps as default
+};
diff --git a/assets/configurator_default_keymaps.md.Db0fQLFV.lean.js b/assets/configurator_default_keymaps.md.Db0fQLFV.lean.js
new file mode 100644
index 0000000..a02366c
--- /dev/null
+++ b/assets/configurator_default_keymaps.md.Db0fQLFV.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Adding Default Keymaps to QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_default_keymaps.md","filePath":"configurator_default_keymaps.md"}');
+const _sfc_main = { name: "configurator_default_keymaps.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 34);
+const _hoisted_35 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_35);
+}
+const configurator_default_keymaps = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ configurator_default_keymaps as default
+};
diff --git a/assets/configurator_diagram.CbZon-ao.svg b/assets/configurator_diagram.CbZon-ao.svg
new file mode 100644
index 0000000..bcf0bf7
--- /dev/null
+++ b/assets/configurator_diagram.CbZon-ao.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/assets/configurator_step_by_step.md.CQWwPq1x.js b/assets/configurator_step_by_step.md.CQWwPq1x.js
new file mode 100644
index 0000000..96da7ac
--- /dev/null
+++ b/assets/configurator_step_by_step.md.CQWwPq1x.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK Configurator: Step by Step","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_step_by_step.md","filePath":"configurator_step_by_step.md"}');
+const _sfc_main = { name: "configurator_step_by_step.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Click the drop down box and select the keyboard you want to create a keymap for.
TIP
If your keyboard has several versions, make sure you select the correct one.
I'll say that again because it's important:
WARNING
MAKE SURE YOU SELECT THE RIGHT VERSION!
Unfortunately if your keyboard has been advertised to be powered by QMK but is not in the list, you will not be able to use Configurator to customize your keyboard.
Chances are a developer hasn't gotten round to adding support or we haven't had a chance to merge it in yet. If there is no active Pull Request, contact the manufacturer and encourage them to add support.
Choose the layout that best represents the keymap you want to create. Some keyboards do not have enough layouts or correct layouts defined yet. They will be supported in the future.
WARNING
Sometimes there isn't a layout that supports your exact build. In that case select LAYOUT_all.
If your selected layout doesn't match your physical build leave the unused keys blank. If you're not sure which key is in use, for example you have a one backspace key but LAYOUT_all has 2 keys, put the same keycode in both locations.
When you're satisfied with your keymap or just want to work on it later, press the Download this QMK Keymap JSON File button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the Upload a QMK Keymap JSON File button.
WARNING
CAUTION: This is not the same type of .json file used for kbfirmware.com or any other tool. If you try to use this for those tools, or the .json from those tools with QMK Configurator, you will encounter problems.
If the .json file was generated with QMK Configurator, congratulations you have stumbled upon a bug. File an issue at qmk_configurator.
If not... how did you miss the big bold message at the top saying not to use other .json files?
There are extra spaces in my layout? What do I do?
If you're referring to having three spots for space bar, the best course of action is to just fill them all with Space. The same can be done for Backspace and Shift keys.
👍🎉 First off, thanks for taking the time to read this and contribute! 🎉👍
Third-party contributions help us grow and improve QMK. We want to make the pull request and contribution process useful and easy for both contributors and maintainers. To this end we've put together some guidelines for contributors to help your pull request be accepted without major changes.
QMK is largely written in C, with specific features and parts written in C++. It targets embedded processors found in keyboards, particularly AVR (LUFA) and ARM (ChibiOS). If you are already well versed in Arduino programming you'll find a lot of the concepts and limitations familiar. Prior experience with Arduino is not required to successfully contribute to QMK.
Fork the repository associated with the issue to your GitHub account. This means that you will have a copy of the repository under your-GitHub-username/qmk_firmware.
Clone the repository to your local machine using git clone https://github.com/github-username/repository-name.git.
If you're working on a new feature consider opening an issue to talk with us about the work you're about to undertake.
Create a new branch for your fix using git checkout -b branch-name-here.
Make the appropriate changes for the issue you are trying to address or the feature that you want to add.
Use git add insert-paths-of-changed-files-here to add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index.
Use git commit -m "Insert a short message of the changes made here" to store the contents of the index with a descriptive message.
Push the changes to your repository on GitHub using git push origin branch-name-here.
Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so "Added more log outputting to resolve #4352".
In the description of the pull request explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it!
Wait for the pull request to be reviewed by a maintainer.
Make changes to the pull request if the reviewing maintainer recommends them.
Celebrate your success after your pull request is merged!
Most of our style is pretty easy to pick up on. If you are familiar with either C or Python you should not have too much trouble with our local styles.
We have a few different types of changes in QMK, each requiring a different level of rigor. We'd like you to keep the following guidelines in mind no matter what type of change you're making.
Before you contribute: Please make sure your fork is up to date with the upstream qmk_firmware repo. This will help minimize CI failures that may not occur for you when compiling locally.
Separate PRs into logical units. For example, do not submit one PR covering two separate features, instead submit a separate PR for each feature.
Check for unnecessary whitespace with git diff --check before committing.
Make sure your code change actually compiles.
Keymaps: Make sure that make keyboard:keymap does not return any errors.
Keyboards: Make sure that make keyboard:all does not return any errors.
Core: Make sure that make all does not return any errors.
Note that user-keymap and userspace contributions are no longer accepted.
Make sure commit messages are understandable on their own. You should put a short description (no more than 70 characters) on the first line, the second line should be empty, and on the 3rd and later lines you should describe your commit in detail, if required. Example:
Adjust the fronzlebop for the kerpleplork\n\nThe kerpleplork was intermittently failing with error code 23. The root cause was the fronzlebop setting, which causes the kerpleplork to activate every N iterations.\n\nLimited experimentation on the devices I have available shows that 7 is high enough to avoid confusing the kerpleplork, but I'd like to get some feedback from people with ARM devices to be sure.
Documentation is one of the easiest ways to get started contributing to QMK. Finding places where the documentation is wrong or incomplete and fixing those is easy! We also very badly need someone to edit our documentation, so if you have editing skills but aren't sure where or how to jump in please reach out for help!
You'll find all our documentation in the qmk_firmware/docs directory, or if you'd rather use a web based workflow you can click the "Edit this page" link at the bottom of each page on https://docs.qmk.fm/.
When providing code examples in your documentation, try to observe naming conventions used elsewhere in the docs. For example, standardizing enums as my_layers or my_keycodes for consistency:
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the qmk_firmware/ folder:
Keyboards are the raison d'être for QMK. Some keyboards are community maintained, while others are maintained by the people responsible for making a particular keyboard. The readme.md should tell you who maintains a particular keyboard. If you have questions relating to a particular keyboard you can Open An Issue and tag the maintainer in your question.
Before you put a lot of work into building your new feature you should make sure you are implementing it in the best way. You can get a basic understanding of QMK by reading Understanding QMK, which will take you on a tour of the QMK program flow. From here you should talk to us to get a sense of the best way to implement your idea. There are two main ways to do this:
Feature and Bug Fix PRs affect all keyboards. We are also in the process of restructuring QMK. For this reason it is especially important for significant changes to be discussed before implementation has happened. If you open a PR without talking to us first please be prepared to do some significant rework if your choices do not mesh well with our planned direction.
Here are some things to keep in mind when working on your feature or bug fix.
Disabled by default - memory is a pretty limited on most chips QMK supports, and it's important that current keymaps aren't broken, so please allow your feature to be turned on, rather than being turned off. If you think it should be on by default, or reduces the size of the code, please talk with us about it.
Compile locally before submitting - hopefully this one is obvious, but things need to compile! You should always make sure your changes compile before opening a pull request.
Consider revisions and different chip-bases - there are several keyboards that have revisions that allow for slightly different configurations, and even different chip-bases. Try to make a feature supported in ARM and AVR, or automatically disabled on platforms it doesn't work on.
Explain your feature - Document it in docs/, either as a new file or as part of an existing file. If you don't document it other people won't be able to benefit from your hard work.
We also ask that you follow these guidelines:
Keep the number of commits reasonable or we will squash your PR
Do not lump keyboards or keymaps in with core changes. Submit your core changes first.
To maintain a clear vision of how things are laid out in QMK we try to plan out refactors in-depth and have a collaborator make the changes. If you have an idea for refactoring, or suggestions, open an issue, we'd love to talk about how QMK can be improved.
Our Code of Conduct means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.
', 47);
+const _hoisted_48 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_48);
+}
+const contributing = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ contributing as default
+};
diff --git a/assets/contributing.md.C-zh8zuX.lean.js b/assets/contributing.md.C-zh8zuX.lean.js
new file mode 100644
index 0000000..b5501a4
--- /dev/null
+++ b/assets/contributing.md.C-zh8zuX.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"How to Contribute","description":"","frontmatter":{},"headers":[],"relativePath":"contributing.md","filePath":"contributing.md"}');
+const _sfc_main = { name: "contributing.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 47);
+const _hoisted_48 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_48);
+}
+const contributing = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ contributing as default
+};
diff --git a/assets/custom_matrix.md.BaJLCNe_.js b/assets/custom_matrix.md.BaJLCNe_.js
new file mode 100644
index 0000000..4b46a2c
--- /dev/null
+++ b/assets/custom_matrix.md.BaJLCNe_.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Custom Matrix","description":"","frontmatter":{},"headers":[],"relativePath":"custom_matrix.md","filePath":"custom_matrix.md"}');
+const _sfc_main = { name: "custom_matrix.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Implementing custom matrix usually involves compilation of an additional source file. It is recommended that for consistency, this file is called matrix.c.
Add a new file to your keyboard directory:
keyboards/<keyboard>/matrix.c
And to configure compilation for the new file, add this to your rules.mk:
Provides a default implementation for various scanning functions, reducing the boilerplate code when implementing custom matrix. To configure it, add this to your rules.mk:
make
CUSTOM_MATRIX = lite
And implement the following functions in a matrix.c file in your keyboard folder:
When more control over the scanning routine is required, you can choose to implement the full scanning routine. To configure it, add this to your rules.mk:
make
CUSTOM_MATRIX = yes
And implement the following functions in a matrix.c file in your keyboard folder:
c
matrix_row_t matrix_get_row(uint8_t row) {\n // TODO: return the requested row data\n}\n\nvoid matrix_print(void) {\n // TODO: use print() to dump the current matrix state to console\n}\n\nvoid matrix_init(void) {\n // TODO: initialize hardware and global matrix state here\n\n // Unless hardware debouncing - Init the configured debounce routine\n debounce_init(MATRIX_ROWS);\n\n // This *must* be called for correct keyboard behavior\n matrix_init_kb();\n}\n\nuint8_t matrix_scan(void) {\n bool changed = false;\n\n // TODO: add matrix scanning routine here\n\n // Unless hardware debouncing - use the configured debounce routine\n changed = debounce(raw_matrix, matrix, MATRIX_ROWS, changed);\n\n // This *must* be called for correct keyboard behavior\n matrix_scan_kb();\n\n return changed;\n}
And also provide defaults for the following callbacks:
For a lot of people a custom keyboard is about more than sending button presses to your computer. You want to be able to do things that are more complex than simple button presses and macros. QMK has hooks that allow you to inject code, override functionality, and otherwise customize how your keyboard behaves in different situations.
This page does not assume any special knowledge about QMK, but reading Understanding QMK will help you understand what is going on at a more fundamental level.
Each of the functions described below can be defined with a _kb() suffix or a _user() suffix. We intend for you to use the _kb() suffix at the Keyboard/Revision level, while the _user() suffix should be used at the Keymap level.
When defining functions at the Keyboard/Revision level it is important that your _kb() implementation call _user() before executing anything else- otherwise the keymap level function will never be called.
By far the most common task is to change the behavior of an existing keycode or to create a new keycode. From a code standpoint the mechanism for each is very similar.
The first step to creating your own custom keycode(s) is to enumerate them. This means both naming them and assigning a unique number to that keycode. Rather than limit custom keycodes to a fixed range of numbers QMK provides the SAFE_RANGE macro. You can use SAFE_RANGE when enumerating your custom keycodes to guarantee that you get a unique number.
Here is an example of enumerating 2 keycodes. After adding this block to your keymap.c you will be able to use FOO and BAR inside your keymap.
When you want to override the behavior of an existing key, or define the behavior for a new key, you should use the process_record_kb() and process_record_user() functions. These are called by QMK during key processing before the actual key event is handled. If these functions return true QMK will process the keycodes as usual. That can be handy for extending the functionality of a key rather than replacing it. If these functions return false QMK will skip the normal key handling, and it will be up to you to send any key up or down events that are required.
These function are called every time a key is pressed or released.
This example does two things. It defines the behavior for a custom keycode called FOO, and it supplements our Enter key by playing a tone whenever it is pressed.
c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case FOO:\n if (record->event.pressed) {\n // Do something when pressed\n } else {\n // Do something else when release\n }\n return false; // Skip all further processing of this key\n case KC_ENTER:\n // Play a tone when enter is pressed\n if (record->event.pressed) {\n PLAY_SONG(tone_qwerty);\n }\n return true; // Let QMK send the enter press/release events\n default:\n return true; // Process all other keycodes normally\n }\n}
There are several steps in the keyboard initialization process. Depending on what you want to do, it will influence which function you should use.
These are the three main initialization functions, listed in the order that they're called.
keyboard_pre_init_* - Happens before most anything is started. Good for hardware setup that you want running very early.
matrix_init_* - Happens midway through the firmware's startup process. Hardware is initialized, but features may not be yet.
keyboard_post_init_* - Happens at the end of the firmware's startup process. This is where you'd want to put "customization" code, for the most part.
WARNING
For most people, the keyboard_post_init_user function is what you want to call. For instance, this is where you want to set up things for RGB Underglow.
This example, at the keyboard level, sets up B0, B1, B2, B3, and B4 as LED pins.
c
void keyboard_pre_init_user(void) {\n // Call the keyboard pre init code.\n\n // Set our LED pins as output\n gpio_set_pin_output(B0);\n gpio_set_pin_output(B1);\n gpio_set_pin_output(B2);\n gpio_set_pin_output(B3);\n gpio_set_pin_output(B4);\n}
This needs to perform the low-level initialisation of all row and column pins. By default this will initialise the input/output state of each of the GPIO pins listed in MATRIX_ROW_PINS and MATRIX_COL_PINS, based on whether or not the keyboard is set up for ROW2COL, COL2ROW, or DIRECT_PINS. Should the keyboard designer override this function, no initialisation of pin state will occur within QMK itself, instead deferring to the keyboard's override.
These three functions need to perform the low-level retrieval of matrix state of relevant input pins, based on the matrix type. Only one of the functions should be implemented, if needed. By default this will iterate through MATRIX_ROW_PINS and MATRIX_COL_PINS, configuring the inputs and outputs based on whether or not the keyboard is set up for ROW2COL, COL2ROW, or DIRECT_PINS. Should the keyboard designer override this function, no manipulation of matrix GPIO pin state will occur within QMK itself, instead deferring to the keyboard's override.
This is ran as the very last task in the keyboard initialization process. This is useful if you want to make changes to certain features, as they should be initialized by this point.
Example keyboard_post_init_user() Implementation
This example, running after everything else has initialized, sets up the rgb underglow configuration.
c
void keyboard_post_init_user(void) {\n // Call the post init code.\n rgblight_enable_noeeprom(); // enables Rgb, without saving settings\n rgblight_sethsv_noeeprom(180, 255, 255); // sets the color to teal/cyan without saving\n rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); // sets mode to Fast breathing without saving\n}
Whenever possible you should customize your keyboard by using process_record_*() and hooking into events that way, to ensure that your code does not have a negative performance impact on your keyboard. However, in rare cases it is necessary to hook into the matrix scanning. Be extremely careful with the performance of code in these functions, as it will be called at least 10 times per second.
This example has been deliberately omitted. You should understand enough about QMK internals to write this without an example before hooking into such a performance sensitive area. If you need help please open an issue or chat with us on Discord.
This function gets called at every matrix scan, which is basically as often as the MCU can handle. Be careful what you put here, as it will get run a lot.
You should use this function if you need custom matrix scanning code. It can also be used for custom status output (such as LEDs or a display) or other functionality that you want to trigger regularly even when the user isn't typing.
This function gets called at the end of all QMK processing, before starting the next iteration. You can safely assume that QMK has dealt with the last matrix scan at the time that these functions are invoked -- layer states have been updated, USB reports have been sent, LEDs have been updated, and displays have been drawn.
Similar to matrix_scan_*, these are called as often as the MCU can handle. To keep your board responsive, it's suggested to do as little as possible during these function calls, potentially throtting their behaviour if you do indeed require implementing something special.
Example void housekeeping_task_user(void) implementation
This example will show you how to use void housekeeping_task_user(void) to turn off RGB Light. For RGB Matrix, the builtinRGB_MATRIX_TIMEOUT should be used.
First, add the following lines to your keymap's config.h:
c
#define RGBLIGHT_SLEEP // enable rgblight_suspend() and rgblight_wakeup() in keymap.c\n#define RGBLIGHT_TIMEOUT 900000 // ms to wait until rgblight time out, 900K ms is 15min.
Next, add the following code to your keymap.c:
c
static uint32_t key_timer; // timer for last keyboard activity, use 32bit value and function to make longer idle time possible\nstatic void refresh_rgb(void); // refreshes the activity timer and RGB, invoke whenever any activity happens\nstatic void check_rgb_timeout(void); // checks if enough time has passed for RGB to timeout\nbool is_rgb_timeout = false; // store if RGB has timed out or not in a boolean\n\nvoid refresh_rgb(void) {\n key_timer = timer_read32(); // store time of last refresh\n if (is_rgb_timeout)\n {\n is_rgb_timeout = false;\n rgblight_wakeup();\n }\n}\nvoid check_rgb_timeout(void) {\n if (!is_rgb_timeout && timer_elapsed32(key_timer) > RGBLIGHT_TIMEOUT) // check if RGB has already timeout and if enough time has passed\n {\n rgblight_suspend();\n is_rgb_timeout = true;\n }\n}\n/* Then, call the above functions from QMK's built in post processing functions like so */\n/* Runs at the end of each scan loop, check if RGB timeout has occured or not */\nvoid housekeeping_task_user(void) {\n#ifdef RGBLIGHT_TIMEOUT\n check_rgb_timeout();\n#endif\n}\n/* Runs after each key press, check if activity occurred */\nvoid post_process_record_user(uint16_t keycode, keyrecord_t *record) {\n#ifdef RGBLIGHT_TIMEOUT\n if (record->event.pressed)\n refresh_rgb();\n#endif\n}\n/* Runs after each encoder tick, check if activity occurred */\nvoid post_encoder_update_user(uint8_t index, bool clockwise) {\n#ifdef RGBLIGHT_TIMEOUT\n refresh_rgb();\n#endif\n}
If the board supports it, it can be "idled", by stopping a number of functions. A good example of this is RGB lights or backlights. This can save on power consumption, or may be better behavior for your keyboard.
This is controlled by two functions: suspend_power_down_* and suspend_wakeup_init_*, which are called when the system board is idled and when it wakes up, respectively.
Example suspend_power_down_user() and suspend_wakeup_init_user() Implementation
c
void suspend_power_down_user(void) {\n // code will run multiple times while keyboard is suspended\n}\n\nvoid suspend_wakeup_init_user(void) {\n // code will run on keyboard wakeup\n}
This function gets called whenever the firmware is reset, whether it's a soft reset or reset to the bootloader. This is the spot to use for any sort of cleanup, as this happens right before the actual reset. And it can be useful for turning off different systems (such as RGB, onboard screens, etc).
Additionally, it differentiates between the soft reset (eg, rebooting back into the firmware) or jumping to the bootloader.
Certain tasks are performed during shutdown too. The keyboard is cleared, music and midi is stopped (if enabled), the shutdown chime is triggered (if audio is enabled), and haptic is stopped.
If jump_to_bootloader is set to true, this indicates that the board will be entering the bootloader for a new firmware flash, whereas false indicates that this is happening for a soft reset and will load the firmware agaim immediately (such as when using QK_REBOOT or QK_CLEAR_EEPROM).
As there is a keyboard and user level function, returning false for the user function will disable the keyboard level function, allowing for customization.
TIP
Bootmagic does not trigger shutdown_*() as it happens before most of the initialization process.
bool shutdown_kb(bool jump_to_bootloader) {\n if (!shutdown_user(jump_to_bootloader)) {\n return false;\n }\n\n if (jump_to_bootloader) {\n // red for bootloader\n rgb_matrix_set_color_all(RGB_OFF);\n } else {\n // off for soft reset\n rgb_matrix_set_color_all(RGB_GREEN);\n }\n // force flushing -- otherwise will never happen\n rgb_matrix_update_pwm_buffers();\n return true;\n}
bool shutdown_user(bool jump_to_bootloader) {\n if (jump_to_bootloader) {\n // red for bootloader\n rgb_matrix_set_color_all(RGB_RED);\n } else {\n // off for soft reset\n rgb_matrix_set_color_all(RGB_OFF);\n }\n // force flushing -- otherwise will never happen\n rgb_matrix_update_pwm_buffers();\n // false to not process kb level\n return false;\n}
QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers. To enable this functionality, set DEFERRED_EXEC_ENABLE = yes in rules.mk.
The first argument trigger_time is the intended time of execution. If other delays prevent executing at the exact trigger time, this allows for "catch-up" or even skipping intervals, depending on the required behaviour.
The second argument cb_arg is the same argument passed into defer_exec() below, and can be used to access state information from the original call context.
The return value is the number of milliseconds to use if the function should be repeated -- if the callback returns 0 then it's automatically unregistered. In the example above, a hypothetical my_deferred_functionality() is invoked to determine if the callback needs to be repeated -- if it does, it reschedules for a 500 millisecond delay, otherwise it informs the deferred execution background task that it's done, by returning 0.
TIP
Note that the returned delay will be applied to the intended trigger time, not the time of callback invocation. This allows for generally consistent timing even in the face of occasional late execution.
The first argument is the number of milliseconds to wait until executing my_callback -- in the case above, 1500 milliseconds, or 1.5 seconds.
The third parameter is the cb_arg that gets passed to the callback at the point of execution. This value needs to be valid at the time the callback is invoked -- a local function value will be destroyed before the callback is executed and should not be used. If this is not required, NULL should be used.
The return value is a deferred_token that can consequently be used to cancel the deferred executor callback before it's invoked. If a failure occurs, the returned value will be INVALID_DEFERRED_TOKEN. Usually this will be as a result of supplying 0 to the delay, or a NULL for the callback. The other failure case is if there are too many deferred executions "in flight" -- this can be increased by changing the limit, described below.
This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.
Historically QMK has been configured through a combination of two mechanisms- rules.mk and config.h. While this worked well when QMK was only a handful of keyboards we've grown to encompass nearly 4000 supported keyboards. That extrapolates out to 6000 configuration files under keyboards/ alone! The freeform nature of these files and the unique patterns people have used to avoid duplication have made ongoing maintenance a challenge, and a large number of our keyboards follow patterns that are outdated and sometimes harder to understand.
We have also been working on bringing the power of QMK to people who aren't comformable with a CLI, and other projects such as VIA are working to make using QMK as easy as installing a program. These tools need information about how a keyboard is laid out or what pins and features are available so that users can take full advantage of QMK. We introduced info.json as a first step towards this. The QMK API is an effort to combine these 3 sources of information- config.h, rules.mk, and info.json- into a single source of truth that end-user tools can use.
Now we have support for generating rules.mk and config.h values from info.json, allowing us to have a single source of truth. This will allow us to use automated tooling to maintain keyboards saving a lot of time and maintenance work.
QMK maintains jsonschema files in data/schemas. The values that go into keyboard-specific info.json files are kept in keyboard.jsonschema. Any value you want to make available to end users to edit must go in here.
In some cases you can simply add a new top-level key. Some examples to follow are keyboard_name, maintainer, processor, and url. This is appropriate when your option is self-contained and not directly related to other options.
In other cases you should group like options together in an object. This is particularly true when adding support for a feature. Some examples to follow for this are indicators, matrix_pins, and rgblight. If you are not sure how to integrate your new option(s) open an issue or join #cli on Discord and start a conversation there.
In most cases you can add a simple mapping. These are maintained as JSON files in data/mappings/info_config.hjson and data/mappings/info_rules.hjson, and control mapping for config.h and rules.mk, respectively. Each mapping is keyed by the config.h or rules.mk variable, and the value is a hash with the following keys:
info_key: (required) The location within info.json for this value. See below.
value_type: (optional) Default raw. The format for this variable's value. See below.
to_json: (optional) Default true. Set to false to exclude this mapping from info.json
to_c: (optional) Default true. Set to false to exclude this mapping from config.h
warn_duplicate: (optional) Default true. Set to false to turn off warning when a value exists in both places
We use JSON dot notation to address variables within info.json. For example, to access info_json["rgblight"]["split_count"] I would specify rgblight.split_count. This allows you to address deeply nested keys with a simple string.
Under the hood we use Dotty Dict, you can refer to that documentation for how these strings are converted to object access.
Most use cases can be solved by the mapping files described above. If yours can't you can instead write code to extract your config values.
Whenever QMK generates a complete info.json it extracts information from config.h and rules.mk. You will need to add code for your new config value to lib/python/qmk/info.py. Typically this means adding a new _extract_<feature>() function and then calling your function in either _extract_config_h() or _extract_rules_mk().
If you are not sure how to edit this file or are not comfortable with Python open an issue or join #cli on Discord and someone can help you with this part.
The final piece of the puzzle is providing your new option to the build system. This is done by generating two files:
.build/obj_<keyboard>_<keymap>/src/info_config.h
.build/obj_<keyboard>_<keymap>/src/rules.mk
These two files are generated by the code here:
lib/python/qmk/cli/generate/config_h.py
lib/python/qmk/cli/generate/rules_mk.py
For config.h values you'll need to write a function for your rule(s) and call that function in generate_config_h().
If you have a new top-level info.json key for rules.mk you can simply add your keys to info_to_rules at the top of lib/python/qmk/cli/generate/rules_mk.py. Otherwise you'll need to create a new if block for your feature in generate_rules_mk().
', 38);
+const _hoisted_39 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_39);
+}
+const data_driven_config = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ data_driven_config as default
+};
diff --git a/assets/data_driven_config.md.3iL4-P4O.lean.js b/assets/data_driven_config.md.3iL4-P4O.lean.js
new file mode 100644
index 0000000..c61f881
--- /dev/null
+++ b/assets/data_driven_config.md.3iL4-P4O.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Data Driven Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"data_driven_config.md","filePath":"data_driven_config.md"}');
+const _sfc_main = { name: "data_driven_config.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 38);
+const _hoisted_39 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_39);
+}
+const data_driven_config = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ data_driven_config as default
+};
diff --git a/assets/documentation_best_practices.md.CsnEVROI.js b/assets/documentation_best_practices.md.CsnEVROI.js
new file mode 100644
index 0000000..6453077
--- /dev/null
+++ b/assets/documentation_best_practices.md.CsnEVROI.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Documentation Best Practices","description":"","frontmatter":{},"headers":[],"relativePath":"documentation_best_practices.md","filePath":"documentation_best_practices.md"}');
+const _sfc_main = { name: "documentation_best_practices.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This page exists to document best practices when writing documentation for QMK. Following these guidelines will help to keep a consistent tone and style, which will in turn help other people more easily understand QMK.
Your documentation page should generally start with an H1 heading, followed by a 1 paragraph description of what the user will find on this page. Keep in mind that this heading and paragraph will sit next to the Table of Contents, so keep the heading short and avoid long strings with no whitespace.
Example:
# My Page Title\n\nThis page covers my super cool feature. You can use this feature to make coffee, squeeze fresh oj, and have an egg mcmuffin and hashbrowns delivered from your local macca's by drone.
Your page should generally have multiple "H1" headings. Only H1 and H2 headings will included in the Table of Contents, so plan them out appropriately. Excess width should be avoided in H1 and H2 headings to prevent the Table of Contents from getting too wide.
If you create a new feature for QMK, create a documentation page for it. It doesn't have to be very long, a few sentences describing your feature and a table listing any relevant keycodes is enough. Here is a basic template:
markdown
# My Cool Feature\n\nThis page describes my cool feature. You can use my cool feature to make coffee and order cream and sugar to be delivered via drone.\n\n## My Cool Feature Keycodes\n\n|Long Name|Short Name|Description|\n|---------|----------|-----------|\n|KC_COFFEE||Make Coffee|\n|KC_CREAM||Order Cream|\n|KC_SUGAR||Order Sugar|
Place your documentation into docs/features/<my_cool_feature>.md, and add that file to the appropriate place in docs/_sidebar.json. If you have added any keycodes be sure to add them to docs/keycodes.md with a link back to your feature page.
', 22);
+const _hoisted_23 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_23);
+}
+const documentation_best_practices = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ documentation_best_practices as default
+};
diff --git a/assets/documentation_best_practices.md.CsnEVROI.lean.js b/assets/documentation_best_practices.md.CsnEVROI.lean.js
new file mode 100644
index 0000000..dd423b6
--- /dev/null
+++ b/assets/documentation_best_practices.md.CsnEVROI.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Documentation Best Practices","description":"","frontmatter":{},"headers":[],"relativePath":"documentation_best_practices.md","filePath":"documentation_best_practices.md"}');
+const _sfc_main = { name: "documentation_best_practices.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 22);
+const _hoisted_23 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_23);
+}
+const documentation_best_practices = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ documentation_best_practices as default
+};
diff --git a/assets/documentation_templates.md.Bzrbq1wQ.js b/assets/documentation_templates.md.Bzrbq1wQ.js
new file mode 100644
index 0000000..439b28f
--- /dev/null
+++ b/assets/documentation_templates.md.Bzrbq1wQ.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Documentation Templates","description":"","frontmatter":{},"headers":[],"relativePath":"documentation_templates.md","filePath":"documentation_templates.md"}');
+const _sfc_main = { name: "documentation_templates.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Most keymaps have an image depicting the layout. You can use Keyboard Layout Editor to create an image. Upload it to Imgur or another hosting service, please do not include images in your Pull Request.
Below the image you should write a short description to help people understand your keymap.
![Clueboard Layout Image](https://i.imgur.com/7Capi8W.png)\n\n# Default Clueboard Layout\n\nThis is the default layout that comes flashed on every Clueboard. For the most\npart it's a straightforward and easy to follow layout. The only unusual key is\nthe key in the upper left, which sends Escape normally, but Grave when any of\nthe Ctrl, Alt, or GUI modifiers are held down.
# Planck\n\n![Planck](https://i.imgur.com/q2M3uEU.jpg)\n\nA compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](https://qmk.fm/planck/)\n\n* Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)\n* Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, Teensy 2.0\n* Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)\n\nMake example for this keyboard (after setting up your build environment):\n\n make planck/rev4:default\n\nFlashing example for this keyboard:\n\n make planck/rev4:default:flash\n\nSee the [build environment setup](getting_started_build_tools) and the [make instructions](getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](newbs).\n\n## Bootloader\n\nEnter the bootloader in 3 ways:\n\n* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard\n* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead\n* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
', 8);
+const _hoisted_9 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_9);
+}
+const documentation_templates = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ documentation_templates as default
+};
diff --git a/assets/documentation_templates.md.Bzrbq1wQ.lean.js b/assets/documentation_templates.md.Bzrbq1wQ.lean.js
new file mode 100644
index 0000000..e3a225b
--- /dev/null
+++ b/assets/documentation_templates.md.Bzrbq1wQ.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Documentation Templates","description":"","frontmatter":{},"headers":[],"relativePath":"documentation_templates.md","filePath":"documentation_templates.md"}');
+const _sfc_main = { name: "documentation_templates.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 8);
+const _hoisted_9 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_9);
+}
+const documentation_templates = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ documentation_templates as default
+};
diff --git a/assets/driver_installation_zadig.md.Dy2kYHSK.js b/assets/driver_installation_zadig.md.Dy2kYHSK.js
new file mode 100644
index 0000000..a3e08ae
--- /dev/null
+++ b/assets/driver_installation_zadig.md.Dy2kYHSK.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Bootloader Driver Installation with Zadig","description":"","frontmatter":{},"headers":[],"relativePath":"driver_installation_zadig.md","filePath":"driver_installation_zadig.md"}');
+const _sfc_main = { name: "driver_installation_zadig.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
QMK presents itself to the host as a regular HID keyboard device, and as such requires no special drivers. However, in order to flash your keyboard on Windows, the bootloader device that appears when you reset the board often does.
There are two notable exceptions: the Caterina bootloader, usually seen on Pro Micros, and the HalfKay bootloader shipped with PJRC Teensys, appear as a serial port and a generic HID device respectively, and so do not require a driver.
We recommend the use of the Zadig utility. If you have set up the development environment with MSYS2, the qmk_install.sh script will have already installed the drivers for you.
Put your keyboard into bootloader mode, either by hitting the QK_BOOT keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+B as you plug it in (see the Bootmagic docs for more details). Some boards use Command instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+B or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in. Some keyboards may have specific instructions for entering the bootloader. For example, the Bootmagic key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure.
To put a device in bootloader mode with USBaspLoader, tap the RESET button while holding down the BOOT button. Alternatively, hold BOOT while inserting the USB cable.
Zadig should automatically detect the bootloader device, but you may sometimes need to check Options → List All Devices and select the device from the dropdown instead.
WARNING
If Zadig lists one or more devices with the HidUsb driver, your keyboard is probably not in bootloader mode. The arrow will be colored orange and you will be asked to confirm modifying a system driver. Do not proceed if this is the case!
If the arrow appears green, select the driver, and click Install Driver. See the list of known bootloaders for the correct driver to install.
Finally, unplug and replug the keyboard to make sure the new driver has been loaded. If you are using the QMK Toolbox to flash, exit and restart it too, as it can sometimes fail to recognize the driver change.
If you find that you can no longer type with the keyboard, you may have accidentally replaced the driver for the keyboard itself instead of for the bootloader. This can happen when the keyboard is not in the bootloader mode. You can easily confirm this in Zadig - a healthy keyboard has the HidUsb driver installed on all of its interfaces:
Open the Device Manager, select View → Devices by container, and look for an entry with your keyboard's name.
Right-click each entry and hit Uninstall device. Make sure to tick Delete the driver software for this device first if it appears.
Click Action → Scan for hardware changes. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the HidUsb driver. If so, you're all done, and your board should be functional again! Otherwise, repeat this process until Zadig reports the correct driver.
TIP
A full reboot of your computer may sometimes be necessary at this point, to get Windows to pick up the new driver.
Uninstallation of bootloader devices is a little more involved than installation.
Open the Device Manager, select View → Devices by container, and look for the bootloader device. Match up the USB VID and PID in Zadig with one from the table below.
Find the Inf name value in the Details tab of the device properties. This should generally be something like oemXX.inf:
Then, open a new Command Prompt window as an Administrator (type in cmd into the Start menu and press Ctrl+Shift+Enter). Run pnputil /enum-drivers to verify the Inf name matches the Published Name field of one of the entries:
Run pnputil /delete-driver oemXX.inf /uninstall. This will delete the driver and remove it from any devices using it. Note that this will not uninstall the device itself.
As with the previous section, this process may need to be repeated multiple times, as multiple drivers can be applicable to the same device.
WARNING
Be extremely careful when doing this! You could potentially uninstall the driver for some other critical device. If you are unsure, double check the output of /enum-drivers, and omit the /uninstall flag when running /delete-driver.
This is a list of known bootloader devices and their USB vendor and product IDs, as well as the correct driver to assign for flashing with QMK. Note that the usbser and HidUsb drivers are built in to Windows, and cannot be assigned with Zadig - if your device has an incorrect driver, you must use the Device Manager to uninstall it as described in the previous section.
The device name here is the name that appears in Zadig, and may not be what the Device Manager or QMK Toolbox displays.
Bootloader
Device Name
VID/PID
Driver
atmel-dfu
ATmega16u2 DFU
03EB:2FEF
WinUSB
atmel-dfu
ATmega32U2 DFU
03EB:2FF0
WinUSB
atmel-dfu
ATm16U4 DFU V1.0.2
03EB:2FF3
WinUSB
atmel-dfu
ATm32U4DFU
03EB:2FF4
WinUSB
atmel-dfu
none (AT90USB64)
03EB:2FF9
WinUSB
atmel-dfu
AT90USB128 DFU
03EB:2FFB
WinUSB
qmk-dfu
(keyboard name) Bootloader
As atmel-dfu
WinUSB
halfkay
none
16C0:0478
HidUsb
caterina
Pro Micro 3.3V
1B4F:9203
usbser
caterina
Pro Micro 5V
1B4F:9205
usbser
caterina
LilyPadUSB
1B4F:9207
usbser
caterina
Pololu A-Star 32U4 Bootloader
1FFB:0101
usbser
caterina
Arduino Leonardo
2341:0036
usbser
caterina
Arduino Micro
2341:0037
usbser
caterina
Adafruit Feather 32u4
239A:000C
usbser
caterina
Adafruit ItsyBitsy 32u4 3V
239A:000D
usbser
caterina
Adafruit ItsyBitsy 32u4 5V
239A:000E
usbser
caterina
Arduino Leonardo
2A03:0036
usbser
caterina
Arduino Micro
2A03:0037
usbser
bootloadhid
HIDBoot
16C0:05DF
HidUsb
usbasploader
USBasp
16C0:05DC
libusbK
apm32-dfu
APM32 DFU ISP Mode
314B:0106
WinUSB
stm32-dfu
STM32 BOOTLOADER
0483:DF11
WinUSB
gd32v-dfu
GD32V BOOTLOADER
28E9:0189
WinUSB
kiibohd
Kiibohd DFU Bootloader
1C11:B007
WinUSB
stm32duino
Maple 003
1EAF:0003
WinUSB
qmk-hid
(keyboard name) Bootloader
03EB:2067
HidUsb
', 35);
+const _hoisted_36 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_36);
+}
+const driver_installation_zadig = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ driver_installation_zadig as default
+};
diff --git a/assets/driver_installation_zadig.md.Dy2kYHSK.lean.js b/assets/driver_installation_zadig.md.Dy2kYHSK.lean.js
new file mode 100644
index 0000000..059a36b
--- /dev/null
+++ b/assets/driver_installation_zadig.md.Dy2kYHSK.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Bootloader Driver Installation with Zadig","description":"","frontmatter":{},"headers":[],"relativePath":"driver_installation_zadig.md","filePath":"driver_installation_zadig.md"}');
+const _sfc_main = { name: "driver_installation_zadig.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 35);
+const _hoisted_36 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_36);
+}
+const driver_installation_zadig = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ driver_installation_zadig as default
+};
diff --git a/assets/drivers_adc.md.B7GhN9cb.js b/assets/drivers_adc.md.B7GhN9cb.js
new file mode 100644
index 0000000..9f98630
--- /dev/null
+++ b/assets/drivers_adc.md.B7GhN9cb.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"ADC Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/adc.md","filePath":"drivers/adc.md"}');
+const _sfc_main = { name: "drivers/adc.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
QMK can leverage the Analog-to-Digital Converter (ADC) on supported MCUs to measure voltages on certain pins. This can be useful for implementing things such as battery level indicators for Bluetooth keyboards, or volume controls using a potentiometer, as opposed to a rotary encoder.
This driver currently supports both AVR and a limited selection of ARM devices. The values returned are 10-bit integers (0-1023) mapped between 0V and VCC (usually 5V or 3.3V for AVR, 3.3V only for ARM), however on ARM there is more flexibility in control of operation through #defines if you need more precision.
* The ATmega328/P possesses two extra ADC channels; however, they are not present on the DIP pinout, and are not shared with GPIO pins. You can use adc_read() directly to gain access to these.
Note that some of these pins are doubled-up on ADCs with the same channel. This is because the pins can be used for either ADC.
Also note that the F0 and F3 use different numbering schemes. The F0 has a single ADC and the channels are 0-indexed, whereas the F3 has 4 ADCs and the channels are 1-indexed. This is because the F0 uses the ADCv1 implementation of the ADC, whereas the F3 uses the ADCv3 implementation.
ADC
Channel
STM32F0xx
STM32F1xx
STM32F3xx
STM32F4xx
1
0
A0
A0
A0
1
1
A1
A1
A0
A1
1
2
A2
A2
A1
A2
1
3
A3
A3
A2
A3
1
4
A4
A4
A3
A4
1
5
A5
A5
F4
A5
1
6
A6
A6
C0
A6
1
7
A7
A7
C1
A7
1
8
B0
B0
C2
B0
1
9
B1
B1
C3
B1
1
10
C0
C0
F2
C0
1
11
C1
C1
C1
1
12
C2
C2
C2
1
13
C3
C3
C3
1
14
C4
C4
C4
1
15
C5
C5
C5
1
16
2
0
A0¹
A0²
2
1
A1¹
A4
A1²
2
2
A2¹
A5
A2²
2
3
A3¹
A6
A3²
2
4
A4¹
A7
A4²
2
5
A5¹
C4
A5²
2
6
A6¹
C0
A6²
2
7
A7¹
C1
A7²
2
8
B0¹
C2
B0²
2
9
B1¹
C3
B1²
2
10
C0¹
F2
C0²
2
11
C1¹
C5
C1²
2
12
C2¹
B2
C2²
2
13
C3¹
C3²
2
14
C4¹
C4²
2
15
C5¹
C5²
2
16
3
0
A0¹
A0²
3
1
A1¹
B1
A1²
3
2
A2¹
E9
A2²
3
3
A3¹
E13
A3²
3
4
F6¹
F6²
3
5
F7¹
B13
F7²
3
6
F8¹
E8
F8²
3
7
F9¹
D10
F9²
3
8
F10¹
D11
F10²
3
9
D12
F3²
3
10
C0¹
D13
C0²
3
11
C1¹
D14
C1²
3
12
C2¹
B0
C2²
3
13
C3¹
E7
C3²
3
14
E10
F4²
3
15
E11
F5²
3
16
E12
4
1
E14
4
2
E15
4
3
B12
4
4
B14
4
5
B15
4
6
E8
4
7
D10
4
8
D11
4
9
D12
4
10
D13
4
11
D14
4
12
D8
4
13
D9
4
14
4
15
4
16
¹ As of ChibiOS 20.3.4, the ADC driver for STM32F1xx devices supports only ADC1, therefore any configurations involving ADC2 or ADC3 cannot actually be used. In particular, pins F6…F10, which are present at least on some STM32F103x[C-G] devices, cannot be used as ADC inputs because of this driver limitation.
² Not all STM32F4xx devices have ADC2 and/or ADC3, therefore some configurations shown in this table may be unavailable; in particular, pins F4…F10 cannot be used as ADC inputs on devices which do not have ADC3. Check the device datasheet to confirm which pin functions are supported.
RP2040 has only a single ADC (ADCD1 in ChibiOS); in the QMK API the index for that ADC is 0.
Channel
Pin
0
GP26
1
GP27
2
GP28
3
GP29
4
Temperature sensor*
* The temperature sensor is disabled by default and needs to be enabled by the RP2040-specific function: adcRPEnableTS(&ADCD1). The ADC must be initialized before calling that function; an easy way to ensure that is to perform a dummy conversion.
Reads the value from the specified pin, eg. A0 for channel 0 on the STM32F0 and ADC1 channel 1 on the STM32F3. Note that if a pin can be used for multiple ADCs, it will pick the lower numbered ADC for this function. eg. C0 will be channel 6 of ADC 1 when it could be used for ADC 2 as well.
analogReadPinAdc(pin, adc)
Reads the value from the specified pin and ADC, eg. C0, 1 will read from channel 6, ADC 2 instead of ADC 1. Note that the ADCs are 0-indexed for this function.
pinToMux(pin)
Translates a given pin to a channel and ADC combination. If an unsupported pin is given, returns the mux value for "0V (GND)".
adc_read(mux)
Reads the value from the ADC according to the specified pin and ADC combination. See your MCU's datasheet for more information.
The ARM implementation of the ADC has a few additional options that you can override in your own keyboards and keymaps to change how it operates. Please consult the corresponding hal_adc_lld.h in ChibiOS for your specific microcontroller for further documentation on your available options.
#define
Type
Default
Description
ADC_CIRCULAR_BUFFER
bool
false
If true, then the implementation will use a circular buffer.
ADC_NUM_CHANNELS
int
1
Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports 1.
ADC_BUFFER_DEPTH
int
2
Sets the depth of each result. Since we are only getting a 10-bit result by default, we set this to 2 bytes so we can contain our one value. This could be set to 1 if you opt for an 8-bit or lower result.
ADC_SAMPLING_RATE
int
ADC_SMPR_SMP_1P5
Sets the sampling rate of the ADC. By default, it is set to the fastest setting.
ADC_RESOLUTION
int
ADC_CFGR1_RES_10BIT or ADC_CFGR_RES_10BITS
The resolution of your result. We choose 10 bit by default, but you can opt for 12, 10, 8, or 6 bit. Different MCUs use slightly different names for the resolution constants.
', 32);
+const _hoisted_33 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_33);
+}
+const adc = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ adc as default
+};
diff --git a/assets/drivers_adc.md.B7GhN9cb.lean.js b/assets/drivers_adc.md.B7GhN9cb.lean.js
new file mode 100644
index 0000000..8cefdc2
--- /dev/null
+++ b/assets/drivers_adc.md.B7GhN9cb.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"ADC Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/adc.md","filePath":"drivers/adc.md"}');
+const _sfc_main = { name: "drivers/adc.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 32);
+const _hoisted_33 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_33);
+}
+const adc = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ adc as default
+};
diff --git a/assets/drivers_apa102.md.DRKqdW0M.js b/assets/drivers_apa102.md.DRKqdW0M.js
new file mode 100644
index 0000000..b39abab
--- /dev/null
+++ b/assets/drivers_apa102.md.DRKqdW0M.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"APA102 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/apa102.md","filePath":"drivers/apa102.md"}');
+const _sfc_main = { name: "drivers/apa102.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
In most cases, the APA102 driver code is automatically included if you are using either the RGBLight or RGB Matrix feature with the apa102 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add the following to your rules.mk:
make
APA102_DRIVER_REQUIRED = yes
You can then call the APA102 API by including apa102.h in your code.
The Audio feature breaks the hardware specifics out into separate, exchangeable driver units, with a common interface to the audio-"core" - which itself handles playing songs and notes while tracking their progress in an internal state, initializing/starting/stopping the driver as needed.
Not all MCUs support every available driver, either the platform-support is not there (yet?) or the MCU simply does not have the required hardware peripheral.
For Arm based boards, QMK depends on ChibiOS - hence any MCU supported by the later is likely usable, as long as certain hardware peripherals are available.
Supported wiring configurations, with their ChibiOS/MCU peripheral requirement are listed below; piezo speakers are marked with 1️⃣ for the first/primary and 2️⃣ for the secondary.
driver
GPTD6 Tim6
GPTD7 Tim7
GPTD8 Tim8
PWMD11 Tim1_Ch1
dac_basic
A4+DACD1 = 1️⃣
A5+DACD2 = 1️⃣
state
A4+DACD1 = 1️⃣ + Gnd
A5+DACD2 = 2️⃣ + Gnd
state
A4+DACD1 = 2️⃣ + Gnd
A5+DACD2 = 1️⃣ + Gnd
state
A4+DACD1 = 1️⃣ + Gnd
state
A5+DACD2 = 1️⃣ + Gnd
state
dac_additive
A4+DACD1 = 1️⃣ + Gnd
A5+DACD2 = 1️⃣ + Gnd
A4+DACD1 + A5+DACD2 = 1️⃣ 2
pwm_software
state-update
any = 1️⃣
pwm hardware
state-update
A8 = 1️⃣ 3
1: the routing and alternate functions for PWM differ sometimes between STM32 MCUs, if in doubt consult the data-sheet 2: one piezo connected to A4 and A5, with AUDIO_PIN_ALT_AS_NEGATIVE set 3: TIM1_CH1 = A8 on STM32F103C8, other combinations are possible, see Data-sheet. configured with: AUDIO_PWM_DRIVER and AUDIO_PWM_CHANNEL
The default driver for ARM boards, in absence of an overriding configuration. This driver needs one Timer per enabled/used DAC channel, to trigger conversion; and a third timer to trigger state updates with the audio-core.
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timers 6, 7 and 8:
Highest value allowed. Lower value means lower volume. And 4095U is the upper limit, since this is limited to a 12 bit value. Only effects non-pregenerated samples.
AUDIO_DAC_OFF_VALUE
AUDIO_DAC_SAMPLE_MAX / 2
The value of the DAC when not playing anything. Some setups may require a high (AUDIO_DAC_SAMPLE_MAX) or low (0) value here.
AUDIO_MAX_SIMULTANEOUS_TONES
see next table
The number of tones that can be played simultaneously. A value that is too high may freeze the controller or glitch out when too many tones are being played.
AUDIO_DAC_SAMPLE_RATE
see next table
Effective bit rate of the DAC (in hertz), higher limits simultaneous tones, and lower sacrifices quality.
AUDIO_DAC_BUFFER_SIZE
see next table
Number of samples generated every refill. Too few may cause excessive CPU load; too many may cause freezes, RAM or flash exhaustion or lags during matrix scanning.
There are a number of predefined quality settings that you can use, with "sane minimum" being the default. You can use custom values by simply defining the sample rate, number of simultaneous tones and buffer size, instead of using one of the listed presets.
By default, the buffer size attempts to keep to these constraints:
The interval between buffer refills can't be too short, since the microcontroller would then only be servicing buffer refills and would freeze up.
On the additive driver, the interval between buffer refills can't be too long, since matrix scanning would suffer lengthy pauses every so often, which would delay key presses or releases or lose some short taps altogether.
The interval between buffer refills is kept to a minimum, which allows notes to stop as soon as possible after they should.
For greater compatibility, the buffer size should be a power of 2.
The buffer size being too large causes resource exhaustion leading to build failures or freezing at runtime: RAM usage (on the additive driver) or flash usage (on the basic driver).
You can lower the buffer size if you need a bit more space in your firmware, or raise it if your keyboard freezes up.
c
/* zero crossing (or approach, whereas zero == DAC_OFF_VALUE, which can be configured to anything from 0 to DAC_SAMPLE_MAX)\n * ============================*=*========================== AUDIO_DAC_SAMPLE_MAX\n * * *\n * * *\n * ---------------------------------------------------------\n * * * } AUDIO_DAC_SAMPLE_MAX/100\n * --------------------------------------------------------- AUDIO_DAC_OFF_VALUE\n * * * } AUDIO_DAC_SAMPLE_MAX/100\n * ---------------------------------------------------------\n * *\n * * *\n * * *\n * =====*=*================================================= 0x0\n */
This driver uses the ChibiOS-PWM system to produce a square-wave on specific output pins that are connected to the PWM hardware. The hardware directly toggles the pin via its alternate function. See your MCU's data-sheet for which pin can be driven by what timer - looking for TIMx_CHy and the corresponding alternate function.
A configuration example for the STM32F103C8 would be:
ChibiOS uses GPIOv1 for the F103, which only knows of one alternate function. On 'larger' STM32s, GPIOv2 or GPIOv3 are used; with them it is also necessary to configure AUDIO_PWM_PAL_MODE to the correct alternate function for the selected pin, timer and timer-channel.
You can also use the Complementary output (TIMx_CHyN) for PWM on supported controllers. To enable this functionality, you will need to make the following changes:
This driver uses the PWM callbacks from PWMD1 with TIM1_CH1 to toggle the selected AUDIO_PIN in software. During the same callback, with AUDIO_PIN_ALT_AS_NEGATIVE set, the AUDIO_PIN_ALT is toggled inversely to AUDIO_PIN. This is useful for setups that drive a piezo from two pins (instead of one and Gnd).
You can also change the timer used for software PWM by defining the driver. For instance:
The AW20216S driver code is automatically included if you are using the RGB Matrix feature with the aw20216s driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
The EEPROM driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.
Selecting the EEPROM driver is done in your keyboard's rules.mk:
Driver
Description
EEPROM_DRIVER = vendor (default)
Uses the on-chip driver provided by the chip manufacturer. For AVR, this is provided by avr-libc. This is supported on ARM for a subset of chips -- STM32F3xx, STM32F1xx, and STM32F072xB will be emulated by writing to flash. STM32L0xx and STM32L1xx will use the onboard dedicated true EEPROM. Other chips will generally act as "transient" below.
EEPROM_DRIVER = i2c
Supports writing to I2C-based 24xx EEPROM chips. See the driver section below.
EEPROM_DRIVER = spi
Supports writing to SPI-based 25xx EEPROM chips. See the driver section below.
EEPROM_DRIVER = transient
Fake EEPROM driver -- supports reading/writing to RAM, and will be discarded when power is lost.
EEPROM_DRIVER = wear_leveling
Frontend driver for the wear_leveling system, allowing for EEPROM emulation on top of flash -- both in-MCU and external SPI NOR flash.
Currently QMK supports 24xx-series chips over I2C. As such, requires a working i2c_master driver configuration. You can override the driver configuration via your config.h:
config.h override
Description
Default Value
#define EXTERNAL_EEPROM_I2C_BASE_ADDRESS
Base I2C address for the EEPROM -- shifted left by 1 as per i2c_master requirements
0b10100000
#define EXTERNAL_EEPROM_I2C_ADDRESS(addr)
Calculated I2C address for the EEPROM
(EXTERNAL_EEPROM_I2C_BASE_ADDRESS)
#define EXTERNAL_EEPROM_BYTE_COUNT
Total size of the EEPROM in bytes
8192
#define EXTERNAL_EEPROM_PAGE_SIZE
Page size of the EEPROM in bytes, as specified in the datasheet
32
#define EXTERNAL_EEPROM_ADDRESS_SIZE
The number of bytes to transmit for the memory location within the EEPROM
2
#define EXTERNAL_EEPROM_WRITE_TIME
Write cycle time of the EEPROM, as specified in the datasheet
5
#define EXTERNAL_EEPROM_WP_PIN
If defined the WP pin will be toggled appropriately when writing to the EEPROM.
none
Some I2C EEPROM manufacturers explicitly recommend against hardcoding the WP pin to ground. This is in order to protect the eeprom memory content during power-up/power-down/brown-out conditions at low voltage where the eeprom is still operational, but the i2c master output might be unpredictable. If a WP pin is configured, then having an external pull-up on the WP pin is recommended.
Default values and extended descriptions can be found in drivers/eeprom/eeprom_i2c.h.
Alternatively, there are pre-defined hardware configurations for available chips/modules:
If you find that the EEPROM is not cooperating, ensure you've correctly shifted up your EEPROM address by 1. For example, the datasheet might state the address as 0b01010000 -- the correct value of EXTERNAL_EEPROM_I2C_BASE_ADDRESS needs to be 0b10100000.
Currently QMK supports 25xx-series chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h:
config.h override
Default Value
Description
#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN
none
SPI Slave select pin in order to inform that the EEPROM is currently being addressed
#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR
64
Clock divisor used to divide the peripheral clock to derive the SPI frequency
#define EXTERNAL_EEPROM_BYTE_COUNT
8192
Total size of the EEPROM in bytes
#define EXTERNAL_EEPROM_PAGE_SIZE
32
Page size of the EEPROM in bytes, as specified in the datasheet
#define EXTERNAL_EEPROM_ADDRESS_SIZE
2
The number of bytes to transmit for the memory location within the EEPROM
Default values and extended descriptions can be found in drivers/eeprom/eeprom_spi.h.
Alternatively, there are pre-defined hardware configurations for available chips/modules:
The wear-leveling driver uses an algorithm to minimise the number of erase cycles on the underlying MCU flash memory.
There is no specific configuration for this driver, but the wear-leveling system used by this driver may need configuration. See the wear-leveling configuration section for more information.
The wear-leveling driver has a few possible backing stores that may be used by adding to your keyboard's rules.mk file:
Driver
Description
WEAR_LEVELING_DRIVER = embedded_flash
This driver is used for emulating EEPROM by writing to embedded flash on the MCU.
WEAR_LEVELING_DRIVER = spi_flash
This driver is used to address external SPI NOR Flash peripherals.
WEAR_LEVELING_DRIVER = rp2040_flash
This driver is used to write to the same storage the RP2040 executes code from.
WEAR_LEVELING_DRIVER = legacy
This driver is the "legacy" emulated EEPROM provided in historical revisions of QMK. Currently used for STM32F0xx and STM32F4x1, but slated for deprecation and removal once embedded_flash support for those MCU families is complete.
WARNING
All wear-leveling drivers require an amount of RAM equivalent to the selected logical EEPROM size. Increasing the size to 32kB of EEPROM requires 32kB of RAM, which a significant number of MCUs simply do not have.
This driver performs writes to the embedded flash storage embedded in the MCU. In most circumstances, the last few of sectors of flash are used in order to minimise the likelihood of collision with program code.
Configurable options in your keyboard's config.h:
config.h override
Default
Description
#define WEAR_LEVELING_EFL_FIRST_SECTOR
unset
The first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration.
#define WEAR_LEVELING_EFL_FLASH_SIZE
unset
Allows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting.
#define WEAR_LEVELING_EFL_OMIT_LAST_SECTOR_COUNT
0
Number of sectors to omit at the end of the flash. These sectors will not be allocated to the driver and the usable flash block will be offset, but keeping the set flash size. Useful on devices with bootloaders requiring a check flag at the end of flash to be present in order to confirm a valid, bootable firmware.
#define WEAR_LEVELING_LOGICAL_SIZE
(backing_size/2)
Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
#define WEAR_LEVELING_BACKING_SIZE
2048
Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
#define BACKING_STORE_WRITE_SIZE
automatic
The byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly.
WARNING
If your MCU does not boot after swapping to the EFL wear-leveling driver, it's likely that the flash size is incorrectly detected, usually as an MCU with larger flash and may require overriding.
This driver performs writes to an external SPI NOR Flash peripheral. It also requires a working configuration for the SPI NOR Flash peripheral -- see the flash driver documentation for more information.
Configurable options in your keyboard's config.h:
config.h override
Default
Description
#define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_COUNT
1
Number of blocks in the external flash used by the wear-leveling algorithm.
#define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET
0
The index first block in the external flash used by the wear-leveling algorithm.
#define WEAR_LEVELING_LOGICAL_SIZE
((block_count*block_size)/2)
Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. Result must be <= 64kB.
#define WEAR_LEVELING_BACKING_SIZE
(block_count*block_size)
Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
#define BACKING_STORE_WRITE_SIZE
8
The write width used whenever a write is performed on the external flash peripheral.
WARNING
There is currently a limit of 64kB for the EEPROM subsystem within QMK, so using a larger flash is not going to be beneficial as the logical size cannot be increased beyond 65536. The backing size may be increased to a larger value, but erase timing may suffer as a result.
This driver performs writes to the same underlying storage that the RP2040 executes its code.
Configurable options in your keyboard's config.h:
config.h override
Default
Description
#define WEAR_LEVELING_RP2040_FLASH_SIZE
PICO_FLASH_SIZE_BYTES
Number of bytes of flash on the board.
#define WEAR_LEVELING_RP2040_FLASH_BASE
(flash_size-sector_size)
The byte-wise location that the backing storage should be located.
#define WEAR_LEVELING_LOGICAL_SIZE
(backing_size/2)
Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
#define WEAR_LEVELING_BACKING_SIZE
8192
Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size as well as the sector size.
#define BACKING_STORE_WRITE_SIZE
2
The write width used whenever a write is performed on the external flash peripheral.
This driver performs writes to the embedded flash storage embedded in the MCU much like the normal Embedded Flash Driver, and is only for use with STM32F0xx and STM32F4x1 devices. This flash implementation is still currently provided as the EFL driver is currently non-functional for the previously mentioned families.
By default, 1024 bytes of emulated EEPROM is provided:
MCU
EEPROM Provided
Flash Used
STM32F042
1024 bytes
2048 bytes
STM32F070
1024 bytes
2048 bytes
STM32F072
1024 bytes
2048 bytes
STM32F401
1024 bytes
16384 bytes
STM32F411
1024 bytes
16384 bytes
Under normal circumstances configuration of this driver requires intimate knowledge of the MCU's flash structure -- reconfiguration is at your own risk and will require referring to the code.
', 53);
+const _hoisted_54 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_54);
+}
+const eeprom = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ eeprom as default
+};
diff --git a/assets/drivers_eeprom.md.Cops4y84.lean.js b/assets/drivers_eeprom.md.Cops4y84.lean.js
new file mode 100644
index 0000000..b18eaab
--- /dev/null
+++ b/assets/drivers_eeprom.md.Cops4y84.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"EEPROM Driver Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/eeprom.md","filePath":"drivers/eeprom.md"}');
+const _sfc_main = { name: "drivers/eeprom.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 53);
+const _hoisted_54 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_54);
+}
+const eeprom = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ eeprom as default
+};
diff --git a/assets/drivers_flash.md.NiyC5VbL.js b/assets/drivers_flash.md.NiyC5VbL.js
new file mode 100644
index 0000000..f0b96e5
--- /dev/null
+++ b/assets/drivers_flash.md.NiyC5VbL.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"FLASH Driver Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/flash.md","filePath":"drivers/flash.md"}');
+const _sfc_main = { name: "drivers/flash.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Currently QMK supports almost all NOR Flash chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h:
config.h override
Description
Default Value
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN
SPI Slave select pin in order to inform that the FLASH is currently being addressed
none
#define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR
Clock divisor used to divide the peripheral clock to derive the SPI frequency
8
#define EXTERNAL_FLASH_PAGE_SIZE
The Page size of the FLASH in bytes, as specified in the datasheet
256
#define EXTERNAL_FLASH_SECTOR_SIZE
The sector size of the FLASH in bytes, as specified in the datasheet
(4 * 1024)
#define EXTERNAL_FLASH_BLOCK_SIZE
The block size of the FLASH in bytes, as specified in the datasheet
(64 * 1024)
#define EXTERNAL_FLASH_SIZE
The total size of the FLASH in bytes, as specified in the datasheet
(512 * 1024)
#define EXTERNAL_FLASH_ADDRESS_SIZE
The Flash address size in bytes, as specified in datasheet
3
WARNING
All the above default configurations are based on MX25L4006E NOR Flash.
', 7);
+const _hoisted_8 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_8);
+}
+const flash = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ flash as default
+};
diff --git a/assets/drivers_flash.md.NiyC5VbL.lean.js b/assets/drivers_flash.md.NiyC5VbL.lean.js
new file mode 100644
index 0000000..40d926a
--- /dev/null
+++ b/assets/drivers_flash.md.NiyC5VbL.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"FLASH Driver Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/flash.md","filePath":"drivers/flash.md"}');
+const _sfc_main = { name: "drivers/flash.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 7);
+const _hoisted_8 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_8);
+}
+const flash = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ flash as default
+};
diff --git a/assets/drivers_gpio.md.B3iXussG.js b/assets/drivers_gpio.md.B3iXussG.js
new file mode 100644
index 0000000..19428d3
--- /dev/null
+++ b/assets/drivers_gpio.md.B3iXussG.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"GPIO Control","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/gpio.md","filePath":"drivers/gpio.md"}');
+const _sfc_main = { name: "drivers/gpio.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
QMK has a GPIO control abstraction layer which is microcontroller agnostic. This is done to allow easy access to pin control across different platforms.
Each microcontroller can have multiple advanced settings regarding its GPIO. This abstraction layer does not limit the use of architecture-specific functions. Advanced users should consult the datasheet of their desired device. For AVR, the standard avr/io.h library is used; for STM32, the ChibiOS PAL library is used.
The above functions are not always guaranteed to work atomically. Therefore, if you want to prevent interruptions in the middle of operations when using multiple combinations of the above functions, use the following ATOMIC_BLOCK_FORCEON macro.
eg.
c
void some_function(void) {\n // some process\n ATOMIC_BLOCK_FORCEON {\n // Atomic Processing\n }\n // some process\n}
ATOMIC_BLOCK_FORCEON forces interrupts to be disabled before the block is executed, without regard to whether they are enabled or disabled. Then, after the block is executed, the interrupt is enabled.
Note that ATOMIC_BLOCK_FORCEON can therefore be used if you know that interrupts are enabled before the execution of the block, or if you know that it is OK to enable interrupts at the completion of the block.
', 13);
+const _hoisted_14 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_14);
+}
+const gpio = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ gpio as default
+};
diff --git a/assets/drivers_gpio.md.B3iXussG.lean.js b/assets/drivers_gpio.md.B3iXussG.lean.js
new file mode 100644
index 0000000..12ffed1
--- /dev/null
+++ b/assets/drivers_gpio.md.B3iXussG.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"GPIO Control","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/gpio.md","filePath":"drivers/gpio.md"}');
+const _sfc_main = { name: "drivers/gpio.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 13);
+const _hoisted_14 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_14);
+}
+const gpio = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ gpio as default
+};
diff --git a/assets/drivers_i2c.md.Dr29Qpwd.js b/assets/drivers_i2c.md.Dr29Qpwd.js
new file mode 100644
index 0000000..356d8eb
--- /dev/null
+++ b/assets/drivers_i2c.md.Dr29Qpwd.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"I2C Master Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/i2c.md","filePath":"drivers/i2c.md"}');
+const _sfc_main = { name: "drivers/i2c.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
All of the addresses expected by this driver should be pushed to the upper 7 bits of the address byte. Setting the lower bit (indicating read/write) will be done by the respective functions. Almost all I2C addresses listed on datasheets and the internet will be represented as 7 bits occupying the lower 7 bits and will need to be shifted to the left (more significant) by one bit. This is easy to do via the bitwise shift operator << 1.
You can either do this on each call to the functions below, or once in your definition of the address. For example, if your device has an address of 0x18:
You'll need to determine which pins can be used for I2C -- a an example, STM32 parts generally have multiple I2C peripherals, labeled I2C1, I2C2, I2C3 etc.
To enable I2C, modify your board's halconf.h to enable I2C:
c
#define HAL_USE_I2C TRUE
Then, modify your board's mcuconf.h to enable the peripheral you've chosen, for example:
Initialize the I2C driver. This function must be called only once, before any of the below functions can be called.
This function is weakly defined, meaning it can be overridden if necessary for your particular use case:
c
void i2c_init(void) {\n gpio_set_pin_input(B6); // Try releasing special pins for a short time\n gpio_set_pin_input(B7);\n wait_ms(10); // Wait for the release to happen\n\n palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B6 to I2C function\n palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B7 to I2C function\n}
On ChibiOS a "best effort" attempt is made by reading a single byte from register 0 at the requested address. This should generally work except for I2C devices that do not not respond to a register 0 read request, which will result in a false negative result (unsucessful response to ping attempt).
This function is weakly defined, meaning it can be overridden if necessary for your particular use case:
The IS31FL3218 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3218 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3218-mono.c # For single-color\nSRC += is31fl3218.c # For RGB\nI2C_DRIVER_REQUIRED = yes
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT] = {\n/* R G B */\n {OUT1, OUT2, OUT3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index all have their anodes connected to VCC, and their cathodes on the OUT1, OUT2 and OUT3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3218_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3218_update_pwm_buffers() after you are finished.
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3218_update_led_control_registers() after you are finished.
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3218_update_led_control_registers() after you are finished.
The IS31FL3236 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3236 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3236-mono.c # For single-color\nSRC += is31fl3236.c # For RGB\nI2C_DRIVER_REQUIRED = yes
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3236_led_t PROGMEM g_is31fl3236_leds[IS31FL3236_LED_COUNT] = {\n/* Driver\n | R G B */\n {0, OUT1, OUT2, OUT3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to VCC, and their cathodes on the OUT1, OUT2 and OUT3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3236_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3236_update_pwm_buffers() after you are finished.
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3236_update_led_control_registers() after you are finished.
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3236_update_led_control_registers() after you are finished.
The IS31FL3729 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3729 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3729-mono.c # For single-color\nSRC += is31fl3729.c # For RGB\nI2C_DRIVER_REQUIRED = yes
These settings control the pulldown and pullup resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 18) for more information on how and why this occurs.
To adjust the resistor values, add the following to your config.h:
This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is 64, but if you need to adjust it, add the following to your config.h:
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3729_led_t PROGMEM g_is31fl3729_leds[IS31FL3729_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, SW1_CS1, SW1_CS2, SW1_CS3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3729_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3729_update_pwm_buffers() after you are finished.
Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3729_update_scaling_registers() after you are finished.
Configure the scaling registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3729_update_scaling_registers() after you are finished.
I²C Charlieplexed 16x9 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 144 single-color LEDs, or 48 RGB LEDs.
The IS31FL3731 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3731 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3731-mono.c # For single-color\nSRC += is31fl3731.c # For RGB\nI2C_DRIVER_REQUIRED = yes
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, C1_1, C1_2, C1_3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the CA1 pin, and their anodes on the CA2, CA3 and CA4 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3731_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3731_update_pwm_buffers() after you are finished.
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3731_update_led_control_registers() after you are finished.
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3731_update_led_control_registers() after you are finished.
The IS31FL3733 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3733 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3733-mono.c # For single-color\nSRC += is31fl3733.c # For RGB\nI2C_DRIVER_REQUIRED = yes
Multiple IS31FL3733 drivers can be synchronized by connecting the SYNC pins together. One driver must be designated as the "master", and the others configured as "slave".
To do this, set the IS31FL3733_SYNC_n defines accordingly in your config.h, where n denotes the driver index:
These settings control the pullup and pulldown resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your config.h:
This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, SW1_CS1, SW1_CS2, SW1_CS3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the SW1 pin, and their anodes on the CS1, CS2 and CS3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3733_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3733_update_pwm_buffers() after you are finished.
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3733_update_led_control_registers() after you are finished.
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3733_update_led_control_registers() after you are finished.
The IS31FL3736 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3736 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3736-mono.c # For single-color\nSRC += is31fl3736.c # For RGB\nI2C_DRIVER_REQUIRED = yes
These settings control the pullup and pulldown resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 25) for more information on how and why this occurs.
To adjust the resistor values, add the following to your config.h:
This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, SW1_CS1, SW1_CS2, SW1_CS3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the SW1 pin, and their anodes on the CS1, CS2 and CS3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3736_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3736_update_pwm_buffers() after you are finished.
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3736_update_led_control_registers() after you are finished.
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3736_update_led_control_registers() after you are finished.
The IS31FL3737 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3737 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3737-mono.c # For single-color\nSRC += is31fl3737.c # For RGB\nI2C_DRIVER_REQUIRED = yes
These settings control the pullup and pulldown resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your config.h:
This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, SW1_CS1, SW1_CS2, SW1_CS3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the SW1 pin, and their anodes on the CS1, CS2 and CS3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3737_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3737_update_pwm_buffers() after you are finished.
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3737_update_led_control_registers() after you are finished.
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3737_update_led_control_registers() after you are finished.
The IS31FL3741 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3741 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3741-mono.c # For single-color\nSRC += is31fl3741.c # For RGB\nI2C_DRIVER_REQUIRED = yes
These settings control the pullup and pulldown resistor values on the CSx and SWy pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 18) for more information on how and why this occurs.
To adjust the resistor values, add the following to your config.h:
This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, SW1_CS1, SW1_CS2, SW1_CS3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3741_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3741_update_pwm_buffers() after you are finished.
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3741_update_led_control_registers() after you are finished.
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3741_update_led_control_registers() after you are finished.
The IS31FL3742A driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3742a driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3742a-mono.c # For single-color\nSRC += is31fl3742a.c # For RGB\nI2C_DRIVER_REQUIRED = yes
These settings control the pulldown and pullup resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your config.h:
This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3742a_led_t PROGMEM g_is31fl3742a_leds[IS31FL3742A_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, SW1_CS1, SW1_CS2, SW1_CS3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3742a_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3742a_update_pwm_buffers() after you are finished.
Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3742a_update_scaling_registers() after you are finished.
Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3742a_update_scaling_registers() after you are finished.
The IS31FL3743A driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3743a driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3743a-mono.c # For single-color\nSRC += is31fl3743a.c # For RGB\nI2C_DRIVER_REQUIRED = yes
Multiple IS31FL3743A drivers can be synchronized by connecting the SYNC pins together. One driver must be designated as the "master", and the others configured as "slave".
To do this, set the IS31FL3743A_SYNC_n defines accordingly in your config.h, where n denotes the driver index:
These settings control the pulldown and pullup resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your config.h:
This setting controls the current sunk by the CSy pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, SW1_CS1, SW1_CS2, SW1_CS3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3743a_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3743a_update_pwm_buffers() after you are finished.
Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3743a_update_scaling_registers() after you are finished.
Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3743a_update_scaling_registers() after you are finished.
The IS31FL3745 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3745 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3745-mono.c # For single-color\nSRC += is31fl3745.c # For RGB\nI2C_DRIVER_REQUIRED = yes
Multiple IS31FL3745 drivers can be synchronized by connecting the SYNC pins together. One driver must be designated as the "master", and the others configured as "slave".
To do this, set the IS31FL3745_SYNC_n defines accordingly in your config.h, where n denotes the driver index:
These settings control the pulldown and pullup resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your config.h:
This setting controls the current sunk by the CSy pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3745_led_t PROGMEM g_is31fl3745_leds[IS31FL3745_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, SW1_CS1, SW1_CS2, SW1_CS3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3745_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3745_update_pwm_buffers() after you are finished.
Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3745_update_scaling_registers() after you are finished.
Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3745_update_scaling_registers() after you are finished.
The IS31FL3746A driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3746a driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3746a-mono.c # For single-color\nSRC += is31fl3746a.c # For RGB\nI2C_DRIVER_REQUIRED = yes
These settings control the pulldown and pullup resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.
To adjust the resistor values, add the following to your config.h:
This setting controls the current sunk by the CSy pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const is31fl3746a_led_t PROGMEM g_is31fl3746a_leds[IS31FL3746A_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, SW1_CS1, SW1_CS2, SW1_CS3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3746a_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3746a_update_pwm_buffers() after you are finished.
Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3746a_update_scaling_registers() after you are finished.
Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3746a_update_scaling_registers() after you are finished.
The Serial driver powers the Split Keyboard feature. Several implementations are available that cater to the platform and capabilities of MCU in use. Note that none of the drivers support split keyboards with more than two halves.
This is the Default driver, absence of configuration assumes this driver. It works by bit banging a GPIO pin using the CPU. It is therefore not as efficient as a dedicated hardware peripheral, which the Half-duplex and Full-duplex drivers use.
WARNING
On ARM platforms the bitbang driver causes connection issues when using it together with the bitbang WS2812 driver. Choosing alternate drivers for both serial and WS2812 (instead of bitbang) is strongly recommended.
One GPIO pin is needed for the bitbang driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the SOFT_SERIAL_PIN (SSP) in the configuration. A TRS or USB cable provides enough conductors for this driver to function.
Targeting ARM boards based on ChibiOS, where communication is offloaded to a USART hardware device that supports Half-duplex operation. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose Half-duplex over Bitbang if MCU is capable of utilising Half-duplex, and Full-duplex can't be used instead (e.g. lack of available GPIO pins, or imcompatible PCB design).
LEFT RIGHT \n+-------+ | | +-------+\n| | R R | |\n| | | SERIAL | | |\n| TX |-----------------| TX |\n| | VDD | |\n| |-----------------| |\n| | GND | |\n| |-----------------| |\n+-------+ +-------+
Only one GPIO pin is needed for the Half-duplex driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the SERIAL_USART_TX_PIN in the configuration. Ensure that the pin chosen for split communication can operate as the TX pin of the contoller's USART peripheral. A TRS or USB cable provides enough conductors for this driver to function. As the split connection is configured to operate in open-drain mode, an external pull-up resistor is needed to keep the line high. Resistor values of 1.5kΩ to 8.2kΩ are known to work.
WARNING
Note: A pull-up resistor isn't required for RP2040 controllers configured with PIO subsystem.
#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.\n#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
Targeting ARM boards based on ChibiOS where communication is offloaded to an USART hardware device. The advantages over bitbanging are fast, accurate timings and reduced CPU usage; therefore it is advised to choose this driver over all others where possible. Due to its internal design Full-duplex is slightly more efficient than the Half-duplex driver, but Full-duplex should be primarily chosen if Half-duplex operation is not supported by the controller's USART peripheral.
Two GPIO pins are needed for the Full-duplex driver, as two distinct wires are used for receiving and transmitting data. The pin transmitting data is the TX pin and refereed to as the SERIAL_USART_TX_PIN, the pin receiving data is the RX pin and refereed to as the SERIAL_USART_RX_PIN in this configuration. Please note that TX pin of the master half has to be connected with the RX pin of the slave half and the RX pin of the master half has to be connected with the TX pin of the slave half! Usually this pin swap has to be done outside of the MCU e.g. with cables or on the PCB. Some MCUs like the STM32F303 used on the Proton-C allow this pin swap directly inside the MCU. A TRRS or USB cable provides enough conductors for this driver to function.
To use this driver the USART peripherals TX and RX pins must be configured with the correct Alternate-functions. If you are using a Proton-C development board everything is already setup, same is true for STM32F103 MCUs. For MCUs which are using a modern flexible GPIO configuration you have to specify these by setting SERIAL_USART_TX_PAL_MODE and SERIAL_USART_RX_PAL_MODE. Refer to the corresponding datasheets of your MCU or find those settings in the section "Alternate Functions for selected STM32 MCUs".
For STM32 MCUs several GPIO configuration options, including the ability for TX to RX pin swapping, can be changed as well. See the section "Alternate Functions for selected STM32 MCUs".
c
#define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve. (Only available on some MCUs)\n#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.\n#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
The SERIAL Subsystem is supported for the majority of ChibiOS MCUs and should be used whenever supported. Follow these steps in order to activate it:
In your keyboards halconf.h add:
c
#define HAL_USE_SERIAL TRUE
In your keyboards mcuconf.h: activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the mcuconf.h files of your MCU that ship with ChibiOS.
Where 'n' matches the peripheral number of your selected USART on the MCU.
In you keyboards config.h: override the default USART SERIAL driver if you use a USART peripheral that does not belong to the default selected SD1 driver. For instance, if you selected STM32_SERIAL_USE_USART3 the matching driver would be SD3.
The SIO Subsystem was added to ChibiOS with the 21.11 release and is only supported on selected MCUs. It should only be chosen when the SERIAL subsystem is not supported by your MCU.
Follow these steps in order to activate it:
In your keyboards halconf.h add:
c
#define HAL_USE_SIO TRUE
In your keyboards mcuconf.h: activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the mcuconf.h files of your MCU that ship with ChibiOS.
Where 'n' matches the peripheral number of your selected USART on the MCU.
In the keyboard's config.h file: override the default USART SIO driver if you use a USART peripheral that does not belong to the default selected SIOD1 driver. For instance, if you selected STM32_SERIAL_USE_USART3 the matching driver would be SIOD3.
The PIO subsystem is a Raspberry Pi RP2040 specific implementation, using an integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of PIO peripherals, any GPIO pin can be used as a TX or RX pin. Half-duplex and Full-duplex operation modes are fully supported with this driver. Half-duplex uses the built-in pull-ups and GPIO manipulation of the RP2040 to drive the line high by default, thus an external pull-up resistor is not required.
Optionally, the PIO peripheral utilized for split communication can be changed with the following define in config.h:
c
#define SERIAL_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the Serial implementation uses the PIO0 peripheral
The Serial PIO program uses 2 state machines, 13 instructions and the complete interrupt handler of the PIO peripheral it is running on.
If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions.
c
#define SELECT_SOFT_SERIAL_SPEED {#}
Speed
Bitbang
Half-duplex and Full-duplex
0
189000 baud (experimental)
460800 baud
1
137000 baud (default)
230400 baud (default)
2
75000 baud
115200 baud
3
39000 baud
57600 baud
4
26000 baud
38400 baud
5
20000 baud
19200 baud
Alternatively you can specify the baudrate directly by defining SERIAL_USART_SPEED.
This is the default time window in milliseconds in which a successful communication has to complete. Usually you don't want to change this value. But you can do so anyways by defining an alternate one in your keyboards config.h file:
If you're having issues withe serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards config.h file:
c
#define SERIAL_DEBUG
TIP
The messages will be printed out to the CONSOLE output. For additional information, refer to Debugging/Troubleshooting QMK.
TX Pin is always Alternate Function Push-Pull, RX Pin is always regular input pin for any USART peripheral. For STM32F103 no additional Alternate Function configuration is necessary. QMK is already configured.
Pin remapping:
The pins of USART Peripherals use default Pins that can be remapped to use other pins using the AFIO registers. Default pins are marked bold. Add the appropriate defines to your config.h file.
Pin
Function
Mode
USART_REMAP
USART1
PA9
TX
AFPP
PA10
RX
IN
PB6
TX
AFPP
USART1_REMAP
PB7
RX
IN
USART1_REMAP
USART2
PA2
TX
AFPP
PA3
RX
IN
PD5
TX
AFPP
USART2_REMAP
PD6
RX
IN
USART2_REMAP
USART3
PB10
TX
AFPP
PB11
RX
IN
PC10
TX
AFPP
USART3_PARTIALREMAP
PC11
RX
IN
USART3_PARTIALREMAP
PD8
TX
AFPP
USART3_FULLREMAP
PD9
RX
IN
USART3_FULLREMAP
', 115);
+const _hoisted_116 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_116);
+}
+const serial = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ serial as default
+};
diff --git a/assets/drivers_serial.md.CDjOJdNt.lean.js b/assets/drivers_serial.md.CDjOJdNt.lean.js
new file mode 100644
index 0000000..301cf91
--- /dev/null
+++ b/assets/drivers_serial.md.CDjOJdNt.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse(`{"title":"'serial' Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/serial.md","filePath":"drivers/serial.md"}`);
+const _sfc_main = { name: "drivers/serial.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 115);
+const _hoisted_116 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_116);
+}
+const serial = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ serial as default
+};
diff --git a/assets/drivers_sled1734x.md.CogrFDhE.js b/assets/drivers_sled1734x.md.CogrFDhE.js
new file mode 100644
index 0000000..4607b28
--- /dev/null
+++ b/assets/drivers_sled1734x.md.CogrFDhE.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/sled1734x.md","filePath":"drivers/sled1734x.md"}');
+const _sfc_main = { name: "drivers/sled1734x.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
The SLED1734X driver code is automatically included if you are using the RGB Matrix feature with the sled1734x driver set, and you would use that API instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led\nSRC += sled1734x.c # For RGB\nI2C_DRIVER_REQUIRED = yes
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const sled1734x_led PROGMEM g_sled1734x_leds[SLED1734X_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, CA3_D, CA1_D, CA2_D},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the D pin, and their cathodes on the CA1, CA2 and CA3 pins respectively.
These values correspond to the register indices as shown in the datasheet on page 64. At the moment, the driver supports MATRIX TYPE 3 only.
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call sled1734x_update_pwm_buffers() after you are finished.
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call sled1734x_update_led_control_registers() after you are finished.
The most common way to configure the LED wiring is on a 3 ( R/B/G channel sinks) x 1 ( actively driven PWM line) matrix, controlled by transistors through GPIO pins.
In most cases, the SN32F2XX driver code is automatically included if you are using the RGB Matrix feature with the sn32f2xx driver set, and you would use that API instead.
However, if you need to use the driver standalone, add the following to your rules.mk:
The driver can share LED matrix wiring with the key matrix, specifically columns. It takes over the key scanning routines and carefully times it to avoid key chatter and LED artifacts. Please note that key scan cycles are affected, although the result is a snappy key scan.
The SNLED27351 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the snled27351 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add this to your rules.mk:
make
COMMON_VPATH += $(DRIVER_PATH)/led\nSRC += snled27351-mono.c # For single-color\nSRC += snled27351.c # For RGB\nI2C_DRIVER_REQUIRED = yes
In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:
c
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {\n/* Driver\n * | R G B */\n {0, CB1_CA1, CB1_CA2, CB1_CA3},\n // etc...\n};
In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the CB1 pin, and their anodes on the CA1, CA2 and CA3 pins respectively.
For the single-color driver, the principle is the same, but there is only one channel:
Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call snled27351_update_pwm_buffers() after you are finished.
Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call snled27351_update_pwm_buffers() after you are finished.
Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call snled27351_update_led_control_registers() after you are finished.
Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call snled27351_update_led_control_registers() after you are finished.
No special setup is required - just connect the SS, SCK, MOSI and MISO pins of your SPI devices to the matching pins on the MCU:
MCU
SS
SCK
MOSI
MISO
ATmega16/32U2/4
B0
B1
B2
B3
AT90USB64/128/162
B0
B1
B2
B3
ATmega32A
B4
B7
B5
B6
ATmega328/P
B2
B5
B3
B4
You may use more than one slave select pin, not just the SS pin. This is useful when you have multiple devices connected and need to communicate with them individually. SPI_SS_PIN can be passed to spi_start() to refer to SS.
You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc.
To enable SPI, modify your board's halconf.h to enable SPI:
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
config.h Override
Description
Default
SPI_DRIVER
SPI peripheral to use - SPI1 -> SPID1, SPI2 -> SPID2 etc.
SPID2
SPI_SCK_PIN
The pin to use for SCK
B13
SPI_SCK_PAL_MODE
The alternate function mode for SCK
5
SPI_MOSI_PIN
The pin to use for MOSI
B15
SPI_MOSI_PAL_MODE
The alternate function mode for MOSI
5
SPI_MISO_PIN
The pin to use for MISO
B14
SPI_MISO_PAL_MODE
The alternate function mode for MISO
5
As per the AVR configuration, you may choose any other standard GPIO as a slave select pin, which should be supplied to spi_start().
If a complete SPI interface is not required, then the following can be done to disable certain SPI pins, so they don't occupy a GPIO unnecessarily:
in config.h: #define SPI_MISO_PIN NO_PIN
in config.h: #define SPI_MOSI_PIN NO_PIN
in mcuconf.h: #define SPI_SELECT_MODE SPI_SELECT_MODE_NONE, in this case the slavePin argument passed to spi_start() may be NO_PIN if the slave select pin is not used.
pin_t slavePin The QMK pin to assert as the slave select pin, eg. B4.
bool lsbFirst Determines the endianness of the transmission. If true, the least significant bit of each byte is sent first.
uint8_t mode The SPI mode to use:
Mode
Clock Polarity
Clock Phase
0
Leading edge rising
Sample on leading edge
1
Leading edge rising
Sample on trailing edge
2
Leading edge falling
Sample on leading edge
3
Leading edge falling
Sample on trailing edge
uint16_t divisor The SPI clock divisor, will be rounded up to the nearest power of two. This number can be calculated by dividing the MCU's clock speed by the desired SPI clock speed. For example, an MCU running at 8 MHz wanting to talk to an SPI device at 4 MHz would set the divisor to 2.
You'll need to determine which pins can be used for UART -- as an example, STM32 parts generally have multiple UART peripherals, labeled USART1, USART2, USART3 etc.
To enable UART, modify your board's mcuconf.h to enable the peripheral you've chosen, for example:
uint32_t baud The baud rate to transmit and receive at. This may depend on the device you are communicating with. Common values are 1200, 2400, 4800, 9600, 19200, 38400, 57600, and 115200.
This driver provides support for WorldSemi addressable RGB(W) LEDs, and compatible equivalents:
WS2811, WS2812, WS2812B, WS2812C, etc.
SK6812, SK6812MINI, SK6805
These LEDs are often called "addressable" because instead of using a wire per color (and per LED), each LED contains a small microchip that understands a special protocol sent over a single wire. The LEDs can be chained together, and the remaining data is passed on to the next. In this way, you can easily control the color of many LEDs using a single GPIO.
In most cases, the WS2812 driver code is automatically included if you are using either the RGBLight or RGB Matrix feature with the ws2812 driver set, and you would use those APIs instead.
However, if you need to use the driver standalone, add the following to your rules.mk:
make
WS2812_DRIVER_REQUIRED = yes
You can then call the WS2812 API by including ws2812.h in your code.
The WS2812 LED communication protocol works by encoding a "1" bit with a long high pulse (T1H), and a "0" bit with a shorter pulse (T0H). The total cycle length of a bit is the same. The "reset" pulse (TRST) latches the sent RGB data to all of the LEDs and denotes a completed "frame".
Some WS2812 variants have slightly different timing parameter requirements, which can be accounted for if necessary using the above #defines in your config.h.
Some WS2812 variants may have their color components in a different physical or logical order. For example, the WS2812B-2020 has physically swapped red and green LEDs, which causes the wrong color to be displayed, because the default order of the bytes sent over the wire is defined as GRB. If you find your LED colors are consistently swapped, you may need to change the byte order by adding the following to your config.h:
Rendering the color white with RGB LEDs is typically inconsistent due to inherent variations between each individual LED die. However, some WS2812 variants (such as SK6812RGBW) also possess a white LED along with the red, green, and blue channels, which allows for a more accurate white to be displayed.
QMK can automatically convert the RGB data to be sent to the LEDs to mix in the white channel:
w = min(r, g, b)\nr -= w\ng -= w\nb -= w
Thus, an RGB triplet of 255,255,255 will simply turn on the white LED fully (0,0,0,255).
To enable RGBW conversion, add the following to your config.h:
Driver selection can be configured in rules.mk as WS2812_DRIVER, or in info.json as ws2812.driver. Valid values are bitbang (default), i2c, spi, pwm, vendor, or custom. See below for information on individual drivers.
This is the default WS2812 driver. It operates by "bit-banging" ie. directly toggling the GPIO.
Please note that on AVR devices, due to the tight timing requirements longer chains and/or heavy CPU loads may cause visible lag. Unfortunately this driver is usually the only option for AVR.
This driver is RP2040-only, and leverages the onboard PIO (programmable I/O) system and DMA to offload processing from the CPU.
The WS2812 PIO program uses one state machine, six instructions and one DMA interrupt handler callback. Due to the implementation the time resolution for this driver is 50 ns - any value not specified in this interval will be rounded to the next matching interval.
This driver is ARM-only, and leverages the onboard SPI peripheral and DMA to offload processing from the CPU. The DI pin must be connected to the MOSI pin on the MCU, and all other SPI pins must be left unused. This is also very dependent on your MCU's SPI peripheral clock speed, and may or may not be possible depending on the MCU selected.
By default, the GPIO used for data transmission is configured as a push-pull output, meaning the pin is effectively always driven either to VCC or to ground.
For situations where the logic level voltage is lower than the power supply voltage, however, this can pose an issue. The solution is to configure the pin for open drain mode instead, and use a pullup resistor between the DI pin and VCC. In this mode, the MCU can only pull the GPIO low, or leave it floating. The pullup resistor is then responsible for pulling the line high, when the MCU is not driving the GPIO.
To configure the DI pin for open drain configuration, add the following to your config.h:
To adjust the SPI baudrate, you will need to derive the target baudrate from the clock tree provided by STM32CubeMX, and add the following to your config.h:
c
#define WS2812_SPI_DIVISOR 16
Only divisors of 2, 4, 8, 16, 32, 64, 128 and 256 are supported on STM32 devices. Other MCUs may have similar constraints -- check the reference manual for your respective MCU for specifics.
The following #defines apply only to the pwm driver:
Define
Default
Description
WS2812_PWM_DRIVER
PWMD2
The PWM driver to use
WS2812_PWM_CHANNEL
2
The PWM channel to use
WS2812_PWM_PAL_MODE
2
The pin alternative function to use
WS2812_PWM_DMA_STREAM
STM32_DMA1_STREAM2
The DMA Stream for TIMx_UP
WS2812_PWM_DMA_CHANNEL
2
The DMA Channel for TIMx_UP
WS2812_PWM_DMAMUX_ID
Not defined
The DMAMUX configuration for TIMx_UP - only required if your MCU has a DMAMUX peripheral
WS2812_PWM_COMPLEMENTARY_OUTPUT
Not defined
Whether the PWM output is complementary (TIMx_CHyN)
TIP
Using a complementary timer output (TIMx_CHyN) is possible only for advanced-control timers (1, 8 and 20 on STM32), and the STM32_PWM_USE_ADVANCED option in mcuconf.h must be set to TRUE. Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations.
uint16_t number_of_leds The length of the LED array.
', 89);
+const _hoisted_90 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_90);
+}
+const ws2812 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ ws2812 as default
+};
diff --git a/assets/drivers_ws2812.md.C97W5Kwr.lean.js b/assets/drivers_ws2812.md.C97W5Kwr.lean.js
new file mode 100644
index 0000000..5749887
--- /dev/null
+++ b/assets/drivers_ws2812.md.C97W5Kwr.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"WS2812 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/ws2812.md","filePath":"drivers/ws2812.md"}');
+const _sfc_main = { name: "drivers/ws2812.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 89);
+const _hoisted_90 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_90);
+}
+const ws2812 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ ws2812 as default
+};
diff --git a/assets/easy_maker.md.CW6jlMO-.js b/assets/easy_maker.md.CW6jlMO-.js
new file mode 100644
index 0000000..cbe1e4a
--- /dev/null
+++ b/assets/easy_maker.md.CW6jlMO-.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Easy Maker - Build One-Off Projects In Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"easy_maker.md","filePath":"easy_maker.md"}');
+const _sfc_main = { name: "easy_maker.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Easy Maker - Build One-Off Projects In Configurator
Have you ever needed an easy way to program a controller, such as a Proton C or Teensy 2.0, for a one-off project you're building? QMK has you covered with the Easy Maker. Now you can create a firmware in minutes using QMK Configurator.
There are different styles of Easy Maker available depending on your needs:
Direct Pin - Connect a single switch to a single pin
Direct Pin + Backlight (Coming Soon) - Like Direct Pin but dedicates a single pin to Backlight control
Direct Pin + Numlock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED
Direct Pin + Capslock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Capslock LED
Direct Pin + Encoder (Coming Soon) - Like Direct Pin but uses 2 pins to add a single rotary encoder
The easiest way to get started is with the Direct Pin boards. This will assign a single key to each pin and you can short that pin to ground to activate it. Select your MCU from the Keyboard dropdown here:
As its name implies Direct Pin works by connecting one switch per pin. The other side of the switch should be connected to ground (VSS or GND.) You don't need any other components, your MCU has internal pull-up resistors so that the switch sensing can work.
Here is a schematic showing how we connect a single button to pin A3 on a ProMicro:
Once you have wired your switches you can assign keycodes to each pin and build a firmware by selecting the MCU you are using from the Keyboard dropdown. Use this link to show only Easy Maker Direct Pin:
You will need proper permissions to operate a device. For Linux users, see the instructions regarding udev rules, below. If you have issues with udev, a work-around is to use the sudo command. If you are not familiar with this command, check its manual with man sudo or see this webpage.
An example of using sudo, when your controller is ATMega32u4:
On Linux, you'll need proper privileges to communicate with the bootloader device. You can either use sudo when flashing firmware (not recommended), or place this file into /etc/udev/rules.d/.
Once added, run the following:
sudo udevadm control --reload-rules\nsudo udevadm trigger
Note: With older versions of ModemManager (< 1.12), filtering only works when not in strict mode. The following commands can update that setting:
Serial device is not detected in bootloader mode on Linux
Make sure your kernel has appropriate support for your device. If your device uses USB ACM, such as Pro Micro (Atmega32u4), make sure to include CONFIG_USB_ACM=y. Other devices may require USB_SERIAL and any of its sub options.
Issues encountered when flashing keyboards on Windows are most often due to having the wrong drivers installed for the bootloader, or none at all.
Re-running the QMK installation script (./util/qmk_install.sh from the qmk_firmware directory in MSYS2 or WSL) or reinstalling the QMK Toolbox may fix the issue. Alternatively, you can download and run the qmk_driver_installer package manually.
You can use any ID you want with editing config.h. Using any presumably unused ID will be no problem in fact except for very low chance of collision with other product.
Most boards in QMK use 0xFEED as the vendor ID. You should look through other keyboards to make sure you pick a unique Product ID.
I just flashed my keyboard and it does nothing/keypresses don't register - it's also ARM (rev6 planck, clueboard 60, hs60v2, etc...) (Feb 2019)
Due to how EEPROM works on ARM based chips, saved settings may no longer be valid. This affects the default layers, and may, under certain circumstances we are still figuring out, make the keyboard unusable. Resetting the EEPROM will correct this.
Planck rev6 reset EEPROM can be used to force an eeprom reset. After flashing this image, flash your normal firmware again which should restore your keyboard to normal working order. Preonic rev3 reset EEPROM
If bootmagic is enabled in any form, you should be able to do this too (see Bootmagic docs and keyboard info for specifics on how to do this).
', 31);
+const _hoisted_32 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_32);
+}
+const faq_build = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ faq_build as default
+};
diff --git a/assets/faq_build.md.DgVYb8Zh.lean.js b/assets/faq_build.md.DgVYb8Zh.lean.js
new file mode 100644
index 0000000..72e098b
--- /dev/null
+++ b/assets/faq_build.md.DgVYb8Zh.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Frequently Asked Build Questions","description":"","frontmatter":{},"headers":[],"relativePath":"faq_build.md","filePath":"faq_build.md"}');
+const _sfc_main = { name: "faq_build.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 31);
+const _hoisted_32 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_32);
+}
+const faq_build = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ faq_build as default
+};
diff --git a/assets/faq_debug.md.BDXERRoT.js b/assets/faq_debug.md.BDXERRoT.js
new file mode 100644
index 0000000..297b409
--- /dev/null
+++ b/assets/faq_debug.md.BDXERRoT.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Debugging FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"faq_debug.md","filePath":"faq_debug.md"}');
+const _sfc_main = { name: "faq_debug.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Your keyboard will output debug information if you have CONSOLE_ENABLE = yes in your rules.mk. By default the output is very limited, but you can turn on debug mode to increase the amount of debug output. Use the DB_TOGG keycode in your keymap, use the Command feature to enable debug mode, or add the following code to your keymap.
c
void keyboard_post_init_user(void) {\n // Customise these values to desired behaviour\n debug_enable=true;\n debug_matrix=true;\n //debug_keyboard=true;\n //debug_mouse=true;\n}
Something stand-alone? hid_listen, provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available.
Sometimes it's useful to print debug messages from within your custom code. Doing so is pretty simple. Start by including print.h at the top of your file:
c
#include "print.h"
After that you can use a few different print functions:
print("string"): Print a simple string.
uprintf("%s string", var): Print a formatted string
dprint("string") Print a simple string, but only when debug mode is enabled
dprintf("%s string", var): Print a formatted string, but only when debug mode is enabled
When porting, or when attempting to diagnose pcb issues, it can be useful to know if a keypress is scanned correctly. To enable logging for this scenario, add the following code to your keymaps keymap.c
c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n // If console is enabled, it will print the matrix position and status of each key pressed\n#ifdef CONSOLE_ENABLE\n uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %u, time: %5u, int: %u, count: %u\\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);\n#endif\n return true;\n}
When testing performance issues, it can be useful to know the frequency at which the switch matrix is being scanned. To enable logging for this scenario, add the following code to your keymaps config.h
When debug console of your device is not ready you will see like this:
Waiting for device:.........
Once the device is plugged in then hid_listen finds it you will get this message:
Waiting for new device:.........................\nListening:
If you can't get this 'Listening:' message try building with CONSOLE_ENABLE=yes in [Makefile]
You may need privileges to access the device an OS like Linux. Try sudo hid_listen.
On many Linux distros you can avoid having to run hid_listen as root by creating a file called /etc/udev/rules.d/70-hid-listen.rules with the following content:
Replace abcd and def1 with your keyboard's vendor and product id, letters must be lowercase. The RUN{builtin}+="uaccess" part is only needed for older distros.
QMK, short for Quantum Mechanical Keyboard, is a group of people building tools for custom keyboards. We started with the QMK firmware, a heavily modified fork of TMK.
If this is the case, then you should start with our Newbs Guide. There is a lot of great info there, and that should cover everything you need to get started.
If that's an issue, hop onto the QMK Configurator, as that will handle a majority of what you need there.
First, head to the Compiling/Flashing FAQ Page. There is a good deal of info there, and you'll find a bunch of solutions to common issues there.
What if I have an issue that isn't covered here?
Okay, that's fine. Then please check the open issues in our GitHub to see if somebody is experiencing the same thing (make sure it's not just similar, but actually the same).
If you can't find anything, then please open a new issue!
That's amazing! We would love to assist you with that!
In fact, we have a whole page dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK.
If you have any questions about this, open an issue or head to Discord.
TMK was originally designed and implemented by Jun Wako. QMK started as Jack Humbert's fork of TMK for the Planck. After a while Jack's fork had diverged quite a bit from TMK, and in 2015 Jack decided to rename his fork to QMK.
From a technical standpoint QMK builds upon TMK by adding several new features. Most notably QMK has expanded the number of available keycodes and uses these to implement advanced features like S(), LCTL(), and MO(). You can see a complete list of these keycodes in Keycodes.
From a project and community management standpoint TMK maintains all the officially supported keyboards by himself, with a bit of community support. Separate community maintained forks exist or can be created for other keyboards. Only a few keymaps are provided by default, so users typically don't share keymaps with each other. QMK encourages sharing of both keyboards and keymaps through a centrally managed repository, accepting all pull requests that follow the quality standards. These are mostly community maintained, but the QMK team also helps when necessary.
Both approaches have their merits and their drawbacks, and code flows freely between TMK and QMK when it makes sense.
', 27);
+const _hoisted_28 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_28);
+}
+const faq_general = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ faq_general as default
+};
diff --git a/assets/faq_general.md.BRXTvqDs.lean.js b/assets/faq_general.md.BRXTvqDs.lean.js
new file mode 100644
index 0000000..34ab22f
--- /dev/null
+++ b/assets/faq_general.md.BRXTvqDs.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Frequently Asked Questions","description":"","frontmatter":{},"headers":[],"relativePath":"faq_general.md","filePath":"faq_general.md"}');
+const _sfc_main = { name: "faq_general.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 27);
+const _hoisted_28 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_28);
+}
+const faq_general = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ faq_general as default
+};
diff --git a/assets/faq_keymap.md.DIjgUAJ7.js b/assets/faq_keymap.md.DIjgUAJ7.js
new file mode 100644
index 0000000..6136e2f
--- /dev/null
+++ b/assets/faq_keymap.md.DIjgUAJ7.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Keymap FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"faq_keymap.md","filePath":"faq_keymap.md"}');
+const _sfc_main = { name: "faq_keymap.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
There are 3 standard keyboard layouts in use around the world- ANSI, ISO, and JIS. North America primarily uses ANSI, Europe and Africa primarily use ISO, and Japan uses JIS. Regions not mentioned typically use either ANSI or ISO. The keycodes corresponding to these layouts are shown here:
How Can I Make Custom Names For Complex Keycodes?
Sometimes, for readability's sake, it's useful to define custom names for some keycodes. People often define custom names using #define. For example:
This is usually due to VIA, and has to do with how it deals with keymaps.
On first run, the VIA code in the firmware will copy the keymap from flash memory into EEPROM so that it can be rewritten at runtime by the VIA app. From this point QMK will use the keymap stored in EEPROM instead of flash, and so updates to your keymap.c will not be reflected.
The simple fix for this is to clear the EEPROM. You can do this in several ways:
Hold the Bootmagic key (usually top left/Escape) while plugging the board in, which will also place the board into bootloader mode; then unplug and replug the board.
Press the QK_CLEAR_EEPROM/EE_CLR keycode if it is accessible on your keymap.
Place the board into bootloader mode and hit the "Clear EEPROM" button. This may not be available for all bootloaders, and you may need to reflash the board afterwards.
QMK has a couple of features which allow you to change the behavior of your keyboard on the fly. This includes, but is not limited to, swapping Ctrl/Caps, disabling GUI, swapping Alt/GUI, swapping Backspace/Backslash, disabling all keys, and other behavioral modifications.
Refer to the EEPROM clearing methods above, which should return those keys to normal operation. If that doesn't work, look here:
The key found on most modern keyboards that is located between KC_RGUI and KC_RCTL is actually called KC_APP. This is because when the key was invented, there was already a key named "Menu" in the HID specification, so for whatever reason, Microsoft chose to create a new key and call it "Application".
Somewhat confusingly, there are two "Power" keycodes in QMK: KC_KB_POWER in the Keyboard/Keypad HID usage page, and KC_SYSTEM_POWER (or KC_PWR) in the Consumer page.
The former is only recognized on macOS, while the latter, KC_SLEP and KC_WAKE are supported by all three major operating systems, so it is recommended to use those instead. Under Windows, these keys take effect immediately, however on macOS they must be held down until a dialog appears.
Modifier keys or layers can be stuck unless layer switching is configured properly. For Modifier keys and layer actions you have to place KC_TRNS on same position of destination layer to unregister the modifier key or return to previous layer on release event.
After enabling this feature use keycodes KC_LCAP, KC_LNUM and KC_LSCR in your keymap instead.
Old vintage mechanical keyboards occasionally have lock switches but modern ones don't have. You don't need this feature in most case and just use keycodes KC_CAPS, KC_NUM and KC_SCRL.
Input Special Characters Other Than ASCII like Cédille 'Ç'
Unlike most Fn keys, the one on Apple keyboards actually has its own keycode... sort of. It takes the place of the sixth keycode in a basic 6KRO HID report -- so an Apple keyboard is in fact only 5KRO.
It is technically possible to get QMK to send this key. However, doing so requires modification of the report format to add the state of the Fn key. Even worse, it is not recognized unless the keyboard's VID and PID match that of a real Apple keyboard. The legal issues that official QMK support for this feature may create mean it is unlikely to happen.
Japanese JIS keyboard specific keys like 無変換(Muhenkan), 変換(Henkan), ひらがな(hiragana) are not recognized on OSX. You can use Seil to enable those keys, try following options.
Not sure what keycode Eject is on genuine Apple keyboard actually. HHKB uses F20 for Eject key(Fn+F) on Mac mode but this is not same as Apple Eject keycode probably.
Real modifiers refer to the state of the real/physical modifier keys, while weak modifiers are the state of "virtual" or temporary modifiers which should not interfere with the internal state of the real modifier keys.
The real and weak modifier states are ORed together when the keyboard report is sent, so if you release a weak modifier while the same real modifier is still held, the report does not change:
Hold down physical Left Shift: Real mods now contains Left Shift, final state is Left Shift
Add weak Left Shift: Weak mods now contains Left Shift, final state is Left Shift
Remove weak Left Shift: Weak mods now contains nothing, final state is Left Shift
Release physical Left Shift: Real mods now contains nothing, final state is nothing
', 64);
+const _hoisted_65 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_65);
+}
+const faq_keymap = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ faq_keymap as default
+};
diff --git a/assets/faq_keymap.md.DIjgUAJ7.lean.js b/assets/faq_keymap.md.DIjgUAJ7.lean.js
new file mode 100644
index 0000000..4669f2c
--- /dev/null
+++ b/assets/faq_keymap.md.DIjgUAJ7.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Keymap FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"faq_keymap.md","filePath":"faq_keymap.md"}');
+const _sfc_main = { name: "faq_keymap.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 64);
+const _hoisted_65 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_65);
+}
+const faq_keymap = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ faq_keymap as default
+};
diff --git a/assets/faq_misc.md.CrAryH8S.js b/assets/faq_misc.md.CrAryH8S.js
new file mode 100644
index 0000000..e50f88e
--- /dev/null
+++ b/assets/faq_misc.md.CrAryH8S.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Miscellaneous FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"faq_misc.md","filePath":"faq_misc.md"}');
+const _sfc_main = { name: "faq_misc.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use QMK Configurator's test mode to check your keyboard, even if it doesn't run QMK.
You probably don't want to "brick" your keyboard, making it impossible to rewrite firmware onto it. Here are some of the parameters to show what things are (and likely aren't) too risky.
If your keyboard map does not include QK_BOOT, then, to get into DFU mode, you will need to press the reset button on the PCB, which requires unscrewing the bottom.
Messing with tmk_core / common files might make the keyboard inoperable
Too large a .hex file is trouble; make dfu will erase the block, test the size (oops, wrong order!), which errors out, failing to flash the keyboard, leaving it in DFU mode.
To this end, note that the maximum .hex file size on e.g. Planck is 7000h (28672 decimal)
Linking: .build/planck_rev4_cbbrowne.elf [OK]\nCreating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]\n\nSize after:\n text data bss dec hex filename\n 0 22396 0 22396 577c planck_rev4_cbbrowne.hex
The above file is of size 22396/577ch, which is less than 28672/7000h
As long as you have a suitable alternative .hex file around, you can retry, loading that one
Some of the options you might specify in your keyboard's Makefile consume extra memory; watch out for BOOTMAGIC_ENABLE, MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE
DFU tools do /not/ allow you to write into the bootloader (unless you throw in an extra fruit salad of options), so there is little risk there.
EEPROM has around a 100000 (100k) write cycle. You shouldn't rewrite the firmware repeatedly and continually; that'll burn the EEPROM eventually.
First you have to compile firmware with the build option NKRO_ENABLE in Makefile.
Try MagicN command(LShift+RShift+N by default) when NKRO still doesn't work. You can use this command to toggle between NKRO and 6KRO mode temporarily. In some situations NKRO doesn't work and you will need to switch to 6KRO mode, in particular when you are in BIOS.
Use 1UL<<16 instead of 1<<16 in read_cols() in [matrix.h] when your columns goes beyond 16.
In C 1 means one of [int] type which is [16 bit] in case of AVR, so you can't shift left more than 15. Thus, calculating 1<<16 will unexpectedly equal zero. To work around this, you have to use [unsigned long] type with 1UL.
In Windows check Allow this device to wake the computer setting in Power Management property tab of Device Manager. Also check your BIOS settings. Pressing any key during sleep should wake host.
By default, the JTAG debugging interface is disabled as soon as the keyboard starts up. JTAG-capable MCUs come from the factory with the JTAGEN fuse set, and it takes over certain pins of the MCU that the board may be using for the switch matrix, LEDs, etc.
If you would like to keep JTAG enabled, just add the following to your config.h:
Problem in BIOS (UEFI) Setup/Resume (Sleep & Wake)/Power Cycles
Some people reported their keyboard stops working in BIOS and/or after resume(power cycles).
As of now the root cause is not clear, but some build options seem to be related. In Makefile, try to disable options like CONSOLE_ENABLE, NKRO_ENABLE, SLEEP_LED_ENABLE and/or others.
These allow you to combine a modifier with a keycode. When pressed, the keydown event for the modifier, then kc will be sent. On release, the keyup event for kc, then the modifier will be sent.
Key
Aliases
Description
LCTL(kc)
C(kc)
Hold Left Control and press kc
LSFT(kc)
S(kc)
Hold Left Shift and press kc
LALT(kc)
A(kc), LOPT(kc)
Hold Left Alt and press kc
LGUI(kc)
G(kc), LCMD(kc), LWIN(kc)
Hold Left GUI and press kc
RCTL(kc)
Hold Right Control and press kc
RSFT(kc)
Hold Right Shift and press kc
RALT(kc)
ROPT(kc), ALGR(kc)
Hold Right Alt and press kc
RGUI(kc)
RCMD(kc), LWIN(kc)
Hold Right GUI and press kc
LSG(kc)
SGUI(kc), SCMD(kc), SWIN(kc)
Hold Left Shift and GUI and press kc
LAG(kc)
Hold Left Alt and Left GUI and press kc
RSG(kc)
Hold Right Shift and Right GUI and press kc
RAG(kc)
Hold Right Alt and Right GUI and press kc
LCA(kc)
Hold Left Control and Alt and press kc
LSA(kc)
Hold Left Shift and Left Alt and press kc
RSA(kc)
SAGR(kc)
Hold Right Shift and Right Alt (AltGr) and press kc
RCS(kc)
Hold Right Control and Right Shift and press kc
LCAG(kc)
Hold Left Control, Alt and GUI and press kc
MEH(kc)
Hold Left Control, Shift and Alt and press kc
HYPR(kc)
Hold Left Control, Shift, Alt and GUI and press kc
You can also chain them, for example LCTL(LALT(KC_DEL)) or C(A(KC_DEL)) makes a key that sends Control+Alt+Delete with a single keypress.
The current modifier state can mainly be accessed with two functions: get_mods() for normal modifiers and modtaps and get_oneshot_mods() for one-shot modifiers (unless they're held, in which case they act like normal modifier keys).
The presence of one or more specific modifiers in the current modifier state can be detected by ANDing the modifier state with a mod mask corresponding to the set of modifiers you want to match for. The reason why bitwise operators are used is that the modifier state is stored as a single byte in the format (GASC)R(GASC)L.
Thus, to give an example, 01000010 would be the internal representation of LShift+RAlt. For more information on bitwise operators in C, click here to open the Wikipedia page on the topic.
In practice, this means that you can check whether a given modifier is active with get_mods() & MOD_BIT(KC_<modifier>) (see the list of modifier keycodes) or with get_mods() & MOD_MASK_<modifier> if the difference between left and right hand modifiers is not important and you want to match both. Same thing can be done for one-shot modifiers if you replace get_mods() with get_oneshot_mods().
To check that only a specific set of mods is active at a time, use a simple equality operator: get_mods() == <mod mask>.
For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) and then plug it in: get_oneshot_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)). Using MOD_MASK_CS instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition.
The full list of mod masks is as follows:
Mod Mask Name
Matching Modifiers
MOD_MASK_CTRL
LCTRL , RCTRL
MOD_MASK_SHIFT
LSHIFT , RSHIFT
MOD_MASK_ALT
LALT , RALT
MOD_MASK_GUI
LGUI , RGUI
MOD_MASK_CS
CTRL , SHIFT
MOD_MASK_CA
(L/R)CTRL , (L/R)ALT
MOD_MASK_CG
(L/R)CTRL , (L/R)GUI
MOD_MASK_SA
(L/R)SHIFT , (L/R)ALT
MOD_MASK_SG
(L/R)SHIFT , (L/R)GUI
MOD_MASK_AG
(L/R)ALT , (L/R)GUI
MOD_MASK_CSA
(L/R)CTRL , (L/R)SHIFT , (L/R)ALT
MOD_MASK_CSG
(L/R)CTRL , (L/R)SHIFT , (L/R)GUI
MOD_MASK_CAG
(L/R)CTRL , (L/R)ALT , (L/R)GUI
MOD_MASK_SAG
(L/R)SHIFT , (L/R)ALT , (L/R)GUI
MOD_MASK_CSAG
(L/R)CTRL , (L/R)SHIFT , (L/R)ALT , (L/R)GUI
Aside from accessing the currently active modifiers using get_mods(), there exists some other functions you can use to modify the modifier state, where the mods argument refers to the modifiers bitmask.
add_mods(mods): Enable mods without affecting any other modifiers
register_mods(mods): Like add_mods but send a keyboard report immediately.
del_mods(mods): Disable mods without affecting any other modifiers
unregister_mods(mods): Like del_mods but send a keyboard report immediately.
set_mods(mods): Overwrite current modifier state with mods
clear_mods(): Reset the modifier state by disabling all modifiers
Similarly, in addition to get_oneshot_mods(), there also exists these functions for one-shot mods:
add_oneshot_mods(mods): Enable mods without affecting any other one-shot modifiers
del_oneshot_mods(mods): Disable mods without affecting any other one-shot modifiers
set_oneshot_mods(mods): Overwrite current one-shot modifier state with mods
clear_oneshot_mods(): Reset the one-shot modifier state by disabling all one-shot modifiers
Simple example where chording Left Alt with KC_ESC makes it behave like KC_TAB for alt-tabbing between applications. This example strictly checks if only Left Alt is active, meaning you can't do Alt+Shift+Esc to switch between applications in reverse order. Also keep in mind that this removes the ability to trigger the actual Alt+Escape keyboard shortcut, though it keeps the ability to do AltGr+Escape.
c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n\n case KC_ESC:\n // Detect the activation of only Left Alt\n if (get_mods() == MOD_BIT(KC_LALT)) {\n if (record->event.pressed) {\n // No need to register KC_LALT because it's already active.\n // The Alt modifier will apply on this KC_TAB.\n register_code(KC_TAB);\n } else {\n unregister_code(KC_TAB);\n }\n // Do not let QMK process the keycode further\n return false;\n }\n // Else, let QMK process the KC_ESC keycode as usual\n return true;\n\n }\n return true;\n};
Advanced example where the original behaviour of shift is cancelled when chorded with KC_BSPC and is instead fully replaced by KC_DEL. Two main variables are created to make this work well: mod_state and delkey_registered. The first one stores the modifier state and is used to restore it after registering KC_DEL. The second variable is a boolean variable (true or false) which keeps track of the status of KC_DEL to manage the release of the whole Backspace/Delete key correctly.
As opposed to the previous example, this doesn't use strict modifier checking. Pressing KC_BSPC while one or two shifts are active is enough to trigger this custom code, regardless of the state of other modifiers. That approach offers some perks: Ctrl+Shift+Backspace lets us delete the next word (Ctrl+Delete) and Ctrl+Alt+Shift+Backspace lets us execute the Ctrl+Alt+Del keyboard shortcut.
c
// Initialize variable holding the binary\n// representation of active modifiers.\nuint8_t mod_state;\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n // Store the current modifier state in the variable for later reference\n mod_state = get_mods();\n switch (keycode) {\n\n case KC_BSPC:\n {\n // Initialize a boolean variable that keeps track\n // of the delete key status: registered or not?\n static bool delkey_registered;\n if (record->event.pressed) {\n // Detect the activation of either shift keys\n if (mod_state & MOD_MASK_SHIFT) {\n // First temporarily canceling both shifts so that\n // shift isn't applied to the KC_DEL keycode\n del_mods(MOD_MASK_SHIFT);\n register_code(KC_DEL);\n // Update the boolean variable to reflect the status of KC_DEL\n delkey_registered = true;\n // Reapplying modifier state so that the held shift key(s)\n // still work even after having tapped the Backspace/Delete key.\n set_mods(mod_state);\n return false;\n }\n } else { // on release of KC_BSPC\n // In case KC_DEL is still being sent even after the release of KC_BSPC\n if (delkey_registered) {\n unregister_code(KC_DEL);\n delkey_registered = false;\n return false;\n }\n }\n // Let QMK process the KC_BSPC keycode as usual outside of shift\n return true;\n }\n\n }\n return true;\n};
This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.
This page documents the automated process for converting keyboards to use drop-in replacement controllers. This process is designed to be easy to use and can be completed in a few simple steps.
Each converter category is broken down by its declared pin compatibility. This ensures that only valid combinations are attempted. You can generate the firmware by appending -e CONVERT_TO=<target> to your compile/flash command. For example:
You can also add the same CONVERT_TO=<target> to your keymap's rules.mk, which will accomplish the same thing.
TIP
If you get errors about PORTB/DDRB, etc not being defined, you'll need to convert the keyboard's code to use the GPIO Controls that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
To ensure compatibility, provide validation, and enable future workflows, a keyboard should declare its pin compatibility. For legacy reasons, this is currently assumed to be promicro. The following pin compatibility interfaces are currently defined:
Pin Compatibility
Notes
promicro
Includes RX/TX LEDs
elite_c
Includes bottom row pins, no LEDs
To declare the base for conversions, add this line to your keyboard's rules.mk:
The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this line to your config.h:
c
#define CONVERT_TO_PROTON_C_RXLED
The following defaults are based on what has been implemented for STM32 boards.
Feature set currently identical to Proton C. There are two versions of STeMCell available, with different pinouts:
v1.0.0
v2.0.0 (pre-release v1.0.1, v1.0.2) Default official firmware only supports v2.0.0 STeMCell.
STeMCell has support to swap UART and I2C pins to enable single-wire uart communication in STM chips. The following additional flags has to be used while compiling, based on the pin used for split communication:
The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro TXLED (D5) and RXLED (B0) are mapped to it. If you want only one of them mapped, you can undefine one and redefine it to another pin by adding these line to your config.h:
c
#undef B0\n// If VBUS detection is unused, we can send RXLED to the Vbus detect pin instead\n#define B0 PAL_LINE(GPIOA, 9)
RP2040 Community Edition - Elite-Pi, Helios, and Liatris
Feature set is identical to Adafruit KB2040. VBUS detection is enabled by default for superior split keyboard support. For more information, refer to the Community Edition pinout docs.
Mechanical switches often don't have a clean single transition between pressed and unpressed states.
In an ideal world, when you press a switch, you would expect the digital pin to see something like this: (X axis showing time
voltage +----------------------\n ^ |\n | |\n | ------------------+\n ----> time
However in the real world you will actually see contact bounce, which will look like multiple 1->0 and 0->1 transitions, until the value finally settles.
The time it takes for the switch to settle might vary with switch type, age, and even pressing technique.
If the device chooses not to mitigate contact bounce, then often actions that happen when the switch is pressed are repeated multiple times.
There are many ways to handle contact bounce ("Debouncing"). Some include employing additional hardware, for example an RC filter, while there are various ways to do debouncing in software too, often called debounce algorithms. This page discusses software debouncing methods available in QMK.
While technically not considered contact bounce/contact chatter, some switch technologies are susceptible to noise, meaning, while the key is not changing state, sometimes short random 0->1 or 1->0 transitions might be read by the digital circuit, for example:
Many debounce methods (but not all) will also make the device resistant to noise. If you are working with a technology that is susceptible to noise, you must choose a debounce method that will also mitigate noise for you.
Unit of time: Timestamp (milliseconds) vs Cycles (scans)
Debounce algorithms often have a 'debounce time' parameter, that specifies the maximum settling time of the switch contacts. This time might be measured in various units:
Cycles-based debouncing waits n cycles (scans), decreasing count by one each matrix_scan
Timestamp-based debouncing stores the millisecond timestamp a change occurred, and does substraction to figure out time elapsed.
Timestamp-based debouncing is usually superior, especially in the case of noise-resistant devices because settling times of physical switches is specified in units of time, and should not depend on the matrix scan-rate of the keyboard.
Cycles-based debouncing is sometimes considered inferior, because the settling time that it is able to compensate for depends on the performance of the matrix scanning code. If you use cycles-based debouncing, and you significantly improve the performance of your scanning code, you might end up with less effective debouncing. A situation in which cycles-based debouncing might be preferable is when noise is present, and the scanning algorithm is slow, or variable speed. Even if your debounce algorithm is fundamentally noise-resistant, if the scanning is slow, and you are using a timestamp-based algorithm, you might end up making a debouncing decision based on only two sampled values, which will limit the noise-resistance of the algorithm.
Currently all built-in debounce algorithms support timestamp-based debouncing only. In the future we might implement cycles-based debouncing, and it will be selectable via a config.h macro.
Symmetric vs Asymmetric
Symmetric - apply the same debouncing algorithm, to both key-up and key-down events.
Recommended naming convention: sym_*
Asymmetric - apply different debouncing algorithms to key-down and key-up events. E.g. Eager key-down, Defer key-up.
Recommended naming convention: asym_* followed by details of the type of algorithm in use, in order, for key-down and then key-up
Eager vs Defer
Eager - any key change is reported immediately. All further inputs for DEBOUNCE ms are ignored.
Eager algorithms are not noise-resistant.
Recommended naming conventions:
sym_eager_*
asym_eager_*_*: key-down is using eager algorithm
asym_*_eager_*: key-up is using eager algorithm
Defer - wait for no changes for DEBOUNCE ms before reporting change.
Defer algorithms are noise-resistant
Recommended naming conventions:
sym_defer_*
asym_defer_*_*: key-down is using defer algorithm
asym_*_defer_*: key-up is using defer algorithm
Global vs Per-Key vs Per-Row
Global - one timer for all keys. Any key change state affects global timer
Recommended naming convention: *_g
Per-key - one timer per key
Recommended naming convention: *_pk
Per-row - one timer per row
Recommended naming convention: *_pr
Per-key and per-row algorithms consume more resources (in terms of performance, and ram usage), but fast typists might prefer them over global.
Keyboards may select one of the core debounce methods by adding the following line into rules.mk:
DEBOUNCE_TYPE = <name of algorithm>
Name of algorithm is one of:
Algorithm
Description
sym_defer_g
Debouncing per keyboard. On any state change, a global timer is set. When DEBOUNCE milliseconds of no changes has occurred, all input changes are pushed. This is the highest performance algorithm with lowest memory usage and is noise-resistant.
sym_defer_pr
Debouncing per row. On any state change, a per-row timer is set. When DEBOUNCE milliseconds of no changes have occurred on that row, the entire row is pushed. This can improve responsiveness over sym_defer_g while being less susceptible to noise than per-key algorithm.
sym_defer_pk
Debouncing per key. On any state change, a per-key timer is set. When DEBOUNCE milliseconds of no changes have occurred on that key, the key status change is pushed.
sym_eager_pr
Debouncing per row. On any state change, response is immediate, followed by DEBOUNCE milliseconds of no further input for that row.
sym_eager_pk
Debouncing per key. On any state change, response is immediate, followed by DEBOUNCE milliseconds of no further input for that key.
asym_eager_defer_pk
Debouncing per key. On a key-down state change, response is immediate, followed by DEBOUNCE milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When DEBOUNCE milliseconds of no changes have occurred on that key, the key-up status change is pushed.
TIP
sym_defer_g is the default if DEBOUNCE_TYPE is undefined.
TIP
sym_eager_pr is suitable for use in keyboards where refreshing NUM_KEYS 8-bit counters is computationally expensive or has low scan rate while fingers usually hit one row at a time. This could be appropriate for the ErgoDox models where the matrix is rotated 90°. Hence its "rows" are really columns and each finger only hits a single "row" at a time with normal usage.
This allows you to configure persistent settings for your keyboard. These settings are stored in the EEPROM of your controller, and are retained even after power loss. The settings can be read with eeconfig_read_kb and eeconfig_read_user, and can be written to using eeconfig_update_kb and eeconfig_update_user. This is useful for features that you want to be able to toggle (like toggling rgb layer indication). Additionally, you can use eeconfig_init_kb and eeconfig_init_user to set the default values for the EEPROM.
The complicated part here, is that there are a bunch of ways that you can store and access data via EEPROM, and there is no "correct" way to do this. However, you only have a DWORD (4 bytes) for each function.
Keep in mind that EEPROM has a limited number of writes. While this is very high, it's not the only thing writing to the EEPROM, and if you write too often, you can potentially drastically shorten the life of your MCU.
If you don't understand the example, then you may want to avoid using this feature, as it is rather complicated.
This is an example of how to add settings, and read and write it. We're using the user keymap for the example here. This is a complex function, and has a lot going on. In fact, it uses a lot of the above functions to work!
This sets up a 32 bit structure that we can store settings with in memory, and write to the EEPROM. Using this removes the need to define variables, since they're defined in this structure. Remember that bool (boolean) values use 1 bit, uint8_t uses 8 bits, uint16_t uses up 16 bits. You can mix and match, but changing the order can cause issues, as it will change the values that are read and written.
We're using rgb_layer_change, for the layer_state_set_* function, and use keyboard_post_init_user and process_record_user to configure everything.
Now, using the keyboard_post_init_user code above, you want to add eeconfig_read_user() to it, to populate the structure you've just created. And you can then immediately use this structure to control functionality in your keymap. And It should look like:
c
void keyboard_post_init_user(void) {\n // Call the keymap level matrix init.\n\n // Read the user config from EEPROM\n user_config.raw = eeconfig_read_user();\n\n // Set default layer, if enabled\n if (user_config.rgb_layer_change) {\n rgblight_enable_noeeprom();\n rgblight_sethsv_noeeprom(HSV_CYAN);\n rgblight_mode_noeeprom(1);\n }\n}
The above function will use the EEPROM config immediately after reading it, to set the default layer's RGB color. The "raw" value of it is converted in a usable structure based on the "union" that you created above.
c
layer_state_t layer_state_set_user(layer_state_t state) {\n switch (get_highest_layer(state)) {\n case _RAISE:\n if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_MAGENTA); rgblight_mode_noeeprom(1); }\n break;\n case _LOWER:\n if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_RED); rgblight_mode_noeeprom(1); }\n break;\n case _PLOVER:\n if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_GREEN); rgblight_mode_noeeprom(1); }\n break;\n case _ADJUST:\n if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_WHITE); rgblight_mode_noeeprom(1); }\n break;\n default: // for any other layers, or the default layer\n if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_CYAN); rgblight_mode_noeeprom(1); }\n break;\n }\n return state;\n}
This will cause the RGB underglow to be changed ONLY if the value was enabled. Now to configure this value, create a new keycode for process_record_user called RGB_LYR. Additionally, we want to make sure that if you use the normal RGB codes, that it turns off Using the example above, make it look this:
c
\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case FOO:\n if (record->event.pressed) {\n // Do something when pressed\n } else {\n // Do something else when release\n }\n return false; // Skip all further processing of this key\n case KC_ENTER:\n // Play a tone when enter is pressed\n if (record->event.pressed) {\n PLAY_SONG(tone_qwerty);\n }\n return true; // Let QMK send the enter press/release events\n case RGB_LYR: // This allows me to use underglow as layer indication, or as normal\n if (record->event.pressed) {\n user_config.rgb_layer_change ^= 1; // Toggles the status\n eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM\n if (user_config.rgb_layer_change) { // if layer state indication is enabled,\n layer_state_set(layer_state); // then immediately update the layer color\n }\n }\n return false;\n case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference)\n if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled\n if (user_config.rgb_layer_change) { // only if this is enabled\n user_config.rgb_layer_change = false; // disable it, and\n eeconfig_update_user(user_config.raw); // write the setings to EEPROM\n }\n }\n return true; break;\n default:\n return true; // Process all other keycodes normally\n }\n}
And lastly, you want to add the eeconfig_init_user function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the EE_CLR keycode or Bootmagic functionallity. For example, if you want to set rgb layer indication by default, and save the default valued.
c
void eeconfig_init_user(void) { // EEPROM is getting reset!\n user_config.raw = 0;\n user_config.rgb_layer_change = true; // We want this enabled by default\n eeconfig_update_user(user_config.raw); // Write default value to EEPROM now\n\n // use the non noeeprom versions, to write these values to EEPROM too\n rgblight_enable(); // Enable RGB by default\n rgblight_sethsv(HSV_CYAN); // Set it to CYAN by default\n rgblight_mode(1); // set to solid by default\n}
And you're done. The RGB layer indication will only work if you want it to. And it will be saved, even after unplugging the board. And if you use any of the RGB codes, it will disable the layer indication, so that it stays on the mode and color that you set it to.
One of the most powerful and well used features of QMK Firmware is the ability to use layers. For most people, this amounts to a function key that allows for different keys, much like what you would see on a laptop or tablet keyboard.
For a detailed explanation of how the layer stack works, checkout Keymap Overview.
These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use KC_TRNS to allow keypresses to pass through to lower layers. When using momentary layer switching with MO(), LM(), TT(), or LT(), make sure to leave the key on the above layers transparent or it may not work as intended.
DF(layer) - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. (Note that this is a temporary switch that only persists until the keyboard loses power. To modify the default layer in a persistent way requires deeper customization, such as calling the set_single_persistent_default_layer function inside of process_record_user.)
MO(layer) - momentarily activates layer. As soon as you let go of the key, the layer is deactivated.
LM(layer, mod) - Momentarily activates layer (like MO), but with modifier(s) mod active. Only supports layers 0-15. The modifiers this keycode accept are prefixed with MOD_, not KC_. These modifiers can be combined using bitwise OR, e.g. LM(_RAISE, MOD_LCTL | MOD_LALT).
LT(layer, kc) - momentarily activates layer when held, and sends kc when tapped. Only supports layers 0-15.
OSL(layer) - momentarily activates layer until the next key is pressed. See One Shot Keys for details and additional functionality.
TG(layer) - toggles layer, activating it if it's inactive and vice versa
TO(layer) - activates layer and de-activates all other layers (except your default layer). This function is special, because instead of just adding/removing one layer to your active layer stack, it will completely replace your current active layers, uniquely allowing you to replace higher layers with a lower one. This is activated on keydown (as soon as the key is pressed).
TT(layer) - Layer Tap-Toggle. If you hold the key down, layer is activated, and then is de-activated when you let go (like MO). If you repeatedly tap it, the layer will be toggled on or off (like TG). It needs 5 taps by default, but you can change this by defining TAPPING_TOGGLE -- for example, #define TAPPING_TOGGLE 2 to toggle on just two taps.
Currently, the layer argument of LT() is limited to layers 0-15, and the kc argument to the Basic Keycode set, meaning you can't use keycodes like LCTL(), KC_TILD, or anything greater than 0xFF. This is because QMK uses 16-bit keycodes, of which 4 bits are used for the function identifier and 4 bits for the layer, leaving only 8 bits for the keycode.
For a similar reason, the layer argument of LM() is also limited to layers 0-15 and the mod argument must fit within 5 bits. As a consequence, although left and right modifiers are supported by LM(), it is impossible to mix and match left and right modifiers. Specifying at least one right-hand modifier in a combination such as MOD_RALT|MOD_LSFT will convert all the listed modifiers to their right-hand counterpart. So, using the aforementionned mod-mask will actually send Right Alt+Right Shift. Make sure to use the MOD_xxx constants over alternative ways of specifying modifiers when defining your layer-mod key.
LM(1,KC_LSFT)
LM(1,MOD_MASK_SHIFT)
LM(1,MOD_BIT(KC_LSFT))
LM(1,MOD_LSFT)
❌
❌
❌
✅
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, Tap Dance can be used to accomplish this.
Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.
If you are just getting started with QMK you will want to keep everything simple. Follow these guidelines when setting up your layers:
Setup layer 0 as your default, "base" layer. This is your normal typing layer, and could be whatever layout you want (qwerty, dvorak, colemak, etc.). It's important to set this as the lowest layer since it will typically have most or all of the keyboard's keys defined, so would block other layers from having any effect if it were above them (i.e., had a higher layer number).
Arrange your layers in a "tree" layout, with layer 0 as the root. Do not try to enter the same layer from more than one other layer.
In a layer's keymap, only reference higher-numbered layers. Because layers are processed from the highest-numbered (topmost) active layer down, modifying the state of lower layers can be tricky and error-prone.
Sometimes you need more than one base layer. For example, if you want to switch between QWERTY and Dvorak, switch between layouts for different countries, or switch your layout for different videogames. Your base layers should always be the lowest numbered layers. When you have multiple base layers you should always treat them as mutually exclusive. When one base layer is on the others are off.
Once you have a good feel for how layers work and what you can do, you can get more creative. The rules listed in the beginner section will help you be successful by avoiding some of the tricker details but they can be constraining, especially for ultra-compact keyboard users. Understanding how layers work will allow you to use them in more advanced ways.
Layers stack on top of each other in numerical order. When determining what a keypress does, QMK scans the layers from the top down, stopping when it reaches the first active layer that is not set to KC_TRNS. As a result if you activate a layer that is numerically lower than your current layer, and your current layer (or another layer that is active and higher than your target layer) has something other than KC_TRNS, that is the key that will be sent, not the key on the layer you just activated. This is the cause of most people's "why doesn't my layer get switched" problem.
Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. layer_on activates a layer, and layer_off deactivates it. More layer-related functions can be found in action_layer.h.
Does the same as update_tri_layer(x, y, z), but from layer_state_set_* functions.
In addition to the functions that you can call, there are a number of callback functions that get called every time the layer changes. This passes the layer state to the function, where it can be read or modified.
Callback
Description
layer_state_set_kb(layer_state_t state)
Callback for layer functions, for keyboard.
layer_state_set_user(layer_state_t state)
Callback for layer functions, for users.
default_layer_state_set_kb(layer_state_t state)
Callback for default layer functions, for keyboard. Called on keyboard initialization.
default_layer_state_set_user(layer_state_t state)
Callback for default layer functions, for users. Called on keyboard initialization.
TIP
For additional details on how you can use these callbacks, check out the Layer Change Code document.
It is also possible to check the state of a particular layer using the following functions and macros.
Function
Description
Aliases
layer_state_is(layer)
Checks if the specified layer is enabled globally.
IS_LAYER_ON(layer), IS_LAYER_OFF(layer)
layer_state_cmp(state, layer)
Checks state to see if the specified layer is enabled. Intended for use in layer callbacks.
This example shows how to implement a custom keycode to cycle through a range of layers.
c
// Define the keycode, `QK_USER` avoids collisions with existing keycodes\nenum keycodes {\n KC_CYCLE_LAYERS = QK_USER,\n};\n\n// 1st layer on the cycle\n#define LAYER_CYCLE_START 0\n// Last layer on the cycle\n#define LAYER_CYCLE_END 4\n\n// Add the behaviour of this new keycode\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case KC_CYCLE_LAYERS:\n // Our logic will happen on presses, nothing is done on releases\n if (!record->event.pressed) { \n // We've already handled the keycode (doing nothing), let QMK know so no further code is run unnecessarily\n return false;\n }\n\n uint8_t current_layer = get_highest_layer(layer_state);\n\n // Check if we are within the range, if not quit\n if (current_layer > LAYER_CYCLE_END || current_layer < LAYER_CYCLE_START) {\n return false;\n }\n\n uint8_t next_layer = current_layer + 1;\n if (next_layer > LAYER_CYCLE_END) {\n next_layer = LAYER_CYCLE_START;\n }\n layer_move(next_layer);\n return false;\n\n // Process other keycodes normally\n default:\n return true;\n }\n}\n\n// Place `KC_CYCLE_LAYERS` as a keycode in your keymap
Use the IS_LAYER_ON_STATE(state, layer) and IS_LAYER_OFF_STATE(state, layer) macros to check the status of a particular layer.
Outside of layer_state_set_* functions, you can use the IS_LAYER_ON(layer) and IS_LAYER_OFF(layer) macros to check global layer state.
The layouts/default/ and layouts/community/ are two examples of layout "repositories" - currently default will contain all of the information concerning the layout, and one default keymap named default_<layout>, for users to use as a reference. community contains all of the community keymaps, with the eventual goal of being split-off into a separate repo for users to clone into layouts/. QMK searches through all folders in layouts/, so it's possible to have multiple repositories here.
Each layout folder is named ([a-z0-9_]) after the physical aspects of the layout, in the most generic way possible, and contains a readme.md with the layout to be defined by the keyboard:
markdown
# 60_ansi\n\n LAYOUT_60_ansi
New names should try to stick to the standards set by existing layouts, and can be discussed in the PR/Issue.
For a keyboard to support a layout, the variable must be defined in it's <keyboard>.h, and match the number of arguments/keys (and preferably the physical layout):
c
#define LAYOUT_60_ansi KEYMAP_ANSI
The name of the layout must match this regex: [a-z0-9_]+
The folder name must be added to the keyboard's rules.mk:
LAYOUTS = 60_ansi
LAYOUTS can be set in any keyboard folder level's rules.mk:
LAYOUTS = 60_iso
but the LAYOUT_<layout> variable must be defined in <folder>.h as well.
Instead of using #include "planck.h", you can use this line to include whatever <keyboard>.h (<folder>.h should not be included here) file that is being compiled:
c
#include QMK_KEYBOARD_H
If you want to keep some keyboard-specific code, you can use these variables to escape it with an #ifdef statement:
In order to support both split and non-split keyboards with the same layout, you need to use the keyboard agnostic LAYOUT_<layout name> macro in your keymap. For instance, in order for a Let's Split and Planck to share the same layout file, you need to use LAYOUT_ortho_4x12 instead of LAYOUT_planck_grid or just {} for a C array.
', 37);
+const _hoisted_38 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_38);
+}
+const feature_layouts = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ feature_layouts as default
+};
diff --git a/assets/feature_layouts.md.Cjp6pYRh.lean.js b/assets/feature_layouts.md.Cjp6pYRh.lean.js
new file mode 100644
index 0000000..69569f8
--- /dev/null
+++ b/assets/feature_layouts.md.Cjp6pYRh.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Layouts: Using a Keymap with Multiple Keyboards","description":"","frontmatter":{},"headers":[],"relativePath":"feature_layouts.md","filePath":"feature_layouts.md"}');
+const _sfc_main = { name: "feature_layouts.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 37);
+const _hoisted_38 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_38);
+}
+const feature_layouts = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ feature_layouts as default
+};
diff --git a/assets/feature_macros.md.DxDpi-Vz.js b/assets/feature_macros.md.DxDpi-Vz.js
new file mode 100644
index 0000000..f4fe769
--- /dev/null
+++ b/assets/feature_macros.md.DxDpi-Vz.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Macros","description":"","frontmatter":{},"headers":[],"relativePath":"feature_macros.md","filePath":"feature_macros.md"}');
+const _sfc_main = { name: "feature_macros.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Macros allow you to send multiple keystrokes when pressing just one key. QMK has a number of ways to define and use macros. These can do anything you want: type common phrases for you, copypasta, repetitive game movements, or even help you code.
WARNING
Security Note: While it is possible to use macros to send passwords, credit card numbers, and other sensitive information it is a supremely bad idea to do so. Anyone who gets a hold of your keyboard will be able to access that information by opening a text editor.
You can define up to 32 macros in a keymap.json file, as used by Configurator, and qmk compile. You can define these macros in a list under the macros keyword, like this:
If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros - you may need to type different keys to get the same letters! To address this you can add the host_language key to your keymap.json, like so:
Each macro is an array consisting of strings and objects (dictionaries). Strings are typed to your computer while objects allow you to control how your macro is typed out.
Sometimes you want a key to type out words or phrases. For the most common situations, we've provided SEND_STRING(), which will type out a string (i.e. a sequence of characters) for you. All ASCII characters that are easily translatable to a keycode are supported (e.g. qmk 123\\n\\t).
Here is an example keymap.c for a two-key keyboard:
c
enum custom_keycodes {\n QMKBEST = SAFE_RANGE,\n};\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case QMKBEST:\n if (record->event.pressed) {\n // when keycode QMKBEST is pressed\n SEND_STRING("QMK is the best thing ever!");\n } else {\n // when keycode QMKBEST is released\n }\n break;\n }\n return true;\n};\n\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n [0] = {\n {QMKBEST, KC_ESC},\n // ...\n },\n};
What happens here is this: We first define a new custom keycode in the range not occupied by any other keycodes. Then we use the process_record_user function, which is called whenever a key is pressed or released, to check if our custom keycode has been activated. If yes, we send the string "QMK is the best thing ever!" to the computer via the SEND_STRING macro (this is a C preprocessor macro, not to be confused with QMK macros). We return true to indicate to the caller that the key press we just processed should continue to be processed as normal (as we didn't replace or alter the functionality). Finally, we define the keymap so that the first button activates our macro and the second button is just an escape button.
You might want to add more than one macro. You can do that by adding another keycode and adding another case to the switch statement, like so:
c
enum custom_keycodes {\n QMKBEST = SAFE_RANGE,\n QMKURL,\n MY_OTHER_MACRO,\n};\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case QMKBEST:\n if (record->event.pressed) {\n // when keycode QMKBEST is pressed\n SEND_STRING("QMK is the best thing ever!");\n } else {\n // when keycode QMKBEST is released\n }\n break;\n\n case QMKURL:\n if (record->event.pressed) {\n // when keycode QMKURL is pressed\n SEND_STRING("https://qmk.fm/\\n");\n } else {\n // when keycode QMKURL is released\n }\n break;\n\n case MY_OTHER_MACRO:\n if (record->event.pressed) {\n SEND_STRING(SS_LCTL("ac")); // selects all and copies\n }\n break;\n }\n return true;\n};\n\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n [0] = {\n {MY_CUSTOM_MACRO, MY_OTHER_MACRO},\n // ...\n },\n};
TIP
An enumerated list of custom keycodes (enum custom_keycodes) must be declared before keymaps[] array, process_record_user() and any other function that use the list for the compiler to recognise it.
In addition to the process_record_user() function, is the post_process_record_user() function. This runs after process_record and can be used to do things after a keystroke has been sent. This is useful if you want to have a key pressed before and released after a normal key, for instance.
In this example, we modify most normal keypresses so that F22 is pressed before the keystroke is normally sent, and release it only after it's been released.
c
static uint8_t f22_tracker;\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case KC_A ... KC_F21: //notice how it skips over F22\n case KC_F23 ... KC_EXSEL: //exsel is the last one before the modifier keys\n if (record->event.pressed) {\n register_code(KC_F22); //this means to send F22 down\n f22_tracker++;\n register_code(keycode);\n return false;\n }\n break;\n }\n return true;\n}\n\nvoid post_process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case KC_A ... KC_F21: //notice how it skips over F22\n case KC_F23 ... KC_EXSL: //exsel is the last one before the modifier keys\n if (!record->event.pressed) {\n f22_tracker--;\n if (!f22_tracker) {\n unregister_code(KC_F22); //this means to send F22 up\n }\n }\n break;\n }\n}
By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap:
If for some reason you're manipulating strings and need to print out something you just generated (instead of being a literal, constant string), you can use send_string(), like this:
c
char my_str[4] = "ok.";\nsend_string(my_str);
The shortcuts defined above won't work with send_string(), but you can separate things out to different lines if needed:
There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro, if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple.
TIP
You can also use the functions described in Useful function and Checking modifier state for additional functionality. For example, reset_keyboard() allows you to reset the keyboard as part of a macro and get_mods() & MOD_MASK_SHIFT lets you check for the existence of active shift modifiers.
Sends register_code(<kc>) and then unregister_code(<kc>). This is useful if you want to send both the press and release events ("tap" the key, rather than hold it).
If TAP_CODE_DELAY is defined (default 0), this function waits that many milliseconds before calling unregister_code(<kc>). This can be useful when you are having issues with taps (un)registering.
If the keycode is KC_CAPS, it waits TAP_HOLD_CAPS_DELAY milliseconds instead (default 80), as macOS prevents accidental Caps Lock activation by waiting for the key to be held for a certain amount of time.
Like tap_code(<kc>), but with a delay parameter for specifying arbitrary intervals before sending the unregister event.
register_code16(<kc>);, unregister_code16(<kc>);, tap_code16(<kc>); and tap_code16_delay(<kc>, <delay>);
These functions work similar to their regular counterparts, but allow you to use modded keycodes (with Shift, Alt, Control, and/or GUI applied to them).
Eg, you could use register_code16(S(KC_5)); instead of registering the mod, then registering the keycode.
This macro will register KC_LALT and tap KC_TAB, then wait for 1000ms. If the key is tapped again, it will send another KC_TAB; if there is no tap, KC_LALT will be unregistered, thus allowing you to cycle through windows.
c
bool is_alt_tab_active = false; // ADD this near the beginning of keymap.c\nuint16_t alt_tab_timer = 0; // we will be using them soon.\n\nenum custom_keycodes { // Make sure have the awesome keycode ready\n ALT_TAB = SAFE_RANGE,\n};\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) { // This will do most of the grunt work with the keycodes.\n case ALT_TAB:\n if (record->event.pressed) {\n if (!is_alt_tab_active) {\n is_alt_tab_active = true;\n register_code(KC_LALT);\n }\n alt_tab_timer = timer_read();\n register_code(KC_TAB);\n } else {\n unregister_code(KC_TAB);\n }\n break;\n }\n return true;\n}\n\nvoid matrix_scan_user(void) { // The very important timer.\n if (is_alt_tab_active) {\n if (timer_elapsed(alt_tab_timer) > 1000) {\n unregister_code(KC_LALT);\n is_alt_tab_active = false;\n }\n }\n}
', 87);
+const _hoisted_88 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_88);
+}
+const feature_macros = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ feature_macros as default
+};
diff --git a/assets/feature_macros.md.DxDpi-Vz.lean.js b/assets/feature_macros.md.DxDpi-Vz.lean.js
new file mode 100644
index 0000000..f206ea8
--- /dev/null
+++ b/assets/feature_macros.md.DxDpi-Vz.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Macros","description":"","frontmatter":{},"headers":[],"relativePath":"feature_macros.md","filePath":"feature_macros.md"}');
+const _sfc_main = { name: "feature_macros.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 87);
+const _hoisted_88 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_88);
+}
+const feature_macros = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ feature_macros as default
+};
diff --git a/assets/feature_userspace.md.BWBTJPLX.js b/assets/feature_userspace.md.BWBTJPLX.js
new file mode 100644
index 0000000..6c9b74c
--- /dev/null
+++ b/assets/feature_userspace.md.BWBTJPLX.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Userspace: Sharing Code Between Keymaps","description":"","frontmatter":{},"headers":[],"relativePath":"feature_userspace.md","filePath":"feature_userspace.md"}');
+const _sfc_main = { name: "feature_userspace.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Please note, userspace submissions to the upstream qmk/qmk_firmware repository are no longer being accepted. The userspace feature itself remains functional and can be configured locally.
If you use more than one keyboard with a similar keymap, you might see the benefit in being able to share code between them. Create your own folder in users/ named the same as your keymap (ideally your GitHub username, <name>) with the following structure:
/users/<name>/ (added to the path automatically)
readme.md (optional, recommended)
rules.mk (included automatically)
config.h (included automatically)
<name>.h (optional)
<name>.c (optional)
cool_rgb_stuff.c (optional)
cool_rgb_stuff.h (optional)
All this only happens when you build a keymap named <name>, like this:
make planck:<name>\n
For example,
make planck:jack\n
Will include the /users/jack/ folder in the path, along with /users/jack/rules.mk.
The rules.mk is one of the two files that gets processed automatically. This is how you add additional source files (such as <name>.c) will be added when compiling.
It's highly recommended that you use <name>.c as the default source file to be added. And to add it, you need to add it the SRC in rules.mk like this:
SRC += <name>.c\n
Additional files may be added in the same way - it's recommended you have one named <name>.c/.h to start off with, though.
The /users/<name>/rules.mk file will be included in the build after the rules.mk from your keymap. This allows you to have features in your userspace rules.mk that depend on individual QMK features that may or may not be available on a specific keyboard.
For example, if you have RGB control features shared between all your keyboards that support RGB lighting, you can add support for that if the RGBLIGHT feature is enabled:
make
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)\n # Include my fancy rgb functions source here\n SRC += cool_rgb_stuff.c\nendif
Alternatively, you can define RGB_ENABLE in your keymap's rules.mk and then check for the variable in your userspace's rules.mk like this:
make
ifdef RGB_ENABLE\n # Include my fancy rgb functions source here\n SRC += cool_rgb_stuff.c\nendif
By default the userspace used will be the same as the keymap name. In some situations this isn't desirable. For instance, if you use the layout feature you can't use the same name for different keymaps (e.g. ANSI and ISO). You can name your layouts mylayout-ansi and mylayout-iso and add the following line to your layout's rules.mk:
USER_NAME := mylayout
This is also useful if you have multiple different keyboards with different features physically present on the board (such as one with RGB Lights, and one with Audio, or different number of LEDs, or connected to a different PIN on the controller).
Additionally, config.h here will be processed like the same file in your keymap folder. This is handled separately from the <name>.h file.
The reason for this, is that <name>.h won't be added in time to add settings (such as #define TAPPING_TERM 100), and including the <name.h> file in any config.h files will result in compile issues.
!>You should use the config.h for configuration options, and the <name>.h file for user or keymap specific settings (such as the enum for layer or keycodes)
Copyright <year> <name> <email> @<github_username>\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 2 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see <http://www.gnu.org/licenses/>.
You'd want to replace the year, name, email and GitHub username with your info.
Additionally, this is a good place to document your code, if you wish to share it with others.
Build All Keyboards That Support a Specific Keymap
Want to check all your keymaps build in a single command? You can run:
make all:<name>\n
For example,
make all:jack\n
This is ideal for when you want ensure everything compiles successfully when preparing a Pull request.
QMK has a bunch of functions that have _quantum, _kb, and _user versions that you can use. You will pretty much always want to use the user version of these functions. But the problem is that if you use them in your userspace, then you don't have a version that you can use in your keymap.
However, you can actually add support for keymap version, so that you can use it in both your userspace and your keymap!
For instance, let's look at the layer_state_set_user() function. You can enable the Tri Layer State functionality on all of your boards, while also retaining the Tri Layer functionality in your keymap.c files.
The __attribute__ ((weak)) part tells the compiler that this is a placeholder function that can then be replaced by a version in your keymap.c. That way, you don't need to add it to your keymap.c, but if you do, you won't get any conflicts because the function is the same name.
The _keymap part here doesn't matter, it just needs to be something other than _quantum, _kb, or _user, since those are already in use. So you could use layer_state_set_mine, layer_state_set_fn, or anything else.
Since the Userspace feature can support a staggering number of boards, you may have boards that you want to enable certain functionality for, but not for others. And you can actually create "features" that you can enable or disable in your own userspace.
For instance, if you wanted to have a bunch of macros available, but only on certain boards (to save space), you could "hide" them being a #ifdef MACROS_ENABLED, and then enable it per board. To do this, add this to your rules.mk
The OPT_DEFS setting causes MACROS_ENABLED to be defined for your keyboards (note the -D in front of the name), and you could use #ifdef MACROS_ENABLED to check the status in your c/h files, and handle that code based on that.
Then you add MACROS_ENABLED = yes to the rules.mk for you keymap to enable this feature and the code in your userspace.
And in your process_record_user function, you'd do something like this:
c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n#ifdef MACROS_ENABLED\n case MACRO1:\n if (!record->event.pressed) {\n SEND_STRING("This is macro 1!");\n }\n break;\n case MACRO2:\n if (!record->event.pressed) {\n SEND_STRING("This is macro 2!");\n }\n break;\n#endif\n }\n return true;\n}
If you wanted to consolidate macros and other functions into your userspace for all of your keymaps, you can do that. This builds upon the Customized Functions example above. This lets you maintain a bunch of macros that are shared between the different keyboards, and allow for keyboard specific macros, too.
First, you'd want to go through all of your keymap.c files and replace process_record_user with process_record_keymap instead. This way, you can still use keyboard specific codes on those boards, and use your custom "global" keycodes as well. You'll also want to replace SAFE_RANGE with NEW_SAFE_RANGE so that you wont have any overlapping keycodes
Then add #include "<name>.h" to all of your keymap.c files. This allows you to use these new keycodes without having to redefine them in each keymap.
Once you've done that, you'll want to set the keycode definitions that you need to the <name>.h file. For instance:
c
#pragma once\n\n#include "quantum.h"\n#include "action.h"\n#include "version.h"\n\n// Define all of\nenum custom_keycodes {\n KC_MAKE = SAFE_RANGE,\n NEW_SAFE_RANGE //use "NEW_SAFE_RANGE" for keymap specific codes\n};
Now you want to create the <name>.c file, and add this content to it:
c
#include "<name>.h"\n\n__attribute__ ((weak))\nbool process_record_keymap(uint16_t keycode, keyrecord_t *record) {\n return true;\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader\n if (!record->event.pressed) {\n uint8_t temp_mod = get_mods();\n uint8_t temp_osm = get_oneshot_mods();\n clear_mods(); clear_oneshot_mods();\n SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP);\n #ifndef FLASH_BOOTLOADER\n if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)\n #endif\n {\n SEND_STRING(":flash");\n }\n if ((temp_mod | temp_osm) & MOD_MASK_CTRL) {\n SEND_STRING(" -j8 --output-sync");\n }\n tap_code(KC_ENT);\n set_mods(temp_mod);\n }\n break;\n\n }\n return process_record_keymap(keycode, record);\n}
For boards that may not have a shift button (such as on a macro pad), we need a way to always include the bootloader option. To do that, add the following to the rules.mk in your userspace folder:
This will add a new KC_MAKE keycode that can be used in any of your keymaps. And this keycode will output make <keyboard>:<keymap>, making frequent compiling easier. And this will work with any keyboard and any keymap as it will output the current boards info, so that you don't have to type this out every time.
Also, holding Shift will add the flash target (:flash) to the command. Holding Control will add some commands that will speed up compiling time by processing multiple files at once.
And for the boards that lack a shift key, or that you want to always attempt the flashing part, you can add FLASH_BOOTLOADER = yes to the rules.mk of that keymap.
TIP
This should flash the newly compiled firmware automatically, using the correct utility, based on the bootloader settings (or default to just generating the HEX file). However, it should be noted that this may not work on all systems. AVRDUDE doesn't work on WSL, namely.
', 73);
+const _hoisted_74 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_74);
+}
+const feature_userspace = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ feature_userspace as default
+};
diff --git a/assets/feature_userspace.md.BWBTJPLX.lean.js b/assets/feature_userspace.md.BWBTJPLX.lean.js
new file mode 100644
index 0000000..80fdcd9
--- /dev/null
+++ b/assets/feature_userspace.md.BWBTJPLX.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Userspace: Sharing Code Between Keymaps","description":"","frontmatter":{},"headers":[],"relativePath":"feature_userspace.md","filePath":"feature_userspace.md"}');
+const _sfc_main = { name: "feature_userspace.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 73);
+const _hoisted_74 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_74);
+}
+const feature_userspace = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ feature_userspace as default
+};
diff --git a/assets/features_audio.md.Dy0ToeLW.js b/assets/features_audio.md.Dy0ToeLW.js
new file mode 100644
index 0000000..2f2b251
--- /dev/null
+++ b/assets/features_audio.md.Dy0ToeLW.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Audio","description":"","frontmatter":{},"headers":[],"relativePath":"features/audio.md","filePath":"features/audio.md"}');
+const _sfc_main = { name: "features/audio.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Your keyboard can make sounds! If you've got a spare pin you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
To activate this feature, add AUDIO_ENABLE = yes to your rules.mk.
On Atmega32U4 based boards, up to two simultaneous tones can be rendered. With one speaker connected to a PWM capable pin on PORTC driven by timer 3 and the other on one of the PWM pins on PORTB driven by timer 1.
The following pins can be configured as audio outputs in config.h - for one speaker set either one out of:
per speaker is - for example with a piezo buzzer - the black lead to Ground, and the red lead connected to the selected AUDIO_PIN for the primary; and similarly with AUDIO_PIN_ALT for the secondary.
Most STM32 MCUs have DAC peripherals, with a notable exception of the STM32F1xx series. Generally, the DAC peripheral drives pins A4 or A5. To enable DAC-based audio output on STM32 devices, add AUDIO_DRIVER = dac_basic to rules.mk and set in config.h either:
#define AUDIO_PIN A4 or #define AUDIO_PIN A5
the other DAC channel can optionally be used with a secondary speaker, just set:
#define AUDIO_PIN_ALT A4 or #define AUDIO_PIN_ALT A5
Do note though that the dac_basic driver is only capable of reproducing one tone per speaker/channel at a time, for more tones simultaneously, try the dac_additive driver.
for two piezos, for example configured as AUDIO_PIN A4 and AUDIO_PIN_ALT A5 would be: red lead to A4 and black to Ground, and similarly with the second one: A5 = red, and Ground = black
another alternative is to drive one piezo with both DAC pins - for an extra "push". wiring red to A4 and black to A5 (or the other way round) and add #define AUDIO_PIN_ALT_AS_NEGATIVE to config.h
Another option, besides dac_basic (which produces sound through a square-wave), is to use the DAC to do additive wave synthesis. With a number of predefined wave-forms or by providing your own implementation to generate samples on the fly. To use this feature set AUDIO_DRIVER = dac_additive in your rules.mk, and select in config.h EITHER #define AUDIO_PIN A4 or #define AUDIO_PIN A5.
The used waveform defaults to sine, but others can be selected by adding one of the following defines to config.h:
#define AUDIO_DAC_SAMPLE_WAVEFORM_SINE
#define AUDIO_DAC_SAMPLE_WAVEFORM_TRIANGLE
#define AUDIO_DAC_SAMPLE_WAVEFORM_TRAPEZOID
#define AUDIO_DAC_SAMPLE_WAVEFORM_SQUARE
Should you rather choose to generate and use your own sample-table with the DAC unit, implement uint16_t dac_value_generate(void) with your keyboard - for an example implementation see keyboards/planck/keymaps/synth_sample or keyboards/planck/keymaps/synth_wavetable
if the DAC pins are unavailable (or the MCU has no usable DAC at all, like STM32F1xx); PWM can be an alternative. Note that there is currently only one speaker/pin supported.
set in rules.mk:
AUDIO_DRIVER = pwm_software and in config.h: #define AUDIO_PIN C13 (can be any pin) to have the selected pin output a pwm signal, generated from a timer callback which toggles the pin in software.
the usual piezo wiring: red goes to the selected AUDIO_PIN, black goes to ground.
OR if you can chose to drive one piezo with two pins, for example #define AUDIO_PIN B1, #define AUDIO_PIN_ALT B2 in config.h, with #define AUDIO_PIN_ALT_AS_NEGATIVE - then the red lead could go to B1, the black to B2.
STM32F1xx have to fall back to using PWM, but can do so in hardware; but again on currently only one speaker/pin.
AUDIO_DRIVER = pwm_hardware in rules.mk, and in config.h: #define AUDIO_PIN A8#define AUDIO_PWM_DRIVER PWMD1#define AUDIO_PWM_CHANNEL 1 (as well as #define AUDIO_PWM_PAL_MODE 42 if you are on STM32F2 or larger) which will use Timer 1 to directly drive pin PA8 through the PWM hardware (TIM1_CH1 = PA8). Should you want to use the pwm-hardware on another pin and timer - be ready to dig into the STM32 data-sheet to pick the right TIMx_CHy and pin-alternate function.
Since most drivers can only render one tone per speaker at a time (with the one exception: arm dac-additive) there also exists a "workaround-feature" that does time-slicing/multiplexing - which does what the name implies: cycle through a set of active tones (e.g. when playing chords in Music Mode) at a given rate, and put one tone at a time out through the one/few speakers that are available.
To enable this feature, and configure a starting-rate, add the following defines to config.h:
There's a couple of different sounds that will automatically be enabled without any other configuration:
STARTUP_SONG // plays when the keyboard starts up (audio.c)\nGOODBYE_SONG // plays when you press the QK_BOOT key (quantum.c)\nAG_NORM_SONG // plays when you press AG_NORM (quantum.c)\nAG_SWAP_SONG // plays when you press AG_SWAP (quantum.c)\nCG_NORM_SONG // plays when you press CG_NORM (quantum.c)\nCG_SWAP_SONG // plays when you press CG_SWAP (quantum.c)\nMUSIC_ON_SONG // plays when music mode is activated (process_music.c)\nMUSIC_OFF_SONG // plays when music mode is deactivated (process_music.c)\nCHROMATIC_SONG // plays when the chromatic music mode is selected (process_music.c)\nGUITAR_SONG // plays when the guitar music mode is selected (process_music.c)\nVIOLIN_SONG // plays when the violin music mode is selected (process_music.c)\nMAJOR_SONG // plays when the major music mode is selected (process_music.c)
You can override the default songs by doing something like this in your config.h:
Additionally, if you with to maintain your own list of songs (such as ones that may be copyrighted) and not have them added to the repo, you can create a user_song_list.h file and place it in your keymap (or userspace) folder. This file will be automatically included, it just needs to exist.
To play a custom sound at a particular time, you can define a song like this (near the top of the file):
c
float my_song[][2] = SONG(QWERTY_SOUND);
And then play your song like this:
c
PLAY_SONG(my_song);
Alternatively, you can play it in a loop like this:
c
PLAY_LOOP(my_song);
It's advised that you wrap all audio features in #ifdef AUDIO_ENABLE / #endif to avoid causing problems when audio isn't built into the keyboard.
The available keycodes for audio are:
Key
Aliases
Description
QK_AUDIO_ON
AU_ON
Turns on Audio Feature
QK_AUDIO_OFF
AU_OFF
Turns off Audio Feature
QK_AUDIO_TOGGLE
AU_TOGG
Toggles Audio state
WARNING
These keycodes turn all of the audio functionality on and off. Turning it off means that audio feedback, audio clicky, music mode, etc. are disabled, completely.
the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lengths are defined relative to that. The initial/default tempo is set to 120 bpm, but can be configured by setting TEMPO_DEFAULT in config.c. There is also a set of functions to modify the tempo from within the user/keymap code:
For ARM devices, you can adjust the DAC sample values. If your board is too loud for you or your coworkers, you can set the max using AUDIO_DAC_SAMPLE_MAX in your config.h:
c
#define AUDIO_DAC_SAMPLE_MAX 4095U
the DAC usually runs in 12Bit mode, hence a volume of 100% = 4095U
Note: this only adjusts the volume aka 'works' if you stick to WAVEFORM_SQUARE, since its samples are generated on the fly - any other waveform uses a hardcoded/precomputed sample-buffer.
Aka "audio effects", different ones can be enabled by setting in config.h these defines: #define AUDIO_VOICES to enable the feature, and #define AUDIO_VOICE_DEFAULT something to select a specific effect for details see quantum/audio/voices.h and .c
The music mode maps your columns to a chromatic scale, and your rows to octaves. This works best with ortholinear keyboards, but can be made to work with others. All keycodes less than 0xFF get blocked, so you won't type while playing notes - if you have special keys/mods, those will still work. A work-around for this is to jump to a different layer with KC_NOs before (or after) enabling music mode.
Recording is experimental due to some memory issues - if you experience some weird behavior, unplugging/replugging your keyboard will fix things.
Keycodes available:
Key
Aliases
Description
QK_MUSIC_ON
MU_ON
Turns on Music Mode
QK_MUSIC_OFF
MU_OFF
Turns off Music Mode
QK_MUSIC_TOGGLE
MU_TOGG
Toggles Music Mode
QK_MUSIC_MODE_NEXT
MU_NEXT
Cycles through the music modes
Available Modes:
CHROMATIC_MODE - Chromatic scale, row changes the octave
GUITAR_MODE - Chromatic scale, but the row changes the string (+5 st)
VIOLIN_MODE - Chromatic scale, but the row changes the string (+7 st)
MAJOR_MODE - Major scale
In music mode, the following keycodes work differently, and don't pass through:
LCTL - start a recording
LALT - stop recording/stop playing
LGUI - play recording
KC_UP - speed-up playback
KC_DOWN - slow-down playback
The pitch standard (PITCH_STANDARD_A) is 440.0f by default - to change this, add something like this to your config.h:
c
#define PITCH_STANDARD_A 432.0f
You can completely disable Music Mode as well. This is useful, if you're pressed for space on your controller. To disable it, add this to your config.h:
By default, MUSIC_MASK is set to keycode < 0xFF which means keycodes less than 0xFF are turned into notes, and don't output anything. You can change this by defining this in your config.h like this:
c
#define MUSIC_MASK keycode != KC_NO
Which will capture all keycodes - be careful, this will get you stuck in music mode until you restart your keyboard!
For a more advanced way to control which keycodes should still be processed, you can use music_mask_kb(keycode) in <keyboard>.c and music_mask_user(keycode) in your keymap.c:
c
bool music_mask_user(uint16_t keycode) {\n switch (keycode) {\n case RAISE:\n case LOWER:\n return false;\n default:\n return true;\n }\n }
Things that return false are not part of the mask, and are always processed.
By default, the Music Mode uses the columns and row to determine the scale for the keys. For a board that uses a rectangular matrix that matches the keyboard layout, this is just fine. However, for boards that use a more complicated matrix (such as the Planck Rev6, or many split keyboards) this would result in a very skewed experience.
However, the Music Map option allows you to remap the scaling for the music mode, so it fits the layout, and is more natural.
To enable this feature, add #define MUSIC_MAP to your config.h file, and then you will want to add a uint8_t music_map to your keyboard's c file, or your keymap.c.
You will want to use whichever LAYOUT macro that your keyboard uses here. This maps it to the correct key location. Start in the bottom left of the keyboard layout, and move to the right, and then upwards. Fill in all the entries until you have a complete matrix.
You can look at the Planck Keyboard as an example of how to implement this.
This adds a click sound each time you hit a button, to simulate click sounds from the keyboard. And the sounds are slightly different for each keypress, so it doesn't sound like a single long note, if you type rapidly.
Keycodes available:
Key
Aliases
Description
QK_AUDIO_CLICKY_TOGGLE
CK_TOGG
Toggles Audio clicky mode
QK_AUDIO_CLICKY_ON
CK_ON
Turns on Audio clicky mode
QK_AUDIO_CLICKY_OFF
CK_OFF
Turns on Audio clicky mode
QK_AUDIO_CLICKY_UP
CK_UP
Increases frequency of the clicks
QK_AUDIO_CLICKY_DOWN
CK_DOWN
Decreases frequency of the clicks
QK_AUDIO_CLICKY_RESET
CK_RST
Resets frequency to default
The feature is disabled by default, to save space. To enable it, add this to your config.h:
c
#define AUDIO_CLICKY
You can configure the default, min and max frequencies, the stepping and built in randomness by defining these values:
Option
Default Value
Description
AUDIO_CLICKY_FREQ_DEFAULT
440.0f
Sets the default/starting audio frequency for the clicky sounds.
AUDIO_CLICKY_FREQ_MIN
65.0f
Sets the lowest frequency (under 60f are a bit buggy).
AUDIO_CLICKY_FREQ_MAX
1500.0f
Sets the highest frequency. Too high may result in coworkers attacking you.
AUDIO_CLICKY_FREQ_FACTOR
1.18921f
Sets the stepping of UP/DOWN key codes. This is a multiplicative factor. The default steps the frequency up/down by a musical minor third.
AUDIO_CLICKY_FREQ_RANDOMNESS
0.05f
Sets a factor of randomness for the clicks, Setting this to 0f will make each click identical, and 1.0f will make this sound much like the 90's computer screen scrolling/typing effect.
AUDIO_CLICKY_DELAY_DURATION
1
An integer note duration where 1 is 1/16th of the tempo, or a sixty-fourth note (see quantum/audio/musical_notes.h for implementation details). The main clicky effect will be delayed by this duration. Adjusting this to values around 6-12 will help compensate for loud switches.
Many people suffer from various forms of RSI. A common cause is stretching your fingers repetitively long distances. For us on the keyboard, the pinky does that all too often when reaching for the shift key. Auto Shift looks to alleviate that problem.
When you tap a key, it stays depressed for a short period of time before it is then released. This depressed time is a different length for everyone. Auto Shift defines a constant AUTO_SHIFT_TIMEOUT which is typically set to twice your normal pressed state time. When you press a key, a timer starts, and if you have not released the key after the AUTO_SHIFT_TIMEOUT period, then a shifted version of the key is emitted. If the time is less than the AUTO_SHIFT_TIMEOUT time, or you press another key, then the normal state is emitted.
If AUTO_SHIFT_REPEAT is defined, there is keyrepeat support. Holding the key down will repeat the shifted key, though this can be disabled with AUTO_SHIFT_NO_AUTO_REPEAT. If you want to repeat the normal key, then tap it once then immediately (within TAPPING_TERM) hold it down again (this works with the shifted value as well if auto-repeat is disabled).
There are also the get_auto_shift_repeat and get_auto_shift_no_auto_repeat functions for more granular control. Neither will have an effect unless AUTO_SHIFT_REPEAT_PER_KEY or AUTO_SHIFT_NO_AUTO_REPEAT_PER_KEY respectively are defined.
You will have characters that are shifted when you did not intend on shifting, and other characters you wanted shifted, but were not. This simply comes down to practice. As we get in a hurry, we think we have hit the key long enough for a shifted version, but we did not. On the other hand, we may think we are tapping the keys, but really we have held it for a little longer than anticipated.
Additionally, with keyrepeat the desired shift state can get mixed up. It will always 'belong' to the last key pressed. For example, keyrepeating a capital and then tapping something lowercase (whether or not it's an Auto Shift key) will result in the capital's key still being held, but shift not.
Auto Shift does not apply to Tap Hold keys. For automatic shifting of Tap Hold keys see Retro Shift.
By default, Auto Shift is disabled for any key press that is accompanied by one or more modifiers. Thus, Ctrl+A that you hold for a really long time is not the same as Ctrl+Shift+A.
You can re-enable Auto Shift for modifiers by adding a define to your config.h
c
#define AUTO_SHIFT_MODIFIERS
In which case, Ctrl+A held past the AUTO_SHIFT_TIMEOUT will be sent as Ctrl+Shift+A
If desired, there is some configuration that can be done to change the behavior of Auto Shift. This is done by setting various variables the config.h file located in your keymap folder. If no config.h file exists, you can create one.
This controls how long you have to hold a key before you get the shifted state. Obviously, this is different for everyone. For the common person, a setting of 135 to 150 works great. However, one should start with a value of at least 175, which is the default value. Then work down from there. The idea is to have the shortest time required to get the shifted state without having false positives.
Play with this value until things are perfect. Many find that all will work well at a given value, but one or two keys will still emit the shifted state on occasion. This is simply due to habit and holding some keys a little longer than others. Once you find this value, work on tapping your problem keys a little quicker than normal and you will be set.
TIP
Auto Shift has three special keys that can help you get this value right very quick. See "Auto Shift Setup" for more details!
For more granular control of this feature, you can add the following to your config.h:
c
#define AUTO_SHIFT_TIMEOUT_PER_KEY
You can then add the following function to your keymap:
c
uint16_t get_autoshift_timeout(uint16_t keycode, keyrecord_t *record) {\n switch(keycode) {\n case AUTO_SHIFT_NUMERIC:\n return 2 * get_generic_autoshift_timeout();\n case AUTO_SHIFT_SPECIAL:\n return get_generic_autoshift_timeout() + 50;\n case AUTO_SHIFT_ALPHA:\n default:\n return get_generic_autoshift_timeout();\n }\n}
Note that you cannot override individual keys that are in one of those groups if you are using them; trying to add a case for KC_A in the above example will not compile as AUTO_SHIFT_ALPHA is there. A possible solution is a second switch above to handle individual keys with no default case and only referencing the groups in the below fallback switch.
Especially on small keyboards, the default shifted value for many keys is not optimal. To provide more customizability, there are two user-definable functions, autoshift_press/release_user. These register or unregister the correct value for the passed key. Below is an example adding period to Auto Shift and making its shifted value exclamation point. Make sure to use weak mods - setting real would make any keys following it use their shifted values as if you were holding the key. Clearing of modifiers is handled by Auto Shift, and the OS-sent shift value if keyrepeating multiple keys is always that of the last key pressed (whether or not it's an Auto Shift key).
You can also have non-shifted keys for the shifted values (or even no shifted value), just don't set a shift modifier!
c
bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {\n switch(keycode) {\n case KC_DOT:\n return true;\n default:\n return false;\n }\n}\n\nvoid autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) {\n switch(keycode) {\n case KC_DOT:\n register_code16((!shifted) ? KC_DOT : KC_EXLM);\n break;\n default:\n if (shifted) {\n add_weak_mods(MOD_BIT(KC_LSFT));\n }\n // & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift\n register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);\n }\n}\n\nvoid autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) {\n switch(keycode) {\n case KC_DOT:\n unregister_code16((!shifted) ? KC_DOT : KC_EXLM);\n break;\n default:\n // & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift\n // The IS_RETRO check isn't really necessary here, always using\n // keycode & 0xFF would be fine.\n unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);\n }\n}
Holding and releasing a Tap Hold key without pressing another key will ordinarily result in only the hold. With retro shift enabled this action will instead produce a shifted version of the tap keycode on release.
It does not require Retro Tapping to be enabled, and if both are enabled the state of retro tapping will only apply if the tap keycode is not matched by Auto Shift. RETRO_TAPPING_PER_KEY and its corresponding function, however, are checked before retro shift is applied.
To enable retro shift, add the following to your config.h:
c
#define RETRO_SHIFT
If RETRO_SHIFT is defined to a value, hold times greater than that value will not produce a tap on release for Mod Taps, and instead triggers the hold action. This enables modifiers to be held for combining with mouse clicks without generating taps on release. For example:
c
#define RETRO_SHIFT 500
Without a value set, holds of any length without an interrupting key will produce the shifted value.
This value (if set) must be greater than one's TAPPING_TERM, as the key press must be designated as a 'hold' by process_tapping before we send the modifier. Per-key tapping terms can be used as a workaround. There is no such limitation in regards to AUTO_SHIFT_TIMEOUT for normal keys.
Note: Tap Holds must be added to Auto Shift, see here.IS_RETRO may be helpful if one wants all Tap Holds retro shifted.
Tap Hold Configurations work a little differently when using Retro Shift. Referencing TAPPING_TERM makes little sense, as holding longer would result in shifting one of the keys.
RETRO_SHIFT enables PERMISSIVE_HOLD-like behaviour (even if not explicitly enabled) on all mod-taps for which RETRO_SHIFT applies.
hello world. my name is john doe. i am a computer programmer playing with\nkeyboards right now.\n\n[PRESS AS_DOWN quite a few times]\n\nheLLo woRLd. mY nAMe is JOHn dOE. i AM A compUTeR proGRaMMER PlAYiNG witH\nKEYboArDS RiGHT NOw.\n\n[PRESS AS_UP a few times]\n\nhello world. my name is john Doe. i am a computer programmer playing with\nkeyboarDs right now.\n\n[PRESS AS_RPT]\n\n115
The keyboard typed 115 which represents your current AUTO_SHIFT_TIMEOUT value. You are now set! Practice on the D key a little bit that showed up in the testing and you'll be golden.
', 94);
+const _hoisted_95 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_95);
+}
+const auto_shift = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ auto_shift as default
+};
diff --git a/assets/features_auto_shift.md.jwKJBlE4.lean.js b/assets/features_auto_shift.md.jwKJBlE4.lean.js
new file mode 100644
index 0000000..a11cd1d
--- /dev/null
+++ b/assets/features_auto_shift.md.jwKJBlE4.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Auto Shift: Why Do We Need a Shift Key?","description":"","frontmatter":{},"headers":[],"relativePath":"features/auto_shift.md","filePath":"features/auto_shift.md"}');
+const _sfc_main = { name: "features/auto_shift.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 94);
+const _hoisted_95 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_95);
+}
+const auto_shift = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ auto_shift as default
+};
diff --git a/assets/features_autocorrect.md.CrKw5pKP.js b/assets/features_autocorrect.md.CrKw5pKP.js
new file mode 100644
index 0000000..e3bd079
--- /dev/null
+++ b/assets/features_autocorrect.md.CrKw5pKP.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Autocorrect","description":"","frontmatter":{},"headers":[],"relativePath":"features/autocorrect.md","filePath":"features/autocorrect.md"}');
+const _sfc_main = { name: "features/autocorrect.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
There are a lot of words that are prone to being typed incorrectly, due to habit, sequence or just user error. This feature leverages your firmware to automatically correct these errors, to help reduce typos.
The feature maintains a small buffer of recent key presses. On each key press, it checks whether the buffer ends in a recognized typo, and if so, automatically sends keystrokes to correct it.
The tricky part is how to efficiently check the buffer for typos. We don’t want to spend too much memory or time on storing or searching the typos. A good solution is to represent the typos with a trie data structure. A trie is a tree data structure where each node is a letter, and words are formed by following a path to one of the leaves.
Since we search whether the buffer ends in a typo, we store the trie writing in reverse. The trie is queried starting from the last letter, then second to last letter, and so on, until either a letter doesn’t match or we reach a leaf, meaning a typo was found.
Additionally, you will need a library for autocorrection. A small sample library is included by default, so that you can get up and running right away, but you can provide a customized library.
By default, autocorrect is disabled. To enable it, you need to use the AC_TOGG keycode to enable it. The status is stored in persistent memory, so you shouldn't need to enabled it again.
The syntax is typo -> correction. Typos and corrections are case insensitive, and any whitespace before or after the typo and correction is ignored. The typo must be only the letters a–z, or the special character : representing a word break. The correction may have any non-unicode characters.
This will process the file and produce an autocorrect_data.h file with the trie library, in the folder that you are at. You can specify the keyboard and keymap (eg -kb planck/rev6 -km jackhumbert), and it will place the file in that folder instead. But as long as the file is located in your keymap folder, or user folder, it should be picked up automatically.
By default, typos are searched within words, to find typos within longer identifiers like maxFitlerOuput. While this is useful, a consequence is that autocorrection will falsely trigger when a typo happens to be a substring of a correctly-spelled word. For instance, if we had thier -> their as an entry, it would falsely trigger on (correct, though relatively uncommon) words like “wealthier” and “filthier.”
The solution is to set a word break : before and/or after the typo to constrain matching. : matches space, period, comma, underscore, digits, and most other non-alpha characters.
Text
thier
:thier
thier:
:thier:
see thier typo
matches
matches
matches
matches
it’s thiers
matches
matches
no
no
wealthier words
matches
no
matches
no
:thier: is most restrictive, matching only when thier is a whole word.
The qmk generate-autocorrect-data commands can make an effort to check for entries that would false trigger as substrings of correct words. It searches each typo against a dictionary of 25K English words from the english_words Python package, provided it’s installed. (run python3 -m pip install english_words to install it.)
TIP
Unfortunately, this is limited to just english words, at this point.
Occasionally you might actually want to type a typo (for instance, while editing autocorrect_dict.txt) without being autocorrected. There are a couple of ways to do this:
Begin typing the typo.
Before typing the last letter, press and release the Ctrl or Alt key.
Type the remaining letters.
This works because the autocorrection implementation doesn’t understand hotkeys, so it resets itself whenever a modifier other than shift is held.
Additionally, you can use the AC_TOGG keycode to toggle the on/off status for Autocorrect.
Callback function bool process_autocorrect_user(uint16_t *keycode, keyrecord_t *record, uint8_t *typo_buffer_size, uint8_t *mods) is available to customise incoming keycodes and handle exceptions. You can use this function to sanitise input before they are passed onto the autocorrect engine
TIP
Sanitisation of input is required because autocorrect will only match 8-bit basic keycodes for typos. If valid modifier keys or 16-bit keycodes that are part of a user's word input (such as Shift + A) is passed through, they will fail typo letter detection. For example a Mod-Tap key such as LCTL_T(KC_A) is 16-bit and should be masked for the 8-bit KC_A.
The default user callback function is found inside quantum/process_keycode/process_autocorrect.c. It covers most use-cases for QMK special functions and quantum keycodes, including overriding autocorrect with a modifier other than shift. The process_autocorrect_user function is weak defined to allow user's copy inside keymap.c (or code files) to overwrite it.
If you have a custom keycode QMKBEST that should be ignored as part of a word, and another custom keycode QMKLAYER that should override autocorrect, both can be added to the bottom of the process_autocorrect_userswitch statement in your source code:
c
bool process_autocorrect_user(uint16_t *keycode, keyrecord_t *record, uint8_t *typo_buffer_size, uint8_t *mods) {\n // See quantum_keycodes.h for reference on these matched ranges.\n switch (*keycode) {\n // Exclude these keycodes from processing.\n case KC_LSFT:\n case KC_RSFT:\n case KC_CAPS:\n case QK_TO ... QK_ONE_SHOT_LAYER_MAX:\n case QK_LAYER_TAP_TOGGLE ... QK_LAYER_MOD_MAX:\n case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX:\n return false;\n\n // Mask for base keycode from shifted keys.\n case QK_LSFT ... QK_LSFT + 255:\n case QK_RSFT ... QK_RSFT + 255:\n if (*keycode >= QK_LSFT && *keycode <= (QK_LSFT + 255)) {\n *mods |= MOD_LSFT;\n } else {\n *mods |= MOD_RSFT;\n }\n *keycode &= 0xFF; // Get the basic keycode.\n return true;\n#ifndef NO_ACTION_TAPPING\n // Exclude tap-hold keys when they are held down\n // and mask for base keycode when they are tapped.\n case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:\n# ifdef NO_ACTION_LAYER\n // Exclude Layer Tap, if layers are disabled\n // but action tapping is still enabled.\n return false;\n# endif\n case QK_MOD_TAP ... QK_MOD_TAP_MAX:\n // Exclude hold if mods other than Shift is not active\n if (!record->tap.count) {\n return false;\n }\n *keycode &= 0xFF;\n break;\n#else\n case QK_MOD_TAP ... QK_MOD_TAP_MAX:\n case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:\n // Exclude if disabled\n return false;\n#endif\n // Exclude swap hands keys when they are held down\n // and mask for base keycode when they are tapped.\n case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX:\n#ifdef SWAP_HANDS_ENABLE\n if (*keycode >= 0x56F0 || !record->tap.count) {\n return false;\n }\n *keycode &= 0xFF;\n break;\n#else\n // Exclude if disabled\n return false;\n#endif\n // Handle custom keycodes\n case QMKBEST:\n return false;\n case QMKLAYER:\n *typo_buffer_size = 0;\n return false;\n }\n\n // Disable autocorrect while a mod other than shift is active.\n if ((*mods & ~MOD_MASK_SHIFT) != 0) {\n *typo_buffer_size = 0;\n return false;\n }\n\n return true;\n}
TIP
In this callback function, return false will skip processing of that keycode for autocorrect. Adding *typo_buffer_size = 0 will also reset the autocorrect buffer at the same time, cancelling any current letters already stored in the buffer.
Additionally, apply_autocorrect(uint8_t backspaces, const char *str, char *typo, char *correct) allows for users to add additional handling to the autocorrection, or replace the functionality entirely. This passes on the number of backspaces needed to replace the words, as well as the replacement string (partial word, not the full word), and the typo and corrected strings (complete words).
TIP
Due to the way code works (no notion of words, just a stream of letters), the typo and correct strings are a best bet and could be "wrong". For example you may get wordtpyo & wordtypo instead of the expected tpyo & typo.
In this callback function, return false will stop the normal processing of autocorrect, which requires manually handling of removing the "bad" characters and typing the new characters.
WARNING
IMPORTANT: str is a pointer to PROGMEM data for the autocorrection. If you return false, and want to send the string, this needs to use send_string_P and not send_string nor SEND_STRING.
You can also use apply_autocorrect to detect and display the event but allow internal code to execute the autocorrection with return true:
This section details how the trie is serialized to byte data in autocorrect_data. You don’t need to care about this to use this autocorrection implementation. But it is documented for the record in case anyone is interested in modifying the implementation, or just curious how it works.
What I did here is fairly arbitrary, but it is simple to decode and gets the job done.
All autocorrection data is stored in a single flat array autocorrect_data. Each trie node is associated with a byte offset into this array, where data for that node is encoded, beginning with root at offset 0. There are three kinds of nodes. The highest two bits of the first byte of the node indicate what kind:
00 ⇒ chain node: a trie node with a single child.
01 ⇒ branching node: a trie node with multiple children.
10 ⇒ leaf node: a leaf, corresponding to a typo and storing its correction.
Branching node. Each branch is encoded with one byte for the keycode (KC_A–KC_Z) followed by a link to the child node. Links between nodes are 16-bit byte offsets relative to the beginning of the array, serialized in little endian order.
All branches are serialized this way, one after another, and terminated with a zero byte. As described above, the node is identified as a branch by setting the two high bits of the first byte to 01, done by bitwise ORing the first keycode with 64. keycode. The root node for the above figure would be serialized like:
Chain node. Tries tend to have long chains of single-child nodes, as seen in the example above with f-i-t-l in fitler. So to save space, we use a different format to encode chains than branching nodes. A chain is encoded as a string of keycodes, beginning with the node closest to the root, and terminated with a zero byte. The child of the last node in the chain is encoded immediately after. That child could be either a branching node or a leaf.
In the figure above, the f-i-t-l chain is encoded as
+-------+-------+-------+-------+-------+\n| L | T | I | F | 0 |\n+-------+-------+-------+-------+-------+
If we were to encode this chain using the same format used for branching nodes, we would encode a 16-bit node link with every node, costing 8 more bytes in this example. Across the whole trie, this adds up. Conveniently, we can point to intermediate points in the chain and interpret the bytes in the same way as before. E.g. starting at the i instead of the l, and the subchain has the same format.
Leaf node. A leaf node corresponds to a particular typo and stores data to correct the typo. The leaf begins with a byte for the number of backspaces to type, and is followed by a null-terminated ASCII string of the replacement text. The idea is, after tapping backspace the indicated number of times, we can simply pass this string to the send_string_P function. For fitler, we need to tap backspace 3 times (not 4, because we catch the typo as the final ‘r’ is pressed) and replace it with lter. To identify the node as a leaf, the two high bits are set to 10 by ORing the backspace count with 128:
This format is by design decodable with fairly simple logic. A 16-bit variable state represents our current position in the trie, initialized with 0 to start at the root node. Then, for each keycode, test the highest two bits in the byte at state to identify the kind of node.
00 ⇒ chain node: If the node’s byte matches the keycode, increment state by one to go to the next byte. If the next byte is zero, increment again to go to the following node.
01 ⇒ branching node: Search the branches for one that matches the keycode, and follow its node link.
10 ⇒ leaf node: a typo has been found! We read its first byte for the number of backspaces to type, then pass its following bytes to send_string_P to type the correction.
Credit goes to getreuer for originally implementing this here. As well as to filterpaper for converting the code to use PROGMEM, and additional improvements.
', 78);
+const _hoisted_79 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_79);
+}
+const autocorrect = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ autocorrect as default
+};
diff --git a/assets/features_autocorrect.md.CrKw5pKP.lean.js b/assets/features_autocorrect.md.CrKw5pKP.lean.js
new file mode 100644
index 0000000..c6f195e
--- /dev/null
+++ b/assets/features_autocorrect.md.CrKw5pKP.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Autocorrect","description":"","frontmatter":{},"headers":[],"relativePath":"features/autocorrect.md","filePath":"features/autocorrect.md"}');
+const _sfc_main = { name: "features/autocorrect.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 78);
+const _hoisted_79 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_79);
+}
+const autocorrect = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ autocorrect as default
+};
diff --git a/assets/features_backlight.md.ySwz01AJ.js b/assets/features_backlight.md.ySwz01AJ.js
new file mode 100644
index 0000000..6b82768
--- /dev/null
+++ b/assets/features_backlight.md.ySwz01AJ.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Backlighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/backlight.md","filePath":"features/backlight.md"}');
+const _sfc_main = { name: "features/backlight.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Many keyboards support backlit keys by way of individual LEDs placed through or underneath the keyswitches. This feature is distinct from both the RGB Underglow and RGB Matrix features as it usually allows for only a single colour per switch, though you can obviously install multiple different single coloured LEDs on a keyboard.
QMK is able to control the brightness of these LEDs by switching them on and off rapidly in a certain ratio, a technique known as Pulse Width Modulation, or PWM. By altering the duty cycle of the PWM signal, it creates the illusion of dimming.
Most keyboards have backlighting enabled by default if they support it, but if it is not working for you (or you have added support), check that your rules.mk includes the following:
Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor on and light the LEDs, you must drive the backlight pin, connected to the gate or base, high. Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case, when the transistor is on, the pin is driven low instead.
To configure the "on" state of the backlight circuit, add the following to your config.h:
Most keyboards have only one backlight pin which controls all backlight LEDs (especially if the backlight is connected to a hardware PWM pin). The timer and software drivers allow you to define multiple backlight pins, which will be turned on and off at the same time during the PWM duty cycle.
This feature allows to set, for instance, the Caps Lock LED's (or any other controllable LED) brightness at the same level as the other LEDs of the backlight. This is useful if you have mapped Control in place of Caps Lock and you need the Caps Lock LED to be part of the backlight instead of being activated when Caps Lock is on, as it is usually wired to a separate pin from the backlight.
To configure multiple backlight pins, add something like this to your config.h, instead of BACKLIGHT_PIN:
Backlight driver selection is configured in rules.mk. Valid drivers are pwm (default), timer, software, or custom. See below for information on individual drivers.
This driver is similar to the PWM driver, but instead of directly configuring the pin to output a PWM signal, an interrupt handler is attached to the timer to turn the pin on and off as appropriate.
In this mode, PWM is "emulated" while running other keyboard tasks. It offers maximum hardware compatibility without extra platform configuration. However, breathing is not supported, and the backlight can flicker when the keyboard is busy.
If none of the above drivers apply to your board (for example, you are using a separate IC to control the backlight), you can implement a custom backlight driver using a simple API.
make
BACKLIGHT_DRIVER = custom
c
void backlight_init_ports(void) {\n // Optional - runs on startup\n // Usually you want to configure pins here\n}\nvoid backlight_set(uint8_t level) {\n // Optional - runs on level change\n // Usually you want to respond to the new value\n}\n\nvoid backlight_task(void) {\n // Optional - runs periodically\n // Note that this is called in the main keyboard loop,\n // so long running actions here can cause performance issues\n}
The following table describes the supported pins for the PWM driver. Only cells marked with a timer number are capable of hardware PWM output; any others must use the timer driver.
The following #defines apply only to the pwm driver:
Define
Default
Description
BACKLIGHT_PWM_DRIVER
PWMD4
The PWM driver to use
BACKLIGHT_PWM_CHANNEL
3
The PWM channel to use
BACKLIGHT_PAL_MODE
2
The pin alternative function to use
BACKLIGHT_PWM_PERIOD
Not defined
The PWM period in counter ticks - Default is platform dependent
Refer to the ST datasheet for your particular MCU to determine these values. For example, these defaults are set up for pin B8 on a Proton-C (STM32F303) using TIM4_CH3 on AF2. Unless you are designing your own keyboard, you generally should not need to change them.
Since the MCU can only supply so much current to its GPIO pins, instead of powering the backlight directly from the MCU, the backlight pin is connected to a transistor or MOSFET that switches the power to the LEDs.
In this typical example, the backlight LEDs are all connected in parallel towards an N-channel MOSFET. Its gate pin is wired to one of the microcontroller's GPIO pins through a 470Ω resistor to avoid ringing. A pulldown resistor is also placed between the gate pin and ground to keep it at a defined state when it is not otherwise being driven by the MCU. The values of these resistors are not critical - see this Electronics StackExchange question for more information.
Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input.
Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF51822 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The Feather 32u4 Bluefruit LE is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:
#define BLUEFRUIT_LE_RST_PIN D4
#define BLUEFRUIT_LE_CS_PIN B4
#define BLUEFRUIT_LE_IRQ_PIN E6
A Bluefruit UART friend can be converted to an SPI friend, however this requires some reflashing and soldering directly to the MDBT40 chip.
This is used when multiple keyboard outputs can be selected. Currently this only allows for switching between USB and Bluetooth on keyboards that support both.
Key
Aliases
Description
QK_OUTPUT_NEXT
OU_NEXT, OU_AUTO
Automatically switch between USB and Bluetooth
QK_OUTPUT_USB
OU_USB
USB only
QK_OUTPUT_BLUETOOTH
OU_BT
Bluetooth only
', 17);
+const _hoisted_18 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_18);
+}
+const bluetooth = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ bluetooth as default
+};
diff --git a/assets/features_bluetooth.md.CBgyacZF.lean.js b/assets/features_bluetooth.md.CBgyacZF.lean.js
new file mode 100644
index 0000000..aaab683
--- /dev/null
+++ b/assets/features_bluetooth.md.CBgyacZF.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Bluetooth","description":"","frontmatter":{},"headers":[],"relativePath":"features/bluetooth.md","filePath":"features/bluetooth.md"}');
+const _sfc_main = { name: "features/bluetooth.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 17);
+const _hoisted_18 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_18);
+}
+const bluetooth = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ bluetooth as default
+};
diff --git a/assets/features_bootmagic.md.DIHkTTz1.js b/assets/features_bootmagic.md.DIHkTTz1.js
new file mode 100644
index 0000000..039ebfb
--- /dev/null
+++ b/assets/features_bootmagic.md.DIHkTTz1.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Bootmagic","description":"","frontmatter":{},"headers":[],"relativePath":"features/bootmagic.md","filePath":"features/bootmagic.md"}');
+const _sfc_main = { name: "features/bootmagic.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
The Bootmagic feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button, giving you a way to jump into the bootloader
On some keyboards Bootmagic is disabled by default. If this is the case, it must be explicitly enabled in your rules.mk with:
make
BOOTMAGIC_ENABLE = yes
Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your config.h file:
When handedness is predetermined via options like SPLIT_HAND_PIN or EE_HANDS, you might need to configure a different key between halves. To identify the correct key for the right half, examine the split key matrix defined in the <keyboard>.h file, e.g.:
If you pick the top right key for the right half, it is R05 on the top layout. Within the key matrix below, R05 is located on row 4 columnn 4. To use that key as the right half's Bootmagic trigger, add these entries to your config.h file:
The bootmagic_scan function is defined weakly, so that you can replace this in your code, if you need. A great example of this is the Zeal60 boards that have some additional handling needed.
To replace the function, all you need to do is add something like this to your code:
You can define additional logic here. For instance, resetting the EEPROM or requiring additional keys to be pressed to trigger Bootmagic. Keep in mind that bootmagic_scan is called before a majority of features are initialized in the firmware.
To manipulate settings that were formerly configured through the now-deprecated full Bootmagic feature, see Magic Keycodes.
The Command feature, formerly known as Magic, also allows you to control different aspects of your keyboard. While it shares some functionality with Magic Keycodes, it also allows you to do things that Magic Keycodes cannot, such as printing version information to the console. For more information, see Command.
', 23);
+const _hoisted_24 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_24);
+}
+const bootmagic = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ bootmagic as default
+};
diff --git a/assets/features_bootmagic.md.DIHkTTz1.lean.js b/assets/features_bootmagic.md.DIHkTTz1.lean.js
new file mode 100644
index 0000000..d40b9c6
--- /dev/null
+++ b/assets/features_bootmagic.md.DIHkTTz1.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Bootmagic","description":"","frontmatter":{},"headers":[],"relativePath":"features/bootmagic.md","filePath":"features/bootmagic.md"}');
+const _sfc_main = { name: "features/bootmagic.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 23);
+const _hoisted_24 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_24);
+}
+const bootmagic = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ bootmagic as default
+};
diff --git a/assets/features_caps_word.md.C0fpUfY4.js b/assets/features_caps_word.md.C0fpUfY4.js
new file mode 100644
index 0000000..89394b6
--- /dev/null
+++ b/assets/features_caps_word.md.C0fpUfY4.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Caps Word","description":"","frontmatter":{},"headers":[],"relativePath":"features/caps_word.md","filePath":"features/caps_word.md"}');
+const _sfc_main = { name: "features/caps_word.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
It is often useful to type a single word in all capitals, for instance abbreviations like "QMK", or in code, identifiers like KC_SPC. "Caps Word" is a modern alternative to Caps Lock:
While active, letters are capitalized and - becomes _. The _ makes it easier to type constant names (eg 'PROGRAM_CONSTANTS').
Caps Word automatically disables itself at the end of the word. That is, it stops by default once a space or any key other than KC_A--KC_Z, KC_0--KC_9, KC_MINS, KC_UNDS, KC_DELETE, or KC_BACKSPACE is pressed. Caps Word also disables itself if the keyboard is idle for 5 seconds. This is configurable, see below.
To avoid requiring a dedicated key for Caps Word, there is an option (BOTH_SHIFTS_TURNS_ON_CAPS_WORD) to activate Caps Word by simultaneously pressing both shift keys. See below for other options.
The implementation does not use the Caps Lock (KC_CAPS) keycode. Caps Word works even if you're remapping Caps Lock at the OS level to Ctrl or something else, as Emacs and Vim users often do. As a consequence, Caps Word does not follow the typical Caps Lock behaviour and may thus act in potentially unexpected ways, especially when using an OS keyboard layout other than US or UK. For example, Dvorak's , < key (DV_COMM aka KC_W) will get shifted because Caps Word interprets that keycode as the letter 'W' by default, the Spanish Ñ key (ES_NTIL aka KC_SCLN) will not get capitalized because Caps Word interprets it as the semicolon ';' punctuation character, and the US hyphen key (KC_MINS), while unaffected by Caps Lock, is shifted by Caps Word. However, this is not really a problem because you can configure which keys should Caps Word shift.
Next, use one the following methods to activate Caps Word:
Activate by pressing a key: Use the QK_CAPS_WORD_TOGGLE keycode (short alias CW_TOGG) in your keymap.
Activate by pressing Left Shift + Right Shift: Add #define BOTH_SHIFTS_TURNS_ON_CAPS_WORD to config.h. You may also need to disable or reconfigure Command, details below. Then, simultaneously pressing both left and right shifts turns on Caps Word. This method works with the plain KC_LSFT and KC_RSFT keycodes as well as one-shot shifts and Space Cadet shifts. If your shift keys are mod-taps, hold both shift mod-tap keys until the tapping term, then release them.
Activate by double tapping Left Shift: Add #define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD config.h. Then, double tapping Left Shift turns on Caps Word. This method works with KC_LSFT or one-shot Left Shift OSM(MOD_LSFT). To count as a double tap, the maximum time in milliseconds between taps is TAPPING_TERM, or if using TAPPING_TERM_PER_KEY, the time returned by get_tapping_term() for the shift keycode being tapped.
Custom activation: You can activate Caps Word from code by calling caps_word_on(). This may be used to activate Caps Word through a combo or tap dance or any means you like.
When using BOTH_SHIFTS_TURNS_ON_CAPS_WORD, you might see a compile message "BOTH_SHIFTS_TURNS_ON_CAPS_WORD and Command should not be enabled at the same time, since both use the Left Shift + Right Shift key combination."
Many keyboards enable the Command feature, which by default is also activated using the Left Shift + Right Shift key combination. To fix this conflict, please disable Command by adding in rules.mk:
make
COMMAND_ENABLE = no
Or configure Command to use another key combination like Left Ctrl + Right Ctrl by defining IS_COMMAND() in config.h:
c
// Activate Command with Left Ctrl + Right Ctrl.\n#define IS_COMMAND() (get_mods() == MOD_MASK_CTRL)
By default, Caps Word turns off when Shift keys are pressed, considering them as word-breaking. Alternatively with the CAPS_WORD_INVERT_ON_SHIFT option, pressing the Shift key continues Caps Word and inverts the shift state. This is convenient for uncapitalizing one or a few letters within a word, for example with Caps Word on, typing "D, B, Shift+A, Shift+A, S" produces "DBaaS", or typing "P, D, F, Shift+S" produces "PDFs".
Enable it by adding in config.h
c
#define CAPS_WORD_INVERT_ON_SHIFT
This option works with regular Shift keys KC_LSFT and KC_RSFT, mod-tap Shift keys, and one-shot Shift keys. Note that while Caps Word is on, one-shot Shift keys behave like regular Shift keys, and have effect only while they are held.
Caps Word turns off automatically if no keys are pressed for CAPS_WORD_IDLE_TIMEOUT milliseconds. The default is 5000 (5 seconds). Configure the timeout duration in config.h, for instance
c
#define CAPS_WORD_IDLE_TIMEOUT 3000 // 3 seconds.
Setting CAPS_WORD_IDLE_TIMEOUT to 0 configures Caps Word to never time out. Caps Word then remains active indefinitely until a word breaking key is pressed.
You can define the caps_word_press_user(uint16_t keycode) callback to configure which keys should be shifted and which keys are considered "word breaking" and stop Caps Word.
The callback is called on every key press while Caps Word is active. When the key should be shifted (that is, a letter key), the callback should call add_weak_mods(MOD_BIT(KC_LSFT)) to shift the key. Returning true continues the current "word," while returning false is "word breaking" and deactivates Caps Word. The default callback is
c
bool caps_word_press_user(uint16_t keycode) {\n switch (keycode) {\n // Keycodes that continue Caps Word, with shift applied.\n case KC_A ... KC_Z:\n case KC_MINS:\n add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key.\n return true;\n\n // Keycodes that continue Caps Word, without shifting.\n case KC_1 ... KC_0:\n case KC_BSPC:\n case KC_DEL:\n case KC_UNDS:\n return true;\n\n default:\n return false; // Deactivate Caps Word.\n }\n}
Define caps_word_set_user(bool active) to get callbacks when Caps Word turns on or off. This is useful to represent the current Caps Word state, e.g. by setting an LED or playing a sound. In your keymap, define
c
void caps_word_set_user(bool active) {\n if (active) {\n // Do something when Caps Word activates.\n } else {\n // Do something when Caps Word deactivates.\n }\n}
', 34);
+const _hoisted_35 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_35);
+}
+const caps_word = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ caps_word as default
+};
diff --git a/assets/features_caps_word.md.C0fpUfY4.lean.js b/assets/features_caps_word.md.C0fpUfY4.lean.js
new file mode 100644
index 0000000..df4aa9f
--- /dev/null
+++ b/assets/features_caps_word.md.C0fpUfY4.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Caps Word","description":"","frontmatter":{},"headers":[],"relativePath":"features/caps_word.md","filePath":"features/caps_word.md"}');
+const _sfc_main = { name: "features/caps_word.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 34);
+const _hoisted_35 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_35);
+}
+const caps_word = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ caps_word as default
+};
diff --git a/assets/features_combo.md.CO24sC93.js b/assets/features_combo.md.CO24sC93.js
new file mode 100644
index 0000000..4264c90
--- /dev/null
+++ b/assets/features_combo.md.CO24sC93.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Combos","description":"","frontmatter":{},"headers":[],"relativePath":"features/combo.md","filePath":"features/combo.md"}');
+const _sfc_main = { name: "features/combo.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
The Combo feature is a chording type solution for adding custom actions. It lets you hit multiple keys at once and produce a different effect. For instance, hitting A and B within the combo term would hit ESC instead, or have it perform even more complex tasks.
To enable this feature, you need to add COMBO_ENABLE = yes to your rules.mk.
Then, in your keymap.c file, you'll need to define a sequence of keys, terminated with COMBO_END, and a structure to list the combination of keys, and its resulting action.
c
const uint16_t PROGMEM test_combo1[] = {KC_A, KC_B, COMBO_END};\nconst uint16_t PROGMEM test_combo2[] = {KC_C, KC_D, COMBO_END};\ncombo_t key_combos[] = {\n COMBO(test_combo1, KC_ESC),\n COMBO(test_combo2, LCTL(KC_Z)), // keycodes with modifiers are possible too!\n};
This will send "Escape" if you hit the A and B keys, and Ctrl+Z when you hit the C and D keys.
Advanced keycodes, such as Mod-Tap and Tap Dance are also supported together with combos. If you use these advanced keycodes in your keymap, you will need to place the full keycode in the combo definition, e.g.:
It is possible to overlap combos. Before, with the example below both combos would activate when all three keys were pressed. Now only the three key combo will activate.
For a more complicated implementation, you can use the process_combo_event function to add custom handling.
c
enum combo_events {\n EM_EMAIL,\n BSPC_LSFT_CLEAR,\n};\n\nconst uint16_t PROGMEM email_combo[] = {KC_E, KC_M, COMBO_END};\nconst uint16_t PROGMEM clear_line_combo[] = {KC_BSPC, KC_LSFT, COMBO_END};\n\ncombo_t key_combos[] = {\n [EM_EMAIL] = COMBO_ACTION(email_combo),\n [BSPC_LSFT_CLEAR] = COMBO_ACTION(clear_line_combo),\n};\n/* COMBO_ACTION(x) is same as COMBO(x, KC_NO) */\n\nvoid process_combo_event(uint16_t combo_index, bool pressed) {\n switch(combo_index) {\n case EM_EMAIL:\n if (pressed) {\n SEND_STRING("john.doe@example.com");\n }\n break;\n case BSPC_LSFT_CLEAR:\n if (pressed) {\n tap_code16(KC_END);\n tap_code16(S(KC_HOME));\n tap_code16(KC_BSPC);\n }\n break;\n }\n}
This will send "john.doe@example.com" if you chord E and M together, and clear the current line with Backspace and Left-Shift. You could change this to do stuff like play sounds or change settings.
It is worth noting that COMBO_ACTIONs are not needed anymore. As of PR#8591, it is possible to run your own custom keycodes from combos. Just define the custom keycode, program its functionality in process_record_user, and define a combo with COMBO(<key_array>, <your_custom_keycode>). See the first example in Macros.
You can enable, disable and toggle the Combo feature on the fly. This is useful if you need to disable them temporarily, such as for a game. The following keycodes are available for use in your keymap.c
By default, the timeout for the Combos to be recognized is set to 50ms. This can be changed if accidental combo misfires are happening or if you're having difficulties pressing keys at the same time. For instance, #define COMBO_TERM 40 would set the timeout period for combos to 40ms.
If you're using long combos, or you have a lot of overlapping combos, you may run into issues with this, as the buffers may not be large enough to accommodate what you're doing. In this case, you can configure the sizes of the buffers used. Be aware, larger combo sizes and larger buffers will increase memory usage!
To configure the amount of keys a combo can be composed of, change the following:
Keys
Define to be set
6
#define EXTRA_SHORT_COMBOS
8
QMK Default
16
#define EXTRA_LONG_COMBOS
32
#define EXTRA_EXTRA_LONG_COMBOS
Defining EXTRA_SHORT_COMBOS combines a combo's internal state into just one byte. This can, in some cases, save some memory. If it doesn't, no point using it. If you do, you also have to make sure you don't define combos with more than 6 keys.
Processing combos has two buffers, one for the key presses, another for the combos being activated. Use the following options to configure the sizes of these buffers:
Define
Default
#define COMBO_KEY_BUFFER_LENGTH 8
8 (the key amount (EXTRA_)EXTRA_LONG_COMBOS gives)
If a combo resolves to a Modifier, the window for processing the combo can be extended independently from normal combos. By default, this is disabled but can be enabled with #define COMBO_MUST_HOLD_MODS, and the time window can be configured with #define COMBO_HOLD_TERM 150 (default: TAPPING_TERM). With COMBO_MUST_HOLD_MODS, you cannot tap the combo any more which makes the combo less prone to misfires.
By defining COMBO_MUST_PRESS_IN_ORDER combos only activate when the keys are pressed in the same order as they are defined in the key array.
Per Combo Timing, Holding, Tapping and Key Press Order
For each combo, it is possible to configure the time window it has to pressed in, if it needs to be held down, if it needs to be tapped, or if its keys need to be pressed in order.
For example, tap-only combos are useful if any (or all) of the underlying keys are mod-tap or layer-tap keys. When you tap the combo, you get the combo result. When you press the combo and hold it down, the combo doesn't activate. Instead the keys are processed separately as if the combo wasn't even there.
In order to use these features, the following configuration options and functions need to be defined. Coming up with useful timings and configuration is left as an exercise for the reader.
Controls if a given combo should fire only if its keys are pressed in order. (default: true)
Examples:
c
uint16_t get_combo_term(uint16_t index, combo_t *combo) {\n // decide by combo->keycode\n switch (combo->keycode) {\n case KC_X:\n return 50;\n }\n\n // or with combo index, i.e. its name from enum.\n switch (index) {\n case COMBO_NAME_HERE:\n return 9001;\n }\n\n // And if you're feeling adventurous, you can even decide by the keys in the chord,\n // i.e. the exact array of keys you defined for the combo.\n // This can be useful if your combos have a common key and you want to apply the\n // same combo term for all of them.\n if (combo->keys[0] == KC_ENT) { // if first key in the array is Enter\n return 150;\n }\n\n return COMBO_TERM;\n}\n\nbool get_combo_must_hold(uint16_t index, combo_t *combo) {\n // Same as above, decide by keycode, the combo index, or by the keys in the chord.\n\n if (KEYCODE_IS_MOD(combo->keycode) ||\n (combo->keycode >= QK_MOMENTARY && combo->keycode <= QK_MOMENTARY_MAX) // MO(kc) keycodes\n ) {\n return true;\n }\n\n switch (index) {\n case COMBO_NAME_HERE:\n return true;\n }\n\n return false;\n}\n\nbool get_combo_must_tap(uint16_t index, combo_t *combo) {\n // If you want all combos to be tap-only, just uncomment the next line\n // return true\n\n // If you want *all* combos, that have Mod-Tap/Layer-Tap/Momentary keys in its chord, to be tap-only, this is for you:\n uint16_t key;\n uint8_t idx = 0;\n while ((key = pgm_read_word(&combo->keys[idx])) != COMBO_END) {\n switch (key) {\n case QK_MOD_TAP...QK_MOD_TAP_MAX:\n case QK_LAYER_TAP...QK_LAYER_TAP_MAX:\n case QK_MOMENTARY...QK_MOMENTARY_MAX:\n return true;\n }\n idx += 1;\n }\n return false;\n\n}\n\nbool get_combo_must_press_in_order(uint16_t combo_index, combo_t *combo) {\n switch (combo_index) {\n /* List combos here that you want to only activate if their keys\n * are pressed in the same order as they are defined in the combo's key\n * array. */\n case COMBO_NAME_HERE:\n return true;\n default:\n return false;\n }\n}
By defining COMBO_SHOULD_TRIGGER and its companying function bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) you can block or allow combos to activate on the conditions of your choice. For example, you could disallow some combos on the base layer and allow them on another. Or disable combos on the home row when a timer is running.
Normally, the timer is started on the first key press and then reset on every subsequent key press within the COMBO_TERM. Inputting combos is relaxed like this, but also slightly more prone to accidental misfires.
The next two options alter the behaviour of the timer.
With COMBO_STRICT_TIMER, the timer is started only on the first key press. Inputting combos is now less relaxed; you need to make sure the full chord is pressed within the COMBO_TERM. Misfires are less common but if you type multiple combos fast, there is a chance that the latter ones might not activate properly.
By defining COMBO_NO_TIMER, the timer is disabled completely and combos are activated on the first key release. This also disables the "must hold" functionalities as they just wouldn't work at all.
By defining COMBO_PROCESS_KEY_RELEASE and implementing the function bool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode), you can run your custom code on each key release after a combo was activated. For example you could change the RGB colors, activate haptics, or alter the modifiers.
You can also release a combo early by returning true from the function.
Here's an example where a combo resolves to two modifiers, and on key releases the modifiers are unregistered one by one, depending on which key was released.
By defining COMBO_PROCESS_KEY_REPRESS and implementing bool process_combo_key_repress(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode) you can run your custom code when you repress just released key of a combo. By combining it with custom process_combo_event we can for example make special handling for Alt+Tab to switch windows, which, on combo F+G activation, registers Alt and presses Tab - then we can switch windows forward by releasing G and pressing it again, or backwards with F key. Here's the full example:
If you, for example, use multiple base layers for different key layouts, one for QWERTY, and another one for Colemak, you might want your combos to work from the same key positions on all layers. Defining the same combos again for another layout is redundant and takes more memory. The solution is to just check the keycodes from one layer.
With #define COMBO_ONLY_FROM_LAYER 0 in config.h, the combos' keys are always checked from layer 0, even if other layers are active.
If not using COMBO_ONLY_FROM_LAYER it is possible to specify a combo reference layer for any layer using the combo_ref_from_layer hook. The combo macros automatically create this function from the COMBO_REF_LAYER() entries given.
This function returns the assigned reference layer for the current layer. if there is no match, it returns the default reference layer if set, or the current layer otherwise. A default layer can be set with DEFAULT_REF_LAYER(_MY_COMBO_REF_LAYER)
If not set, the default reference layer selection from the automatically generated combo-ref-from-layer() will be the current layer.
The following combo_ref_from_layer function will give a reference layer of _QWERTY for the _DVORAK layer and will give the _NAV layer as a reference to it's self. All other layers will have the default for their combo reference layer. If the default is not set, all other layers will reference themselves.
c
#define COMBO_REF_DEFAULT _MY_COMBO_LAYER\n\nuint8_t combo_ref_from_layer(uint8_t layer){\n switch (get_highest_layer(layer_state)){\n case _DVORAK: return _QWERTY;\n case _NAV: return _NAV;\n default: return _MY_COMBO_LAYER;\n }\n return layer; // important if default is not in case.\n}
The equivalent definition using the combo macros is this:
Having 3 places to update when adding new combos or altering old ones does become cumbersome when you have a lot of combos. We can alleviate this with some magic! ... If you consider C macros magic. First, you need to add VPATH += keyboards/gboards to your rules.mk. Next, include the file g/keymap_combo.h in your keymap.c.
WARNING
This functionality uses the same process_combo_event function as COMBO_ACTION macros do, so you cannot use the function yourself in your keymap. Instead, you have to define the cases of the switch statement by themselves within inject.h, which g/keymap_combo.h will then include into the function.
Then, write your combos in combos.def file in the following manner:
c
// Alternate reference layers by layer\n// Layer Reference layer\nCOMBO_REF_LAYER(_DVORAK, _QWERTY) // reference the qwerty layer for dvorak.\nCOMBO_REF_LAYER(_NAV, _NAV) // explicit reference to self instead of the default.\n\n// name result chord keys\nCOMB(AB_ESC, KC_ESC, KC_A, KC_B)\nCOMB(JK_TAB, KC_TAB, KC_J, KC_K)\nCOMB(JKL_SPC, KC_SPC, KC_J, KC_K, KC_L)\nCOMB(BSSL_CLR, KC_NO, KC_BSPC, KC_LSFT) // using KC_NO as the resulting keycode is the same as COMBO_ACTION before.\nCOMB(QW_UNDO, C(KC_Z), KC_Q, KC_W)\nSUBS(TH_THE, "the", KC_T, KC_H) // SUBS uses SEND_STRING to output the given string.\n...
Command, formerly known as Magic, is a way to change your keyboard's behavior without having to flash or unplug it to use Bootmagic. There is a lot of overlap between this functionality and the Magic Keycodes. Wherever possible we encourage you to use that feature instead of Command.
On some keyboards Command is disabled by default. If this is the case, it must be explicitly enabled in your rules.mk:
To use Command, hold down the key combination defined by the IS_COMMAND() macro. By default this is Left Shift+Right Shift. Then, press the key corresponding to the command you want. For example, to output the current QMK version to the QMK Toolbox console, press Left Shift+Right Shift+V.
If you would like to change the key assignments for Command, #define these in your config.h at either the keyboard or keymap level. All keycode assignments here must omit the KC_ prefix.
Define
Default
Description
IS_COMMAND()
(get_mods() == MOD_MASK_SHIFT)
The key combination to activate Command
MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
true
Set default layer with the Function row
MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
true
Set default layer with the number keys
MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
false
Set default layer with MAGIC_KEY_LAYER0..9
MAGIC_KEY_DEBUG
D
Toggle debugging over serial
MAGIC_KEY_DEBUG_MATRIX
X
Toggle key matrix debugging
MAGIC_KEY_DEBUG_KBD
K
Toggle keyboard debugging
MAGIC_KEY_DEBUG_MOUSE
M
Toggle mouse debugging
MAGIC_KEY_CONSOLE
C
Enable the Command console
MAGIC_KEY_VERSION
V
Print the running QMK version to the console
MAGIC_KEY_STATUS
S
Print the current keyboard status to the console
MAGIC_KEY_HELP
H
Print Command help to the console
MAGIC_KEY_HELP_ALT
SLASH
Print Command help to the console (alternate)
MAGIC_KEY_LAYER0
0
Make layer 0 the default layer
MAGIC_KEY_LAYER0_ALT
GRAVE
Make layer 0 the default layer (alternate)
MAGIC_KEY_LAYER1
1
Make layer 1 the default layer
MAGIC_KEY_LAYER2
2
Make layer 2 the default layer
MAGIC_KEY_LAYER3
3
Make layer 3 the default layer
MAGIC_KEY_LAYER4
4
Make layer 4 the default layer
MAGIC_KEY_LAYER5
5
Make layer 5 the default layer
MAGIC_KEY_LAYER6
6
Make layer 6 the default layer
MAGIC_KEY_LAYER7
7
Make layer 7 the default layer
MAGIC_KEY_LAYER8
8
Make layer 8 the default layer
MAGIC_KEY_LAYER9
9
Make layer 9 the default layer
MAGIC_KEY_BOOTLOADER
B
Jump to bootloader
MAGIC_KEY_BOOTLOADER_ALT
ESC
Jump to bootloader (alternate)
MAGIC_KEY_LOCK
CAPS
Lock the keyboard so nothing can be typed
MAGIC_KEY_EEPROM
E
Print stored EEPROM config to the console
MAGIC_KEY_EEPROM_CLEAR
BSPACE
Clear the EEPROM
MAGIC_KEY_NKRO
N
Toggle N-Key Rollover (NKRO)
MAGIC_KEY_SLEEP_LED
Z
Toggle LED when computer is sleeping
', 9);
+const _hoisted_10 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_10);
+}
+const command = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ command as default
+};
diff --git a/assets/features_command.md.B4mE21dh.lean.js b/assets/features_command.md.B4mE21dh.lean.js
new file mode 100644
index 0000000..1e1575b
--- /dev/null
+++ b/assets/features_command.md.B4mE21dh.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Command","description":"","frontmatter":{},"headers":[],"relativePath":"features/command.md","filePath":"features/command.md"}');
+const _sfc_main = { name: "features/command.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 9);
+const _hoisted_10 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_10);
+}
+const command = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ command as default
+};
diff --git a/assets/features_digitizer.md.DBSZvpwE.js b/assets/features_digitizer.md.DBSZvpwE.js
new file mode 100644
index 0000000..bc08a3a
--- /dev/null
+++ b/assets/features_digitizer.md.DBSZvpwE.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Digitizer","description":"","frontmatter":{},"headers":[],"relativePath":"features/digitizer.md","filePath":"features/digitizer.md"}');
+const _sfc_main = { name: "features/digitizer.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Digitizers allow the mouse cursor to be placed at absolute coordinates, unlike the Pointing Device feature which applies relative displacements.
This feature implements a stylus device with a tip switch and barrel switch (generally equivalent to the primary and secondary mouse buttons respectively). Tip pressure is not currently implemented.
The X and Y coordinates are normalized, meaning their value must be set between 0 and 1. For the X component, the value 0 is the leftmost position, whereas the value 1 is the rightmost position. Similarly for the Y component, 0 is at the top and 1 at the bottom.
TIP
Since there is no display attached, the OS will likely map these coordinates to the virtual desktop. This may be important to know if you have multiple monitors.
The "in range" indicator is required to be on for the change in coordinates to be taken. It can then be turned off again to signal the end of the digitizer interaction, but it is not strictly required.
You can also modify the digitizer state directly, if you need to change multiple fields in a single report:
DIP switches are supported by adding this to your rules.mk:
DIP_SWITCH_ENABLE = yes\n
and this to your config.h:
c
// Connects each switch in the dip switch to the GPIO pin of the MCU\n#define DIP_SWITCH_PINS { B14, A15, A10, B9 }\n// For split keyboards, you can separately define the right side pins\n#define DIP_SWITCH_PINS_RIGHT { ... }
or
c
// Connect each switch in the DIP switch to an unused intersections in the key matrix.\n#define DIP_SWITCH_MATRIX_GRID { {0,6}, {1,6}, {2,6} } // List of row and col pairs
DIP Switch mapping may be added to your keymap.c, which replicates the normal keyswitch functionality, but with dip switches. Add this to your keymap's rules.mk:
make
DIP_SWITCH_MAP_ENABLE = yes
Your keymap.c will then need a dip switch mapping defined (for two dip switches):
Connects each switch in the dip switch to the GPIO pin of the MCU
One side of the DIP switch should be wired directly to the pin on the MCU, and the other side to ground. It should not matter which side is connected to which, as it should be functionally the same.
Connect each switch in the DIP switch to an unused intersections in the key matrix.
As with the keyswitch, a diode and DIP switch connect the ROW line to the COL line.
', 27);
+const _hoisted_28 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_28);
+}
+const dip_switch = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ dip_switch as default
+};
diff --git a/assets/features_dip_switch.md.CfJ3EvxZ.lean.js b/assets/features_dip_switch.md.CfJ3EvxZ.lean.js
new file mode 100644
index 0000000..471687a
--- /dev/null
+++ b/assets/features_dip_switch.md.CfJ3EvxZ.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"DIP Switches","description":"","frontmatter":{},"headers":[],"relativePath":"features/dip_switch.md","filePath":"features/dip_switch.md"}');
+const _sfc_main = { name: "features/dip_switch.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 27);
+const _hoisted_28 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_28);
+}
+const dip_switch = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ dip_switch as default
+};
diff --git a/assets/features_dynamic_macros.md.ZTtIhM8T.js b/assets/features_dynamic_macros.md.ZTtIhM8T.js
new file mode 100644
index 0000000..8180add
--- /dev/null
+++ b/assets/features_dynamic_macros.md.ZTtIhM8T.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Dynamic Macros: Record and Replay Macros in Runtime","description":"","frontmatter":{},"headers":[],"relativePath":"features/dynamic_macros.md","filePath":"features/dynamic_macros.md"}');
+const _sfc_main = { name: "features/dynamic_macros.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Dynamic Macros: Record and Replay Macros in Runtime
QMK supports temporary macros created on the fly. We call these Dynamic Macros. They are defined by the user from the keyboard and are lost when the keyboard is unplugged or otherwise rebooted.
You can store one or two macros and they may have a combined total of 128 keypresses. You can increase this size at the cost of RAM.
To enable them, first include DYNAMIC_MACRO_ENABLE = yes in your rules.mk. Then, add the following keys to your keymap:
Key
Alias
Description
QK_DYNAMIC_MACRO_RECORD_START_1
DM_REC1
Start recording Macro 1
QK_DYNAMIC_MACRO_RECORD_START_2
DM_REC2
Start recording Macro 2
QK_DYNAMIC_MACRO_PLAY_1
DM_PLY1
Replay Macro 1
QK_DYNAMIC_MACRO_PLAY_2
DM_PLY2
Replay Macro 2
QK_DYNAMIC_MACRO_RECORD_STOP
DM_RSTP
Finish the macro that is currently being recorded.
That should be everything necessary.
To start recording the macro, press either DM_REC1 or DM_REC2.
To finish the recording, press the DM_RSTP layer button. You can also press DM_REC1 or DM_REC2 again to stop the recording.
To replay the macro, press either DM_PLY1 or DM_PLY2.
It is possible to replay a macro as part of a macro. It's ok to replay macro 2 while recording macro 1 and vice versa but never create recursive macros i.e. macro 1 that replays macro 1. If you do so and the keyboard will get unresponsive, unplug the keyboard and plug it again. You can disable this completely by defining DYNAMIC_MACRO_NO_NESTING in your config.h file.
TIP
For the details about the internals of the dynamic macros, please read the comments in the process_dynamic_macro.h and process_dynamic_macro.c files.
There are a number of options added that should allow some additional degree of customization
Define
Default
Description
DYNAMIC_MACRO_SIZE
128
Sets the amount of memory that Dynamic Macros can use. This is a limited resource, dependent on the controller.
DYNAMIC_MACRO_USER_CALL
Not defined
Defining this falls back to using the user keymap.c file to trigger the macro behavior.
DYNAMIC_MACRO_NO_NESTING
Not Defined
Defining this disables the ability to call a macro from another macro (nested macros).
DYNAMIC_MACRO_DELAY
Not Defined
Sets the waiting time (ms unit) when sending each key.
If the LEDs start blinking during the recording with each keypress, it means there is no more space for the macro in the macro buffer. To fit the macro in, either make the other macro shorter (they share the same buffer) or increase the buffer size by adding the DYNAMIC_MACRO_SIZE define in your config.h (default value: 128; please read the comments for it in the header).
For users of the earlier versions of dynamic macros: It is still possible to finish the macro recording using just the layer modifier used to access the dynamic macro keys, without a dedicated DM_RSTP key. If you want this behavior back, add #define DYNAMIC_MACRO_USER_CALL to your config.h and insert the following snippet at the beginning of your process_record_user() function:
There are a number of hooks that you can use to add custom functionality and feedback options to Dynamic Macro feature. This allows for some additional degree of customization.
Note, that direction indicates which macro it is, with 1 being Macro 1, -1 being Macro 2, and 0 being no macro.
dynamic_macro_record_start_user(int8_t direction) - Triggered when you start recording a macro.
dynamic_macro_play_user(int8_t direction) - Triggered when you play back a macro.
dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record) - Triggered on each keypress while recording a macro.
dynamic_macro_record_end_user(int8_t direction) - Triggered when the macro recording is stopped.
Additionally, you can call dynamic_macro_led_blink() to flash the backlights if that feature is enabled.
', 23);
+const _hoisted_24 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_24);
+}
+const dynamic_macros = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ dynamic_macros as default
+};
diff --git a/assets/features_dynamic_macros.md.ZTtIhM8T.lean.js b/assets/features_dynamic_macros.md.ZTtIhM8T.lean.js
new file mode 100644
index 0000000..2e57b09
--- /dev/null
+++ b/assets/features_dynamic_macros.md.ZTtIhM8T.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Dynamic Macros: Record and Replay Macros in Runtime","description":"","frontmatter":{},"headers":[],"relativePath":"features/dynamic_macros.md","filePath":"features/dynamic_macros.md"}');
+const _sfc_main = { name: "features/dynamic_macros.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 23);
+const _hoisted_24 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_24);
+}
+const dynamic_macros = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ dynamic_macros as default
+};
diff --git a/assets/features_encoders.md.CugXBk-4.js b/assets/features_encoders.md.CugXBk-4.js
new file mode 100644
index 0000000..ff95959
--- /dev/null
+++ b/assets/features_encoders.md.CugXBk-4.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Encoders","description":"","frontmatter":{},"headers":[],"relativePath":"features/encoders.md","filePath":"features/encoders.md"}');
+const _sfc_main = { name: "features/encoders.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
If your encoder's clockwise directions are incorrect, you can swap the A & B pad definitions. They can also be flipped with a define:
c
#define ENCODER_DIRECTION_FLIP
Additionally, the resolution, which defines how many pulses the encoder registers between each detent, can be defined with:
c
#define ENCODER_RESOLUTION 4
It can also be defined per-encoder, by instead defining:
c
#define ENCODER_RESOLUTIONS { 4, 2 }
For 4× encoders you also can assign default position if encoder skips pulses when it changes direction. For example, if your encoder send high level on both pins by default, define this:
If you are using different pinouts for the encoders on each half of a split keyboard, you can define the pinout (and optionally, resolutions) for the right half like this:
If the _RIGHT definitions aren't specified in your config.h, then the non-_RIGHT versions will be applied to both sides of the split.
Additionally, if one side does not have an encoder, you can specify {} for the pins/resolution -- for example, a split keyboard with only a right-side encoder:
Encoder mapping may be added to your keymap.c, which replicates the normal keyswitch layer handling functionality, but with encoders. Add this to your keymap's rules.mk:
make
ENCODER_MAP_ENABLE = yes
Your keymap.c will then need an encoder mapping defined (for four layers and two encoders):
Using encoder mapping pumps events through the normal QMK keycode processing pipeline, resulting in a keydown/keyup combination pushed through process_record_xxxxx(). To configure the amount of time between the encoder "keyup" and "keydown", you can add the following to your config.h:
c
#define ENCODER_MAP_KEY_DELAY 10
TIP
By default, the encoder map delay matches the value of TAP_CODE_DELAY.
Default Behaviour: all encoders installed will function as volume up (KC_VOLU) on clockwise rotation and volume down (KC_VOLD) on counter-clockwise rotation. If you do not wish to override this, no further configuration is necessary.
If you would like the alter the default behaviour, and are not using ENCODER_MAP_ENABLE = yes, the callback functions can be inserted into your <keyboard>.c:
c
bool encoder_update_kb(uint8_t index, bool clockwise) {\n if (!encoder_update_user(index, clockwise)) {\n return false; /* Don't process further events if user function exists and returns false */\n }\n if (index == 0) { /* First encoder */\n if (clockwise) {\n tap_code(KC_PGDN);\n } else {\n tap_code(KC_PGUP);\n }\n } else if (index == 1) { /* Second encoder */\n if (clockwise) {\n rgb_matrix_increase_hue();\n } else {\n rgb_matrix_decrease_hue();\n }\n }\n return true;\n}
or keymap.c:
c
bool encoder_update_user(uint8_t index, bool clockwise) {\n if (index == 0) { /* First encoder */\n if (clockwise) {\n tap_code(KC_PGDN);\n } else {\n tap_code(KC_PGUP);\n }\n } else if (index == 1) { /* Second encoder */\n if (clockwise) {\n rgb_matrix_increase_hue();\n } else {\n rgb_matrix_decrease_hue();\n }\n }\n return false;\n}
WARNING
If you return true in the keymap level _user function, it will allow the keyboard/core level encoder code to run on top of your own. Returning false will override the keyboard level function, if setup correctly. This is generally the safest option to avoid confusion.
You could even support three encoders using only three pins (one per encoder) however in this configuration, rotating two encoders which share pins simultaneously will often generate incorrect output. For example:
Here rotating Encoder 0 B1 B2 and Encoder 1 B1 B3 could be interpreted as rotating Encoder 2 B2 B3 or B3 B2 depending on the timing. This may still be a useful configuration depending on your use case
', 48);
+const _hoisted_49 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_49);
+}
+const encoders = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ encoders as default
+};
diff --git a/assets/features_encoders.md.CugXBk-4.lean.js b/assets/features_encoders.md.CugXBk-4.lean.js
new file mode 100644
index 0000000..354bd94
--- /dev/null
+++ b/assets/features_encoders.md.CugXBk-4.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Encoders","description":"","frontmatter":{},"headers":[],"relativePath":"features/encoders.md","filePath":"features/encoders.md"}');
+const _sfc_main = { name: "features/encoders.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 48);
+const _hoisted_49 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_49);
+}
+const encoders = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ encoders as default
+};
diff --git a/assets/features_grave_esc.md.DTvs6396.js b/assets/features_grave_esc.md.DTvs6396.js
new file mode 100644
index 0000000..5e2b38b
--- /dev/null
+++ b/assets/features_grave_esc.md.DTvs6396.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Grave Escape","description":"","frontmatter":{},"headers":[],"relativePath":"features/grave_esc.md","filePath":"features/grave_esc.md"}');
+const _sfc_main = { name: "features/grave_esc.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
If you're using a 60% keyboard, or any other layout with no F-row, you will have noticed that there is no dedicated Escape key. Grave Escape is a feature that allows you to share the grave key (` and ~) with Escape.
Replace the KC_GRV key in your keymap (usually to the left of the 1 key) with QK_GESC. Most of the time this key will output KC_ESC when pressed. However, when Shift or GUI are held down it will output KC_GRV instead.
If Mary presses QK_GESC on her keyboard, the OS will see an KC_ESC character. Now if Mary holds Shift down and presses QK_GESC it will output ~, or a shifted backtick. Now if she holds GUI/CMD/WIN, it will output a simple ` character.
On macOS, Command+` is by default mapped to "Move focus to next window" so it will not output a backtick. Additionally, Terminal always recognises this shortcut to cycle between windows, even if the shortcut is changed in the Keyboard preferences.
There are several possible key combinations this will break, among them Control+Shift+Escape on Windows and Command+Option+Escape on macOS. To work around this, you can #define these options in your config.h:
Define
Description
GRAVE_ESC_ALT_OVERRIDE
Always send Escape if Alt is pressed
GRAVE_ESC_CTRL_OVERRIDE
Always send Escape if Control is pressed
GRAVE_ESC_GUI_OVERRIDE
Always send Escape if GUI is pressed
GRAVE_ESC_SHIFT_OVERRIDE
Always send Escape if Shift is pressed
', 13);
+const _hoisted_14 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_14);
+}
+const grave_esc = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ grave_esc as default
+};
diff --git a/assets/features_grave_esc.md.DTvs6396.lean.js b/assets/features_grave_esc.md.DTvs6396.lean.js
new file mode 100644
index 0000000..d99ae94
--- /dev/null
+++ b/assets/features_grave_esc.md.DTvs6396.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Grave Escape","description":"","frontmatter":{},"headers":[],"relativePath":"features/grave_esc.md","filePath":"features/grave_esc.md"}');
+const _sfc_main = { name: "features/grave_esc.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 13);
+const _hoisted_14 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_14);
+}
+const grave_esc = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ grave_esc as default
+};
diff --git a/assets/features_haptic_feedback.md.DVUdhF3q.js b/assets/features_haptic_feedback.md.DVUdhF3q.js
new file mode 100644
index 0000000..0310dfe
--- /dev/null
+++ b/assets/features_haptic_feedback.md.DVUdhF3q.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Haptic Feedback","description":"","frontmatter":{},"headers":[],"relativePath":"features/haptic_feedback.md","filePath":"features/haptic_feedback.md"}');
+const _sfc_main = { name: "features/haptic_feedback.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
The solenoid code supports relay switches, and similar hardware, as well as solenoids.
For a regular solenoid, you will need a build a circuit to drive the solenoid through a mosfet as most MCU will not be able to provide the current needed to drive the coil in the solenoid.
For relay switches, the hardware may already contain all of that ciruitry, and just require VCC, GND and a data pin.
Settings
Default
Description
SOLENOID_PIN
Not defined
Configures the pin that the switch is connected to.
SOLENOID_PIN_ACTIVE_LOW
Not defined
If defined then the switch trigger pin is active low.
SOLENOID_PINS
Not defined
Configures an array of pins to be used for switch activation.
SOLENOID_PINS_ACTIVE_LOW
Not defined
Allows you to specify how each pin is pulled for activation.
SOLENOID_RANDOM_FIRE
Not defined
When there are multiple solenoids, will select a random one to fire.
SOLENOID_DEFAULT_DWELL
12 ms
Configures the default dwell time for the switch.
SOLENOID_MIN_DWELL
4 ms
Sets the lower limit for the dwell.
SOLENOID_MAX_DWELL
100 ms
Sets the upper limit for the dwell.
SOLENOID_DWELL_STEP_SIZE
1 ms
The step size to use when HF_DWL* keycodes are sent.
SOLENOID_DEFAULT_BUZZ
0 (disabled)
On HF_RST buzz is set "on" if this is "1"
SOLENOID_BUZZ_ACTUATED
SOLENOID_MIN_DWELL
Actuated-time when the switch is in buzz mode.
SOLENOID_BUZZ_NONACTUATED
SOLENOID_MIN_DWELL
Non-Actuated-time when the switch is in buzz mode.
If solenoid buzz is off, then dwell time is how long the "plunger" stays activated. The dwell time changes how the solenoid sounds.
If solenoid buzz is on, then dwell time sets the length of the buzz, while SOLENOID_BUZZ_ACTUATED and SOLENOID_BUZZ_NONACTUATED set the (non-)actuation times withing the buzz period.
With the current implementation, for any of the above time settings, the precision of these settings may be affected by how fast the keyboard is able to scan the matrix. Therefore, if the keyboards scanning routine is slow, it may be preferable to set SOLENOID_DWELL_STEP_SIZE to a value slightly smaller than the time it takes to scan the keyboard.
Beware that some pins may be powered during bootloader (ie. A13 on the STM32F303 chip) and will result in the solenoid kept in the on state through the whole flashing process. This may overheat and damage the solenoid. If you find that the pin the solenoid is connected to is triggering the solenoid during bootloader/DFU, select another pin.
Eccentric Rotating Mass vibration motors (ERM) is motor with a off-set weight attached so when drive signal is attached, the off-set weight spins and causes a sinusoidal wave that translate into vibrations.
c
#define DRV2605L_FB_ERM_LRA 0\n#define DRV2605L_FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */\n#define DRV2605L_FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */\n\n/* Please refer to your datasheet for the optimal setting for your specific motor. */\n#define DRV2605L_RATED_VOLTAGE 3\n#define DRV2605L_V_PEAK 5
Linear resonant actuators (LRA, also know as a linear vibrator) works different from a ERM. A LRA has a weight and magnet suspended by springs and a voice coil. When the drive signal is applied, the weight would be vibrate on a single axis (side to side or up and down). Since the weight is attached to a spring, there is a resonance effect at a specific frequency. This frequency is where the LRA will operate the most efficiently. Refer to the motor's datasheet for the recommanded range for this frequency.
c
#define DRV2605L_FB_ERM_LRA 1\n#define DRV2605L_FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */\n#define DRV2605L_FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */\n\n/* Please refer to your datasheet for the optimal setting for your specific motor. */\n#define DRV2605L_RATED_VOLTAGE 2\n#define DRV2605L_V_PEAK 2.8\n#define DRV2605L_V_RMS 2.0\n#define DRV2605L_V_PEAK 2.1\n#define DRV2605L_F_LRA 205 /* resonance freq */
DRV2605L comes with preloaded library of various waveform sequences that can be called and played. If writing a macro, these waveforms can be played using DRV_pulse(*sequence name or number*)
The Haptic Exclusion is implemented as __attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) in haptic.c. This allows a re-definition at the required level with the specific requirement / exclusion.
LT() layer tap keys, when held to activate a layer. However when tapped, and the key is quickly released, and sends a keycode, haptic feedback is still triggered.
TT() layer tap toggle keys, when held to activate a layer. However when tapped TAPPING_TOGGLE times to permanently toggle the layer, on the last tap haptic feedback is still triggered.
MT() mod tap keys, when held to keep a usual modifier key pressed. However when tapped, and the key is quickly released, and sends a keycode, haptic feedback is still triggered. See also Mod-Tap.
With the entry of #define NO_HAPTIC_PUNCTUATION in config.h, none of the following keys will trigger a feedback: Enter, ESC, Backspace, Space, Minus, Equal, Left Bracket, Right Bracket, Backslash, Non-US Hash, Semicolon, Quote, Grave, Comma, Slash, Dot, Non-US Backslash.
With the entry of #define NO_HAPTIC_NAV in config.h, none of the following keys will trigger a feedback: Print Screen, Pause, Insert, Delete, Page Down, Page Up, Left Arrow, Up Arrow, Right Arrow, Down Arrow, End, Home.
LCD modules using HD44780U IC or equivalent, communicating in 4-bit mode.
Module
Size
Notes
1602A
16x2, 5x8 dots
2004A
20x4, 5x8 dots
Untested, not currently supported
To run these modules at 3.3V, an additional MAX660 voltage converter IC must be soldered on, along with two 10µF capacitors. See this page for more details.
Up to eight custom characters can be defined. This data is stored in the Character Generator RAM (CGRAM), and is not persistent across power cycles.
This example defines the QMK Psi as the first custom character. The first 16 positions in the character set are reserved for the eight custom characters duplicated.
Byte | 16 8 4 2 1\n 1 | x x x ■ □ ■ □ ■\n 2 | x x x ■ □ ■ □ ■\n 3 | x x x ■ □ ■ □ ■\n 4 | x x x □ ■ ■ ■ □\n 5 | x x x □ □ ■ □ □\n 6 | x x x □ □ ■ □ □\n 7 | x x x □ □ ■ □ □\n 8 | x x x □ □ □ □ □
c
const uint8_t PROGMEM psi[8] = { 0x15, 0x15, 0x15, 0x0E, 0x04, 0x04, 0x04, 0x00 };\n\nvoid keyboard_post_init_user(void) {\n hd44780_init(false, false);\n hd44780_define_char_P(0, psi);\n // Cursor is incremented while defining characters so must be reset\n hd44780_home();\n // 0x08 to avoid null terminator\n hd44780_puts_P(PSTR("\\x08 QMK Firmware"));\n}
uint8_t index The index of the custom character to define, from 0 to 7.
uint8_t *data An array of 8 bytes containing the 5-bit row data of the character, where the first byte is the topmost row, and the least significant bit of each byte is the rightmost column.
uint8_t index The index of the custom character to define, from 0 to 7.
const uint8_t *data A PROGMEM array of 8 bytes containing the 5-bit row data of the character, where the first byte is the topmost row, and the least significant bit of each byte is the rightmost column.
If isData is true, the returned byte will be the character at the current DDRAM address. Otherwise, it will be the current DDRAM address and the busy flag.
This feature provides game controller input as a joystick device supporting up to 6 axes and 32 buttons. Axes can be read either from an ADC-capable input pin, or can be virtual, so that its value is provided by your code.
An analog device such as a potentiometer found on an analog joystick's axes is based on a voltage divider, where adjusting the movable wiper controls the output voltage which can then be read by the microcontroller's ADC.
By default, two axes and eight buttons are defined, with a reported resolution of 8 bits (-127 to +127). This can be changed in your config.h:
c
// Min 0, max 32\n#define JOYSTICK_BUTTON_COUNT 16\n// Min 0, max 6: X, Y, Z, Rx, Ry, Rz\n#define JOYSTICK_AXIS_COUNT 3\n// Min 8, max 16\n#define JOYSTICK_AXIS_RESOLUTION 10
TIP
You must define at least one button or axis. Also note that the maximum ADC resolution of the supported AVR MCUs is 10-bit, and 12-bit for most STM32 MCUs.
When defining axes for your joystick, you must provide a definition array typically in your keymap.c.
For instance, the below example configures two axes. The X axis is read from the A4 pin. With the default axis resolution of 8 bits, the range of values between 900 and 575 are scaled to -127 through 0, and values 575 to 285 are scaled to 0 through 127. The Y axis is configured as a virtual axis, and its value is not read from any pin. Instead, the user must update the axis value programmatically.
Axes can be configured using one of the following macros:
JOYSTICK_AXIS_IN(input_pin, low, rest, high) The ADC samples the provided pin. low, high and rest correspond to the minimum, maximum, and resting (or centered) analog values of the axis, respectively.
JOYSTICK_AXIS_VIRTUAL No ADC reading is performed. The value should be provided by user code.
The low and high values can be swapped to effectively invert the axis.
Sometimes you may find yourself needing to hold down a specific key for a long period of time. Key Lock holds down the next key you press for you. Press it again, and it will be released.
Let's say you need to type in ALL CAPS for a few sentences. Hit QK_LOCK, and then Shift. Now, Shift will be considered held until you tap it again. You can think of Key Lock as Caps Lock, but supercharged.
Key Lock is only able to hold standard action keys and One Shot modifier keys (for example, if you have your Shift defined as OSM(MOD_LSFT)). This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as KC_LPRN. If it's in the Basic Keycodes list, it can be held.
Switching layers will not cancel the Key Lock. The Key Lock can be cancelled by calling the cancel_key_lock() function.
', 10);
+const _hoisted_11 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_11);
+}
+const key_lock = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ key_lock as default
+};
diff --git a/assets/features_key_lock.md.CXEQ5-MN.lean.js b/assets/features_key_lock.md.CXEQ5-MN.lean.js
new file mode 100644
index 0000000..4cf724c
--- /dev/null
+++ b/assets/features_key_lock.md.CXEQ5-MN.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Key Lock","description":"","frontmatter":{},"headers":[],"relativePath":"features/key_lock.md","filePath":"features/key_lock.md"}');
+const _sfc_main = { name: "features/key_lock.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 10);
+const _hoisted_11 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_11);
+}
+const key_lock = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ key_lock as default
+};
diff --git a/assets/features_key_overrides.md.CPs_0RSS.js b/assets/features_key_overrides.md.CPs_0RSS.js
new file mode 100644
index 0000000..2095c9b
--- /dev/null
+++ b/assets/features_key_overrides.md.CPs_0RSS.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Key Overrides","description":"","frontmatter":{},"headers":[],"relativePath":"features/key_overrides.md","filePath":"features/key_overrides.md"}');
+const _sfc_main = { name: "features/key_overrides.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Key overrides allow you to override modifier-key combinations to send a different modifier-key combination or perform completely custom actions. Don't want shift + 1 to type ! on your computer? Use a key override to make your keyboard type something different when you press shift + 1. The general behavior is like this: If modifiers w + key x are pressed, replace these keys with modifiers y + key z in the keyboard report.
You can use key overrides in a similar way to momentary layer/fn keys to activate custom keycodes/shortcuts, with a number of benefits: You completely keep the original use of the modifier keys, while being able to save space by removing fn keys from your keyboard. You can also easily configure combinations of modifiers to trigger different actions than individual modifiers, and much more. The possibilities are quite vast and this documentation contains a few examples for inspiration throughout.
A few more examples to get started: You could use key overrides to...
Send brightness up/down when pressing ctrl + volume up/down.
Send delete when pressing shift + backspace.
Create custom shortcuts or change existing ones: E.g. Send ctrl+shift+z when ctrl+y is pressed.
To enable this feature, you need to add KEY_OVERRIDE_ENABLE = yes to your rules.mk.
Then, in your keymap.c file, you'll need to define the array key_overrides, which defines all key overrides to be used. Each override is a value of type key_override_t. The array key_overridescontains pointers to key_override_t values (const key_override_t **).
The key_override_t struct has many options that allow you to precisely tune your overrides. The full reference is shown below. Instead of manually creating a key_override_t value, it is recommended to use these dedicated initializers:
Returns a key_override_t, which sends replacement (can be a key-modifier combination), when key and modifiers are all pressed down. This override still activates if any additional modifiers not specified in modifiers are also pressed down. See ko_make_with_layers_and_negmods to customize this behavior.
Additionally takes a bitmask options that specifies additional options. See ko_option_t for available options.
For more customization possibilities, you may directly create a key_override_t, which allows you to customize even more behavior. Read further below for details and examples.
The Grave Escape feature is limited in its configurability and has bugs when used on macOS. Key overrides can be used to achieve a similar functionality as Grave Escape, but with more customization and without bugs on macOS.
In addition to not encountering unexpected bugs on macOS, you can also change the behavior as you wish. Instead setting GUI + ESC = ` you may change it to an arbitrary other modifier, for example Ctrl + ESC = `.
Do you really need a dedicated key to toggle your fn layer? With key overrides, perhaps not. This example shows how you can configure to use rGUI + rAlt (right GUI and right alt) to access a momentary layer like an fn layer. With this you completely eliminate the need to use a dedicated layer key. Of course the choice of modifier keys can be changed as needed, rGUI + rAlt is just an example here.
c
// This is called when the override activates and deactivates. Enable the fn layer on activation and disable on deactivation\nbool momentary_layer(bool key_down, void *layer) {\n if (key_down) {\n layer_on((uint8_t)(uintptr_t)layer);\n } else {\n layer_off((uint8_t)(uintptr_t)layer);\n }\n\n return false;\n}\n\nconst key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), //\n .layers = ~(1 << LAYER_FN), //\n .suppressed_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), //\n .options = ko_option_no_unregister_on_other_key_down, //\n .negative_mod_mask = (uint8_t) ~(MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL)), //\n .custom_action = momentary_layer, //\n .context = (void *)LAYER_FN, //\n .trigger = KC_NO, //\n .replacement = KC_NO, //\n .enabled = NULL};
Advanced users may need more customization than what is offered by the simple ko_make initializers. For this, directly create a key_override_t value and set all members. Below is a reference for all members of key_override_t.
Member
Description
uint16_t trigger
The non-modifier keycode that triggers the override. This keycode, and the necessary modifiers (trigger_mods) must be pressed to activate this override. Set this to the keycode of the key that should activate the override. Set to KC_NO to require only the necessary modifiers to be pressed and no non-modifier.
uint8_t trigger_mods
Which mods need to be down for activation. If both sides of a modifier are set (e.g. left ctrl and right ctrl) then only one is required to be pressed (e.g. left ctrl suffices). Use the MOD_MASK_XXX and MOD_BIT() macros for this.
layer_state_t layers
This is a BITMASK (!), defining which layers this override applies to. To use this override on layer i set the ith bit (1 << i).
uint8_t negative_mod_mask
Which modifiers cannot be down. It must hold that (active_modifiers & negative_mod_mask) == 0, otherwise the key override will not be activated. An active override will be deactivated once this is no longer true.
uint8_t suppressed_mods
Modifiers to 'suppress' while the override is active. To suppress a modifier means that even though the modifier key is held down, the host OS sees the modifier as not pressed. Can be used to suppress the trigger modifiers, as a trivial example.
uint16_t replacement
The complex keycode to send as replacement when this override is triggered. This can be a simple keycode, a key-modifier combination (e.g. C(KC_A)), or KC_NO (to register no replacement keycode). Use in combination with suppressed_mods to get the correct modifiers to be sent.
ko_option_t options
Options controlling the behavior of the override, such as what actions are allowed to activate the override.
If not NULL, this function will be called right before the replacement key is registered, along with the provided context and a flag indicating whether the override was activated or deactivated. This function allows you to run some custom actions for specific key overrides. If you return false, the replacement key is not registered/unregistered as it would normally. Return true to register and unregister the override normally.
void *context
A context that will be passed to the custom action function.
bool *enabled
If this points to false this override will not be used. Set to NULL to always have this override enabled.
Bitfield with various options controlling the behavior of a key override.
Value
Description
ko_option_activation_trigger_down
Allow activating when the trigger key is pressed down.
ko_option_activation_required_mod_down
Allow activating when a necessary modifier is pressed down.
ko_option_activation_negative_mod_up
Allow activating when a negative modifier is released.
ko_option_one_mod
If set, any of the modifiers in trigger_mods will be enough to activate the override (logical OR of modifiers). If not set, all the modifiers in trigger_mods have to be pressed (logical AND of modifiers).
ko_option_no_unregister_on_other_key_down
If set, the override will not deactivate when another key is pressed down. Use only if you really know you need this.
ko_option_no_reregister_trigger
If set, the trigger key will never be registered again after the override is deactivated.
ko_options_default
The default options used by the ko_make_xxx functions
This section explains how a key override works in detail, explaining where each member of key_override_t comes into play. Understanding this is essential to be able to take full advantage of all the options offered by key overrides.
When the necessary keys are pressed (trigger_mods + trigger), the override is 'activated' and the replacement key is registered in the keyboard report (replacement), while the trigger key is removed from the keyboard report. The trigger modifiers may also be removed from the keyboard report upon activation of an override (suppressed_mods). The override will not activate if any of the negative_modifiers are pressed.
Overrides can activate in three different cases:
The trigger key is pressed down and necessary modifiers are already down.
A necessary modifier is pressed down, while the trigger key and other necessary modifiers are already down.
A negative modifier is released, while all necessary modifiers and the trigger key are already down.
Use the option member to customize which of these events are allowed to activate your overrides (default: all three).
In any case, a key override can only activate if the trigger key is the last non-modifier key that was pressed down. This emulates the behavior of how standard OSes (macOS, Windows, Linux) handle normal key input (to understand: Hold down a, then also hold down b, then hold down shift; B will be typed but not A).
An override is 'deactivated' when one of the trigger keys (trigger_mods, trigger) is lifted, another non-modifier key is pressed down, or one of the negative_modifiers is pressed down. When an override deactivates, the replacement key is removed from the keyboard report, while the suppressed_mods that are still held down are re-added to the keyboard report. By default, the trigger key is re-added to the keyboard report if it is still held down and no other non-modifier key has been pressed since. This again emulates the behavior of how standard OSes handle normal key input (To understand: hold down a, then also hold down b, then also shift, then release b; A will not be typed even though you are holding the a and shift keys). Use the option field ko_option_no_reregister_trigger to prevent re-registering the trigger key in all cases.
A third way in which standard OS-handling of modifier-key input is emulated in key overrides is with a 'key repeat delay'. To explain what this is, let's look at how normal keyboard input is handled by mainstream OSes again: If you hold down a, followed by shift, you will see the letter a is first typed, then for a short moment nothing is typed and then repeating As are typed. Take note that, although shift is pressed down just after a is pressed, it takes a moment until A is typed. This is caused by the aforementioned key repeat delay, and it is a feature that prevents unwanted repeated characters from being typed.
This applies equally to releasing a modifier: When you hold shift, then press a, the letter A is typed. Now if you release shift first, followed by a shortly after, you will not see the letter a being typed, even though for a short moment of time you were just holding down the key a. This is because no modified characters are typed until the key repeat delay has passed.
This exact behavior is implemented in key overrides as well: If a key override for shift + a = b exists, and a is pressed and held, followed by shift, you will not immediately see the letter b being typed. Instead, this event is deferred for a short moment, until the key repeat delay has passed, measured from the moment when the trigger key (a) was pressed down.
The duration of the key repeat delay is controlled with the KEY_OVERRIDE_REPEAT_DELAY macro. Define this value in your config.h file to change it. It is 500ms by default.
Note that key overrides are very different from combos. Combos require that you press down several keys almost at the same time and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. ctrl + z): They take combinations of multiple modifiers and one non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interaction with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable.
If the programs you use bind an action to taps of modifier keys (e.g. tapping left GUI to bring up the applications menu or tapping left Alt to focus the menu bar), you may find that using key overrides with suppressed mods falsely triggers those actions. To counteract this, you can define a DUMMY_MOD_NEUTRALIZER_KEYCODE in config.h that will get sent in between the register and unregister events of a suppressed modifier. That way, the programs on your computer will no longer interpret the mod suppression induced by key overrides as a lone tap of a modifier key and will thus not falsely trigger the undesired action.
Naturally, for this technique to be effective, you must choose a DUMMY_MOD_NEUTRALIZER_KEYCODE for which no keyboard shortcuts are bound to. Recommended values are: KC_RIGHT_CTRL or KC_F18. Please note that DUMMY_MOD_NEUTRALIZER_KEYCODE must be a basic, unmodified, HID keycode so values like KC_NO, KC_TRANSPARENT or KC_PIPE aka S(KC_BACKSLASH) are not permitted.
By default, only left Alt and left GUI are neutralized. If you want to change the list of applicable modifier masks, use the following in your config.h:
#define DUMMY_MOD_NEUTRALIZER_KEYCODE KC_RIGHT_CTRL\n\n// Neutralize left alt and left GUI (Default value)\n#define MODS_TO_NEUTRALIZE { MOD_BIT(KC_LEFT_ALT), MOD_BIT(KC_LEFT_GUI) }\n\n// Neutralize left alt, left GUI, right GUI and left Control+Shift\n#define MODS_TO_NEUTRALIZE { MOD_BIT(KC_LEFT_ALT), MOD_BIT(KC_LEFT_GUI), MOD_BIT(KC_RIGHT_GUI), MOD_BIT(KC_LEFT_CTRL)|MOD_BIT(KC_LEFT_SHIFT) }
WARNING
Do not use MOD_xxx constants like MOD_LSFT or MOD_RALT, since they're 5-bit packed bit-arrays while MODS_TO_NEUTRALIZE expects a list of 8-bit packed bit-arrays. Use MOD_BIT(<kc>) or MOD_MASK_xxx instead.
', 70);
+const _hoisted_71 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_71);
+}
+const key_overrides = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ key_overrides as default
+};
diff --git a/assets/features_key_overrides.md.CPs_0RSS.lean.js b/assets/features_key_overrides.md.CPs_0RSS.lean.js
new file mode 100644
index 0000000..7c44bf6
--- /dev/null
+++ b/assets/features_key_overrides.md.CPs_0RSS.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Key Overrides","description":"","frontmatter":{},"headers":[],"relativePath":"features/key_overrides.md","filePath":"features/key_overrides.md"}');
+const _sfc_main = { name: "features/key_overrides.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 70);
+const _hoisted_71 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_71);
+}
+const key_overrides = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ key_overrides as default
+};
diff --git a/assets/features_leader_key.md.Nmog5Zz4.js b/assets/features_leader_key.md.Nmog5Zz4.js
new file mode 100644
index 0000000..e66324f
--- /dev/null
+++ b/assets/features_leader_key.md.Nmog5Zz4.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"The Leader Key: A New Kind of Modifier","description":"","frontmatter":{},"headers":[],"relativePath":"features/leader_key.md","filePath":"features/leader_key.md"}');
+const _sfc_main = { name: "features/leader_key.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
If you're a Vim user, you probably know what a Leader key is. In contrast to Combos, the Leader key allows you to hit a sequence of up to five keys instead, which triggers some custom functionality once complete.
These callbacks are invoked when the leader sequence begins and ends. In the latter you can implement your custom functionality based on the contents of the sequence buffer.
c
void leader_start_user(void) {\n // Do something when the leader key is pressed\n}\n\nvoid leader_end_user(void) {\n if (leader_sequence_one_key(KC_F)) {\n // Leader, f => Types the below string\n SEND_STRING("QMK is awesome.");\n } else if (leader_sequence_two_keys(KC_D, KC_D)) {\n // Leader, d, d => Ctrl+A, Ctrl+C\n SEND_STRING(SS_LCTL("a") SS_LCTL("c"));\n } else if (leader_sequence_three_keys(KC_D, KC_D, KC_S)) {\n // Leader, d, d, s => Types the below string\n SEND_STRING("https://start.duckduckgo.com\\n");\n } else if (leader_sequence_two_keys(KC_A, KC_S)) {\n // Leader, a, s => GUI+S\n tap_code16(LGUI(KC_S));\n }\n}
This is the amount of time you have to complete a sequence once the leader key has been pressed. The default value is 300 milliseconds, but you can change this by adding the following to your config.h:
Rather than relying on an incredibly high timeout for long leader key strings or those of us without 200 wpm typing skills, you can enable per-key timing to ensure that each key pressed provides you with more time to finish the sequence. This is incredibly helpful with leader key emulation of tap dance (such as multiple taps of the same key like C, C, C).
To enable this, add the following to your config.h:
c
#define LEADER_PER_KEY_TIMING
After this, it's recommended that you lower your timeout below 300 ms:
c
#define LEADER_TIMEOUT 250
Now, something like this won't seem impossible to do without a 1000 millisecond timeout:
c
if (leader_sequence_three_keys(KC_C, KC_C, KC_C)) {\n SEND_STRING("Per key timing is great!!!");\n}
Sometimes your leader key may be too far away from the rest of the keys in the sequence. Imagine that your leader key is one of your outer top right keys - you may need to reposition your hand just to reach your leader key. This can make typing the entire sequence on time hard difficult if you are able to type most of the sequence fast. For example, if your sequence is Leader + asd, typing asd fast is very easy once you have your hands in your home row, but starting the sequence in time after moving your hand out of the home row to reach the leader key and back is not.
To remove the stress this situation produces to your hands, you can disable the timeout just for the leader key. Add the following to your config.h:
c
#define LEADER_NO_TIMEOUT
Now, after you hit the leader key, you will have an infinite amount of time to start the rest of the sequence, allowing you to properly position your hands to type the rest of the sequence comfortably. This way you can configure a very short LEADER_TIMEOUT, but still have plenty of time to position your hands.
By default, only the "tap keycode" portions of Mod-Taps and Layer Taps are added to the sequence buffer. This means if you press eg. LT(3, KC_A) as part of a sequence, KC_A will be added to the buffer, rather than the entire LT(3, KC_A) keycode.
This gives a more expected behaviour for most users, however you may want to change this.
To enable this, add the following to your config.h:
This example will play the Mario "One Up" sound when you hit QK_LEAD to start the leader sequence. When the sequence ends, it will play "All Star" if it completes successfully or "Rick Roll" you if it fails (in other words, no sequence matched).
LED indicators on split keyboards will require state information synced to the slave half (e.g. #define SPLIT_LED_STATE_ENABLE). See data sync options for more details.
QMK provides methods to read 5 of the LEDs defined in the HID spec:
Num Lock
Caps Lock
Scroll Lock
Compose
Kana
There are three ways to get the lock LED state:
Configuration options in config.h
Implement led_update_* function
Call led_t host_keyboard_led_state()
WARNING
The host_keyboard_led_state() may reflect an updated state before led_update_user() is called.
Deprecated functions that provide the LED state as uint8_t:
When the configuration options do not provide enough flexibility, the following callbacks allow custom control of the LED behavior. These functions will be called when one of those 5 LEDs changes state:
Both receives LED state as a struct parameter. Returning true in led_update_user() will allow the keyboard level code in led_update_kb() to run as well. Returning false will override the keyboard level code, depending on how the keyboard level function is set up.
This is a template indicator function that can be implemented on keyboard level code:
c
bool led_update_kb(led_t led_state) {\n bool res = led_update_user(led_state);\n if(res) {\n // gpio_write_pin sets the pin high for 1 and low for 0.\n // In this example the pins are inverted, setting\n // it low/0 turns it on, and high/1 turns the LED off.\n // This behavior depends on whether the LED is between the pin\n // and VCC or the pin and GND.\n gpio_write_pin(B0, !led_state.num_lock);\n gpio_write_pin(B1, !led_state.caps_lock);\n gpio_write_pin(B2, !led_state.scroll_lock);\n gpio_write_pin(B3, !led_state.compose);\n gpio_write_pin(B4, !led_state.kana);\n }\n return res;\n}
This is an incomplete example will play a sound if Caps Lock is turned on or off. It returns true to allow keyboard LED function to maintain their state.
The host_keyboard_led_state() function will report the LED state returned from the host computer as led_t. This is useful for reading the LED state outside led_update_*. For example, you can get the boolean state of Caps Lock from the host with:
This function writes the LED state to the actual hardware. Call it manually from your led_update_*() callbacks to modify the handling of the standard keyboard LEDs. For example when repurposing a standard LED indicator as layer indicator.
The Ergodox implementations provide ergodox_right_led_1/2/3_on/off() to turn individual LEDs on or off, as well as ergodox_right_led_on/off(uint8_t led) to turn them on or off by their index.
In addition, it is possible to specify the brightness level of all LEDs with ergodox_led_all_set(uint8_t n); of individual LEDs with ergodox_right_led_1/2/3_set(uint8_t n); or by index with ergodox_right_led_set(uint8_t led, uint8_t n).
Ergodox boards also define LED_BRIGHTNESS_LO for the lowest brightness and LED_BRIGHTNESS_HI for the highest brightness (which is the default).
', 34);
+const _hoisted_35 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_35);
+}
+const led_indicators = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ led_indicators as default
+};
diff --git a/assets/features_led_indicators.md.Cnu82Paw.lean.js b/assets/features_led_indicators.md.Cnu82Paw.lean.js
new file mode 100644
index 0000000..3521b15
--- /dev/null
+++ b/assets/features_led_indicators.md.Cnu82Paw.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"LED Indicators","description":"","frontmatter":{},"headers":[],"relativePath":"features/led_indicators.md","filePath":"features/led_indicators.md"}');
+const _sfc_main = { name: "features/led_indicators.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 34);
+const _hoisted_35 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_35);
+}
+const led_indicators = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ led_indicators as default
+};
diff --git a/assets/features_led_matrix.md.DZ4KDZN-.js b/assets/features_led_matrix.md.DZ4KDZN-.js
new file mode 100644
index 0000000..a793b7a
--- /dev/null
+++ b/assets/features_led_matrix.md.DZ4KDZN-.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"LED Matrix Lighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/led_matrix.md","filePath":"features/led_matrix.md"}');
+const _sfc_main = { name: "features/led_matrix.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This feature allows you to use LED matrices driven by external drivers. It hooks into the backlight system so you can use the same keycodes as backlighting to control it.
LED Matrix is an abstraction layer on top of an underlying LED driver API. The list of supported LED drivers is below; see the respective documentation for information on how to configure the driver.
From this point forward the configuration is the same for all the drivers. The led_config_t struct provides a key electrical matrix to led index lookup table, what the physical position of each LED is on the board, and what type of key or usage the LED if the LED represents. Here is a brief example:
c
led_config_t g_led_config = { {\n // Key Matrix to LED Index\n { 5, NO_LED, NO_LED, 0 },\n { NO_LED, NO_LED, NO_LED, NO_LED },\n { 4, NO_LED, NO_LED, 1 },\n { 3, NO_LED, NO_LED, 2 }\n}, {\n // LED Index to Physical Position\n { 188, 16 }, { 187, 48 }, { 149, 64 }, { 112, 64 }, { 37, 48 }, { 38, 16 }\n}, {\n // LED Index to Flag\n 1, 4, 4, 4, 4, 1\n} };
The first part, // Key Matrix to LED Index, tells the system what key this LED represents by using the key's electrical matrix row & col. The second part, // LED Index to Physical Position represents the LED's physical { x, y } position on the keyboard. The default expected range of values for { x, y } is the inclusive range { 0..224, 0..64 }. This default expected range is due to effects that calculate the center of the keyboard for their animations. The easiest way to calculate these positions is imagine your keyboard is a grid, and the top left of the keyboard represents { x, y } coordinate { 0, 0 } and the bottom right of your keyboard represents { 224, 64 }. Using this as a basis, you can use the following formula to calculate the physical position:
Where NUMBER_OF_COLS, NUMBER_OF_ROWS, COL_POSITION, & ROW_POSITION are all based on the physical layout of your keyboard, not the electrical layout.
As mentioned earlier, the center of the keyboard by default is expected to be { 112, 32 }, but this can be changed if you want to more accurately calculate the LED's physical { x, y } positions. Keyboard designers can implement #define LED_MATRIX_CENTER { 112, 32 } in their config.h file with the new center point of the keyboard, or where they want it to be allowing more possibilities for the { x, y } values. Do note that the maximum value for x or y is 255, and the recommended maximum is 224 as this gives animations runoff room before they reset.
// LED Index to Flag is a bitmask, whether or not a certain LEDs is of a certain type. It is recommended that LEDs are set to only 1 type.
These are the effects that are currently available:
c
enum led_matrix_effects {\n LED_MATRIX_NONE = 0,\n LED_MATRIX_SOLID = 1, // Static single val, no speed support\n LED_MATRIX_ALPHAS_MODS, // Static dual val, speed is val for LEDs marked as modifiers\n LED_MATRIX_BREATHING, // Cycling brightness animation\n LED_MATRIX_BAND, // Band fading brightness scrolling left to right\n LED_MATRIX_BAND_PINWHEEL, // 3 blade spinning pinwheel fades brightness\n LED_MATRIX_BAND_SPIRAL, // Spinning spiral fades brightness\n LED_MATRIX_CYCLE_LEFT_RIGHT, // Full gradient scrolling left to right\n LED_MATRIX_CYCLE_UP_DOWN, // Full gradient scrolling top to bottom\n LED_MATRIX_CYCLE_OUT_IN, // Full gradient scrolling out to in\n LED_MATRIX_DUAL_BEACON, // Full gradient spinning around center of keyboard\n LED_MATRIX_SOLID_REACTIVE_SIMPLE, // Pulses keys hit then fades out\n LED_MATRIX_SOLID_REACTIVE_WIDE, // Value pulses near a single key hit then fades out\n LED_MATRIX_SOLID_REACTIVE_MULTIWIDE, // Value pulses near multiple key hits then fades out\n LED_MATRIX_SOLID_REACTIVE_CROSS, // Value pulses the same column and row of a single key hit then fades out\n LED_MATRIX_SOLID_REACTIVE_MULTICROSS, // Value pulses the same column and row of multiple key hits then fades out\n LED_MATRIX_SOLID_REACTIVE_NEXUS, // Value pulses away on the same column and row of a single key hit then fades out\n LED_MATRIX_SOLID_REACTIVE_MULTINEXUS, // Value pulses away on the same column and row of multiple key hits then fades out\n LED_MATRIX_SOLID_SPLASH, // Value pulses away from a single key hit then fades out\n LED_MATRIX_SOLID_MULTISPLASH, // Value pulses away from multiple key hits then fades out\n LED_MATRIX_WAVE_LEFT_RIGHT, // Sine wave scrolling from left to right\n LED_MATRIX_WAVE_UP_DOWN, // Sine wave scrolling from up to down\n LED_MATRIX_EFFECT_MAX\n};
You can enable a single effect by defining ENABLE_[EFFECT_NAME] in your config.h:
By setting LED_MATRIX_CUSTOM_USER = yes in rules.mk, new effects can be defined directly from your keymap or userspace, without having to edit any QMK core files. To declare new effects, create a led_matrix_user.inc file in the user keymap directory or userspace folder.
TIP
Hardware maintainers who want to limit custom effects to a specific keyboard can create a led_matrix_kb.inc file in the root of the keyboard directory, and add LED_MATRIX_CUSTOM_KB = yes to the keyboard level rules.mk.
c
// !!! DO NOT ADD #pragma once !!! //\n\n// Step 1.\n// Declare custom effects using the LED_MATRIX_EFFECT macro\n// (note the lack of semicolon after the macro!)\nLED_MATRIX_EFFECT(my_cool_effect)\nLED_MATRIX_EFFECT(my_cool_effect2)\n\n// Step 2.\n// Define effects inside the `LED_MATRIX_CUSTOM_EFFECT_IMPLS` ifdef block\n#ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS\n\n// e.g: A simple effect, self-contained within a single method\nstatic bool my_cool_effect(effect_params_t* params) {\n LED_MATRIX_USE_LIMITS(led_min, led_max);\n for (uint8_t i = led_min; i < led_max; i++) {\n led_matrix_set_value(i, 0xFF);\n }\n return led_matrix_check_finished_leds(led_max);\n}\n\n// e.g: A more complex effect, relying on external methods and state, with\n// dedicated init and run methods\nstatic uint8_t some_global_state;\nstatic void my_cool_effect2_complex_init(effect_params_t* params) {\n some_global_state = 1;\n}\nstatic bool my_cool_effect2_complex_run(effect_params_t* params) {\n LED_MATRIX_USE_LIMITS(led_min, led_max);\n for (uint8_t i = led_min; i < led_max; i++) {\n led_matrix_set_value(i, some_global_state++);\n }\n return led_matrix_check_finished_leds(led_max);\n}\nstatic bool my_cool_effect2(effect_params_t* params) {\n if (params->init) my_cool_effect2_complex_init(params);\n return my_cool_effect2_complex_run(params);\n}\n\n#endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
To switch to your custom effect programmatically, simply call led_matrix_mode() and prepend LED_MATRIX_CUSTOM_ to the effect name your specified in LED_MATRIX_EFFECT(). For example, an effect declared as LED_MATRIX_EFFECT(my_cool_effect) would be referenced with:
#define LED_MATRIX_KEYRELEASES // reactive effects respond to keyreleases (instead of keypresses)\n#define LED_MATRIX_TIMEOUT 0 // number of milliseconds to wait until led automatically turns off\n#define LED_MATRIX_SLEEP // turn off effects when suspended\n#define LED_MATRIX_LED_PROCESS_LIMIT (LED_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)\n#define LED_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)\n#define LED_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs\n#define LED_MATRIX_DEFAULT_ON true // Sets the default enabled state, if none has been set\n#define LED_MATRIX_DEFAULT_MODE LED_MATRIX_SOLID // Sets the default mode, if none has been set\n#define LED_MATRIX_DEFAULT_VAL LED_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set\n#define LED_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set\n#define LED_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set\n#define LED_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.\n // If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, then you can use the led_matrix_indicators_kb function on the keyboard level source file, or led_matrix_indicators_user function in the user keymap.c.
In addition, there are the advanced indicator functions. These are aimed at those with heavily customized displays, where rendering every LED per cycle is expensive. This includes a special macro to help make this easier to use: LED_MATRIX_INDICATOR_SET_VALUE(i, v).
This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.
This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.
First, enable MIDI by adding the following to your rules.mk:
make
MIDI_ENABLE = yes
There are two MIDI systems in QMK: basic and advanced. With basic MIDI you will only be able to send Note On and Note Off messages using the note keycodes, meaning that keycodes like MI_OCTU and MI_OCTD will not work. Advanced MIDI allows you to do things like octave shifts, channel changes, velocity changes, modulation, and more.
If you're aiming to emulate the features of something like a Launchpad or other MIDI controller you'll need to access the internal MIDI device directly.
Because there are so many possible CC messages, not all of them are implemented as keycodes. Additionally, you might need to provide more than just two values that you would get from a keycode (pressed and released) - for example, the analog values from a fader or a potentiometer. So, you will need to implement custom keycodes if you want to use them in your keymap directly using process_record_user().
For reference of all the possible control code numbers see MIDI Specification
Example code for using Generic On Off Switches as per MIDI Specification.
Mouse keys is a feature that allows you to emulate a mouse using your keyboard. You can move the pointer at different speeds, press 5 buttons and scroll in 8 directions.
Mouse keys supports three different modes to move the cursor:
Accelerated (default): Holding movement keys accelerates the cursor until it reaches its maximum speed.
Kinetic: Holding movement keys accelerates the cursor with its speed following a quadratic curve until it reaches its maximum speed.
Constant: Holding movement keys moves the cursor at constant speeds.
Combined: Holding movement keys accelerates the cursor until it reaches its maximum speed, but holding acceleration and movement keys simultaneously moves the cursor at constant speeds.
Inertia: Cursor accelerates when key held, and decelerates after key release. Tracks X and Y velocity separately for more nuanced movements. Applies to cursor only, not scrolling.
The same principle applies to scrolling, in most modes.
Configuration options that are times, intervals or delays are given in milliseconds. Scroll speed is given as multiples of the default scroll step. For example, a scroll speed of 8 means that each scroll action covers 8 times the length of the default scroll step as defined by your operating system or application.
This is the default mode. You can adjust the cursor and scrolling acceleration using the following settings in your keymap’s config.h file:
Define
Default
Description
MOUSEKEY_DELAY
10
Delay between pressing a movement key and cursor movement
MOUSEKEY_INTERVAL
20
Time between cursor movements in milliseconds
MOUSEKEY_MOVE_DELTA
8
Step size
MOUSEKEY_MAX_SPEED
10
Maximum cursor speed at which acceleration stops
MOUSEKEY_TIME_TO_MAX
30
Time until maximum cursor speed is reached
MOUSEKEY_WHEEL_DELAY
10
Delay between pressing a wheel key and wheel movement
MOUSEKEY_WHEEL_INTERVAL
80
Time between wheel movements
MOUSEKEY_WHEEL_DELTA
1
Wheel movement step size
MOUSEKEY_WHEEL_MAX_SPEED
8
Maximum number of scroll steps per scroll action
MOUSEKEY_WHEEL_TIME_TO_MAX
40
Time until maximum scroll speed is reached
Tips:
Setting MOUSEKEY_DELAY too low makes the cursor unresponsive. Setting it too high makes small movements difficult.
For smoother cursor movements, lower the value of MOUSEKEY_INTERVAL. If the refresh rate of your display is 60Hz, you could set it to 16 (1/60). As this raises the cursor speed significantly, you may want to lower MOUSEKEY_MAX_SPEED.
Setting MOUSEKEY_TIME_TO_MAX or MOUSEKEY_WHEEL_TIME_TO_MAX to 0 will disable acceleration for the cursor or scrolling respectively. This way you can make one of them constant while keeping the other accelerated, which is not possible in constant speed mode.
Setting MOUSEKEY_WHEEL_INTERVAL too low will make scrolling too fast. Setting it too high will make scrolling too slow when the wheel key is held down.
Cursor acceleration uses the same algorithm as the X Window System MouseKeysAccel feature. You can read more about it on Wikipedia.
This is an extension of the accelerated mode. The kinetic mode uses a quadratic curve on the cursor speed which allows precise movements at the beginning and allows to cover large distances by increasing cursor speed quickly thereafter. You can adjust the cursor and scrolling acceleration using the following settings in your keymap’s config.h file:
Define
Default
Description
MK_KINETIC_SPEED
undefined
Enable kinetic mode
MOUSEKEY_DELAY
5
Delay between pressing a movement key and cursor movement
MOUSEKEY_INTERVAL
10
Time between cursor movements in milliseconds
MOUSEKEY_MOVE_DELTA
16
Step size for accelerating from initial to base speed
MOUSEKEY_INITIAL_SPEED
100
Initial speed of the cursor in pixel per second
MOUSEKEY_BASE_SPEED
5000
Maximum cursor speed at which acceleration stops
MOUSEKEY_DECELERATED_SPEED
400
Decelerated cursor speed
MOUSEKEY_ACCELERATED_SPEED
3000
Accelerated cursor speed
MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
16
Initial number of movements of the mouse wheel
MOUSEKEY_WHEEL_BASE_MOVEMENTS
32
Maximum number of movements at which acceleration stops
MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
48
Accelerated wheel movements
MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
8
Decelerated wheel movements
Tips:
The smoothness of the cursor movement depends on the MOUSEKEY_INTERVAL setting. The shorter the interval is set the smoother the movement will be. Setting the value too low makes the cursor unresponsive. Lower settings are possible if the micro processor is fast enough. For example: At an interval of 8 milliseconds, 125 movements per second will be initiated. With a base speed of 1000 each movement will move the cursor by 8 pixels.
Mouse wheel movements are implemented differently from cursor movements. While it's okay for the cursor to move multiple pixels at once for the mouse wheel this would lead to jerky movements. Instead, the mouse wheel operates at step size 1. Setting mouse wheel speed is done by adjusting the number of wheel movements per second.
In this mode you can define multiple different speeds for both the cursor and the mouse wheel. There is no acceleration. MS_ACL0, MS_ACL1 and MS_ACL2 change the cursor and scroll speed to their respective setting.
You can choose whether speed selection is momentary or tap-to-select:
Momentary: The chosen speed is only active while you hold the respective key. When the key is raised, mouse keys returns to the unmodified speed.
Tap-to-select: The chosen speed is activated when you press the respective key and remains active even after the key has been raised. The default speed is that of MS_ACL1. There is no unmodified speed.
The default speeds from slowest to fastest are as follows:
This mode functions like Accelerated mode, however, you can hold MS_ACL0, MS_ACL1 and MS_ACL2 to momentarily (while held) set the cursor and scroll speeds to constant speeds. When no acceleration keys are held, this mode is identical to Accelerated mode, and can be modified using all of the relevant settings.
MS_ACL0: This acceleration sets your cursor to the slowest possible speed. This is useful for very small and detailed movements of the cursor.
MS_ACL1: This acceleration sets your cursor to half the maximum (user defined) speed.
MS_ACL2: This acceleration sets your cursor to the maximum (computer defined) speed. This is useful for moving the cursor large distances without much accuracy.
To use combined speed mode, you must at least define MK_COMBINED in your keymap’s config.h file:
This mode provides smooth motion, like sliding on ice. The cursor accelerates along a quadratic curve while a key is held, then glides to a stop after the key is released. Vertical and horizontal movements are tracked independently, so the cursor can move in many directions and make curves.
Cannot be used at the same time as Kinetic mode, Constant mode, or Combined mode.
Recommended settings in your keymap’s config.h file:
Define
Default
Description
MOUSEKEY_INERTIA
undefined
Enable Inertia mode
MOUSEKEY_DELAY
150
Delay between pressing a movement key and cursor movement
MOUSEKEY_INTERVAL
16
Time between cursor movements in milliseconds (16 = 60fps)
MOUSEKEY_MAX_SPEED
32
Maximum cursor speed at which acceleration stops
MOUSEKEY_TIME_TO_MAX
32
Number of frames until maximum cursor speed is reached
MOUSEKEY_FRICTION
24
How quickly the cursor stops after releasing a key
MOUSEKEY_MOVE_DELTA
1
How much to move on first frame (1 strongly recommended)
Tips:
Set MOUSEKEY_DELAY to roughly the same value as your host computer's key repeat delay, in ms. Recommended values are 100 to 300.
Set MOUSEKEY_INTERVAL to a value of 1000 / your monitor's FPS. For 60 FPS, 1000/60 = 16.
Set MOUSEKEY_MAX_SPEED based on your screen resolution and refresh rate, like Width / FPS. For example, 1920 pixels / 60 FPS = 32 pixels per frame.
Set MOUSEKEY_TIME_TO_MAX to a value of approximately FPS / 2, to make it reach full speed in half a second (or so).
Set MOUSEKEY_FRICTION to something between 1 and 255. Lower makes the cursor glide longer. Values from 8 to 40 are the most effective.
Keep MOUSEKEY_MOVE_DELTA at 1. This allows precise movements before the gliding effect starts.
Mouse wheel options are the same as the default accelerated mode, and do not use inertia.
When additional overlapping mouse key is pressed, the mouse cursor will continue in a new direction with the same acceleration. The following settings can be used to reset the acceleration with new overlapping keys for more precise control if desired:
Define
Default
Description
MOUSEKEY_OVERLAP_RESET
undefined
Enables overlapping mouse key control
MOUSEKEY_OVERLAP_MOVE_DELTA
MOUSEKEY_MOVE_DELTA
Step size of reset movement acceleration
MOUSEKEY_OVERLAP_WHEEL_DELTA
MOUSEKEY_WHEEL_DELTA
Step size of reset mouse wheel acceleration
MOUSEKEY_OVERLAP_INTERVAL
MOUSEKEY_INTERVAL
Reset time between cursor movements in milliseconds (Kinetic mode only)
?> This feature will not be applied on Inertial mode
The default font file is located at drivers/oled/glcdfont.c and its location can be overwritten with the OLED_FONT_H configuration option. Font file content can be edited with external tools such as Helix Font Editor and Logo Editor.
For some purposes, you may need to read the current state of the OLED display buffer. The oled_read_raw function can be used to safely read bytes from the buffer.
In this example, calling fade_display in the oled_task_user function will slowly fade away whatever is on the screen by turning random pixels black over time.
c
//Setup some mask which can be or'd with bytes to turn off pixels\nconst uint8_t single_bit_masks[8] = {127, 191, 223, 239, 247, 251, 253, 254};\n\nstatic void fade_display(void) {\n //Define the reader structure\n oled_buffer_reader_t reader;\n uint8_t buff_char;\n if (random() % 30 == 0) {\n srand(timer_read());\n // Fetch a pointer for the buffer byte at index 0. The return structure\n // will have the pointer and the number of bytes remaining from this\n // index position if we want to perform a sequential read by\n // incrementing the buffer pointer\n reader = oled_read_raw(0);\n //Loop over the remaining buffer and erase pixels as we go\n for (uint16_t i = 0; i < reader.remaining_element_count; i++) {\n //Get the actual byte in the buffer by dereferencing the pointer\n buff_char = *reader.current_element;\n if (buff_char != 0) {\n oled_write_raw_byte(buff_char & single_bit_masks[rand() % 8], i);\n }\n //increment the pointer to fetch a new byte during the next loop\n reader.current_element++;\n }\n }\n}
In split keyboards, it is very common to have two OLED displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from is_keyboard_master() or is_keyboard_left() found in split_util.h, e.g:
c
#ifdef OLED_ENABLE\noled_rotation_t oled_init_user(oled_rotation_t rotation) {\n if (!is_keyboard_master()) {\n return OLED_ROTATION_180; // flips the display 180 degrees if offhand\n }\n\n return rotation;\n}\n\nbool oled_task_user(void) {\n if (is_keyboard_master()) {\n render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)\n } else {\n render_logo(); // Renders a static logo\n oled_scroll_left(); // Turns on scrolling\n }\n return false;\n}\n#endif
Render a message before booting into bootloader mode.
c
void oled_render_boot(bool bootloader) {\n oled_clear();\n for (int i = 0; i < 16; i++) {\n oled_set_cursor(0, i);\n if (bootloader) {\n oled_write_P(PSTR("Awaiting New Firmware "), false);\n } else {\n oled_write_P(PSTR("Rebooting "), false);\n }\n }\n\n oled_render_dirty(true);\n}\n\nbool shutdown_user(bool jump_to_bootloader) {\n oled_render_boot(jump_to_bootloader);\n}
The default display size for this feature is 128x32, and the defaults are set with that in mind. However, there are a number of additional presets for common sizes that we have added. You can define one of these values to use the presets. If your display doesn't match one of these presets, you can define OLED_DISPLAY_CUSTOM to manually specify all of the values.
Define
Default
Description
OLED_DISPLAY_128X64
Not defined
Changes the display defines for use with 128x64 displays.
OLED_DISPLAY_64X32
Not defined
Changes the display defines for use with 64x32 displays.
OLED_DISPLAY_64X48
Not defined
Changes the display defines for use with 64x48 displays.
OLED_DISPLAY_64X128
Not defined
Changes the display defines for use with 64x128 displays.
OLED_DISPLAY_128X128
Not defined
Changes the display defines for use with 128x128 displays.
OLED_DISPLAY_CUSTOM
Not defined
Changes the display defines for use with custom displays. Requires user to implement the below defines.
WARNING
64x128 and 128x128 displays default to the SH1107 IC type, as these heights are not supported by the other IC types.
Define
Default
Description
OLED_DISPLAY_WIDTH
128
The width of the OLED display.
OLED_DISPLAY_HEIGHT
32
The height of the OLED display.
OLED_MATRIX_SIZE
512
The local buffer size to allocate. (OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH).
OLED_BLOCK_TYPE
uint16_t
The unsigned integer type to use for dirty rendering.
OLED_BLOCK_COUNT
16
The number of blocks the display is divided into for dirty rendering. (sizeof(OLED_BLOCK_TYPE) * 8).
OLED_BLOCK_SIZE
32
The size of each block for dirty rendering (OLED_MATRIX_SIZE / OLED_BLOCK_COUNT).
OLED_COM_PINS
COM_PINS_SEQ
How the SSD1306 chip maps it's memory to display. Options are COM_PINS_SEQ, COM_PINS_ALT, COM_PINS_SEQ_LR, & COM_PINS_ALT_LR.
OLED_COM_PIN_COUNT
Not defined
Number of COM pins supported by the controller. If not defined, the value appropriate for the defined OLED_IC is used.
OLED_COM_PIN_OFFSET
0
Number of the first COM pin used by the OLED matrix.
OLED_SOURCE_MAP
{ 0, ... N }
Precalculated source array to use for mapping source buffer to target OLED memory in 90 degree rendering.
OLED_TARGET_MAP
{ 24, ... N }
Precalculated target array to use for mapping source buffer to target OLED memory in 90 degree rendering.
OLED displays driven by SSD1306, SH1106 or SH1107 drivers only natively support in hardware 0 degree and 180 degree rendering. This feature is done in software and not free. Using this feature will increase the time to calculate what data to send over i2c to the OLED. If you are strapped for cycles, this can cause keycodes to not register. In testing however, the rendering time on an ATmega32U4 board only went from 2ms to 5ms and keycodes not registering was only noticed once we hit 15ms.
90 degree rotation is achieved by using bitwise operations to rotate each 8 block of memory and uses two precalculated arrays to remap buffer memory to OLED memory. The memory map defines are precalculated for remap performance and are calculated based on the display height, width, and block size. For example, in the 128x32 implementation with a uint8_t block type, we have a 64 byte block size. This gives us eight 8 byte blocks that need to be rotated and rendered. The OLED renders horizontally two 8 byte blocks before moving down a page, e.g:
0
1
2
3
4
5
6
7
However the local buffer is stored as if it was Height x Width display instead of Width x Height, e.g:
3
7
2
6
1
5
0
4
So those precalculated arrays just index the memory offsets in the order in which each one iterates its data.
Rotation on SH1106 and SH1107 is noticeably less efficient than on SSD1306, because these controllers do not support the “horizontal addressing mode”, which allows transferring the data for the whole rotated block at once; instead, separate address setup commands for every page in the block are required. The screen refresh time for SH1107 is therefore about 45% higher than for a same size screen with SSD1306 when using STM32 MCUs (on AVR the slowdown is about 20%, because the code which actually rotates the bitmap consumes more time).
// OLED Rotation enum values are flags\ntypedef enum {\n OLED_ROTATION_0 = 0,\n OLED_ROTATION_90 = 1,\n OLED_ROTATION_180 = 2,\n OLED_ROTATION_270 = 3, // OLED_ROTATION_90 | OLED_ROTATION_180\n} oled_rotation_t;\n\n// Initialize the oled display, rotating the rendered output based on the define passed in.\n// Returns true if the OLED was initialized successfully\nbool oled_init(oled_rotation_t rotation);\n\n// Called at the start of oled_init, weak function overridable by the user\n// rotation - the value passed into oled_init\n// Return new oled_rotation_t if you want to override default rotation\noled_rotation_t oled_init_kb(oled_rotation_t rotation);\noled_rotation_t oled_init_user(oled_rotation_t rotation);\n\n// Send commands/data to screen\nbool oled_send_cmd(const uint8_t *data, uint16_t size);\nbool oled_send_cmd_P(const uint8_t *data, uint16_t size);\nbool oled_send_data(const uint8_t *data, uint16_t size);\n\n// Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering\nvoid oled_clear(void);\n\n// Alias to oled_render_dirty to avoid a change in api.\n#define oled_render() oled_render_dirty(false)\n\n// Renders all dirty blocks to the display at one time or a subset depending on the value of\n// all.\nvoid oled_render_dirty(bool all);\n\n// Moves cursor to character position indicated by column and line, wraps if out of bounds\n// Max column denoted by 'oled_max_chars()' and max lines by 'oled_max_lines()' functions\nvoid oled_set_cursor(uint8_t col, uint8_t line);\n\n// Advances the cursor to the next page, writing ' ' if true\n// Wraps to the beginning when out of bounds\nvoid oled_advance_page(bool clearPageRemainder);\n\n// Moves the cursor forward 1 character length\n// Advance page if there is not enough room for the next character\n// Wraps to the beginning when out of bounds\nvoid oled_advance_char(void);\n\n// Writes a single character to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Main handler that writes character data to the display buffer\nvoid oled_write_char(const char data, bool invert);\n\n// Writes a string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\nvoid oled_write(const char *data, bool invert);\n\n// Writes a string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Advances the cursor to the next page, wiring ' ' to the remainder of the current page\nvoid oled_write_ln(const char *data, bool invert);\n\n// Pans the buffer to the right (or left by passing true) by moving contents of the buffer\n// Useful for moving the screen in preparation for new drawing\nvoid oled_pan(bool left);\n\n// Returns a pointer to the requested start index in the buffer plus remaining\n// buffer length as struct\noled_buffer_reader_t oled_read_raw(uint16_t start_index);\n\n// Writes a string to the buffer at current cursor position\nvoid oled_write_raw(const char *data, uint16_t size);\n\n// Writes a single byte into the buffer at the specified index\nvoid oled_write_raw_byte(const char data, uint16_t index);\n\n// Sets a specific pixel on or off\n// Coordinates start at top-left and go right and down for positive x and y\nvoid oled_write_pixel(uint8_t x, uint8_t y, bool on);\n\n#if defined(__AVR__)\n// Writes a PROGMEM string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Remapped to call 'void oled_write(const char *data, bool invert);' on ARM\nvoid oled_write_P(const char *data, bool invert);\n\n// Writes a PROGMEM string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Advances the cursor to the next page, wiring ' ' to the remainder of the current page\n// Remapped to call 'void oled_write_ln(const char *data, bool invert);' on ARM\nvoid oled_write_ln_P(const char *data, bool invert);\n\n// Writes a PROGMEM string to the buffer at current cursor position\nvoid oled_write_raw_P(const char *data, uint16_t size);\n#else\n# define oled_write_P(data, invert) oled_write(data, invert)\n# define oled_write_ln_P(data, invert) oled_write_ln(data, invert)\n# define oled_write_raw_P(data, size) oled_write_raw(data, size)\n#endif // defined(__AVR__)\n\n// Can be used to manually turn on the screen if it is off\n// Returns true if the screen was on or turns on\nbool oled_on(void);\n\n// Can be used to manually turn off the screen if it is on\n// Returns true if the screen was off or turns off\nbool oled_off(void);\n\n// Returns true if the oled is currently on, false if it is\n// not\nbool is_oled_on(void);\n\n// Sets the brightness level of the display\nuint8_t oled_set_brightness(uint8_t level);\n\n// Gets the current brightness level of the display\nuint8_t oled_get_brightness(void);\n\n// Basically it's oled_render, but with timeout management and oled_task_user calling!\nvoid oled_task(void);\n\n// Called at the start of oled_task, weak function overridable by the user\nbool oled_task_kb(void);\nbool oled_task_user(void);\n\n// Set the specific 8 lines rows of the screen to scroll.\n// 0 is the default for start, and 7 for end, which is the entire\n// height of the screen. For 128x32 screens, rows 4-7 are not used.\nvoid oled_scroll_set_area(uint8_t start_line, uint8_t end_line);\n\n// Sets scroll speed, 0-7, fastest to slowest. Default is three.\n// Does not take effect until scrolling is either started or restarted\n// the ssd1306 supports 8 speeds with the delay\n// listed below between each frame of the scrolling effect\n// 0=2, 1=3, 2=4, 3=5, 4=25, 5=64, 6=128, 7=256\nvoid oled_scroll_set_speed(uint8_t speed);\n\n// Begin scrolling the entire display right\n// Returns true if the screen was scrolling or starts scrolling\n// NOTE: display contents cannot be changed while scrolling\nbool oled_scroll_right(void);\n\n// Begin scrolling the entire display left\n// Returns true if the screen was scrolling or starts scrolling\n// NOTE: display contents cannot be changed while scrolling\nbool oled_scroll_left(void);\n\n// Turns off display scrolling\n// Returns true if the screen was not scrolling or stops scrolling\nbool oled_scroll_off(void);\n\n// Returns true if the oled is currently scrolling, false if it is\n// not\nbool is_oled_scrolling(void);\n\n// Inverts the display\n// Returns true if the screen was or is inverted\nbool oled_invert(bool invert);\n\n// Returns the maximum number of characters that will fit on a line\nuint8_t oled_max_chars(void);\n\n// Returns the maximum number of lines that will fit on the OLED\nuint8_t oled_max_lines(void);
WARNING
Scrolling is unsupported on the SH1106 and SH1107.
WARNING
Scrolling does not work properly on the SSD1306 if the display width is smaller than 128.
This feature makes a best guess at the host OS based on OS specific behavior during USB setup. It may not always get the correct OS, and shouldn't be relied on as for critical functionality.
Using it you can have OS specific key mappings or combos which work differently on different devices.
It is available for keyboards which use ChibiOS, LUFA and V-USB.
Note that it takes some time after firmware is booted to detect the OS.
This time is quite short, probably hundreds of milliseconds, but this data may be not ready in keyboard and layout setup functions which run very early during firmware startup.
If you want to perform custom actions when the OS is detected, then you can use the process_detected_host_os_kb function on the keyboard level source file, or process_detected_host_os_user function in the user keymap.c.
c
bool process_detected_host_os_kb(os_variant_t detected_os) {\n if (!process_detected_host_os_user(detected_os)) {\n return false;\n }\n switch (detected_os) {\n case OS_MACOS:\n case OS_IOS:\n rgb_matrix_set_color_all(RGB_WHITE);\n break;\n case OS_WINDOWS:\n rgb_matrix_set_color_all(RGB_BLUE);\n break;\n case OS_LINUX:\n rgb_matrix_set_color_all(RGB_ORANGE);\n break;\n case OS_UNSURE:\n rgb_matrix_set_color_all(RGB_RED);\n break;\n }\n\n return true;\n}
The OS detection is currently handled while the USB device descriptor is being assembled. The process is done in steps, generating a number of intermediate results until it stabilizes. We therefore resort to debouncing the result until it has been stable for a given amount of milliseconds. This amount can be configured, in case your board is not stable within the default debouncing time of 200ms.
Some KVM and USB switches may not trigger the USB controller on the keyboard to fully reset upon switching machines. If your keyboard does not redetect the OS in this situation, you can force the keyboard to reset when the USB initialization event is detected, forcing the USB controller to be reconfigured.
If OS is guessed incorrectly, you may want to collect data about USB setup packets to refine the detection logic.
To do so in your config.h add:
c
#define OS_DETECTION_DEBUG_ENABLE
And in your rules.mk add:
make
CONSOLE_ENABLE = yes
And also include "os_detection.h" in your keymap.c.
Then you can define custom keycodes to store data about USB setup packets in EEPROM (persistent memory) and to print it later on host where you can run qmk console:
c
enum custom_keycodes {\n STORE_SETUPS = SAFE_RANGE,\n PRINT_SETUPS,\n};\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case STORE_SETUPS:\n if (record->event.pressed) {\n store_setups_in_eeprom();\n }\n return false;\n case PRINT_SETUPS:\n if (record->event.pressed) {\n print_stored_setups();\n }\n return false;\n }\n}
Then please open an issue on Github with this information and tell what OS was not detected correctly and if you have any intermediate devices between keyboard and your computer.
Pointing Device is a generic name for a feature intended to be generic: moving the system pointer around. There are certainly other options for it - like mousekeys - but this aims to be easily modifiable and hardware driven. You can implement custom keys to control functionality, or you can gather information from other peripherals and insert it directly here - let QMK handle the processing for you.
To enable Pointing Device, add the following line in your rules.mk and specify one of the driver options below.
There are a number of sensors that are supported by default. Note that only one sensor can be enabled by POINTING_DEVICE_DRIVER at a time. If you need to enable more than one sensor, then you need to implement it manually, using the custom driver.
To use an analog joystick to control the pointer, add this to your rules.mk
make
POINTING_DEVICE_DRIVER = analog_joystick
The Analog Joystick is an analog (ADC) driven sensor. There are a variety of joysticks that you can use for this.
Setting (config.h)
Description
Default
ANALOG_JOYSTICK_X_AXIS_PIN
(Required) The pin used for the vertical/X axis.
not defined
ANALOG_JOYSTICK_Y_AXIS_PIN
(Required) The pin used for the horizontal/Y axis.
not defined
ANALOG_JOYSTICK_AXIS_MIN
(Optional) Sets the lower range to be considered movement.
0
ANALOG_JOYSTICK_AXIS_MAX
(Optional) Sets the upper range to be considered movement.
1023
ANALOG_JOYSTICK_AUTO_AXIS
(Optional) Sets ranges to be considered movement automatically.
not defined
ANALOG_JOYSTICK_SPEED_REGULATOR
(Optional) The divisor used to slow down movement. (lower makes it faster)
20
ANALOG_JOYSTICK_READ_INTERVAL
(Optional) The interval in milliseconds between reads.
10
ANALOG_JOYSTICK_SPEED_MAX
(Optional) The maximum value used for motion.
2
ANALOG_JOYSTICK_CLICK_PIN
(Optional) The pin wired up to the press switch of the analog stick.
not defined
ANALOG_JOYSTICK_WEIGHTS
(Optional) Use custom weights for lever positions.
not defined
ANALOG_JOYSTICK_CUTOFF
(Optional) Cut off movement when joystick returns to start position.
not defined
If ANALOG_JOYSTICK_AUTO_AXIS is used, then ANALOG_JOYSTICK_AXIS_MIN and ANALOG_JOYSTICK_AXIS_MAX are ignored.
By default analog joystick implementation uses x^2 weighting for lever positions. ANALOG_JOYSTICK_WEIGHTS allows to experiment with different configurations that might feel better.
To use the Cirque Trackpad sensor, add this to your rules.mk:
make
POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c
or
make
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
This supports the Cirque Pinnacle 1CA027 Touch Controller, which is used in the TM040040, TM035035 and the TM023023 trackpads. These are I2C or SPI compatible, and both configurations are supported.
(Optional) Diameter of the trackpad sensor in millimeters.
40
CIRQUE_PINNACLE_ATTENUATION
(Optional) Sets the attenuation of the sensor data.
EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_4X
CIRQUE_PINNACLE_CURVED_OVERLAY
(Optional) Applies settings tuned for curved overlay.
not defined
CIRQUE_PINNACLE_POSITION_MODE
(Optional) Mode of operation.
not defined
CIRQUE_PINNACLE_SKIP_SENSOR_CHECK
(Optional) Skips sensor presence check
not defined
CIRQUE_PINNACLE_ATTENUATION is a measure of how much data is suppressed in regards to sensitivity. The higher the attenuation, the less sensitive the touchpad will be.
Default attenuation is set to 4X, although if you are using a thicker overlay (such as the curved overlay) you will want a lower attenuation such as 2X. The possible values are:
EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_4X: Least sensitive
EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_3X
EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_2X
EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_1X: Most sensitive
CIRQUE_PINNACLE_POSITION_MODE can be CIRQUE_PINNACLE_ABSOLUTE_MODE or CIRQUE_PINNACLE_RELATIVE_MODE. Modes differ in supported features/gestures.
CIRQUE_PINNACLE_ABSOLUTE_MODE: Reports absolute x, y, z (touch pressure) coordinates and up to 5 hw buttons connected to the trackpad
CIRQUE_PINNACLE_RELATIVE_MODE: Reports x/y deltas, scroll and up to 3 buttons (2 of them can be from taps, see gestures) connected to trackpad. Supports taps on secondary side of split. Saves about 2k of flash compared to absolute mode with all features.
I2C Setting
Description
Default
CIRQUE_PINNACLE_ADDR
(Required) Sets the I2C Address for the Cirque Trackpad
0x2A
CIRQUE_PINNACLE_TIMEOUT
(Optional) The timeout for i2c communication with the trackpad in milliseconds.
20
SPI Setting
Description
Default
CIRQUE_PINNACLE_CLOCK_SPEED
(Optional) Sets the clock speed that the sensor runs at.
1000000
CIRQUE_PINNACLE_SPI_LSBFIRST
(Optional) Sets the Least/Most Significant Byte First setting for SPI.
false
CIRQUE_PINNACLE_SPI_MODE
(Optional) Sets the SPI Mode for the sensor.
1
CIRQUE_PINNACLE_SPI_DIVISOR
(Optional) Sets the SPI Divisor used for SPI communication.
varies
CIRQUE_PINNACLE_SPI_CS_PIN
(Required) Sets the Chip Select pin connected to the sensor.
POINTING_DEVICE_CS_PIN
Default Scaling is 1024. Actual CPI depends on trackpad diameter.
Also see the POINTING_DEVICE_TASK_THROTTLE_MS, which defaults to 10ms when using Cirque Pinnacle, which matches the internal update rate of the position registers (in standard configuration). Advanced configuration for pen/stylus usage might require lower values.
(Optional) Enable tap to click. This currently only works on the master side.
not defined
CIRQUE_PINNACLE_TAPPING_TERM
(Optional) Length of time that a touch can be to be considered a tap.
TAPPING_TERM/200
CIRQUE_PINNACLE_TOUCH_DEBOUNCE
(Optional) Length of time that a touch can be to be considered a tap.
TAPPING_TERM/200
POINTING_DEVICE_GESTURES_SCROLL_ENABLE in this mode enables circular scroll. Touch originating in outer ring can trigger scroll by moving along the perimeter. Near side triggers vertical scroll and far side triggers horizontal scroll.
Additionally, POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE is supported in this mode.
(Optional) Enable tap to "left click". Works on both sides of a split keyboard.
not defined
CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE
(Optional) Tap in upper right corner (half of the finger needs to be outside of the trackpad) of the trackpad will result in "right click". CIRQUE_PINNACLE_TAP_ENABLE must be enabled.
not defined
Tapping term and debounce are not configurable in this mode since it's handled by trackpad internally.
POINTING_DEVICE_GESTURES_SCROLL_ENABLE in this mode enables side scroll. Touch originating on the right side can trigger vertical scroll (IntelliSense trackpad style).
To use the PMW3320 sensor, add this to your rules.mk
make
POINTING_DEVICE_DRIVER = pmw3320
The PMW3320 sensor uses a serial type protocol for communication, and requires an additional light source (it could work without one, but expect it to be out of service early).
Setting
Description
Default
PMW3320_SCLK_PIN
(Required) The pin connected to the clock pin of the sensor.
POINTING_DEVICE_SCLK_PIN
PMW3320_SDIO_PIN
(Required) The pin connected to the data pin of the sensor.
POINTING_DEVICE_SDIO_PIN
PMW3320_CS_PIN
(Required) The pin connected to the cable select pin of the sensor.
POINTING_DEVICE_CS_PIN
The CPI range is 500-3500, in increments of 250. Defaults to 1000 CPI.
This drivers supports both the PMW 3360 and PMW 3389 sensor as well as multiple sensors of the same type per controller, so 2 can be attached at the same side for split keyboards (or unsplit keyboards).
To use the PMW 3360 sensor, add this to your rules.mk
make
POINTING_DEVICE_DRIVER = pmw3360
The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.
To use the PMW 3389 sensor, add this to your rules.mk
make
POINTING_DEVICE_DRIVER = pmw3389
The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI.
Both PMW 3360 and PMW 3389 are SPI driven optical sensors, that use a built in IR LED for surface tracking. If you have different CS wiring on each half you can use PMW33XX_CS_PIN_RIGHT or PMW33XX_CS_PINS_RIGHT in combination with PMW33XX_CS_PIN or PMW33XX_CS_PINS to configure both sides independently. If _RIGHT values aren't provided, they default to be the same as the left ones.
Setting (config.h)
Description
Default
PMW33XX_CS_PIN
(Required) Sets the Chip Select pin connected to the sensor.
POINTING_DEVICE_CS_PIN
PMW33XX_CS_PINS
(Alternative) Sets the Chip Select pins connected to multiple sensors.
{PMW33XX_CS_PIN}
PMW33XX_CS_PIN_RIGHT
(Optional) Sets the Chip Select pin connected to the sensor on the right half.
PMW33XX_CS_PIN
PMW33XX_CS_PINS_RIGHT
(Optional) Sets the Chip Select pins connected to multiple sensors on the right half.
{PMW33XX_CS_PIN_RIGHT}
PMW33XX_CPI
(Optional) Sets counts per inch sensitivity of the sensor.
varies
PMW33XX_CLOCK_SPEED
(Optional) Sets the clock speed that the sensor runs at.
2000000
PMW33XX_SPI_DIVISOR
(Optional) Sets the SPI Divisor used for SPI communication.
varies
PMW33XX_LIFTOFF_DISTANCE
(Optional) Sets the lift off distance at run time
0x02
ROTATIONAL_TRANSFORM_ANGLE
(Optional) Allows for the sensor data to be rotated +/- 127 degrees directly in the sensor.
0
To use multiple sensors, instead of setting PMW33XX_CS_PIN you need to set PMW33XX_CS_PINS and also handle and merge the read from this sensor in user code. Note that different (per sensor) values of CPI, speed liftoff, rotational angle or flipping of X/Y is not currently supported.
c
// in config.h:\n#define PMW33XX_CS_PINS { B5, B6 }\n// in keyboard.c:\n#ifdef POINTING_DEVICE_ENABLE\nvoid pointing_device_init_kb(void) {\n pmw33xx_init(1); // index 1 is the second device.\n pmw33xx_set_cpi(0, 800); // applies to first sensor\n pmw33xx_set_cpi(1, 800); // applies to second sensor\n pointing_device_init_user();\n}\n\n// Contains report from sensor #0 already, need to merge in from sensor #1\nreport_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {\n pmw33xx_report_t report = pmw33xx_read_burst(1);\n if (!report.motion.b.is_lifted && report.motion.b.is_motion) {\n// From quantum/pointing_device_drivers.c\n#define constrain_hid(amt) ((amt) < -127 ? -127 : ((amt) > 127 ? 127 : (amt)))\n mouse_report.x = constrain_hid(mouse_report.x + report.delta_x);\n mouse_report.y = constrain_hid(mouse_report.y + report.delta_y);\n }\n return pointing_device_task_user(mouse_report);\n}\n#endif
Ideally, new sensor hardware should be added to drivers/sensors/ and quantum/pointing_device_drivers.c, but there may be cases where it's very specific to the hardware. So these functions are provided, just in case.
(Optional) Enables support for extended mouse reports. (-32767 to 32767, instead of just -127 to 127).
not defined
POINTING_DEVICE_ROTATION_90
(Optional) Rotates the X and Y data by 90 degrees.
not defined
POINTING_DEVICE_ROTATION_180
(Optional) Rotates the X and Y data by 180 degrees.
not defined
POINTING_DEVICE_ROTATION_270
(Optional) Rotates the X and Y data by 270 degrees.
not defined
POINTING_DEVICE_INVERT_X
(Optional) Inverts the X axis report.
not defined
POINTING_DEVICE_INVERT_Y
(Optional) Inverts the Y axis report.
not defined
POINTING_DEVICE_MOTION_PIN
(Optional) If supported, will only read from sensor if pin is active.
not defined
POINTING_DEVICE_MOTION_PIN_ACTIVE_LOW
(Optional) If defined then the motion pin is active-low.
varies
POINTING_DEVICE_TASK_THROTTLE_MS
(Optional) Limits the frequency that the sensor is polled for motion.
not defined
POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
(Optional) Enable inertial cursor. Cursor continues moving after a flick gesture and slows down by kinetic friction.
not defined
POINTING_DEVICE_GESTURES_SCROLL_ENABLE
(Optional) Enable scroll gesture. The gesture that activates the scroll is device dependent.
not defined
POINTING_DEVICE_CS_PIN
(Optional) Provides a default CS pin, useful for supporting multiple sensor configs.
not defined
POINTING_DEVICE_SDIO_PIN
(Optional) Provides a default SDIO pin, useful for supporting multiple sensor configs.
not defined
POINTING_DEVICE_SCLK_PIN
(Optional) Provides a default SCLK pin, useful for supporting multiple sensor configs.
not defined
WARNING
When using SPLIT_POINTING_ENABLE the POINTING_DEVICE_MOTION_PIN functionality is not supported and POINTING_DEVICE_TASK_THROTTLE_MS will default to 1. Increasing this value will increase transport performance at the cost of possible mouse responsiveness.
The POINTING_DEVICE_CS_PIN, POINTING_DEVICE_SDIO_PIN, and POINTING_DEVICE_SCLK_PIN provide a convenient way to define a single pin that can be used for an interchangeable sensor config. This allows you to have a single config, without defining each device. Each sensor allows for this to be overridden with their own defines.
WARNING
Any pointing device with a lift/contact status can integrate inertial cursor feature into its driver, controlled by POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE. e.g. PMW3360 can use Lift_Stat from Motion register. Note that POINTING_DEVICE_MOTION_PIN cannot be used with this feature; continuous polling of get_report() is needed to generate glide reports.
The following configuration options are only available when using SPLIT_POINTING_ENABLE see data sync options. The rotation and invert *_RIGHT options are only used with POINTING_DEVICE_COMBINED. If using POINTING_DEVICE_LEFT or POINTING_DEVICE_RIGHT use the common configuration above to configure your pointing device.
Setting
Description
Default
POINTING_DEVICE_LEFT
Pointing device on the left side (Required - pick one only)
not defined
POINTING_DEVICE_RIGHT
Pointing device on the right side (Required - pick one only)
not defined
POINTING_DEVICE_COMBINED
Pointing device on both sides (Required - pick one only)
not defined
POINTING_DEVICE_ROTATION_90_RIGHT
(Optional) Rotates the X and Y data by 90 degrees.
not defined
POINTING_DEVICE_ROTATION_180_RIGHT
(Optional) Rotates the X and Y data by 180 degrees.
not defined
POINTING_DEVICE_ROTATION_270_RIGHT
(Optional) Rotates the X and Y data by 270 degrees.
not defined
POINTING_DEVICE_INVERT_X_RIGHT
(Optional) Inverts the X axis report.
not defined
POINTING_DEVICE_INVERT_Y_RIGHT
(Optional) Inverts the Y axis report.
not defined
WARNING
If there is a _RIGHT configuration option or callback, the common configuration option will work for the left. For correct left/right detection you should setup a handedness option, EE_HANDS is usually a good option for an existing board that doesn't do handedness by hardware.
The combined functions below are only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED. The 2 callbacks pointing_device_task_combined_* replace the single sided equivalents above. See the combined pointing devices example
Function
Description
pointing_device_set_shared_report(mouse_report)
Sets the shared mouse report to the assigned report_mouse_t data structured passed to the function.
pointing_device_set_cpi_on_side(bool, uint16_t)
Sets the CPI/DPI of one side, if supported. Passing true will set the left and false the right
The report_mouse_t (here "mouseReport") has the following properties:
mouseReport.x - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing movement (+ to the right, - to the left) on the x axis.
mouseReport.y - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing movement (+ upward, - downward) on the y axis.
mouseReport.v - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing vertical scrolling (+ upward, - downward).
mouseReport.h - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing horizontal scrolling (+ right, - left).
mouseReport.buttons - this is a uint8_t in which all 8 bits are used. These bits represent the mouse button state - bit 0 is mouse button 1, and bit 7 is mouse button 8.
To manually manipulate the mouse reports outside of the pointing_device_task_* functions, you can use:
pointing_device_get_report() - Returns the current report_mouse_t that represents the information sent to the host computer
pointing_device_set_report(report_mouse_t mouse_report) - Overrides and saves the report_mouse_t to be sent to the host computer
pointing_device_send() - Sends the mouse report to the host and zeroes out the report.
When the mouse report is sent, the x, y, v, and h values are set to 0 (this is done in pointing_device_send(), which can be overridden to avoid this behavior). This way, button states persist, but movement will only occur once. For further customization, both pointing_device_init and pointing_device_task can be overridden.
Additionally, by default, pointing_device_send() will only send a report when the report has actually changed. This prevents it from continuously sending mouse reports, which will keep the host system awake. This behavior can be changed by creating your own pointing_device_send() function.
Also, you use the has_mouse_report_changed(new_report, old_report) function to check to see if the report has changed.
In this example, a custom key is used to click the mouse and scroll 127 units vertically and horizontally, then undo all of that when released - because that's a totally useful function.
c
case MS_SPECIAL:\n report_mouse_t currentReport = pointing_device_get_report();\n if (record->event.pressed) {\n currentReport.v = 127;\n currentReport.h = 127;\n currentReport.buttons |= MOUSE_BTN1; // this is defined in report.h\n } else {\n currentReport.v = -127;\n currentReport.h = -127;\n currentReport.buttons &= ~MOUSE_BTN1;\n }\n pointing_device_set_report(currentReport);\n pointing_device_send();\n break;
Recall that the mouse report is set to zero (except the buttons) whenever it is sent, so the scrolling would only occur once in each case.
A very common implementation is to use the mouse movement to scroll instead of moving the cursor on the system. This uses the pointing_device_task_user callback to intercept and modify the mouse report before it's sent to the host system.
Sometimes, like with the Cirque trackpad, you will run into issues where the scrolling may be too fast.
Here is a slightly more advanced example of drag scrolling. You will be able to change the scroll speed based on the values in set in SCROLL_DIVISOR_H and SCROLL_DIVISOR_V. This bit of code is also set up so that instead of toggling the scrolling state with set_scrolling = !set_scrolling, the set_scrolling variable is set directly to record->event.pressed. This way, the drag scrolling will only be active while the DRAG_SCROLL button is held down.
c
enum custom_keycodes {\n DRAG_SCROLL = SAFE_RANGE,\n};\n\nbool set_scrolling = false;\n\n// Modify these values to adjust the scrolling speed\n#define SCROLL_DIVISOR_H 8.0\n#define SCROLL_DIVISOR_V 8.0\n\n// Variables to store accumulated scroll values\nfloat scroll_accumulated_h = 0;\nfloat scroll_accumulated_v = 0;\n\n// Function to handle mouse reports and perform drag scrolling\nreport_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {\n // Check if drag scrolling is active\n if (set_scrolling) {\n // Calculate and accumulate scroll values based on mouse movement and divisors\n scroll_accumulated_h += (float)mouse_report.x / SCROLL_DIVISOR_H;\n scroll_accumulated_v += (float)mouse_report.y / SCROLL_DIVISOR_V;\n\n // Assign integer parts of accumulated scroll values to the mouse report\n mouse_report.h = (int8_t)scroll_accumulated_h;\n mouse_report.v = (int8_t)scroll_accumulated_v;\n\n // Update accumulated scroll values by subtracting the integer parts\n scroll_accumulated_h -= (int8_t)scroll_accumulated_h;\n scroll_accumulated_v -= (int8_t)scroll_accumulated_v;\n\n // Clear the X and Y values of the mouse report\n mouse_report.x = 0;\n mouse_report.y = 0;\n }\n return mouse_report;\n}\n\n// Function to handle key events and enable/disable drag scrolling\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case DRAG_SCROLL:\n // Toggle set_scrolling when DRAG_SCROLL key is pressed or released\n set_scrolling = record->event.pressed;\n break;\n default:\n break;\n }\n return true;\n}\n\n// Function to handle layer changes and disable drag scrolling when not in AUTO_MOUSE_DEFAULT_LAYER\nlayer_state_t layer_state_set_user(layer_state_t state) {\n // Disable set_scrolling if the current layer is not the AUTO_MOUSE_DEFAULT_LAYER\n if (get_highest_layer(state) != AUTO_MOUSE_DEFAULT_LAYER) {\n set_scrolling = false;\n }\n return state;\n}
The following example requires POINTING_DEVICE_COMBINED and sets the left side pointing device to scroll only.
c
void keyboard_post_init_user(void) {\n pointing_device_set_cpi_on_side(true, 1000); //Set cpi on left side to a low value for slower scrolling.\n pointing_device_set_cpi_on_side(false, 8000); //Set cpi on right side to a reasonable value for mousing.\n}\n\nreport_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {\n left_report.h = left_report.x;\n left_report.v = left_report.y;\n left_report.x = 0;\n left_report.y = 0;\n return pointing_device_combine_reports(left_report, right_report);\n}
If you are having issues with pointing device drivers debug messages can be enabled that will give you insights in the inner workings. To enable these add to your keyboards config.h file:
c
#define POINTING_DEVICE_DEBUG
TIP
The messages will be printed out to the CONSOLE output. For additional information, refer to Debugging/Troubleshooting QMK.
When using a pointing device combined with a keyboard the mouse buttons are often kept on a separate layer from the default keyboard layer, which requires pressing or holding a key to change layers before using the mouse. To make this easier and more efficient an additional pointing device feature may be enabled that will automatically activate a target layer as soon as the pointing device is active (in motion, mouse button pressed etc.) and deactivate the target layer after a set time.
Additionally if any key that is defined as a mouse key is pressed then the layer will be held as long as the key is pressed and the timer will be reset on key release. When a non-mouse key is pressed then the layer is deactivated early (with some exceptions see below). Mod, mod tap, and one shot mod keys are ignored (i.e. don't hold or activate layer but do not deactivate the layer either) when sending a modifier keycode (e.g. hold for mod tap) allowing for mod keys to be used with the mouse without activating the target layer when typing.
All of the standard layer keys (tap toggling, toggle, toggle on, one_shot, layer tap, layer mod) that activate the current target layer are uniquely handled to ensure they behave as expected (see layer key table below). The target layer that can be changed at any point during by calling the set_auto_mouse_layer(<new_target_layer>); function.
Behaviour of Layer keys that activate the target layer
Layer key as in keymap.c
Auto Mouse specific behaviour
MO(<target_layer>)
Treated as a mouse key holding the layer while pressed
LT(<target_layer>)
When tapped will be treated as non mouse key and mouse key when held
LM(<target_layer>)
Treated as a mouse key
TG(<target_layer>)
Will set flag preventing target layer deactivation or removal until pressed again
TO(<target_layer>)
Same as TG(<target_layer>)
TT(<target_layer>)
Treated as a mouse key when tap.count < TAPPING_TOGGLE and as TG when tap.count == TAPPING_TOGGLE
DF(<target_layer>)
Skips auto mouse key processing similar to mod keys
OSL(<target_layer>)
Skips, but if current one shot layer is the target layer then it will prevent target layer deactivation or removal
// in config.h:\n#define POINTING_DEVICE_AUTO_MOUSE_ENABLE\n// only required if not setting mouse layer elsewhere\n#define AUTO_MOUSE_DEFAULT_LAYER <index of your mouse layer>\n\n// in keymap.c:\nvoid pointing_device_init_user(void) {\n set_auto_mouse_layer(<mouse_layer>); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of <mouse_layer>\n set_auto_mouse_enable(true); // always required before the auto mouse feature will work\n}
Because the auto mouse feature can be disabled/enabled during runtime and starts as disabled by default it must be enabled by calling set_auto_mouse_enable(true); somewhere in firmware before the feature will work. Note: for setting the target layer during initialization either setting AUTO_MOUSE_DEFAULT_LAYER in config.h or calling set_auto_mouse_layer(<mouse_layer>) can be used.
While all default mouse keys and layer keys(for current mouse layer) are treated as mouse keys, additional Keyrecords can be added to mouse keys by adding them to the is_mouse_record_* stack.
Callbacks for setting up additional key codes as mouse keys:
The following code will cause the enter key and all of the arrow keys to be treated as mouse keys (hold target layer while they are pressed and reset active layer timer).
c
\n// in <keyboard>.c:\nbool is_mouse_record_kb(uint16_t keycode, keyrecord_t* record) {\n switch(keycode) {\n case KC_ENT:\n return true;\n case KC_RIGHT ... KC_UP:\n return true;\n default:\n return false;\n }\n return is_mouse_record_user(keycode, record);\n}
Return state with target layer removed if appropriate (ignore criteria if force)
layer_state_t
auto_mouse_layer_off(void)
Disable target layer if appropriate will call (makes call to layer_state_set)
void(None)
auto_mouse_toggle(void)
Toggle on/off target toggle state (disables layer deactivation when true)
void(None)
get_auto_mouse_toggle(void)
Return value of toggling state variable
bool
set_auto_mouse_timeout(uint16_t timeout)
Change/set the timeout for turing off the layer
void(None)
get_auto_mouse_timeout(void)
Return the current timeout for turing off the layer
uint16_t
set_auto_mouse_debounce(uint16_t timeout)
Change/set the debounce for preventing layer activation
void(None)
get_auto_mouse_debounce(void)
Return the current debounce for preventing layer activation
uint8_t
is_auto_mouse_active(void)
Returns the active state of the auto mouse layer (eg if the layer has been triggered)
bool
get_auto_mouse_key_tracker(void)
Gets the current count for the auto mouse key tracker.
int8_t
set_auto_mouse_key_tracker(int8_t key_tracker)
Sets/Overrides the current count for the auto mouse key tracker.
void(None)
NOTES: - Due to the nature of how some functions work, the auto_mouse_trigger_reset, and auto_mouse_layer_off functions should never be called in the layer_state_set_* stack as this can cause indefinite loops. - It is recommended that remove_auto_mouse_layer is used in the layer_state_set_* stack of functions and auto_mouse_layer_off is used everywhere else - remove_auto_mouse_layer(state, false) or auto_mouse_layer_off() should be called before any instance of set_auto_mouse_enabled(false) or set_auto_mouse_layer(layer) to ensure that the target layer will be removed appropriately before disabling auto mouse or changing target to avoid a stuck layer
Reset auto mouse status on key down and start delay timer (non-mouse key event)
void(None)
auto_mouse_toggle(void)
Toggle on/off target toggle state (disables layer deactivation when true)
void(None)
get_auto_mouse_toggle(void)
Return value of toggling state variable
bool
NOTE: Generally it would be preferable to use the is_mouse_record_* functions to add any additional keys that should act as mouse keys rather than adding auto_mouse_keyevent(record.event->pressed) to process_records_*
The auto mouse feature can be disabled any time and this can be helpful if you want to disable the auto mouse feature under certain circumstances such as when particular layers are active. One issue however is the handling of the target layer, it needs to be removed appropriately before disabling auto mouse (see notes under control functions above). The following function would disable the auto_mouse feature whenever the layers _LAYER5 through _LAYER7 are active as the top most layer (ignoring target layer).
c
// in keymap.c:\nlayer_state_t layer_state_set_user(layer_state_t state) {\n // checks highest layer other than target layer\n switch(get_highest_layer(remove_auto_mouse_layer(state, true))) {\n case _LAYER5 ... _LAYER7:\n // remove_auto_mouse_target must be called to adjust state *before* setting enable\n state = remove_auto_mouse_layer(state, false);\n set_auto_mouse_enable(false);\n break;\n default:\n set_auto_mouse_enable(true);\n break;\n }\n // recommend that any code that makes adjustment based on auto mouse layer state would go here\n return state;\n}
Set different target layer when a particular layer is active:
The below code will change the auto mouse layer target to _MOUSE_LAYER_2 when _DEFAULT_LAYER_2 is highest default layer state.
NOTE: that auto_mouse_layer_off is used here instead of remove_auto_mouse_layer as default_layer_state_set_* stack is separate from the layer_state_set_* stack, if something similar was to be done in layer_state_set_user, state = remove_auto_mouse_layer(state, false) should be used instead.
ADDITIONAL NOTE: AUTO_MOUSE_TARGET_LAYER is checked if already set to avoid deactivating the target layer unless needed.
c
// in keymap.c\nlayer_state_t default_layer_state_set_user(layer_state_t state) {\n // switch on change in default layer need to check if target layer already set to avoid turning off layer needlessly\n switch(get_highest_layer(state)) {\n case _DEFAULT_LAYER_2:\n if ((AUTO_MOUSE_TARGET_LAYER) == _MOUSE_LAYER_2) break;\n auto_mouse_layer_off();\n set_auto_mouse_layer(_MOUSE_LAYER_2);\n break;\n\n default:\n if((AUTO_MOUSE_TARGET_LAYER) == _MOUSE_LAYER_1) break;\n auto_mouse_layer_off();\n set_auto_mouse_layer(_MOUSE_LAYER_1);\n }\n return state;\n}
Custom key records could also be created that control the auto mouse feature. The code example below would create a custom key that would toggle the auto mouse feature on and off when pressed while also setting a bool that could be used to disable other code that may turn it on such as the layer code above.
c
// in config.h:\nenum user_custom_keycodes {\n AM_Toggle = SAFE_RANGE\n};\n\n// in keymap.c:\n// set up global bool to adjust other user code\nbool auto_mouse_tg_off = !AUTO_MOUSE_ENABLED;\n\nbool process_record_user(uint16_t keycode, keyrecord_t* record) {\n switch (keycode) {\n // toggle auto mouse enable key\n case AM_Toggle:\n if(record->event.pressed) { // key down\n auto_mouse_layer_off(); // disable target layer if needed\n set_auto_mouse_enabled((AUTO_MOUSE_ENABLED) ^ 1);\n auto_mouse_tg_off = !get_auto_mouse_enabled();\n } // do nothing on key up\n return false; // prevent further processing of keycode\n }\n}
Layer activation can be customized by overwriting the auto_mouse_activation function. This function is checked every time pointing_device_task is called when inactive and every AUTO_MOUSE_DEBOUNCE ms when active, and will evaluate pointing device level conditions that trigger target layer activation. When it returns true, the target layer will be activated barring the usual exceptions (e.g. delay time has not expired).
By default it will return true if any of the mouse_report axes x,y,h,v are non zero, or if there is any mouse buttons active in mouse_report. Note: The Cirque pinnacle track pad already implements a custom activation function that will activate on touchdown as well as movement all of the default conditions, currently this only works for the master side of split keyboards.
Programmable Buttons are keys that have no predefined meaning. This means they can be processed on the host side by custom software without the operating system trying to interpret them.
The keycodes are emitted according to the HID Telephony Device page (0x0B), Programmable Button usage (0x09). On Linux (> 5.14) they are handled automatically and translated to KEY_MACRO# keycodes (up to KEY_MACRO30).
TIP
Currently there is no known support in Windows or macOS. It may be possible to write a custom HID driver to receive these usages, but this is out of the scope of the QMK documentation.
Its possible to hook up a PS/2 mouse (for example touchpads or trackpoints) to your keyboard as a composite device.
To hook up a Trackpoint, you need to obtain a Trackpoint module (i.e. harvest from a Thinkpad keyboard), identify the function of each pin of the module, and make the necessary circuitry between controller and Trackpoint module. For more information, please refer to Trackpoint Hardware page on Deskthority Wiki.
There are three available modes for hooking up PS/2 devices: USART (best), interrupts (better) or busywait (not recommended).
The PIO subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU.
There are strict requirements for pin ordering but any pair of GPIO pins can be used. The GPIO used for clock must be directly after data, see the included info.json snippet for an example of correct order.
You may optionally switch the PIO peripheral used with the following define in config.h:
c
#define PS2_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the PS2 implementation uses the PIO0 peripheral
These enable settings supported by the PS/2 mouse protocol.
c
/* Use remote mode instead of the default stream mode (see link) */\n#define PS2_MOUSE_USE_REMOTE_MODE\n\n/* Enable the scrollwheel or scroll gesture on your mouse or touchpad */\n#define PS2_MOUSE_ENABLE_SCROLLING\n\n/* Some mice will need a scroll mask to be configured. The default is 0xFF. */\n#define PS2_MOUSE_SCROLL_MASK 0x0F\n\n/* Applies a transformation to the movement before sending to the host (see link) */\n#define PS2_MOUSE_USE_2_1_SCALING\n\n/* The time to wait after initializing the ps2 host */\n#define PS2_MOUSE_INIT_DELAY 1000 /* Default */
You can also call the following functions from ps2_mouse.h
Use the following defines to change the sensitivity and speed of the mouse. Note: you can also use ps2_mouse_set_resolution for the same effect (not supported on most touchpads).
If you're using a trackpoint, you will likely want to be able to use it for scrolling. It's possible to enable a "scroll button/s" that when pressed will cause the mouse to scroll instead of moving. To enable the feature, you must set a scroll button mask as follows:
You can also combine buttons in the mask by |ing them together.
Once you've configured your scroll button mask, you must configure the scroll button send interval. This is the interval before which if the scroll buttons were released they would be sent to the host. After this interval, they will cause the mouse to scroll and will not be sent.
Transform the output of the device with a clockwise rotation of 90, 180, or 270 degrees.
When compensating for device orientation, rotate the output the same amount in the opposite direction. E.g. if the normal device orientation is considered to be North-facing, compensate as follows:
c
#define PS2_MOUSE_ROTATE 270 /* Compensate for East-facing device orientation. */
c
#define PS2_MOUSE_ROTATE 180 /* Compensate for South-facing device orientation. */
c
#define PS2_MOUSE_ROTATE 90 /* Compensate for West-facing device orientation. */
Process mouse movement in the keymap before it is sent to the host. Example uses include filtering noise, adding acceleration, and automatically activating a layer. To use, define the following function in your keymap:
The Raw HID feature allows for bidirectional communication between QMK and the host computer over an HID interface. This has many potential use cases, such as switching keymaps on the fly or sending useful metrics like CPU/RAM usage.
In order to communicate with the keyboard using this feature, you will need to write a program that runs on the host. As such, some basic programming skills are required - more if you intend to implement complex behaviour.
By default, the HID Usage Page and Usage ID for the Raw HID interface are 0xFF60 and 0x61. However, they can be changed if necessary by adding the following to your config.h:
To send data to the keyboard, you must first find a library for communicating with HID devices in the programming language of your choice. Here are some examples:
Please refer to these libraries' own documentation for instructions on usage. Remember to close the device once you are finished with it!
Next, you will need to know the USB Vendor and Product IDs of the device. These can easily be found by looking at your keyboard's info.json, under the usb object (alternatively, you can also use Device Manager on Windows, System Information on macOS, or lsusb on Linux). For example, the Vendor ID for the Planck Rev 6 is 0x03A8, and the Product ID is 0xA4F9.
It's also a good idea to narrow down the list of potential HID devices the library may give you by filtering on the usage page and usage ID, to avoid accidentally opening the interface on the same device for the keyboard, or mouse, or media keys, etc.
Once you are able to open the HID device and send reports to it, it's time to handle them on the keyboard side. Implement the following function in your keymap.c and start coding:
c
void raw_hid_receive(uint8_t *data, uint8_t length) {\n // Your code goes here\n // `data` is a pointer to the buffer containing the received HID report\n // `length` is the length of the report - always `RAW_EPSIZE`\n}
WARNING
Because the HID specification does not support variable length reports, all reports in both directions must be exactly RAW_EPSIZE (currently 32) bytes long, regardless of actual payload length. However, variable length payloads can potentially be implemented on top of this by creating your own data structure that may span multiple reports.
If you need the keyboard to send data back to the host, simply call the raw_hid_send() function. It requires two arguments - a pointer to a 32-byte buffer containing the data you wish to send, and the length (which should always be RAW_EPSIZE).
The received report can then be handled in whichever way your HID library provides.
The following example reads the first byte of the received report from the host, and if it is an ASCII "A", responds with "B". memset() is used to fill the response buffer (which could still contain the previous response) with null bytes.
On the host side (here we are using Python and the pyhidapi library), the HID device is opened by enumerating the interfaces on the USB device, then filtering on the usage page and usage ID. Then, a report containing a single ASCII "A" (hex 0x41) is constructed and sent.
For demonstration purposes, the manufacturer and product strings of the device, along with the request and response, are also printed.
python
import sys\nimport hid\n\nvendor_id = 0x4335\nproduct_id = 0x0002\n\nusage_page = 0xFF60\nusage = 0x61\nreport_length = 32\n\ndef get_raw_hid_interface():\n device_interfaces = hid.enumerate(vendor_id, product_id)\n raw_hid_interfaces = [i for i in device_interfaces if i['usage_page'] == usage_page and i['usage'] == usage]\n\n if len(raw_hid_interfaces) == 0:\n return None\n\n interface = hid.Device(path=raw_hid_interfaces[0]['path'])\n\n print(f"Manufacturer: {interface.manufacturer}")\n print(f"Product: {interface.product}")\n\n return interface\n\ndef send_raw_report(data):\n interface = get_raw_hid_interface()\n\n if interface is None:\n print("No device found")\n sys.exit(1)\n\n request_data = [0x00] * (report_length + 1) # First byte is Report ID\n request_data[1:len(data) + 1] = data\n request_report = bytes(request_data)\n\n print("Request:")\n print(request_report)\n\n try:\n interface.write(request_report)\n\n response_report = interface.read(report_length, timeout=1000)\n\n print("Response:")\n print(response_report)\n finally:\n interface.close()\n\nif __name__ == '__main__':\n send_raw_report([\n 0x41\n ])
The Repeat Key performs the action of the last pressed key. Tapping the Repeat Key after tapping the Z key types another "z." This is useful for typing doubled letters, like the z in "dazzle": a double tap on Z can instead be a roll from Z to Repeat, which is potentially faster and more comfortable. The Repeat Key is also useful for hotkeys, like repeating Ctrl + Shift + Right Arrow to select by word.
Repeat Key remembers mods that were active with the last key press. These mods are combined with any additional mods while pressing the Repeat Key. If the last press key was Ctrl + Z, then Shift + Repeat performs Ctrl + Shift + Z.
Then pick a key in your keymap and assign it the keycode QK_REPEAT_KEY (short alias QK_REP). Optionally, use the keycode QK_ALT_REPEAT_KEY (short alias QK_AREP) on another key.
The Alternate Repeat Key performs the "alternate" action of the last pressed key if it is defined. By default, Alternate Repeat is defined for navigation keys to act in the reverse direction. When the last key is the common "select by word" hotkey Ctrl + Shift + Right Arrow, the Alternate Repeat Key performs Ctrl + Shift + Left Arrow, which together with the Repeat Key enables convenient selection by words in either direction.
Alternate Repeat is enabled with the Repeat Key by default. Optionally, to reduce firmware size, Alternate Repeat may be disabled by adding in config.h:
c
#define NO_ALT_REPEAT_KEY
The following alternate keys are defined by default. See get_alt_repeat_key_keycode_user() below for how to change or add to these definitions. Where it makes sense, these definitions also include combinations with mods, like Ctrl + Left ↔ Ctrl + Right Arrow.
Use the get_alt_repeat_key_keycode_user() callback to define the "alternate" for additional keys or override the default definitions. For example, to define Ctrl + Y as the alternate of Ctrl + Z, and vice versa, add the following in keymap.c:
c
uint16_t get_alt_repeat_key_keycode_user(uint16_t keycode, uint8_t mods) {\n if ((mods & MOD_MASK_CTRL)) { // Was Ctrl held?\n switch (keycode) {\n case KC_Y: return C(KC_Z); // Ctrl + Y reverses to Ctrl + Z.\n case KC_Z: return C(KC_Y); // Ctrl + Z reverses to Ctrl + Y.\n }\n }\n\n return KC_TRNS; // Defer to default definitions.\n}
The keycode and mods args are the keycode and mods that were active with the last pressed key. The meaning of the return value from this function is:
KC_NO – do nothing (any predefined alternate key is not used);
KC_TRNS – use the default alternate key if it exists;
anything else – use the specified keycode. Any keycode may be returned as an alternate key, including custom keycodes.
Another example, defining Shift + Tab as the alternate of Tab, and vice versa:
c
uint16_t get_alt_repeat_key_keycode_user(uint16_t keycode, uint8_t mods) {\n bool shifted = (mods & MOD_MASK_SHIFT); // Was Shift held?\n switch (keycode) {\n case KC_TAB:\n if (shifted) { // If the last key was Shift + Tab,\n return KC_TAB; // ... the reverse is Tab.\n } else { // Otherwise, the last key was Tab,\n return S(KC_TAB); // ... and the reverse is Shift + Tab.\n }\n }\n\n return KC_TRNS;\n}
Alternate Repeat can be configured more generally to perform an action that "complements" the last key. Alternate Repeat is not limited to reverse repeating, and it need not be symmetric. You can use it to eliminate cases of same-finger bigrams in your layout, that is, pairs of letters typed by the same finger. The following addresses the top 5 same-finger bigrams in English on QWERTY, so that for instance "ed" may be typed as E, Alt Repeat.
c
uint16_t get_alt_repeat_key_keycode_user(uint16_t keycode, uint8_t mods) {\n switch (keycode) {\n case KC_E: return KC_D; // For "ED" bigram.\n case KC_D: return KC_E; // For "DE" bigram.\n case KC_C: return KC_E; // For "CE" bigram.\n case KC_L: return KC_O; // For "LO" bigram.\n case KC_U: return KC_N; // For "UN" bigram.\n }\n\n return KC_TRNS;\n}
A useful possibility is having Alternate Repeat press a macro. This way macros can be used without having to dedicate keys to them. The following defines a couple shortcuts.
Typing K, Alt Repeat produces "keyboard," with the initial "k" typed as usual and the "eybord" produced by the macro.
Typing ., Alt Repeat produces "../," handy for "up directory" on the shell. Similary, . types the initial "." and "./" is produced by the macro.
c
enum custom_keycodes {\n M_KEYBOARD = SAFE_RANGE,\n M_UPDIR,\n // Other custom keys...\n};\n\nuint16_t get_alt_repeat_key_keycode_user(uint16_t keycode, uint8_t mods) {\n switch (keycode) {\n case KC_K: return M_KEYBOARD;\n case KC_DOT: return M_UPDIR;\n }\n\n return KC_TRNS;\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t* record) {\n switch (keycode) {\n case M_KEYBOARD: SEND_STRING(/*k*/"eyboard"); break;\n case M_UPDIR: SEND_STRING(/*.*/"./"); break;\n }\n return true;\n}
In tracking what is "the last key" to be repeated or alternate repeated, modifier and layer switch keys are always ignored. This makes it possible to set some mods and change layers between pressing a key and repeating it. By default, all other (non-modifier, non-layer switch) keys are remembered so that they are eligible for repeating. To configure additional keys to be ignored, define remember_last_key_user() in your keymap.c.
bool remember_last_key_user(uint16_t keycode, keyrecord_t* record,\n uint8_t* remembered_mods) {\n switch (keycode) {\n case KC_BSPC:\n return false; // Ignore backspace.\n }\n\n return true; // Other keys can be repeated.\n}
Then for instance, the Repeat key in Left Arrow, Backspace, Repeat sends Left Arrow again instead of repeating Backspace.
The remember_last_key_user() callback is called on every key press excluding modifiers and layer switches. Returning true indicates the key is remembered, while false means it is ignored.
The remembered_mods arg represents the mods that will be remembered with this key. It can be modified to forget certain mods. This may be useful to forget capitalization when repeating shifted letters, so that "Aaron" does not becom "AAron":
c
bool remember_last_key_user(uint16_t keycode, keyrecord_t* record,\n uint8_t* remembered_mods) {\n // Forget Shift on letter keys when Shift or AltGr are the only mods.\n switch (keycode) {\n case KC_A ... KC_Z:\n if ((*remembered_mods & ~(MOD_MASK_SHIFT | MOD_BIT(KC_RALT))) == 0) {\n *remembered_mods &= ~MOD_MASK_SHIFT;\n }\n break;\n }\n\n return true;\n}
Besides checking the keycode, this callback could also make conditions based on the current layer state (with IS_LAYER_ON(layer)) or mods (get_mods()). For example, the following ignores keys on layer 2 as well as key combinations involving GUI:
c
bool remember_last_key_user(uint16_t keycode, keyrecord_t* record,\n uint8_t* remembered_mods) {\n if (IS_LAYER_ON(2) || (get_mods() & MOD_MASK_GUI)) {\n return false; // Ignore layer 2 keys and GUI chords.\n }\n\n return true; // Other keys can be repeated.\n}
By default, pressing the Repeat Key will simply behave as if the last key were pressed again. This also works with macro keys with custom handlers, invoking the macro again. In case fine-tuning is needed for sensible repetition, you can handle how a key is repeated with get_repeat_key_count() within process_record_user().
The get_repeat_key_count() function returns a signed count of times the key has been repeated or alternate repeated. When a key is pressed as usual, get_repeat_key_count() is 0. On the first repeat, it is 1, then the second repeat, 2, and so on. Negative counts are used similarly for alternate repeating. For instance supposing MY_MACRO is a custom keycode used in the layout:
c
bool process_record_user(uint16_t keycode, keyrecord_t* record) {\n switch (keycode) {\n case MY_MACRO:\n if (get_repeat_key_count() > 0) {\n // MY_MACRO is being repeated!\n if (record->event.pressed) {\n SEND_STRING("repeat!"); \n }\n } else { \n // MY_MACRO is being used normally.\n if (record->event.pressed) { \n SEND_STRING("macro");\n }\n }\n return false;\n\n // Other macros...\n }\n return true;\n}
Pressing the Alternate Repeat Key behaves as if the "alternate" of the last pressed key were pressed, if an alternate is defined. To define how a particular key is alternate repeated, use the get_alt_repeat_key_keycode_user() callback as described above to define which keycode to use as its alternate. Beyond this, get_repeat_key_count() may be used in custom handlers to fine-tune behavior when alternate repeating.
The following example defines MY_MACRO as its own alternate, and specially handles repeating and alternate repeating:
c
uint16_t get_alt_repeat_key_keycode_user(uint16_t keycode, uint8_t mods) {\n switch (keycode) {\n case MY_MACRO: return MY_MACRO; // MY_MACRO is its own alternate.\n }\n return KC_TRNS;\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t* record) {\n switch (keycode) {\n case MY_MACRO:\n if (get_repeat_key_count() > 0) { // Repeating.\n if (record->event.pressed) {\n SEND_STRING("repeat!"); \n }\n } else if (get_repeat_key_count() < 0) { // Alternate repeating.\n if (record->event.pressed) {\n SEND_STRING("alt repeat!");\n }\n } else { // Used normally.\n if (record->event.pressed) { \n SEND_STRING("macro");\n }\n }\n return false;\n\n // Other macros...\n }\n return true;\n}
By leveraging get_last_keycode() in macros, it is possible to define additional, distinct "Alternate Repeat"-like keys. The following defines two keys ALTREP2 and ALTREP3 and implements ten shortcuts with them for common English 5-gram letter patterns, taking inspiration from Stenotype:
Typing
Produces
Typing
Produces
A, ALTREP2
ation
A, ALTREP3
about
I, ALTREP2
ition
I, ALTREP3
inter
S, ALTREP2
ssion
S, ALTREP3
state
T, ALTREP2
their
T, ALTREP3
there
W, ALTREP2
which
W, ALTREP3
would
c
enum custom_keycodes {\n ALTREP2 = SAFE_RANGE,\n ALTREP3,\n};\n\n// Use ALTREP2 and ALTREP3 in your layout...\n\nbool remember_last_key_user(uint16_t keycode, keyrecord_t* record,\n uint8_t* remembered_mods) {\n switch (keycode) {\n case ALTREP2:\n case ALTREP3:\n return false; // Ignore ALTREP keys.\n }\n\n return true; // Other keys can be repeated.\n}\n\nstatic void process_altrep2(uint16_t keycode, uint8_t mods) {\n switch (keycode) {\n case KC_A: SEND_STRING(/*a*/"tion"); break;\n case KC_I: SEND_STRING(/*i*/"tion"); break;\n case KC_S: SEND_STRING(/*s*/"sion"); break;\n case KC_T: SEND_STRING(/*t*/"heir"); break;\n case KC_W: SEND_STRING(/*w*/"hich"); break;\n }\n}\n\nstatic void process_altrep3(uint16_t keycode, uint8_t mods) {\n switch (keycode) {\n case KC_A: SEND_STRING(/*a*/"bout"); break;\n case KC_I: SEND_STRING(/*i*/"nter"); break;\n case KC_S: SEND_STRING(/*s*/"tate"); break;\n case KC_T: SEND_STRING(/*t*/"here"); break;\n case KC_W: SEND_STRING(/*w*/"ould"); break;\n }\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t* record) {\n switch (keycode) {\n case ALTREP2: \n if (record->event.pressed) {\n process_altrep2(get_last_keycode(), get_last_mods());\n }\n return false;\n\n case ALTREP3:\n if (record->event.pressed) {\n process_altrep3(get_last_keycode(), get_last_mods());\n }\n return false;\n }\n\n return true;\n}
', 65);
+const _hoisted_66 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_66);
+}
+const repeat_key = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ repeat_key as default
+};
diff --git a/assets/features_repeat_key.md.CuNkA6hM.lean.js b/assets/features_repeat_key.md.CuNkA6hM.lean.js
new file mode 100644
index 0000000..03e6795
--- /dev/null
+++ b/assets/features_repeat_key.md.CuNkA6hM.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Repeat Key","description":"","frontmatter":{},"headers":[],"relativePath":"features/repeat_key.md","filePath":"features/repeat_key.md"}');
+const _sfc_main = { name: "features/repeat_key.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 65);
+const _hoisted_66 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_66);
+}
+const repeat_key = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ repeat_key as default
+};
diff --git a/assets/features_rgb_matrix.md.W1z-3vl5.js b/assets/features_rgb_matrix.md.W1z-3vl5.js
new file mode 100644
index 0000000..d93385d
--- /dev/null
+++ b/assets/features_rgb_matrix.md.W1z-3vl5.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"RGB Matrix Lighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/rgb_matrix.md","filePath":"features/rgb_matrix.md"}');
+const _sfc_main = { name: "features/rgb_matrix.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This feature allows you to use RGB LED matrices driven by external drivers. It hooks into the RGBLIGHT system so you can use the same keycodes as RGBLIGHT to control it.
If you want to use single color LED's you should use the LED Matrix Subsystem instead.
RGB Matrix is an abstraction layer on top of an underlying LED driver API. The list of supported LED drivers is below; see the respective documentation for information on how to configure the driver.
From this point forward the configuration is the same for all the drivers. The led_config_t struct provides a key electrical matrix to led index lookup table, what the physical position of each LED is on the board, and what type of key or usage the LED if the LED represents. Here is a brief example:
c
led_config_t g_led_config = { {\n // Key Matrix to LED Index\n { 5, NO_LED, NO_LED, 0 },\n { NO_LED, NO_LED, NO_LED, NO_LED },\n { 4, NO_LED, NO_LED, 1 },\n { 3, NO_LED, NO_LED, 2 }\n}, {\n // LED Index to Physical Position\n { 188, 16 }, { 187, 48 }, { 149, 64 }, { 112, 64 }, { 37, 48 }, { 38, 16 }\n}, {\n // LED Index to Flag\n 1, 4, 4, 4, 4, 1\n} };
The first part, // Key Matrix to LED Index, tells the system what key this LED represents by using the key's electrical matrix row & col. The second part, // LED Index to Physical Position represents the LED's physical { x, y } position on the keyboard. The default expected range of values for { x, y } is the inclusive range { 0..224, 0..64 }. This default expected range is due to effects that calculate the center of the keyboard for their animations. The easiest way to calculate these positions is imagine your keyboard is a grid, and the top left of the keyboard represents { x, y } coordinate { 0, 0 } and the bottom right of your keyboard represents { 224, 64 }. Using this as a basis, you can use the following formula to calculate the physical position:
Where NUMBER_OF_COLS, NUMBER_OF_ROWS, COL_POSITION, & ROW_POSITION are all based on the physical layout of your keyboard, not the electrical layout.
As mentioned earlier, the center of the keyboard by default is expected to be { 112, 32 }, but this can be changed if you want to more accurately calculate the LED's physical { x, y } positions. Keyboard designers can implement #define RGB_MATRIX_CENTER { 112, 32 } in their config.h file with the new center point of the keyboard, or where they want it to be allowing more possibilities for the { x, y } values. Do note that the maximum value for x or y is 255, and the recommended maximum is 224 as this gives animations runoff room before they reset.
// LED Index to Flag is a bitmask, whether or not a certain LEDs is of a certain type. It is recommended that LEDs are set to only 1 type.
All RGB keycodes are currently shared with the RGBLIGHT system:
Key
Aliases
Description
RGB_TOG
Toggle RGB lighting on or off
RGB_MODE_FORWARD
RGB_MOD
Cycle through modes, reverse direction when Shift is held
RGB_MODE_REVERSE
RGB_RMOD
Cycle through modes in reverse, forward direction when Shift is held
RGB_HUI
Increase hue, decrease hue when Shift is held
RGB_HUD
Decrease hue, increase hue when Shift is held
RGB_SAI
Increase saturation, decrease saturation when Shift is held
RGB_SAD
Decrease saturation, increase saturation when Shift is held
RGB_VAI
Increase value (brightness), decrease value when Shift is held
RGB_VAD
Decrease value (brightness), increase value when Shift is held
RGB_SPI
Increase effect speed (does not support eeprom yet), decrease speed when Shift is held
RGB_SPD
Decrease effect speed (does not support eeprom yet), increase speed when Shift is held
RGB_MODE_PLAIN
RGB_M_P
Static (no animation) mode
RGB_MODE_BREATHE
RGB_M_B
Breathing animation mode
RGB_MODE_RAINBOW
RGB_M_R
Full gradient scrolling left to right (uses the RGB_MATRIX_CYCLE_LEFT_RIGHT mode)
RGB_MODE_SWIRL
RGB_M_SW
Full gradient spinning pinwheel around center of keyboard (uses RGB_MATRIX_CYCLE_PINWHEEL mode)
RGB_MODE_* keycodes will generally work, but not all of the modes are currently mapped to the correct effects for the RGB Matrix system.
RGB_MODE_PLAIN, RGB_MODE_BREATHE, RGB_MODE_RAINBOW, and RGB_MODE_SWIRL are the only ones that are mapped properly. The rest don't have a direct equivalent, and are not mapped.
TIP
RGB_* keycodes cannot be used with functions like tap_code16(RGB_HUD) as they're not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside encoder_update_user() or process_record_user()), the equivalent RGB functions should be used instead.
WARNING
By default, if you have both the RGB Light and the RGB Matrix feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the *_DISABLE_KEYCODES option for the specific feature.
All effects have been configured to support current configuration values (Hue, Saturation, Value, & Speed) unless otherwise noted below. These are the effects that are currently available:
c
enum rgb_matrix_effects {\n RGB_MATRIX_NONE = 0,\n RGB_MATRIX_SOLID_COLOR = 1, // Static single hue, no speed support\n RGB_MATRIX_ALPHAS_MODS, // Static dual hue, speed is hue for secondary hue\n RGB_MATRIX_GRADIENT_UP_DOWN, // Static gradient top to bottom, speed controls how much gradient changes\n RGB_MATRIX_GRADIENT_LEFT_RIGHT, // Static gradient left to right, speed controls how much gradient changes\n RGB_MATRIX_BREATHING, // Single hue brightness cycling animation\n RGB_MATRIX_BAND_SAT, // Single hue band fading saturation scrolling left to right\n RGB_MATRIX_BAND_VAL, // Single hue band fading brightness scrolling left to right\n RGB_MATRIX_BAND_PINWHEEL_SAT, // Single hue 3 blade spinning pinwheel fades saturation\n RGB_MATRIX_BAND_PINWHEEL_VAL, // Single hue 3 blade spinning pinwheel fades brightness\n RGB_MATRIX_BAND_SPIRAL_SAT, // Single hue spinning spiral fades saturation\n RGB_MATRIX_BAND_SPIRAL_VAL, // Single hue spinning spiral fades brightness\n RGB_MATRIX_CYCLE_ALL, // Full keyboard solid hue cycling through full gradient\n RGB_MATRIX_CYCLE_LEFT_RIGHT, // Full gradient scrolling left to right\n RGB_MATRIX_CYCLE_UP_DOWN, // Full gradient scrolling top to bottom\n RGB_MATRIX_CYCLE_OUT_IN, // Full gradient scrolling out to in\n RGB_MATRIX_CYCLE_OUT_IN_DUAL, // Full dual gradients scrolling out to in\n RGB_MATRIX_RAINBOW_MOVING_CHEVRON, // Full gradient Chevron shapped scrolling left to right\n RGB_MATRIX_CYCLE_PINWHEEL, // Full gradient spinning pinwheel around center of keyboard\n RGB_MATRIX_CYCLE_SPIRAL, // Full gradient spinning spiral around center of keyboard\n RGB_MATRIX_DUAL_BEACON, // Full gradient spinning around center of keyboard\n RGB_MATRIX_RAINBOW_BEACON, // Full tighter gradient spinning around center of keyboard\n RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard\n RGB_MATRIX_FLOWER_BLOOMING, // Full tighter gradient of first half scrolling left to right and second half scrolling right to left\n RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue\n RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation\n RGB_MATRIX_HUE_BREATHING, // Hue shifts up a slight ammount at the same time, then shifts back\n RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight ammount in a wave to the right, then back to the left\n RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right\n RGB_MATRIX_PIXEL_FRACTAL, // Single hue fractal filled keys pulsing horizontally out to edges\n RGB_MATRIX_PIXEL_FLOW, // Pulsing RGB flow along LED wiring with random hues\n RGB_MATRIX_PIXEL_RAIN, // Randomly light keys with random hues\n RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM!\n RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation\n RGB_MATRIX_SOLID_REACTIVE_SIMPLE, // Pulses keys hit to hue & value then fades value out\n RGB_MATRIX_SOLID_REACTIVE, // Static single hue, pulses keys hit to shifted hue then fades to current hue\n RGB_MATRIX_SOLID_REACTIVE_WIDE, // Hue & value pulse near a single key hit then fades value out\n RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE, // Hue & value pulse near multiple key hits then fades value out\n RGB_MATRIX_SOLID_REACTIVE_CROSS, // Hue & value pulse the same column and row of a single key hit then fades value out\n RGB_MATRIX_SOLID_REACTIVE_MULTICROSS, // Hue & value pulse the same column and row of multiple key hits then fades value out\n RGB_MATRIX_SOLID_REACTIVE_NEXUS, // Hue & value pulse away on the same column and row of a single key hit then fades value out\n RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS, // Hue & value pulse away on the same column and row of multiple key hits then fades value out\n RGB_MATRIX_SPLASH, // Full gradient & value pulse away from a single key hit then fades value out\n RGB_MATRIX_MULTISPLASH, // Full gradient & value pulse away from multiple key hits then fades value out\n RGB_MATRIX_SOLID_SPLASH, // Hue & value pulse away from a single key hit then fades value out\n RGB_MATRIX_SOLID_MULTISPLASH, // Hue & value pulse away from multiple key hits then fades value out\n RGB_MATRIX_STARLIGHT, // LEDs turn on and off at random at varying brightness, maintaining user set color\n RGB_MATRIX_STARLIGHT_DUAL_HUE, // LEDs turn on and off at random at varying brightness, modifies user set hue by +- 30\n RGB_MATRIX_STARLIGHT_DUAL_SAT, // LEDs turn on and off at random at varying brightness, modifies user set saturation by +- 30\n RGB_MATRIX_RIVERFLOW, // Modification to breathing animation, offset's animation depending on key location to simulate a river flowing\n RGB_MATRIX_EFFECT_MAX\n};
You can enable a single effect by defining ENABLE_[EFFECT_NAME] in your config.h:
Define
Description
#define ENABLE_RGB_MATRIX_ALPHAS_MODS
Enables RGB_MATRIX_ALPHAS_MODS
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
Enables RGB_MATRIX_GRADIENT_UP_DOWN
#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
Enables RGB_MATRIX_GRADIENT_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_BREATHING
Enables RGB_MATRIX_BREATHING
#define ENABLE_RGB_MATRIX_BAND_SAT
Enables RGB_MATRIX_BAND_SAT
#define ENABLE_RGB_MATRIX_BAND_VAL
Enables RGB_MATRIX_BAND_VAL
#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
Enables RGB_MATRIX_BAND_PINWHEEL_SAT
#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
Enables RGB_MATRIX_BAND_PINWHEEL_VAL
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
Enables RGB_MATRIX_BAND_SPIRAL_SAT
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
Enables RGB_MATRIX_BAND_SPIRAL_VAL
#define ENABLE_RGB_MATRIX_CYCLE_ALL
Enables RGB_MATRIX_CYCLE_ALL
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
Enables RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
Enables RGB_MATRIX_CYCLE_UP_DOWN
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
Enables RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
Enables RGB_MATRIX_CYCLE_OUT_IN
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
Enables RGB_MATRIX_CYCLE_OUT_IN_DUAL
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
Enables RGB_MATRIX_CYCLE_PINWHEEL
#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
Enables RGB_MATRIX_CYCLE_SPIRAL
#define ENABLE_RGB_MATRIX_DUAL_BEACON
Enables RGB_MATRIX_DUAL_BEACON
#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
Enables RGB_MATRIX_RAINBOW_BEACON
#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
Enables RGB_MATRIX_RAINBOW_PINWHEELS
#define ENABLE_RGB_MATRIX_FLOWER_BLOOMING
Enables RGB_MATRIX_FLOWER_BLOOMING
#define ENABLE_RGB_MATRIX_RAINDROPS
Enables RGB_MATRIX_RAINDROPS
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
Enables RGB_MATRIX_JELLYBEAN_RAINDROPS
#define ENABLE_RGB_MATRIX_HUE_BREATHING
Enables RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
Enables RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
Enables RGB_MATRIX_HUE_WAVE
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
Enables RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_FLOW
Enables RGB_MATRIX_PIXEL_FLOW
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
Enables RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_STARLIGHT
Enables RGB_MATRIX_STARLIGHT
#define ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE
Enables RGB_MATRIX_STARLIGHT_DUAL_HUE
#define ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT
Enables RGB_MATRIX_STARLIGHT_DUAL_SAT
#define ENABLE_RGB_MATRIX_RIVERFLOW
Enables RGB_MATRIX_RIVERFLOW
Framebuffer Defines
Description
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
Enables RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
Enables RGB_MATRIX_DIGITAL_RAIN
TIP
These modes introduce additional logic that can increase firmware size.
This effect will color the RGB matrix according to a heatmap of recently pressed keys. Whenever a key is pressed its "temperature" increases as well as that of its neighboring keys. The temperature of each key is then decreased automatically every 25 milliseconds by default.
In order to change the delay of temperature decrease define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS:
As heatmap uses the physical position of the leds set in the g_led_config, you may need to tweak the following options to get the best effect for your keyboard. Note the size of this grid is 224x64.
Limit the distance the effect spreads to surrounding keys.
c
#define RGB_MATRIX_TYPING_HEATMAP_SPREAD 40
Limit how hot surrounding keys get from each press.
c
#define RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT 16
Remove the spread effect entirely.
c
#define RGB_MATRIX_TYPING_HEATMAP_SLIM
It's also possible to adjust the tempo of heating up. It's defined as the number of shades that are increased on the HSV scale. Decreasing this value increases the number of keystrokes needed to fully heat up the key.
Solid reactive effects will pulse RGB light on key presses with user configurable hues. To enable gradient mode that will automatically change reactive color, add the following define:
c
#define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
Gradient mode will loop through the color wheel hues over time and its duration can be controlled with the effect speed keycodes (RGB_SPI/RGB_SPD).
By setting RGB_MATRIX_CUSTOM_USER = yes in rules.mk, new effects can be defined directly from your keymap or userspace, without having to edit any QMK core files. To declare new effects, create a rgb_matrix_user.inc file in the user keymap directory or userspace folder.
TIP
Hardware maintainers who want to limit custom effects to a specific keyboard can create a rgb_matrix_kb.inc file in the root of the keyboard directory, and add RGB_MATRIX_CUSTOM_KB = yes to the keyboard level rules.mk.
c
// !!! DO NOT ADD #pragma once !!! //\n\n// Step 1.\n// Declare custom effects using the RGB_MATRIX_EFFECT macro\n// (note the lack of semicolon after the macro!)\nRGB_MATRIX_EFFECT(my_cool_effect)\nRGB_MATRIX_EFFECT(my_cool_effect2)\n\n// Step 2.\n// Define effects inside the `RGB_MATRIX_CUSTOM_EFFECT_IMPLS` ifdef block\n#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS\n\n// e.g: A simple effect, self-contained within a single method\nstatic bool my_cool_effect(effect_params_t* params) {\n RGB_MATRIX_USE_LIMITS(led_min, led_max);\n for (uint8_t i = led_min; i < led_max; i++) {\n rgb_matrix_set_color(i, 0xff, 0xff, 0x00);\n }\n return rgb_matrix_check_finished_leds(led_max);\n}\n\n// e.g: A more complex effect, relying on external methods and state, with\n// dedicated init and run methods\nstatic uint8_t some_global_state;\nstatic void my_cool_effect2_complex_init(effect_params_t* params) {\n some_global_state = 1;\n}\nstatic bool my_cool_effect2_complex_run(effect_params_t* params) {\n RGB_MATRIX_USE_LIMITS(led_min, led_max);\n for (uint8_t i = led_min; i < led_max; i++) {\n rgb_matrix_set_color(i, 0xff, some_global_state++, 0xff);\n }\n return rgb_matrix_check_finished_leds(led_max);\n}\nstatic bool my_cool_effect2(effect_params_t* params) {\n if (params->init) my_cool_effect2_complex_init(params);\n return my_cool_effect2_complex_run(params);\n}\n\n#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
To switch to your custom effect programmatically, simply call rgb_matrix_mode() and prepend RGB_MATRIX_CUSTOM_ to the effect name you specified in RGB_MATRIX_EFFECT(). For example, an effect declared as RGB_MATRIX_EFFECT(my_cool_effect) would be referenced with:
#define RGB_MATRIX_KEYRELEASES // reactive effects respond to keyreleases (instead of keypresses)\n#define RGB_MATRIX_TIMEOUT 0 // number of milliseconds to wait until rgb automatically turns off\n#define RGB_MATRIX_SLEEP // turn off effects when suspended\n#define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)\n#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)\n#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255\n#define RGB_MATRIX_DEFAULT_ON true // Sets the default enabled state, if none has been set\n#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set\n#define RGB_MATRIX_DEFAULT_HUE 0 // Sets the default hue value, if none has been set\n#define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set\n#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set\n#define RGB_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set\n#define RGB_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set\n#define RGB_MATRIX_DISABLE_KEYCODES // disables control of rgb matrix by keycodes (must use code functions to control the feature)\n#define RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.\n // If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR\n#define RGB_TRIGGER_ON_KEYDOWN // Triggers RGB keypress events on key down. This makes RGB control feel more responsive. This may cause RGB to not function properly on some boards
If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, then you can use the rgb_matrix_indicators_kb function on the keyboard level source file, or rgb_matrix_indicators_user function in the user keymap.c.
In addition, there are the advanced indicator functions. These are aimed at those with heavily customized displays, where rendering every LED per cycle is expensive. Such as some of the "drashna" layouts. This includes a special macro to help make this easier to use: RGB_MATRIX_INDICATOR_SET_COLOR(i, r, g, b).
This example sets the modifiers to be a specific color based on the layer state. You can use a switch case here, instead, if you would like. This uses HSV and then converts to RGB, because this allows the brightness to be limited (important when using the WS2812 driver).
If you want to indicate a Host LED status (caps lock, num lock, etc), you can use something like this to light up the caps lock key:
c
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {\n if (host_keyboard_led_state().caps_lock) {\n RGB_MATRIX_INDICATOR_SET_COLOR(5, 255, 255, 255); // assuming caps lock is at led #5\n } else {\n RGB_MATRIX_INDICATOR_SET_COLOR(5, 0, 0, 0);\n }\n return false;\n}
TIP
RGB indicators on split keyboards will require state information synced to the slave half (e.g. #define SPLIT_LAYER_STATE_ENABLE). See data sync options for more details.
If you want to just use RGB indicators without RGB matrix effect, it is not possible to disable the latter because toggling RGB off will disable everything. You can workaround it with solid effect and colors off using this init function:
This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.
This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.
QMK has the ability to control RGB LEDs attached to your keyboard. This is commonly called underglow, due to the LEDs often being mounted on the bottom of the keyboard, producing a nice diffused effect when combined with a translucent case.
Some keyboards come with RGB LEDs preinstalled. Others must have them installed after the fact. See the Hardware Modification section for information on adding RGB lighting to your keyboard.
Currently QMK supports the following addressable LEDs:
WS2811, WS2812, WS2812B, WS2812C, etc.
SK6812, SK6812MINI, SK6805
APA102
These LEDs are called "addressable" because instead of using a wire per color, each LED contains a small microchip that understands a special protocol sent over a single wire. The chip passes on the remaining data to the next LED, allowing them to be chained together. In this way, you can easily control the color of the individual LEDs.
On keyboards with onboard RGB LEDs, it is usually enabled by default. If it is not working for you, check that your rules.mk includes the following:
make
RGBLIGHT_ENABLE = yes
TIP
There are additional configuration options for ARM controllers that offer increased performance over the default WS2812 bitbang driver. Please see WS2812 Driver for more information.
For APA102 LEDs, add the following to your rules.mk:
make
RGBLIGHT_ENABLE = yes\nRGBLIGHT_DRIVER = apa102
At minimum you must define the data pin your LED strip is connected to, and the number of LEDs in the strip, in your config.h. For APA102 LEDs, you must also define the clock pin. If your keyboard has onboard RGB LEDs, and you are simply creating a keymap, you usually won't need to modify these.
Define
Description
WS2812_DI_PIN
The pin connected to the data pin of the LEDs (WS2812)
APA102_DI_PIN
The pin connected to the data pin of the LEDs (APA102)
APA102_CI_PIN
The pin connected to the clock pin of the LEDs (APA102)
RGBLIGHT_LED_COUNT
The number of LEDs connected
RGBLED_SPLIT
(Optional) For split keyboards, the number of LEDs connected on each half
Then you should be able to use the keycodes below to change the RGB lighting to your liking.
QMK uses Hue, Saturation, and Value to select colors rather than RGB. The color wheel below demonstrates how this works.
Changing the Hue cycles around the circle. Changing the Saturation moves between the inner and outer sections of the wheel, affecting the intensity of the color. Changing the Value sets the overall brightness.
Cycle through modes, reverse direction when Shift is held
QK_UNDERGLOW_MODE_PREVIOUS
UG_PREV
Cycle through modes in reverse, forward direction when Shift is held
QK_UNDERGLOW_HUE_UP
UG_HUEU
Increase hue, decrease hue when Shift is held
QK_UNDERGLOW_HUE_DOWN
UG_HUED
Decrease hue, increase hue when Shift is held
QK_UNDERGLOW_SATURATION_UP
UG_SATU
Increase saturation, decrease saturation when Shift is held
QK_UNDERGLOW_SATURATION_DOWN
UG_SATD
Decrease saturation, increase saturation when Shift is held
QK_UNDERGLOW_VALUE_UP
UG_VALU
Increase value (brightness), decrease value when Shift is held
QK_UNDERGLOW_VALUE_DOWN
UG_VALD
Decrease value (brightness), increase value when Shift is held
QK_UNDERGLOW_SPEED_UP
UG_SPDU
Increase effect speed (brightness), decrease speed when Shift is held
QK_UNDERGLOW_SPEED_DOWN
UG_SPDD
Decrease effect speed (brightness), increase speed when Shift is held
RGB_MODE_PLAIN
RGB_M_P
Static (no animation) mode (deprecated)
RGB_MODE_BREATHE
RGB_M_B
Breathing animation mode (deprecated)
RGB_MODE_RAINBOW
RGB_M_R
Rainbow animation mode (deprecated)
RGB_MODE_SWIRL
RGB_M_SW
Swirl animation mode (deprecated)
RGB_MODE_SNAKE
RGB_M_SN
Snake animation mode (deprecated)
RGB_MODE_KNIGHT
RGB_M_K
"Knight Rider" animation mode (deprecated)
RGB_MODE_XMAS
RGB_M_X
Christmas animation mode (deprecated)
RGB_MODE_GRADIENT
RGB_M_G
Static gradient animation mode (deprecated)
RGB_MODE_RGBTEST
RGB_M_T
Red, Green, Blue test animation mode (deprecated)
RGB_MODE_TWINKLE
RGB_M_TW
Twinkle animation mode (deprecated)
TIP
These keycodes cannot be used with functions like tap_code16() as they are not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside encoder_update_user() or process_record_user()), the equivalent RGB functions should be used instead.
WARNING
By default, if you have both the RGB Light and the RGB Matrix feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the *_DISABLE_KEYCODES option for the specific feature.
Note: For versions older than 0.6.117, The mode numbers were written directly. In quantum/rgblight/rgblight.h there is a contrast table between the old mode number and the current symbol.
Use these defines to add or remove animations from the firmware. When you are running low on flash space, it can be helpful to disable animations you are not using.
Define
Default
Description
RGBLIGHT_ANIMATIONS
Not defined
Enable all additional animation modes. (deprecated)
RGBLIGHT_EFFECT_ALTERNATING
Not defined
Enable alternating animation mode.
RGBLIGHT_EFFECT_BREATHING
Not defined
Enable breathing animation mode.
RGBLIGHT_EFFECT_CHRISTMAS
Not defined
Enable christmas animation mode.
RGBLIGHT_EFFECT_KNIGHT
Not defined
Enable knight animation mode.
RGBLIGHT_EFFECT_RAINBOW_MOOD
Not defined
Enable rainbow mood animation mode.
RGBLIGHT_EFFECT_RAINBOW_SWIRL
Not defined
Enable rainbow swirl animation mode.
RGBLIGHT_EFFECT_RGB_TEST
Not defined
Enable RGB test animation mode.
RGBLIGHT_EFFECT_SNAKE
Not defined
Enable snake animation mode.
RGBLIGHT_EFFECT_STATIC_GRADIENT
Not defined
Enable static gradient mode.
RGBLIGHT_EFFECT_TWINKLE
Not defined
Enable twinkle animation mode.
WARNING
RGBLIGHT_ANIMATIONS is being deprecated and animation modes should be explicitly defined.
// How long (in milliseconds) to wait between animation steps for each of the "Solid color breathing" animations\nconst uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {30, 20, 10, 5};\n\n// How long (in milliseconds) to wait between animation steps for each of the "Cycling rainbow" animations\nconst uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[] PROGMEM = {120, 60, 30};\n\n// How long (in milliseconds) to wait between animation steps for each of the "Swirling rainbow" animations\nconst uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {100, 50, 20};\n\n// How long (in milliseconds) to wait between animation steps for each of the "Snake" animations\nconst uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 50, 20};\n\n// How long (in milliseconds) to wait between animation steps for each of the "Knight" animations\nconst uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {127, 63, 31};\n\n// How long (in milliseconds) to wait between animation steps for each of the "Twinkle" animations\nconst uint8_t RGBLED_TWINKLE_INTERVALS[] PROGMEM = {50, 25, 10};\n\n// These control which hues are selected for each of the "Static gradient" modes\nconst uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
Note: Lighting Layers is an RGB Light feature, it will not work for RGB Matrix. See RGB Matrix Indicators for details on how to do so.
By including #define RGBLIGHT_LAYERS in your config.h file you can enable lighting layers. These make it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. Here's a video showing an example of what you can do.
By default, 8 layers are possible. This can be expanded to as many as 32 by overriding the definition of RGBLIGHT_MAX_LAYERS in config.h (e.g. #define RGBLIGHT_MAX_LAYERS 32). Please note, if you use a split keyboard, you will need to flash both sides of the split after changing this. Also, increasing the maximum will increase the firmware size, and will slow sync on split keyboards.
To define a layer, we modify keymap.c to list the LED ranges and the colors we want to overlay on them using an array of rgblight_segment_t using the RGBLIGHT_LAYER_SEGMENTS macro. We can define multiple layers and enable/disable them independently:
c
// Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!\nconst rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(\n {6, 4, HSV_RED}, // Light 4 LEDs, starting with LED 6\n {12, 4, HSV_RED} // Light 4 LEDs, starting with LED 12\n);\n// Light LEDs 9 & 10 in cyan when keyboard layer 1 is active\nconst rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(\n {9, 2, HSV_CYAN}\n);\n// Light LEDs 11 & 12 in purple when keyboard layer 2 is active\nconst rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(\n {11, 2, HSV_PURPLE}\n);\n// Light LEDs 13 & 14 in green when keyboard layer 3 is active\nconst rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(\n {13, 2, HSV_GREEN}\n);\n// etc..
We combine these layers into an array using the RGBLIGHT_LAYERS_LIST macro, and assign it to the rgblight_layers variable during keyboard setup. Note that you can only define up to 8 lighting layers. Any extra layers will be ignored. Since the different lighting layers overlap, the order matters in the array, with later layers taking precedence:
c
// Now define the array of layers. Later layers take precedence\nconst rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(\n my_capslock_layer,\n my_layer1_layer, // Overrides caps lock layer\n my_layer2_layer, // Overrides other layers\n my_layer3_layer // Overrides other layers\n);\n\nvoid keyboard_post_init_user(void) {\n // Enable the LED layers\n rgblight_layers = my_rgb_layers;\n}
Note: For split keyboards with two controllers, both sides need to be flashed when updating the contents of rgblight_layers.
Everything above just configured the definition of each lighting layer. We can now enable and disable the lighting layers whenever the state of the keyboard changes:
By including #define RGBLIGHT_LAYER_BLINK in your config.h file you can turn a lighting layer on for a specified duration. Once the specified number of milliseconds has elapsed the layer will be turned off. This is useful, e.g., if you want to acknowledge some action (e.g. toggling some setting):
c
const rgblight_segment_t PROGMEM _yes_layer[] = RGBLIGHT_LAYER_SEGMENTS( {9, 6, HSV_GREEN} );\nconst rgblight_segment_t PROGMEM _no_layer[] = RGBLIGHT_LAYER_SEGMENTS( {9, 6, HSV_RED} );\n\nconst rgblight_segment_t* const PROGMEM _rgb_layers[] =\n RGBLIGHT_LAYERS_LIST( _yes_layer, _no_layer );\n\nvoid keyboard_post_init_user(void) {\n rgblight_layers = _rgb_layers;\n}\n\n// Note we user post_process_record_user because we want the state\n// after the flag has been flipped...\nvoid post_process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case QK_DEBUG_TOGGLE:\n rgblight_blink_layer(debug_enable ? 0 : 1, 500);\n break;\n\n case NK_TOGG:\n case NK_ON:\n case NK_OFF:\n rgblight_blink_layer(keymap_config.nkro ? 0 : 1, 500);\n break;\n }\n}
You can also use rgblight_blink_layer_repeat to specify the amount of times the layer is supposed to blink. Using the layers from above,
would turn the layer 0 (or 1) on and off again three times when DB_TOGG is pressed.
Blinking accumulates layers so if multiple layers are set blinking at the same time they will all blink for the duration and repeat times of the last layer to be blinked. To stop these other layers from blinking use rgblight_unblink_layer or rgblight_unblink_all_but_layer:
Lighting layers on split keyboards will require layer state synced to the slave half (e.g. #define SPLIT_LAYER_STATE_ENABLE). See data sync options for more details.
Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with UG_TOGG keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add #define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF to your config.h.
Usually lighting layers apply their configured brightness once activated. If you would like lighting layers to retain the currently used brightness (as returned by rgblight_get_val()), add #define RGBLIGHT_LAYERS_RETAIN_VAL to your config.h.
If you need to change your RGB lighting in code, for example in a macro to change the color whenever you switch layers, QMK provides a set of functions to assist you. See rgblight.h for the full list, but the most commonly used functions include:
Set a single LED to the given RGB value, where r/g/b are between 0 and 255 and index is between 0 and RGBLIGHT_LED_COUNT (not written to EEPROM)
rgblight_sethsv_at(h, s, v, index)
Set a single LED to the given HSV value, where h/s/v are between 0 and 255, and index is between 0 and RGBLIGHT_LED_COUNT (not written to EEPROM)
rgblight_setrgb_range(r, g, b, start, end)
Set a continuous range of LEDs to the given RGB value, where r/g/b are between 0 and 255 and start(included) and stop(excluded) are between 0 and RGBLIGHT_LED_COUNT (not written to EEPROM)
rgblight_sethsv_range(h, s, v, start, end)
Set a continuous range of LEDs to the given HSV value, where h/s/v are between 0 and 255, and start(included) and stop(excluded) are between 0 and RGBLIGHT_LED_COUNT (not written to EEPROM)
rgblight_setrgb(r, g, b)
Set effect range LEDs to the given RGB value where r/g/b are between 0 and 255 (not written to EEPROM)
rgblight_setrgb_master(r, g, b)
Set the LEDs on the master side to the given RGB value, where r/g/b are between 0 and 255 (not written to EEPROM)
rgblight_setrgb_slave(r, g, b)
Set the LEDs on the slave side to the given RGB value, where r/g/b are between 0 and 255 (not written to EEPROM)
rgblight_sethsv_master(h, s, v)
Set the LEDs on the master side to the given HSV value, where h/s/v are between 0 and 255 (not written to EEPROM)
rgblight_sethsv_slave(h, s, v)
Set the LEDs on the slave side to the given HSV value, where h/s/v are between 0 and 255 (not written to EEPROM)
Example:
c
rgblight_sethsv_at(HSV_WHITE, 0); // led 0\nrgblight_sethsv_at(HSV_RED, 1); // led 1\nrgblight_sethsv_at(HSV_GREEN, 2); // led 2\n// The above functions automatically calls rgblight_set(), so there is no need to call it explicitly.\n// Note that it is inefficient to call repeatedly.
If you want to make the logical order of LEDs different from the electrical connection order, you can do this by defining the RGBLIGHT_LED_MAP macro in your config.h.
Normally, the contents of the LED buffer are output to the LEDs in the same order.
By defining RGBLIGHT_LED_MAP as in the example below, you can specify the LED with addressing in reverse order of the electrical connection order.
Using the rgblight_set_clipping_range() function, you can prepare more buffers than the actual number of LEDs, and output some of the buffers to the LEDs. This is useful if you want the split keyboard to treat left and right LEDs as logically contiguous.
You can set the Clipping Range by executing the following code.
c
// some source\nrgblight_set_clipping_range(3, 4);
In addition to setting the Clipping Range, you can use RGBLIGHT_LED_MAP together.
If your keyboard lacks onboard underglow LEDs, you may often be able to solder on an RGB LED strip yourself. You will need to find an unused pin to wire to the data pin of your LED strip. Some keyboards may break out unused pins from the MCU to make soldering easier. The other two pins, VCC and GND, must also be connected to the appropriate power pins.
Velocikey is a feature that lets you control the speed of lighting effects (like the Rainbow Swirl effect) with the speed of your typing. The faster you type, the faster the lights will go!
Velocikey doesn't currently support any configuration via keyboard settings. If you want to adjust something like the speed increase or decay rate, you would need to edit velocikey.c and adjust the values there to achieve the kinds of speeds that you like.
', 130);
+const _hoisted_131 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_131);
+}
+const rgblight = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ rgblight as default
+};
diff --git a/assets/features_rgblight.md.Caa29UD3.lean.js b/assets/features_rgblight.md.Caa29UD3.lean.js
new file mode 100644
index 0000000..9a7d7bf
--- /dev/null
+++ b/assets/features_rgblight.md.Caa29UD3.lean.js
@@ -0,0 +1,16 @@
+import { _ as _imports_0 } from "./chunks/color-wheel.DIUCmfNZ.js";
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"RGB Lighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/rgblight.md","filePath":"features/rgblight.md"}');
+const _sfc_main = { name: "features/rgblight.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 130);
+const _hoisted_131 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_131);
+}
+const rgblight = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ rgblight as default
+};
diff --git a/assets/features_secure.md.C1VgkmKA.js b/assets/features_secure.md.C1VgkmKA.js
new file mode 100644
index 0000000..5a910f1
--- /dev/null
+++ b/assets/features_secure.md.C1VgkmKA.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Secure","description":"","frontmatter":{},"headers":[],"relativePath":"features/secure.md","filePath":"features/secure.md"}');
+const _sfc_main = { name: "features/secure.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
The secure feature aims to prevent unwanted interaction without user intervention.
TIP
Secure does not currently implement encryption/decryption/etc and should not be a replacement where a strong hardware/software based solution is required.
Once unlocked, the keyboard will revert back to a locked state after the configured timeout. The timeout can be refreshed by using the secure_activity_event function, for example from one of the various hooks.
The Send String API is part of QMK's macro system. It allows for sequences of keystrokes to be sent automatically.
The full ASCII character set is supported, along with all of the keycodes in the Basic Keycode range (as these are the only ones that will actually be sent to the host).
TIP
Unicode characters are not supported with this API -- see the Unicode feature instead.
The Send String functions accept C string literals, but specific keycodes can be injected with the below macros. All of the keycodes in the Basic Keycode range are supported (as these are the only ones that will actually be sent to the host), but with an X_ prefix instead of KC_.
Macro
Description
SS_TAP(x)
Send a keydown, then keyup, event for the given Send String keycode
SS_DOWN(x)
Send a keydown event for the given Send String keycode
SS_UP(x)
Send a keyup event for the given Send String keycode
SS_DELAY(ms)
Wait for ms milliseconds
The following characters are also mapped to their respective keycodes for convenience:
Since QMK has experimental support for MIDI, you can now turn your keyboard into a step sequencer!
WARNING
This feature is highly experimental, it has only been tested on a Planck EZ so far. Also, the scope will be limited to support the drum machine use-case to start with.
You can program up to 8 independent tracks with the step sequencer. Select the tracks you want to edit, enable or disable some steps, and start the sequence!
While the tempo defines the absolute speed at which the sequencer goes through the steps, the resolution defines the granularity of these steps (from coarser to finer).
Steve Losh described the Space Cadet Shift quite well. Essentially, when you tap Left Shift on its own, you get an opening parenthesis; tap Right Shift on its own and you get the closing one. When held, the Shift keys function as normal. Yes, it's as cool as it sounds, and now even cooler supporting Control and Alt as well!
Space Cadet's functionality can conflict with the default Command functionality when both Shift keys are held at the same time. See the Command feature for info on how to change it, or make sure that Command is disabled in your rules.mk with:
By default Space Cadet assumes a US ANSI layout, but if your layout uses different keys for parentheses, you can redefine them in your config.h. In addition, you can redefine the modifier to send on tap, or even send no modifier at all. The new configuration defines bundle all options up into a single define of 3 key codes in this order: the Modifier when held or when used with other keys, the Tap Modifer sent when tapped (no modifier if KC_TRNS), finally the Keycode sent when tapped. Now keep in mind, mods from other keys will still apply to the Keycode if say KC_RSFT is held while tapping SC_LSPO key with KC_TRNS as the Tap Modifer.
Define
Default
Description
LSPO_KEYS
KC_LSFT, LSPO_MOD, LSPO_KEY
Send KC_LSFT when held, the mod and key defined by LSPO_MOD and LSPO_KEY.
RSPC_KEYS
KC_RSFT, RSPC_MOD, RSPC_KEY
Send KC_RSFT when held, the mod and key defined by RSPC_MOD and RSPC_KEY.
LCPO_KEYS
KC_LCTL, KC_LSFT, KC_9
Send KC_LCTL when held, the mod KC_LSFT with the key KC_9 when tapped.
RCPC_KEYS
KC_RCTL, KC_RSFT, KC_0
Send KC_RCTL when held, the mod KC_RSFT with the key KC_0 when tapped.
LAPO_KEYS
KC_LALT, KC_LSFT, KC_9
Send KC_LALT when held, the mod KC_LSFT with the key KC_9 when tapped.
RAPC_KEYS
KC_RALT, KC_RSFT, KC_0
Send KC_RALT when held, the mod KC_RSFT with the key KC_0 when tapped.
SFTENT_KEYS
KC_RSFT, KC_TRNS, SFTENT_KEY
Send KC_RSFT when held, no mod with the key SFTENT_KEY when tapped.
SPACE_CADET_MODIFIER_CARRYOVER
Not defined
Store current modifiers before the hold mod is pressed and use them with the tap mod and keycode. Useful for when you frequently release a modifier before triggering Space Cadet.
These defines are used in the above defines internally to support backwards compatibility, so you may continue to use them, however the above defines open up a larger range of flexibility than before. As an example, say you want to not send any modifier when you tap just SC_LSPO, with the old defines you had an all or nothing choice of using the DISABLE_SPACE_CADET_MODIFIER define. Now you can define that key as: #define LSPO_KEYS KC_LSFT, KC_TRNS, KC_9. This tells the system to set Left Shift if held or used with other keys, then on tap send no modifier (transparent) with the KC_9.
Define
Default
Description
LSPO_KEY
KC_9
The keycode to send when Left Shift is tapped
RSPC_KEY
KC_0
The keycode to send when Right Shift is tapped
LSPO_MOD
KC_LSFT
The modifier to apply to LSPO_KEY
RSPC_MOD
KC_RSFT
The modifier to apply to RSPC_KEY
SFTENT_KEY
KC_ENT
The keycode to send when the Shift key is tapped
DISABLE_SPACE_CADET_MODIFIER
Not defined
If defined, prevent the Space Cadet from applying a modifier
', 16);
+const _hoisted_17 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_17);
+}
+const space_cadet = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ space_cadet as default
+};
diff --git a/assets/features_space_cadet.md.D3jhCzMk.lean.js b/assets/features_space_cadet.md.D3jhCzMk.lean.js
new file mode 100644
index 0000000..64ccb86
--- /dev/null
+++ b/assets/features_space_cadet.md.D3jhCzMk.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Space Cadet: The Future, Built In","description":"","frontmatter":{},"headers":[],"relativePath":"features/space_cadet.md","filePath":"features/space_cadet.md"}');
+const _sfc_main = { name: "features/space_cadet.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 16);
+const _hoisted_17 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_17);
+}
+const space_cadet = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ space_cadet as default
+};
diff --git a/assets/features_split_keyboard.md.CNVf0IPB.js b/assets/features_split_keyboard.md.CNVf0IPB.js
new file mode 100644
index 0000000..2cec8ad
--- /dev/null
+++ b/assets/features_split_keyboard.md.CNVf0IPB.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Split Keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"features/split_keyboard.md","filePath":"features/split_keyboard.md"}');
+const _sfc_main = { name: "features/split_keyboard.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Many keyboards in the QMK Firmware repo are "split" keyboards. They use two controllers—one plugging into USB, and the second connected by a serial or an I2C connection over a TRRS or similar cable.
Split keyboards can have a lot of benefits, but there is some additional work needed to get them enabled.
QMK Firmware has a generic implementation that is usable by any board, as well as numerous board specific implementations.
For this, we will mostly be talking about the generic implementation used by the Let's Split and other keyboards.
WARNING
ARM split supports most QMK subsystems when using the 'serial' and 'serial_usart' drivers. I2C slave is currently unsupported.
WARNING
Both sides must use the same MCU family, for eg two Pro Micro-compatible controllers or two Blackpills. Currently, mixing AVR and ARM is not possible as ARM vs AVR uses different method for serial communication, and are not compatible. Moreover Blackpill's uses 3.3v logic, and atmega32u4 uses 5v logic.
The most commonly used connection is a TRRS cable and jacks. These provide 4 wires, making them very useful for split keyboards, and are easy to find.
However, since one of the wires carries VCC, this means that the boards are not hot pluggable. You should always disconnect the board from USB before unplugging and plugging in TRRS cables, or you can short the controller, or worse.
Another option is to use phone cables (as in, old school RJ-11/RJ-14 cables). Make sure that you use one that actually supports 4 wires/lanes.
However, USB cables, SATA cables, and even just 4 wires have been known to be used for communication between the controllers.
WARNING
Using USB cables for communication between the controllers works just fine, but the connector could be mistaken for a normal USB connection and potentially short out the keyboard, depending on how it's wired. For this reason, they are not recommended for connecting split keyboards.
The 4 wires of the TRRS cable need to connect GND, VCC, and SCL and SDA (aka PD0/pin 3 and PD1/pin 2, respectively) between the two Pro Micros.
The pull-up resistors may be placed on either half. If you wish to use the halves independently, it is also possible to use 4 resistors and have the pull-ups in both halves. Note that the total resistance for the connected system should be within spec at 2.2k-10kOhm, with an 'ideal' at 4.7kOhm, regardless of the placement and number.
Configuring your layout in a split keyboard works slightly differently to a non-split keyboard. Take for example the following layout. The top left numbers refer to the matrix row and column, and the bottom right are the order of the keys in the layout:
Since the matrix scanning procedure operates on entire rows, it first populates the left half's rows, then the right half's. Thus, the matrix as QMK views it has double the rows instead of double the columns:
By default, the firmware does not know which side is which; it needs some help to determine that. There are several ways to do this, listed in order of precedence.
You can configure the firmware to read a pin on the controller to determine handedness. To do this, add the following to your config.h file:
c
#define SPLIT_HAND_PIN B7
This will read the specified pin. By default, if it's high, then the controller assumes it is the left hand, and if it's low, it's assumed to be the right side.
This behaviour can be flipped by adding this to you config.h file:
You can configure the firmware to read key matrix pins on the controller to determine handedness. To do this, add the following to your config.h file:
c
#define SPLIT_HAND_MATRIX_GRID D0, F1
The first pin is the output pin and the second is the input pin.
Some keyboards have unused intersections in the key matrix. This setting uses one of these unused intersections to determine the handedness.
Normally, when a diode is connected to an intersection, it is judged to be right. If you add the following definition, it will be judged to be left.
c
#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT
Note that adding a diode at a previously unused intersection will effectively tell the firmware that there is a key held down at that point. You can instruct qmk to ignore that intersection by defining MATRIX_MASKED and then defining a matrix_row_t matrix_mask[MATRIX_ROWS] array in your keyboard config. Each bit of a single value (starting form the least-significant bit) is used to tell qmk whether or not to pay attention to key presses at that intersection.
While MATRIX_MASKED isn't necessary to use SPLIT_HAND_MATRIX_GRID successfully, without it you may experience issues trying to suspend your computer with your keyboard attached as the matrix will always report at least one key-press.
This method sets the keyboard's handedness by setting a flag in the persistent storage (EEPROM). This is checked when the controller first starts up, and determines what half the keyboard is, and how to orient the keyboard layout.
To enable this method, add the following to your config.h file:
c
#define EE_HANDS
Next, you will have to flash the correct handedness option to the controller on each halve. You can do this manually with the following bootloader targets using qmk flash -kb <keyboard> -km <keymap> -bl <bootloader> command to flash:
Microcontroller Type
Bootloader Parameter
AVR controllers with Caterina bootloader (e.g. Pro Micro)
avrdude-split-left avrdude-split-right
AVR controllers with the stock Amtel DFU or DFU compatible bootloader (e.g. Elite-C)
dfu-split-left dfu-split-right
ARM controllers with a DFU compatible bootloader (e.g. Proton-C)
dfu-util-split-left dfu-util-split-right
ARM controllers with a UF2 compatible bootloader (e.g. RP2040)
uf2-split-left uf2-split-right
Example for crkbd/rev1 keyboard with normal AVR Pro Micro MCUs, reset the left controller and run:
Some controllers (e.g. Blackpill with DFU compatible bootloader) will need to be flashed with handedness bootloader parameter every time because it is not retained between flashes.
TIP
QMK Toolbox can also be used to flash EEPROM handedness files. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand
This setting is not changed when re-initializing the EEPROM using the EE_CLR key, or using the eeconfig_init() function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the EEPROM, like how the QMK Toolbox's "Reset EEPROM" button works), you'll need to re-flash the controller with the EEPROM files.
You can find the EEPROM files in the QMK firmware repo, here.
Because not every split keyboard is identical, there are a number of additional options that can be configured in your config.h file.
c
#define USE_I2C
This configures the use of I2C support for split keyboard transport (AVR only).
c
#define SOFT_SERIAL_PIN D0
This sets the pin to be used for serial communication. If you're not using serial, you shouldn't need to define this.
However, if you are using serial and I2C on the board, you will need to set this, and to something other than D0 and D1 (as these are used for I2C communication).
c
#define SELECT_SOFT_SERIAL_SPEED {#}
If you're having issues with serial communication, you can change this value, as it controls the communication speed for serial. The default is 1, and the possible values are:
0: about 189kbps (Experimental only)
1: about 137kbps (default)
2: about 75kbps
3: about 39kbps
4: about 26kbps
5: about 20kbps
c
#define FORCED_SYNC_THROTTLE_MS 100
This sets the maximum number of milliseconds before forcing a synchronization of data from master to slave. Under normal circumstances this sync occurs whenever the data changes, for safety a data transfer occurs after this number of milliseconds if no change has been detected since the last sync.
c
#define SPLIT_MAX_CONNECTION_ERRORS 10
This sets the maximum number of failed communication attempts (one per scan cycle) from the master part before it assumes that no slave part is connected. This makes it possible to use a master part without the slave part connected.
Set to 0 to disable the disconnection check altogether.
c
#define SPLIT_CONNECTION_CHECK_TIMEOUT 500
How long (in milliseconds) the master part should block all connection attempts to the slave after the communication has been flagged as disconnected (see SPLIT_MAX_CONNECTION_ERRORS above).
One communication attempt will be allowed everytime this amount of time has passed since the last attempt. If that attempt succeeds, the communication is seen as working again.
Set to 0 to disable this throttling of communications while disconnected. This can save you a couple of bytes of firmware size.
The following sync options add overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled. These can be enabled by adding the chosen option(s) to your config.h file.
c
#define SPLIT_TRANSPORT_MIRROR
This mirrors the master side matrix to the slave side for features that react or require knowledge of master side key presses on the slave side. The purpose of this feature is to support cosmetic use of key events (e.g. RGB reacting to keypresses).
c
#define SPLIT_LAYER_STATE_ENABLE
This enables syncing of the layer state between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the currently active layer.
c
#define SPLIT_LED_STATE_ENABLE
This enables syncing of the Host LED status (caps lock, num lock, etc) between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the Host LED status.
c
#define SPLIT_MODS_ENABLE
This enables transmitting modifier state (normal, weak, oneshot and oneshot locked) to the non primary side of the split keyboard. The purpose of this feature is to support cosmetic use of modifer state (e.g. displaying status on an OLED screen).
c
#define SPLIT_WPM_ENABLE
This enables transmitting the current WPM to the slave side of the split keyboard. The purpose of this feature is to support cosmetic use of WPM (e.g. displaying the current value on an OLED screen).
c
#define SPLIT_OLED_ENABLE
This enables transmitting the current OLED on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing.
c
#define SPLIT_ST7565_ENABLE
This enables transmitting the current ST7565 on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing.
c
#define SPLIT_POINTING_ENABLE
This enables transmitting the pointing device status to the master side of the split keyboard. The purpose of this feature is to enable use pointing devices on the slave side.
This enables the triggering of haptic feedback on the slave side of the split keyboard. This will send information to the slave side such as the mode, dwell, and whether buzz is enabled.
c
#define SPLIT_ACTIVITY_ENABLE
This synchronizes the activity timestamps between sides of the split keyboard, allowing for activity timeouts to occur.
QMK's split transport allows for arbitrary data transactions at both the keyboard and user levels. This is modelled on a remote procedure call, with the master invoking a function on the slave side, with the ability to send data from master to slave, process it slave side, and send data back from slave to master.
To leverage this, a keyboard or user/keymap can define a comma-separated list of transaction IDs:
c
// for keyboard-level data sync:\n#define SPLIT_TRANSACTION_IDS_KB KEYBOARD_SYNC_A, KEYBOARD_SYNC_B\n// or, for user:\n#define SPLIT_TRANSACTION_IDS_USER USER_SYNC_A, USER_SYNC_B, USER_SYNC_C
These transaction IDs then need a slave-side handler function to be registered with the split transport, for example:
c
typedef struct _master_to_slave_t {\n int m2s_data;\n} master_to_slave_t;\n\ntypedef struct _slave_to_master_t {\n int s2m_data;\n} slave_to_master_t;\n\nvoid user_sync_a_slave_handler(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) {\n const master_to_slave_t *m2s = (const master_to_slave_t*)in_data;\n slave_to_master_t *s2m = (slave_to_master_t*)out_data;\n s2m->s2m_data = m2s->m2s_data + 5; // whatever comes in, add 5 so it can be sent back\n}\n\nvoid keyboard_post_init_user(void) {\n transaction_register_rpc(USER_SYNC_A, user_sync_a_slave_handler);\n}
The master side can then invoke the slave-side handler - for normal keyboard functionality to be minimally affected, any keyboard- or user-level code attempting to sync data should be throttled:
c
void housekeeping_task_user(void) {\n if (is_keyboard_master()) {\n // Interact with slave every 500ms\n static uint32_t last_sync = 0;\n if (timer_elapsed32(last_sync) > 500) {\n master_to_slave_t m2s = {6};\n slave_to_master_t s2m = {0};\n if(transaction_rpc_exec(USER_SYNC_A, sizeof(m2s), &m2s, sizeof(s2m), &s2m)) {\n last_sync = timer_read32();\n dprintf("Slave value: %d\\n", s2m.s2m_data); // this will now be 11, as the slave adds 5\n } else {\n dprint("Slave sync failed!\\n");\n }\n }\n }\n}
WARNING
It is recommended that any data sync between halves happens during the master side's housekeeping task. This ensures timely retries should failures occur.
If only one-way data transfer is needed, helper methods are provided:
This allows you to specify a different set of pins for the matrix on the right side. This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency). The number of pins in the right and left matrices must be the same, if you have a board with a different number of rows or columns on one side, pad out the extra spaces with NO_PIN and make sure you add the unused rows or columns to your matrix.
This allows you to specify a different set of encoder pins for the right side.
c
#define RGBLIGHT_SPLIT
This option enables synchronization of the RGB Light modes between the controllers of the split keyboard. This is for keyboards that have RGB LEDs that are directly wired to the controller (that is, they are not using the "extra data" option on the TRRS cable).
c
#define RGBLED_SPLIT { 6, 6 }
This sets how many LEDs are directly connected to each controller. The first number is the left side, and the second number is the right side.
TIP
This setting implies that RGBLIGHT_SPLIT is enabled, and will forcibly enable it, if it's not.
c
#define SPLIT_USB_DETECT
Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and theres's USB communication, then that half assumes it is the master, otherwise it assumes it is the slave.
Without this option, the master is the half that can detect voltage on the physical USB connection (VBUS detection).
Enabled by default on ChibiOS/ARM.
TIP
This setting will stop the ability to demo using battery packs.
c
#define SPLIT_USB_TIMEOUT 2000
This sets the maximum timeout when detecting master/slave when using SPLIT_USB_DETECT.
c
#define SPLIT_USB_TIMEOUT_POLL 10
This sets the poll frequency when detecting master/slave when using SPLIT_USB_DETECT
c
#define SPLIT_WATCHDOG_ENABLE
This will enable a software watchdog on any side delegated as slave and will reboot the keyboard if no successful communication occurs within SPLIT_WATCHDOG_TIMEOUT. This can be particularly helpful when SPLIT_USB_DETECT delegates both sides as slave in some circumstances.
c
#define SPLIT_WATCHDOG_TIMEOUT 3000
This set the maximum slave timeout when waiting for communication from master when using SPLIT_WATCHDOG_ENABLE
Master/slave delegation is made either by detecting voltage on VBUS connection or waiting for USB communication (SPLIT_USB_DETECT). Pro Micro boards can use VBUS detection out of the box and be used with or without SPLIT_USB_DETECT.
Many ARM boards, but not all, do not support VBUS detection. Because it is common that ARM boards lack VBUS detection, SPLIT_USB_DETECT is automatically defined on ARM targets (technically when ChibiOS is targetted).
Teensy boards lack VBUS detection out of the box and must have SPLIT_USB_DETECT defined. With the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the SPLIT_USB_DETECT option.
You'll only need a few things:
A knife (x-acto knife, ideally)
A solder station or hot air station
An appropriate Schottky diode, such as the PMEG2005EH
You'll need to cut the small trace between the 5V and center pads on the back of the Teensy.
Once you have done that, you will want to solder the diode from the 5V pad to the center pad.
You may need to use the 5V pad from the regulator block above as the pads were too small and placed too closely together to place the Schottky diode properly.
Nicinabox has a very nice and detailed guide for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information.
However, the RGB Light section is out of date, as it was written long before the RGB Split code was added to QMK Firmware. Instead, wire each strip up directly to the controller.
', 175);
+const _hoisted_176 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_176);
+}
+const split_keyboard = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ split_keyboard as default
+};
diff --git a/assets/features_split_keyboard.md.CNVf0IPB.lean.js b/assets/features_split_keyboard.md.CNVf0IPB.lean.js
new file mode 100644
index 0000000..7637041
--- /dev/null
+++ b/assets/features_split_keyboard.md.CNVf0IPB.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Split Keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"features/split_keyboard.md","filePath":"features/split_keyboard.md"}');
+const _sfc_main = { name: "features/split_keyboard.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 175);
+const _hoisted_176 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_176);
+}
+const split_keyboard = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ split_keyboard as default
+};
diff --git a/assets/features_st7565.md.DeApZTVP.js b/assets/features_st7565.md.DeApZTVP.js
new file mode 100644
index 0000000..d9792a8
--- /dev/null
+++ b/assets/features_st7565.md.DeApZTVP.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"ST7565 LCD Driver","description":"","frontmatter":{},"headers":[],"relativePath":"features/st7565.md","filePath":"features/st7565.md"}');
+const _sfc_main = { name: "features/st7565.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
For some purposes, you may need to read the current state of the display buffer. The st7565_read_raw function can be used to safely read bytes from the buffer.
In this example, calling fade_display in the st7565_task_user function will slowly fade away whatever is on the screen by turning random pixels off over time.
c
//Setup some mask which can be or'd with bytes to turn off pixels\nconst uint8_t single_bit_masks[8] = {127, 191, 223, 239, 247, 251, 253, 254};\n\nstatic void fade_display(void) {\n //Define the reader structure\n display_buffer_reader_t reader;\n uint8_t buff_char;\n if (random() % 30 == 0) {\n srand(timer_read());\n // Fetch a pointer for the buffer byte at index 0. The return structure\n // will have the pointer and the number of bytes remaining from this\n // index position if we want to perform a sequential read by\n // incrementing the buffer pointer\n reader = st7565_read_raw(0);\n //Loop over the remaining buffer and erase pixels as we go\n for (uint16_t i = 0; i < reader.remaining_element_count; i++) {\n //Get the actual byte in the buffer by dereferencing the pointer\n buff_char = *reader.current_element;\n if (buff_char != 0) {\n st7565_write_raw_byte(buff_char & single_bit_masks[rand() % 8], i);\n }\n //increment the pointer to fetch a new byte during the next loop\n reader.current_element++;\n }\n }\n}
In split keyboards, it is very common to have two displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from is_keyboard_master() or is_keyboard_left() found in split_util.h, e.g:
c
#ifdef ST7565_ENABLE\ndisplay_rotation_t st7565_init_user(display_rotation_t rotation) {\n if (!is_keyboard_master()) {\n return DISPLAY_ROTATION_180; // flips the display 180 degrees if offhand\n }\n\n return rotation;\n}\n\nvoid st7565_task_user(void) {\n if (is_keyboard_master()) {\n render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)\n } else {\n render_logo(); // Renders a static logo\n }\n}\n#endif
// Rotation enum values are flags\ntypedef enum {\n DISPLAY_ROTATION_0,\n DISPLAY_ROTATION_180\n} display_rotation_t;\n\n// Initialize the display, rotating the rendered output based on the define passed in.\n// Returns true if the was initialized successfully\nbool st7565_init(display_rotation_t rotation);\n\n// Called at the start of st7565_init, weak function overridable by the user\n// rotation - the value passed into st7565_init\n// Return new display_rotation_t if you want to override default rotation\ndisplay_rotation_t st7565_init_user(display_rotation_t rotation);\n\n// Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering\nvoid st7565_clear(void);\n\n// Renders the dirty chunks of the buffer to display\nvoid st7565_render(void);\n\n// Moves cursor to character position indicated by column and line, wraps if out of bounds\n// Max column denoted by 'st7565_max_chars()' and max lines by 'st7565_max_lines()' functions\nvoid st7565_set_cursor(uint8_t col, uint8_t line);\n\n// Advances the cursor to the next page, writing ' ' if true\n// Wraps to the begining when out of bounds\nvoid st7565_advance_page(bool clearPageRemainder);\n\n// Moves the cursor forward 1 character length\n// Advance page if there is not enough room for the next character\n// Wraps to the begining when out of bounds\nvoid st7565_advance_char(void);\n\n// Writes a single character to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Main handler that writes character data to the display buffer\nvoid st7565_write_char(const char data, bool invert);\n\n// Writes a string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\nvoid st7565_write(const char *data, bool invert);\n\n// Writes a string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Advances the cursor to the next page, wiring ' ' to the remainder of the current page\nvoid st7565_write_ln(const char *data, bool invert);\n\n// Pans the buffer to the right (or left by passing true) by moving contents of the buffer\n// Useful for moving the screen in preparation for new drawing\nvoid st7565_pan(bool left);\n\n// Returns a pointer to the requested start index in the buffer plus remaining\n// buffer length as struct\ndisplay_buffer_reader_t st7565_read_raw(uint16_t start_index);\n\n// Writes a string to the buffer at current cursor position\nvoid st7565_write_raw(const char *data, uint16_t size);\n\n// Writes a single byte into the buffer at the specified index\nvoid st7565_write_raw_byte(const char data, uint16_t index);\n\n// Sets a specific pixel on or off\n// Coordinates start at top-left and go right and down for positive x and y\nvoid st7565_write_pixel(uint8_t x, uint8_t y, bool on);\n\n// Writes a PROGMEM string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Remapped to call 'void st7565_write(const char *data, bool invert);' on ARM\nvoid st7565_write_P(const char *data, bool invert);\n\n// Writes a PROGMEM string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Advances the cursor to the next page, wiring ' ' to the remainder of the current page\n// Remapped to call 'void st7565_write_ln(const char *data, bool invert);' on ARM\nvoid st7565_write_ln_P(const char *data, bool invert);\n\n// Writes a PROGMEM string to the buffer at current cursor position\nvoid st7565_write_raw_P(const char *data, uint16_t size);\n\n// Can be used to manually turn on the screen if it is off\n// Returns true if the screen was on or turns on\nbool st7565_on(void);\n\n// Called when st7565_on() turns on the screen, weak function overridable by the user\n// Not called if the screen is already on\nvoid st7565_on_user(void);\n\n// Can be used to manually turn off the screen if it is on\n// Returns true if the screen was off or turns off\nbool st7565_off(void);\n\n// Called when st7565_off() turns off the screen, weak function overridable by the user\n// Not called if the screen is already off\nvoid st7565_off_user(void);\n\n// Returns true if the screen is currently on, false if it is\n// not\nbool st7565_is_on(void);\n\n// Basically it's st7565_render, but with timeout management and st7565_task_user calling!\nvoid st7565_task(void);\n\n// Called at the start of st7565_task, weak function overridable by the user\nvoid st7565_task_user(void);\n\n// Inverts the display\n// Returns true if the screen was or is inverted\nbool st7565_invert(bool invert);\n\n// Returns the maximum number of characters that will fit on a line\nuint8_t st7565_max_chars(void);\n\n// Returns the maximum number of lines that will fit on the display\nuint8_t st7565_max_lines(void);
', 26);
+const _hoisted_27 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_27);
+}
+const st7565 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ st7565 as default
+};
diff --git a/assets/features_st7565.md.DeApZTVP.lean.js b/assets/features_st7565.md.DeApZTVP.lean.js
new file mode 100644
index 0000000..46aad46
--- /dev/null
+++ b/assets/features_st7565.md.DeApZTVP.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"ST7565 LCD Driver","description":"","frontmatter":{},"headers":[],"relativePath":"features/st7565.md","filePath":"features/st7565.md"}');
+const _sfc_main = { name: "features/st7565.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 26);
+const _hoisted_27 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_27);
+}
+const st7565 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ st7565 as default
+};
diff --git a/assets/features_stenography.md.BmdUwUEg.js b/assets/features_stenography.md.BmdUwUEg.js
new file mode 100644
index 0000000..55009d6
--- /dev/null
+++ b/assets/features_stenography.md.BmdUwUEg.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Stenography in QMK","description":"","frontmatter":{},"headers":[],"relativePath":"features/stenography.md","filePath":"features/stenography.md"}');
+const _sfc_main = { name: "features/stenography.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Stenography is a method of writing most often used by court reports, closed-captioning, and real-time transcription for the deaf. In stenography words are chorded syllable by syllable with a mixture of spelling, phonetic, and shortcut (briefs) strokes. Professional stenographers can reach 200-300 WPM without any of the strain usually found in standard typing and with far fewer errors (>99.9% accuracy).
The Open Steno Project has built an open-source program called Plover that provides real-time translation of steno strokes into words and commands. It has an established dictionary and supports
Plover can work with any standard QWERTY keyboard, although it is more efficient if the keyboard supports NKRO (n-key rollover) to allow Plover to see all the pressed keys at once. An example keymap for Plover can be found in planck/keymaps/default. Switching to the PLOVER layer adjusts the position of the keyboard to support the number bar.
To enable NKRO, add NKRO_ENABLE = yes in your rules.mk and make sure to press NK_ON to turn it on because NKRO_ENABLE = yes merely adds the possibility of switching to NKRO mode but it doesn't automatically switch to it. If you want to automatically switch, add #define FORCE_NKRO in your config.h.
You may also need to adjust your layout, either in QMK or in Plover, if you have anything other than a standard layout. You may also want to purchase some steno-friendly keycaps to make it easier to hit multiple keys.
Plover also understands the language of several steno machines. QMK can speak a couple of these languages: TX Bolt and GeminiPR. An example layout can be found in planck/keymaps/steno.
When QMK speaks to Plover over a steno protocol, Plover will not use the keyboard as input. This means that you can switch back and forth between a standard keyboard and your steno keyboard, or even switch layers from Plover to standard and back without needing to activate/deactivate Plover.
In this mode, Plover expects to speak with a steno machine over a serial port so QMK will present itself to the operating system as a virtual serial port in addition to a keyboard.
INFO
Note: Due to hardware limitations, you might not be able to run both a virtual serial port and mouse emulation at the same time.
WARNING
Serial stenography protocols are not supported on V-USB keyboards.
To enable stenography protocols, add the following lines to your rules.mk:
TX Bolt communicates the status of 24 keys over a simple protocol in variable-sized (1–4 bytes) packets.
To select TX Bolt, add the following lines to your rules.mk:
make
STENO_ENABLE = yes\nSTENO_PROTOCOL = txbolt
Each byte of the packet represents a different group of steno keys. Determining the group of a certain byte of the packet is done by checking the first two bits, the remaining bits are set if the corresponding steno key was pressed for the stroke. The last set of keys (as indicated by leading 11) needs to keep track of less keys than there are bits so one of the bits is constantly 0.
The start of a new packet can be detected by comparing the group “ID” (the two MSBs) of the current byte to that of the previously received byte. If the group “ID” of the current byte is smaller or equal to that of the previous byte, it means that the current byte is the beginning of a new packet.
The format of TX Bolt packets is shown below.
00HWPKTS 01UE*OAR 10GLBPRF 110#ZDST
Examples of steno strokes and the associated packet:
GeminiPR encodes 42 keys into a 6-byte packet. While TX Bolt contains everything that is necessary for standard stenography, GeminiPR opens up many more options, including differentiating between top and bottom S-, and supporting non-English theories.
To select GeminiPR, add the following lines to your rules.mk:
make
STENO_ENABLE = yes\nSTENO_PROTOCOL = geminipr
All packets in the GeminiPR protocol consist of exactly six bytes, used as bit-arrays for different groups of keys. The beginning of a packet is indicated by setting the most significant bit (MSB) to 1 while setting the MSB of the remaining five bytes to 0.
If you wish to switch the serial protocol used to transfer the steno chords without having to recompile your keyboard firmware every time, you can press the QK_STENO_BOLT and QK_STENO_GEMINI keycodes in order to switch protocols on the fly.
To enable these special keycodes, add the following lines to your rules.mk:
make
STENO_ENABLE = yes\nSTENO_PROTOCOL = all
If you want to switch protocols programatically, as part of a custom macro for example, don't use tap_code(QK_STENO_*), as tap_code only supports basic keycodes. Instead, you should use steno_set_mode(STENO_MODE_*), whose valid arguments are STENO_MODE_BOLT and STENO_MODE_GEMINI.
The default protocol is Gemini PR but the last protocol used is stored in non-volatile memory so QMK will remember your choice between reboots of your keyboard — assuming that your keyboard features (emulated) EEPROM.
Naturally, this option takes the most amount of firmware space as it needs to compile the code for all the available stenography protocols. In most cases, compiling a single stenography protocol is sufficient.
After enabling stenography and optionally selecting a protocol, you may also need disable mouse keys, extra keys, or another USB endpoint to prevent conflicts. The builtin USB stack for some processors only supports a certain number of USB endpoints and the virtual serial port needed for steno fills 3 of them.
WARNING
If you had explicitly set VIRSTER_ENABLE = no, none of the serial stenography protocols (GeminiPR, TX Bolt) will work properly. You are expected to either set it to yes, remove the line from your rules.mk or send the steno chords yourself in an alternative way using the provided interceptable hooks.
In your keymap, create a new layer for Plover, that you can fill in with the steno keycodes. Remember to create a key to switch to the layer as well as a key for exiting the layer.
Once you have your keyboard flashed, launch Plover. Click the 'Configure...' button. In the 'Machine' tab, select the Stenotype Machine that corresponds to your desired protocol. Click the 'Configure...' button on this tab and enter the serial port or click 'Scan'. Baud rate is fine at 9600 (although you should be able to set as high as 115200 with no issues). Use the default settings for everything else (Data Bits: 8, Stop Bits: 1, Parity: N, no flow control).
To test your keymap, you can chord keys on your keyboard and either look at the output of the 'paper tape' (Tools > Paper Tape) or that of the 'layout display' (Tools > Layout Display). If your strokes correctly show up, you are now ready to steno!
The steno code has three interceptable hooks. If you define these functions, they will be called at certain points in processing; if they return true, processing continues, otherwise it's assumed you handled things.
This function is called when a chord is about to be sent. Mode will be one of STENO_MODE_BOLT or STENO_MODE_GEMINI. This represents the actual chord that would be sent via whichever protocol. You can modify the chord provided to alter what gets sent. Remember to return true if you want the regular sending process to happen.
This function is called when a keypress has come in, before it is processed. The keycode should be one of QK_STENO_BOLT, QK_STENO_GEMINI, or one of the STN_* key values.
This function is called after a key has been processed, but before any decision about whether or not to send a chord. This is where to put hooks for things like, say, live displays of steno chords or keys.
If record->event.pressed is false, and n_pressed_keys is 0 or 1, the chord will be sent shortly, but has not yet been sent. This relieves you of the need of keeping track of where a packet ends and another begins.
The chord argument contains the packet of the current chord as specified by the protocol in use. This is NOT simply a list of chorded steno keys of the form [STN_E, STN_U, STN_BR, STN_GR]. Refer to the appropriate protocol section of this document to learn more about the format of the packets in your steno protocol/mode of choice.
The n_pressed_keys argument is the number of physical keys actually being held down. This is not always equal to the number of bits set to 1 (aka the Hamming weight) in chord because it is possible to simultaneously press down four keys, then release three of those four keys and then press yet another key while the fourth finger is still holding down its key. At the end of this scenario given as an example, chord would have five bits set to 1 but n_pressed_keys would be set to 2 because there are only two keys currently being pressed down.
Note: TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both.
GeminiPR
TX Bolt
Steno Key
STN_N1
STN_NUM
Number bar #1
STN_N2
STN_NUM
Number bar #2
STN_N3
STN_NUM
Number bar #3
STN_N4
STN_NUM
Number bar #4
STN_N5
STN_NUM
Number bar #5
STN_N6
STN_NUM
Number bar #6
STN_N7
STN_NUM
Number bar #7
STN_N8
STN_NUM
Number bar #8
STN_N9
STN_NUM
Number bar #9
STN_NA
STN_NUM
Number bar #A
STN_NB
STN_NUM
Number bar #B
STN_NC
STN_NUM
Number bar #C
STN_S1
STN_SL
S- upper
STN_S2
STN_SL
S- lower
STN_TL
STN_TL
T-
STN_KL
STN_KL
K-
STN_PL
STN_PL
P-
STN_WL
STN_WL
W-
STN_HL
STN_HL
H-
STN_RL
STN_RL
R-
STN_A
STN_A
A vowel
STN_O
STN_O
O vowel
STN_ST1
STN_STR
* upper-left
STN_ST2
STN_STR
* lower-left
STN_ST3
STN_STR
* upper-right
STN_ST4
STN_STR
* lower-right
STN_E
STN_E
E vowel
STN_U
STN_U
U vowel
STN_FR
STN_FR
-F
STN_RR
STN_RR
-R
STN_PR
STN_PR
-P
STN_BR
STN_BR
-B
STN_LR
STN_LR
-L
STN_GR
STN_GR
-G
STN_TR
STN_TR
-T
STN_SR
STN_SR
-S
STN_DR
STN_DR
-D
STN_ZR
STN_ZR
-Z
STN_FN
(Function)
STN_RES1
(Reset 1)
STN_RES2
(Reset 2)
STN_PWR
(Power)
If you do not want to hit two keys with one finger combined keycodes can be used. These cause both keys to be reported as pressed or released. To use these keycodes define STENO_COMBINEDMAP in your config.h file.
Combined key
Key1
Key 2
STN_S3
STN_S1
STN_S2
STN_TKL
STN_TL
STN_KL
STN_PWL
STN_PL
STN_WL
STN_HRL
STN_HL
STN_RL
STN_FRR
STN_FR
STN_RR
STN_PBR
STN_PR
STN_BR
STN_LGR
STN_LR
STN_GR
STN_TSR
STN_TR
STN_SR
STN_DZR
STN_DR
STN_ZR
STN_AO
STN_A
STN_O
STN_EU
STN_E
STN_U
', 66);
+const _hoisted_67 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_67);
+}
+const stenography = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ stenography as default
+};
diff --git a/assets/features_stenography.md.BmdUwUEg.lean.js b/assets/features_stenography.md.BmdUwUEg.lean.js
new file mode 100644
index 0000000..00de877
--- /dev/null
+++ b/assets/features_stenography.md.BmdUwUEg.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Stenography in QMK","description":"","frontmatter":{},"headers":[],"relativePath":"features/stenography.md","filePath":"features/stenography.md"}');
+const _sfc_main = { name: "features/stenography.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 66);
+const _hoisted_67 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_67);
+}
+const stenography = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ stenography as default
+};
diff --git a/assets/features_swap_hands.md.ChjoVx_w.js b/assets/features_swap_hands.md.ChjoVx_w.js
new file mode 100644
index 0000000..e494f76
--- /dev/null
+++ b/assets/features_swap_hands.md.ChjoVx_w.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Swap-Hands Action","description":"","frontmatter":{},"headers":[],"relativePath":"features/swap_hands.md","filePath":"features/swap_hands.md"}');
+const _sfc_main = { name: "features/swap_hands.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
The swap-hands action allows support for one-handed typing without requiring a separate layer. Set SWAP_HANDS_ENABLE = yes in your keymap's rules.mk (creating it if needed), and define a hand_swap_config entry in your keymap. Now whenever the ACTION_SWAP_HANDS command key is pressed the keyboard is mirrored. For instance, to type "Hello, World" on QWERTY you would type ^Ge^s^s^w^c W^wr^sd
Note that the array indices are reversed same as the matrix and the values are of type keypos_t which is {col, row} and all values are zero-based. In the example above, hand_swap_config[2][4] (third row, fifth column) would return {7, 2} (third row, eighth column). Yes, this is confusing.
Turn on hand swap while held or until next key press
SH_TT swap-hands tap-toggle key is similar to layer tap-toggle. Tapping repeatedly (5 taps by default) will toggle swap-hands on or off, like SH_TOGG. Tap-toggle count can be changed by defining a value for TAPPING_TOGGLE.
Hit the semicolon key once, send a semicolon. Hit it twice, rapidly -- send a colon. Hit it three times, and your keyboard's LEDs do a wild dance. That's just one example of what Tap Dance can do. It's one of the nicest community-contributed features in the firmware, conceived and created by algernon in #451. Here's how algernon describes the feature:
With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter.
First, you will need TAP_DANCE_ENABLE = yes in your rules.mk, because the feature is disabled by default. This adds a little less than 1k to the firmware size.
Optionally, you might want to set a custom TAPPING_TERM time by adding something like this in your config.h file:
The TAPPING_TERM time is the maximum time allowed between taps of your Tap Dance key, and is measured in milliseconds. For example, if you used the above #define statement and set up a Tap Dance key that sends Space on single-tap and Enter on double-tap, then this key will send ENT only if you tap this key twice in less than 175ms. If you tap the key, wait more than 175ms, and tap the key again you'll end up sending SPC SPC instead. The TAPPING_TERM_PER_KEY definition is only needed if you control the tapping term through a custom get_tapping_term function, which may be needed because TAPPING_TERM affects not just tap-dance keys.
Next, you will want to define some tap-dance keys, which is easiest to do with the TD() macro. That macro takes a number which will later be used as an index into the tap_dance_actions array and turns it into a tap-dance keycode.
After this, you'll want to use the tap_dance_actions array to specify what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options:
ACTION_TAP_DANCE_DOUBLE(kc1, kc2): Sends the kc1 keycode when tapped once, kc2 otherwise. When the key is held, the appropriate keycode is registered: kc1 when pressed and held, kc2 when tapped once, then pressed and held.
ACTION_TAP_DANCE_LAYER_MOVE(kc, layer): Sends the kc keycode when tapped once, or moves to layer. (this functions like the TO layer keycode).
ACTION_TAP_DANCE_LAYER_TOGGLE(kc, layer): Sends the kc keycode when tapped once, or toggles the state of layer. (this functions like the TG layer keycode).
ACTION_TAP_DANCE_FN(fn): Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action.
ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn): Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
ACTION_TAP_DANCE_FN_ADVANCED_WITH_RELEASE(on_each_tap_fn, on_each_release_fn, on_dance_finished_fn, on_dance_reset_fn): This macro is identical to ACTION_TAP_DANCE_FN_ADVANCED with the addition of on_each_release_fn which is invoked every time the key for the tap dance is released. It is worth noting that on_each_release_fn will still be called even when the key is released after the dance finishes (e.g. if the key is released after being pressed and held for longer than the TAPPING_TERM).
The first option is enough for a lot of cases, that just want dual roles. For example, ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT) will result in Space being sent on single-tap, Enter otherwise.
WARNING
Keep in mind that only basic keycodes are supported here. Custom keycodes are not supported.
Similar to the first option, the second and third option are good for simple layer-switching cases.
For more complicated cases, like blink the LEDs, fiddle with the backlighting, and so on, use the fourth or fifth option. Examples of each are listed below.
Well, that's the bulk of it! You should now be able to work through the examples below, and to develop your own Tap Dance functionality. But if you want a deeper understanding of what's going on behind the scenes, then read on for the explanation of how it all works!
Let's go over the three functions mentioned in ACTION_TAP_DANCE_FN_ADVANCED in a little more detail. They all receive the same two arguments: a pointer to a structure that holds all dance related state information, and a pointer to a use case specific state variable. The three functions differ in when they are called. The first, on_each_tap_fn(), is called every time the tap dance key is pressed. Before it is called, the counter is incremented and the timer is reset. The second function, on_dance_finished_fn(), is called when the tap dance is interrupted or ends because TAPPING_TERM milliseconds have passed since the last tap. When the finished field of the dance state structure is set to true, the on_dance_finished_fn() is skipped. After on_dance_finished_fn() was called or would have been called, but no sooner than when the tap dance key is released, on_dance_reset_fn() is called. It is possible to end a tap dance immediately, skipping on_dance_finished_fn(), but not on_dance_reset_fn, by calling reset_tap_dance(state).
To accomplish this logic, the tap dance mechanics use three entry points. The main entry point is process_tap_dance(), called from process_record_quantum()afterprocess_record_kb() and process_record_user(). This function is responsible for calling on_each_tap_fn() and on_dance_reset_fn(). In order to handle interruptions of a tap dance, another entry point, preprocess_tap_dance() is run right at the beginning of process_record_quantum(). This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. Finally, tap_dance_task() periodically checks whether TAPPING_TERM has passed since the last key press and finishes a tap dance if that is the case.
This means that you have TAPPING_TERM time to tap the key again; you do not have to input all the taps within a single TAPPING_TERM timeframe. This allows for longer tap counts, with minimal impact on responsiveness.
Simple Example: Send ESC on Single Tap, CAPS_LOCK on Double Tap
Here's a simple example for a single definition:
In your rules.mk, add TAP_DANCE_ENABLE = yes
In your keymap.c file, define the variables and definitions, then add to your keymap:
c
// Tap Dance declarations\nenum {\n TD_ESC_CAPS,\n};\n\n// Tap Dance definitions\ntap_dance_action_t tap_dance_actions[] = {\n // Tap once for Escape, twice for Caps Lock\n [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),\n};\n\n// Add tap dance item to your keymap in place of a keycode\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n // ...\n TD(TD_ESC_CAPS)\n // ...\n};
Example 2: Turn LED Lights On Then Off, One at a Time
c
// On each tap, light up one LED, from right to left\n// On the fourth tap, turn them off from right to left\nvoid dance_flsh_each(tap_dance_state_t *state, void *user_data) {\n switch (state->count) {\n case 1:\n ergodox_right_led_3_on();\n break;\n case 2:\n ergodox_right_led_2_on();\n break;\n case 3:\n ergodox_right_led_1_on();\n break;\n case 4:\n ergodox_right_led_3_off();\n wait_ms(50);\n ergodox_right_led_2_off();\n wait_ms(50);\n ergodox_right_led_1_off();\n }\n}\n\n// On the fourth tap, set the keyboard on flash state\nvoid dance_flsh_finished(tap_dance_state_t *state, void *user_data) {\n if (state->count >= 4) {\n reset_keyboard();\n }\n}\n\n// If the flash state didn't happen, then turn off LEDs, left to right\nvoid dance_flsh_reset(tap_dance_state_t *state, void *user_data) {\n ergodox_right_led_1_off();\n wait_ms(50);\n ergodox_right_led_2_off();\n wait_ms(50);\n ergodox_right_led_3_off();\n}\n\n// All tap dances now put together. Example 2 is "CT_FLSH"\ntap_dance_action_t tap_dance_actions[] = {\n [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),\n [CT_EGG] = ACTION_TAP_DANCE_FN(dance_egg),\n [CT_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED(dance_flsh_each, dance_flsh_finished, dance_flsh_reset)\n};
With a little effort, powerful tap-hold configurations can be implemented as tap dances. To emit taps as early as possible, we need to act on releases of the tap dance key. There is no callback for this in the tap dance framework, so we use process_record_user().
Allow one key to have 4 (or more) functions, depending on number of presses, and if the key is held or tapped. Below is a specific example:
Tap = Send x
Hold = Send Control
Double Tap = Send Escape
Double Tap and Hold = Send Alt
You will need a few things that can be used for 'Quad Function Tap-Dance'.
You'll need to add these to the top of your keymap.c file, before your keymap.
c
typedef enum {\n TD_NONE,\n TD_UNKNOWN,\n TD_SINGLE_TAP,\n TD_SINGLE_HOLD,\n TD_DOUBLE_TAP,\n TD_DOUBLE_HOLD,\n TD_DOUBLE_SINGLE_TAP, // Send two single taps\n TD_TRIPLE_TAP,\n TD_TRIPLE_HOLD\n} td_state_t;\n\ntypedef struct {\n bool is_press_action;\n td_state_t state;\n} td_tap_t;\n\n// Tap dance enums\nenum {\n X_CTL,\n SOME_OTHER_DANCE\n};\n\ntd_state_t cur_dance(tap_dance_state_t *state);\n\n// For the x tap dance. Put it here so it can be used in any keymap\nvoid x_finished(tap_dance_state_t *state, void *user_data);\nvoid x_reset(tap_dance_state_t *state, void *user_data);
Now, at the bottom of your keymap.c file, you'll need to add the following:
c
/* Return an integer that corresponds to what kind of tap dance should be executed.\n *\n * How to figure out tap dance state: interrupted and pressed.\n *\n * Interrupted: If the state of a dance is "interrupted", that means that another key has been hit\n * under the tapping term. This is typically indicative that you are trying to "tap" the key.\n *\n * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term\n * has ended, but the key is still being pressed down. This generally means the key is being "held".\n *\n * One thing that is currently not possible with qmk software in regards to tap dance is to mimic the "permissive hold"\n * feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.\n * For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.\n *\n * Good places to put an advanced tap dance:\n * z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon\n *\n * Criteria for "good placement" of a tap dance key:\n * Not a key that is hit frequently in a sentence\n * Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or\n * in a web form. So 'tab' would be a poor choice for a tap dance.\n * Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the\n * letter 'p', the word 'pepper' would be quite frustrating to type.\n *\n * For the third point, there does exist the 'TD_DOUBLE_SINGLE_TAP', however this is not fully tested\n *\n */\ntd_state_t cur_dance(tap_dance_state_t *state) {\n if (state->count == 1) {\n if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;\n // Key has not been interrupted, but the key is still held. Means you want to send a 'HOLD'.\n else return TD_SINGLE_HOLD;\n } else if (state->count == 2) {\n // TD_DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap\n // action when hitting 'pp'. Suggested use case for this return value is when you want to send two\n // keystrokes of the key, and not the 'double tap' action/macro.\n if (state->interrupted) return TD_DOUBLE_SINGLE_TAP;\n else if (state->pressed) return TD_DOUBLE_HOLD;\n else return TD_DOUBLE_TAP;\n }\n\n // Assumes no one is trying to type the same letter three times (at least not quickly).\n // If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add\n // an exception here to return a 'TD_TRIPLE_SINGLE_TAP', and define that enum just like 'TD_DOUBLE_SINGLE_TAP'\n if (state->count == 3) {\n if (state->interrupted || !state->pressed) return TD_TRIPLE_TAP;\n else return TD_TRIPLE_HOLD;\n } else return TD_UNKNOWN;\n}\n\n// Create an instance of 'td_tap_t' for the 'x' tap dance.\nstatic td_tap_t xtap_state = {\n .is_press_action = true,\n .state = TD_NONE\n};\n\nvoid x_finished(tap_dance_state_t *state, void *user_data) {\n xtap_state.state = cur_dance(state);\n switch (xtap_state.state) {\n case TD_SINGLE_TAP: register_code(KC_X); break;\n case TD_SINGLE_HOLD: register_code(KC_LCTL); break;\n case TD_DOUBLE_TAP: register_code(KC_ESC); break;\n case TD_DOUBLE_HOLD: register_code(KC_LALT); break;\n // Last case is for fast typing. Assuming your key is `f`:\n // For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.\n // In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.\n case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X); break;\n default: break;\n }\n}\n\nvoid x_reset(tap_dance_state_t *state, void *user_data) {\n switch (xtap_state.state) {\n case TD_SINGLE_TAP: unregister_code(KC_X); break;\n case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;\n case TD_DOUBLE_TAP: unregister_code(KC_ESC); break;\n case TD_DOUBLE_HOLD: unregister_code(KC_LALT); break;\n case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X); break;\n default: break;\n }\n xtap_state.state = TD_NONE;\n}\n\ntap_dance_action_t tap_dance_actions[] = {\n [X_CTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, x_finished, x_reset)\n};
And then simply use TD(X_CTL) anywhere in your keymap.
INFO
In this configuration "hold" takes place after tap dance timeout. To achieve instant hold, remove state->interrupted checks in conditions. As a result you may use comfortable longer tapping periods to have more time for taps and not to wait too long for holds (try starting with doubled TAPPING_TERM).
Example 5: Using tap dance for advanced mod-tap and layer-tap keys
Tap dance can be used to emulate MT() and LT() behavior when the tapped code is not a basic keycode. This is useful to send tapped keycodes that normally require Shift, such as parentheses or curly braces—or other modified keycodes, such as Control + X.
Below your layers and custom keycodes, add the following:
c
// Tap Dance keycodes\nenum td_keycodes {\n ALT_LP // Our example key: `LALT` when held, `(` when tapped. Add additional keycodes for each tapdance.\n};\n\n// Define a type containing as many tapdance states as you need\ntypedef enum {\n TD_NONE,\n TD_UNKNOWN,\n TD_SINGLE_TAP,\n TD_SINGLE_HOLD,\n TD_DOUBLE_SINGLE_TAP\n} td_state_t;\n\n// Create a global instance of the tapdance state type\nstatic td_state_t td_state;\n\n// Declare your tapdance functions:\n\n// Function to determine the current tapdance state\ntd_state_t cur_dance(tap_dance_state_t *state);\n\n// `finished` and `reset` functions for each tapdance keycode\nvoid altlp_finished(tap_dance_state_t *state, void *user_data);\nvoid altlp_reset(tap_dance_state_t *state, void *user_data);
Below your LAYOUT, define each of the tapdance functions:
c
// Determine the tapdance state to return\ntd_state_t cur_dance(tap_dance_state_t *state) {\n if (state->count == 1) {\n if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;\n else return TD_SINGLE_HOLD;\n }\n\n if (state->count == 2) return TD_DOUBLE_SINGLE_TAP;\n else return TD_UNKNOWN; // Any number higher than the maximum state value you return above\n}\n\n// Handle the possible states for each tapdance keycode you define:\n\nvoid altlp_finished(tap_dance_state_t *state, void *user_data) {\n td_state = cur_dance(state);\n switch (td_state) {\n case TD_SINGLE_TAP:\n register_code16(KC_LPRN);\n break;\n case TD_SINGLE_HOLD:\n register_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_on(_MY_LAYER)` here\n break;\n case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term\n tap_code16(KC_LPRN);\n register_code16(KC_LPRN);\n break;\n default:\n break;\n }\n}\n\nvoid altlp_reset(tap_dance_state_t *state, void *user_data) {\n switch (td_state) {\n case TD_SINGLE_TAP:\n unregister_code16(KC_LPRN);\n break;\n case TD_SINGLE_HOLD:\n unregister_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_off(_MY_LAYER)` here\n break;\n case TD_DOUBLE_SINGLE_TAP:\n unregister_code16(KC_LPRN);\n break;\n default:\n break;\n }\n}\n\n// Define `ACTION_TAP_DANCE_FN_ADVANCED()` for each tapdance keycode, passing in `finished` and `reset` functions\ntap_dance_action_t tap_dance_actions[] = {\n [ALT_LP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altlp_finished, altlp_reset)\n};
Wrap each tapdance keycode in TD() when including it in your keymap, e.g. TD(ALT_LP).
Example 6: Using tap dance for momentary-layer-switch and layer-toggle keys
Tap Dance can be used to mimic MO(layer) and TG(layer) functionality. For this example, we will set up a key to function as KC_QUOT on single-tap, as MO(_MY_LAYER) on single-hold, and TG(_MY_LAYER) on double-tap.
The first step is to include the following code towards the beginning of your keymap.c:
c
// Define a type for as many tap dance states as you need\ntypedef enum {\n TD_NONE,\n TD_UNKNOWN,\n TD_SINGLE_TAP,\n TD_SINGLE_HOLD,\n TD_DOUBLE_TAP\n} td_state_t;\n\ntypedef struct {\n bool is_press_action;\n td_state_t state;\n} td_tap_t;\n\nenum {\n QUOT_LAYR, // Our custom tap dance key; add any other tap dance keys to this enum \n};\n\n// Declare the functions to be used with your tap dance key(s)\n\n// Function associated with all tap dances\ntd_state_t cur_dance(tap_dance_state_t *state);\n\n// Functions associated with individual tap dances\nvoid ql_finished(tap_dance_state_t *state, void *user_data);\nvoid ql_reset(tap_dance_state_t *state, void *user_data);
Towards the bottom of your keymap.c, include the following code:
c
// Determine the current tap dance state\ntd_state_t cur_dance(tap_dance_state_t *state) {\n if (state->count == 1) {\n if (!state->pressed) return TD_SINGLE_TAP;\n else return TD_SINGLE_HOLD;\n } else if (state->count == 2) return TD_DOUBLE_TAP;\n else return TD_UNKNOWN;\n}\n\n// Initialize tap structure associated with example tap dance key\nstatic td_tap_t ql_tap_state = {\n .is_press_action = true,\n .state = TD_NONE\n};\n\n// Functions that control what our tap dance key does\nvoid ql_finished(tap_dance_state_t *state, void *user_data) {\n ql_tap_state.state = cur_dance(state);\n switch (ql_tap_state.state) {\n case TD_SINGLE_TAP:\n tap_code(KC_QUOT);\n break;\n case TD_SINGLE_HOLD:\n layer_on(_MY_LAYER);\n break;\n case TD_DOUBLE_TAP:\n // Check to see if the layer is already set\n if (layer_state_is(_MY_LAYER)) {\n // If already set, then switch it off\n layer_off(_MY_LAYER);\n } else {\n // If not already set, then switch the layer on\n layer_on(_MY_LAYER);\n }\n break;\n default:\n break;\n }\n}\n\nvoid ql_reset(tap_dance_state_t *state, void *user_data) {\n // If the key was held down and now is released then switch off the layer\n if (ql_tap_state.state == TD_SINGLE_HOLD) {\n layer_off(_MY_LAYER);\n }\n ql_tap_state.state = TD_NONE;\n}\n\n// Associate our tap dance key with its functionality\ntap_dance_action_t tap_dance_actions[] = {\n [QUOT_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset)\n};\n\n// Set a long-ish tapping term for tap-dance keys\nuint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case QK_TAP_DANCE ... QK_TAP_DANCE_MAX:\n return 275;\n default:\n return TAPPING_TERM;\n }\n}
The above code is similar to that used in previous examples. The one point to note is that we need to be able to check which layers are active at any time so we can toggle them if needed. To do this we use the layer_state_is(layer) function which returns true if the given layer is active.
The use of cur_dance() and ql_tap_state mirrors the above examples.
The case: TD_SINGLE_TAP in ql_finished is similar to the above examples. The TD_SINGLE_HOLD case works in conjunction with ql_reset() to switch to _MY_LAYER while the tap dance key is held, and to switch away from _MY_LAYER when the key is released. This mirrors the use of MO(_MY_LAYER). The TD_DOUBLE_TAP case works by checking whether _MY_LAYER is the active layer, and toggling it on or off accordingly. This mirrors the use of TG(_MY_LAYER).
tap_dance_actions[] works similar to the above examples. Note that, additionally, I set a longer tapping term for the tap dance keys. This is because I like my TAPPING_TERM to be short (~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here. In order for the per-key tapping terms to take effect, TAPPING_TERM_PER_KEY must be defined in your config.h.
Finally, to get this tap dance key working, be sure to include TD(QUOT_LAYR) in your keymaps[].
', 65);
+const _hoisted_66 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_66);
+}
+const tap_dance = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ tap_dance as default
+};
diff --git a/assets/features_tap_dance.md.C1QbVbkm.lean.js b/assets/features_tap_dance.md.C1QbVbkm.lean.js
new file mode 100644
index 0000000..f755a9a
--- /dev/null
+++ b/assets/features_tap_dance.md.C1QbVbkm.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","description":"","frontmatter":{},"headers":[],"relativePath":"features/tap_dance.md","filePath":"features/tap_dance.md"}');
+const _sfc_main = { name: "features/tap_dance.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 65);
+const _hoisted_66 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_66);
+}
+const tap_dance = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ tap_dance as default
+};
diff --git a/assets/features_tri_layer.md.BMkcUufJ.js b/assets/features_tri_layer.md.BMkcUufJ.js
new file mode 100644
index 0000000..c8f217c
--- /dev/null
+++ b/assets/features_tri_layer.md.BMkcUufJ.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Tri Layers","description":"","frontmatter":{},"headers":[],"relativePath":"features/tri_layer.md","filePath":"features/tri_layer.md"}');
+const _sfc_main = { name: "features/tri_layer.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This enables support for the OLKB style "Tri Layer" keycodes. These function similar to the MO (momentary) function key, but if both the "Lower" and "Upper" keys are pressed, it activates a third "Adjust" layer. To enable this functionality, add this line to your rules.mk:
make
TRI_LAYER_ENABLE = yes
Note that the "upper", "lower" and "adjust" names don't have a particular significance, they are just used to identify and clarify the behavior. Layers are processed from highest numeric value to lowest, however the values are not required to be consecutive.
For a detailed explanation of how the layer stack works, check out Keymap Overview.
There are some limitations to this feature. Because there is no "standard" method of Unicode input across all operating systems, each of them require their own setup process on both the host and in the firmware, which may involve installation of additional software. This also means Unicode input will not "just work" when the keyboard is plugged into another device.
The core Unicode API can be used purely programmatically. However, there are also additional subsystems which build on top of it and come with keycodes to make things easier. See below for more details.
Unicode input works by typing a sequence of characters, similar to a macro. However, since this sequence depends on your OS, you will need to prepare both your host machine and QMK to recognise and send the correct Unicode input sequences respectively.
To set the list of enabled input modes, add the UNICODE_SELECTED_MODES define to your keymap's config.h, for example:
These modes can then be cycled through using the UC_NEXT and UC_PREV keycodes. You can also switch to any input mode, even if it is not specified in UNICODE_SELECTED_MODES, using their respective keycodes.
If your keyboard has working EEPROM, it will remember the last used input mode and continue using it on the next power up. This can be disabled by defining UNICODE_CYCLE_PERSIST to false.
', 6);
+const _hoisted_46 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createBaseVNode("strong", null, "Mode Name:"),
+ /* @__PURE__ */ createTextVNode(),
+ /* @__PURE__ */ createBaseVNode("code", null, "UNICODE_MODE_MACOS")
+], -1);
+const _hoisted_47 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createTextVNode("macOS has built-in support for Unicode input as its own input source. It supports all possible code points by way of surrogate pairs for code points above "),
+ /* @__PURE__ */ createBaseVNode("code", null, "U+FFFF"),
+ /* @__PURE__ */ createTextVNode(".")
+], -1);
+const _hoisted_48 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createTextVNode("To enable, go to "),
+ /* @__PURE__ */ createBaseVNode("strong", null, "System Preferences → Keyboard → Input Sources"),
+ /* @__PURE__ */ createTextVNode(", then add Unicode Hex Input to the list (under Other), and activate it from the input dropdown in the menu bar. Note that this may disable some Option-based shortcuts such as Option+Left and Option+Right.")
+], -1);
+const _hoisted_49 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createBaseVNode("strong", null, "Mode Name:"),
+ /* @__PURE__ */ createTextVNode(),
+ /* @__PURE__ */ createBaseVNode("code", null, "UNICODE_MODE_LINUX")
+], -1);
+const _hoisted_50 = /* @__PURE__ */ createBaseVNode("p", null, "For Linux distros with IBus, Unicode input is enabled by default, supports all possible code points, and works almost anywhere. Without IBus, it works under GTK apps, but rarely anywhere else.", -1);
+const _hoisted_51 = /* @__PURE__ */ createBaseVNode("p", null, "Users who would like support in non-GTK apps without IBus may need to resort to a more indirect method, such as creating a custom keyboard layout.", -1);
+const _hoisted_52 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createBaseVNode("strong", null, "Mode Name:"),
+ /* @__PURE__ */ createTextVNode(),
+ /* @__PURE__ */ createBaseVNode("code", null, "UNICODE_MODE_WINCOMPOSE")
+], -1);
+const _hoisted_53 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createTextVNode("This mode requires a third-party tool called "),
+ /* @__PURE__ */ createBaseVNode("a", {
+ href: "https://github.com/samhocevar/wincompose",
+ target: "_blank",
+ rel: "noreferrer"
+ }, "WinCompose"),
+ /* @__PURE__ */ createTextVNode(". It supports all possible code points, and is the recommended input mode for Windows.")
+], -1);
+const _hoisted_54 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createTextVNode("To enable, install the "),
+ /* @__PURE__ */ createBaseVNode("a", {
+ href: "https://github.com/samhocevar/wincompose/releases/latest",
+ target: "_blank",
+ rel: "noreferrer"
+ }, "latest release from GitHub"),
+ /* @__PURE__ */ createTextVNode(". Once installed, it will automatically run on startup. This works reliably under all versions of Windows supported by WinCompose.")
+], -1);
+const _hoisted_55 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createBaseVNode("strong", null, "Mode Name:"),
+ /* @__PURE__ */ createTextVNode(),
+ /* @__PURE__ */ createBaseVNode("code", null, "UNICODE_MODE_WINDOWS")
+], -1);
+const _hoisted_56 = /* @__PURE__ */ createBaseVNode("div", { class: "warning custom-block" }, [
+ /* @__PURE__ */ createBaseVNode("p", { class: "custom-block-title" }, "WARNING"),
+ /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createTextVNode("This input mode is "),
+ /* @__PURE__ */ createBaseVNode("em", null, "not"),
+ /* @__PURE__ */ createTextVNode(' the "Alt code" system. Alt codes are not Unicode; they instead follow '),
+ /* @__PURE__ */ createBaseVNode("a", {
+ href: "https://en.wikipedia.org/wiki/Alt_code",
+ target: "_blank",
+ rel: "noreferrer"
+ }, "the Windows-1252 character set"),
+ /* @__PURE__ */ createTextVNode(".")
+ ])
+], -1);
+const _hoisted_57 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createTextVNode("This is Windows' built-in hex numpad Unicode input mode. It only supports code points up to "),
+ /* @__PURE__ */ createBaseVNode("code", null, "U+FFFF"),
+ /* @__PURE__ */ createTextVNode(", and is not recommended due to reliability and compatibility issues.")
+], -1);
+const _hoisted_58 = /* @__PURE__ */ createBaseVNode("p", null, "To enable, run the following as an administrator, then reboot:", -1);
+const _hoisted_59 = /* @__PURE__ */ createBaseVNode("div", { class: "language- vp-adaptive-theme" }, [
+ /* @__PURE__ */ createBaseVNode("button", {
+ title: "Copy Code",
+ class: "copy"
+ }),
+ /* @__PURE__ */ createBaseVNode("span", { class: "lang" }),
+ /* @__PURE__ */ createBaseVNode("pre", { class: "shiki shiki-themes github-light github-dark vp-code" }, [
+ /* @__PURE__ */ createBaseVNode("code", null, [
+ /* @__PURE__ */ createBaseVNode("span", { class: "line" }, [
+ /* @__PURE__ */ createBaseVNode("span", null, 'reg add "HKCU\\Control Panel\\Input Method" -v EnableHexNumpad -t REG_SZ -d 1')
+ ])
+ ])
+ ])
+], -1);
+const _hoisted_60 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createBaseVNode("strong", null, "Mode Name:"),
+ /* @__PURE__ */ createTextVNode(),
+ /* @__PURE__ */ createBaseVNode("code", null, "UNICODE_MODE_EMACS")
+], -1);
+const _hoisted_61 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createTextVNode("Emacs supports code point input with the "),
+ /* @__PURE__ */ createBaseVNode("code", null, "insert-char"),
+ /* @__PURE__ */ createTextVNode(" command.")
+], -1);
+const _hoisted_62 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createBaseVNode("strong", null, "Mode Name:"),
+ /* @__PURE__ */ createTextVNode(),
+ /* @__PURE__ */ createBaseVNode("code", null, "UNICODE_MODE_BSD")
+], -1);
+const _hoisted_63 = /* @__PURE__ */ createBaseVNode("p", null, [
+ /* @__PURE__ */ createTextVNode("Not currently implemented. If you're a BSD user and want to contribute support for this input mode, please "),
+ /* @__PURE__ */ createBaseVNode("a", { href: "./../contributing" }, "feel free"),
+ /* @__PURE__ */ createTextVNode("!")
+], -1);
+const _hoisted_64 = /* @__PURE__ */ createStaticVNode('
This is the value used when estimating average word size (for regression and normal use)
WPM_ALLOW_COUNT_REGRESSION
Not defined
If defined allows the WPM to be decreased when hitting Delete or Backspace
WPM_UNFILTERED
Not defined
If undefined (the default), WPM values will be smoothed to avoid sudden changes in value
WPM_SAMPLE_SECONDS
5
This defines how many seconds of typing to average, when calculating WPM
WPM_SAMPLE_PERIODS
25
This defines how many sampling periods to use when calculating WPM
WPM_LAUNCH_CONTROL
Not defined
If defined, WPM values will be calculated using partial buffers when typing begins
'WPM_UNFILTERED' is potentially useful if you're filtering data in some other way (and also because it reduces the code required for the WPM feature), or if reducing measurement latency to a minimum is important for you.
Increasing 'WPM_SAMPLE_SECONDS' will give more smoothly changing WPM values at the expense of slightly more latency to the WPM calculation.
Increasing 'WPM_SAMPLE_PERIODS' will improve the smoothness at which WPM decays once typing stops, at a cost of approximately this many bytes of firmware space.
If 'WPM_LAUNCH_CONTROL' is defined, whenever WPM drops to zero, the next time typing begins WPM will be calculated based only on the time since that typing began, instead of the whole period of time specified by WPM_SAMPLE_SECONDS. This results in reaching an accurate WPM value much faster, even when filtering is enabled and a large WPM_SAMPLE_SECONDS value is specified.
By default, the WPM score only includes letters, numbers, space and some punctuation. If you want to change the set of characters considered as part of the WPM calculation, you can implement your own bool wpm_keycode_user(uint16_t keycode) and return true for any characters you would like included in the calculation, or false to not count that particular keycode.
Additionally, if WPM_ALLOW_COUNT_REGRESSION is defined, there is the uint8_t wpm_regress_count(uint16_t keycode) function that allows you to decrease the WPM. This is useful if you want to be able to penalize certain keycodes (or even combinations).
', 19);
+const _hoisted_20 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_20);
+}
+const wpm = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ wpm as default
+};
diff --git a/assets/features_wpm.md.ClHUqqGQ.lean.js b/assets/features_wpm.md.ClHUqqGQ.lean.js
new file mode 100644
index 0000000..165776c
--- /dev/null
+++ b/assets/features_wpm.md.ClHUqqGQ.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Word Per Minute (WPM) Calculation","description":"","frontmatter":{},"headers":[],"relativePath":"features/wpm.md","filePath":"features/wpm.md"}');
+const _sfc_main = { name: "features/wpm.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 19);
+const _hoisted_20 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_20);
+}
+const wpm = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ wpm as default
+};
diff --git a/assets/flashing.md.CzOj0blz.js b/assets/flashing.md.CzOj0blz.js
new file mode 100644
index 0000000..f6ffc19
--- /dev/null
+++ b/assets/flashing.md.CzOj0blz.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Flashing Instructions and Bootloader Information","description":"","frontmatter":{},"headers":[],"relativePath":"flashing.md","filePath":"flashing.md"}');
+const _sfc_main = { name: "flashing.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Flashing Instructions and Bootloader Information
There are quite a few different types of bootloaders that keyboards use, and almost all of them use their own flashing method and tools. Luckily, projects like the QMK Toolbox aim to support as many of them as possible, but this article will describe the different types of bootloaders, and available methods for flashing them.
For AVR-based keyboards, QMK will automatically calculate if your .hex file is the right size to be flashed to the device based on the BOOTLOADER value set in rules.mk, and output the total size in bytes (along with the max).
You will also be able to use the CLI to flash your keyboard, by running:
$ qmk flash -kb <keyboard> -km <keymap>
See the qmk flash documentation for more information.
Atmel's DFU bootloader comes on all USB AVRs by default (except for 16/32U4RC), and is used by many keyboards that have their own ICs on their PCBs (older OLKB boards, Clueboards). Some keyboards may also use LUFA's DFU bootloader, or QMK's fork of it (newer OLKB boards), that adds in additional features specific to that hardware.
To ensure compatibility with the DFU bootloader, make sure this block is present in your rules.mk (optionally with lufa-dfu or qmk-dfu instead):
QMK maintains a fork of the LUFA DFU bootloader that additionally performs a simple matrix scan for exiting the bootloader and returning to the application, as well as flashing an LED/making a ticking noise with a speaker when things are happening. To enable these features, add the following defines to your config.h:
c
#define QMK_ESC_OUTPUT F1 // COL pin if COL2ROW\n#define QMK_ESC_INPUT D5 // ROW pin if COL2ROW\n// Optional:\n//#define QMK_LED E6\n//#define QMK_SPEAKER C6
Currently we do not recommend making QMK_ESC the same key as the one designated for Bootmagic, as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader.
The manufacturer and product strings are automatically pulled from config.h, with " Bootloader" appended to the product string.
To generate this bootloader, use the bootloader target, eg. make planck/rev4:default:bootloader. To generate a production-ready .hex file (combining QMK and the bootloader), use the production target, eg. make planck/rev4:default:production.
:dfu: Checks every 5 seconds until a DFU device is available, and then flashes the firmware.
:dfu-split-left and :dfu-split-right: Flashes the firmware as with :dfu, but also sets the handedness setting in EEPROM. This is ideal for Elite-C-based split keyboards.
Arduino boards and their clones use the Caterina bootloader or a variant of it (any keyboard built with a Pro Micro or clone, and the Pololu A-Star), and uses the AVR109 protocol to communicate through virtual serial.
To ensure compatibility with the Caterina bootloader, make sure this block is present in your rules.mk:
Enter the bootloader using any of the following methods (you only have 7 seconds to flash once it enters; some variants may require you to reset twice within 750 milliseconds):
:avrdude: Checks every 5 seconds until a Caterina device is available (by detecting a new COM port), and then flashes the firmware.
:avrdude-loop: Flashes the firmware as with :avrdude, but after each device is flashed, will attempt to flash again. This is useful for bulk flashing. Hit Ctrl+C to escape the loop.
:avrdude-split-left and :avrdude-split-right: Flashes the firmware as with :avrdude, but also sets the handedness setting in EEPROM. This is ideal for Pro Micro-based split keyboards.
HalfKay is a super-slim bootloader developed by PJRC that presents itself as an HID device (which requires no additional driver), and comes preflashed on all Teensys, namely the 2.0. It is currently closed-source, and thus once overwritten (eg. via ISP flashing another bootloader), cannot be restored.
To ensure compatibility with the Halfkay bootloader, make sure this block is present in your rules.mk:
USBasploader is a bootloader originally by Objective Development. It emulates a USBasp ISP programmer and is used in some non-USB AVR chips such as the ATmega328P, which run V-USB.
To ensure compatibility with the USBasploader bootloader, make sure this block is present in your rules.mk:
BootloadHID is a USB bootloader for AVR microcontrollers. It presents itself as an HID input device, much like HalfKay, and can therefore be run without installing any driver on Windows.
To ensure compatibility with the bootloadHID bootloader, make sure this block is present in your rules.mk:
bootloadHID CLI / :bootloadhid target in QMK (recommended command line)
bootloadHID -r <filename>
Flashing sequence:
Enter the bootloader using any of the following methods:
Tap the QK_BOOT keycode
Hold the salt key while plugging the keyboard in - for PS2AVRGB boards, this is usually the key connected to MCU pins A0 and B0, otherwise it will be documented in your keyboard's readme
Wait for the OS to detect the device
Flash a .hex file
Reset the device into application mode (may be done automatically)
QMK maintains a fork of the LUFA HID bootloader, which uses a USB HID Endpoint for flashing in the way that the PJRC's Teensy Loader flasher and HalfKay bootloader work. Additionally, it performs a simple matrix scan for exiting the bootloader and returning to the application, as well as flashing an LED/making a ticking noise with a speaker when things are happening.
To ensure compatibility with the QMK HID bootloader, make sure this block is present in your rules.mk:
make
# Bootloader selection\nBOOTLOADER = qmk-hid
To enable the additional features, add the following defines to your config.h:
c
#define QMK_ESC_OUTPUT F1 // COL pin if COL2ROW\n#define QMK_ESC_INPUT D5 // ROW pin if COL2ROW\n// Optional:\n//#define QMK_LED E6\n//#define QMK_SPEAKER C6
Currently we do not recommend making QMK_ESC the same key as the one designated for Bootmagic, as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader.
The manufacturer and product strings are automatically pulled from config.h, with " Bootloader" appended to the product string.
To generate this bootloader, use the bootloader target, eg. make planck/rev4:default:bootloader. To generate a production-ready .hex file (combining QMK and the bootloader), use the production target, eg. make planck/rev4:default:production.
Compatible flashers:
TBD
Currently, you need to either use the Python script, or compile hid_bootloader_cli, from the LUFA repo. Homebrew may (will) have support for this directly (via brew install qmk/qmk/hid_bootloader_cli).
Flashing sequence:
Enter the bootloader using any of the following methods:
Press the QK_BOOT keycode
Press the RESET button on the PCB if available
short RST to GND quickly
Wait for the OS to detect the device
Flash a .hex file
Reset the device into application mode (may be done automatically)
All USB-capable STM32 and APM32 MCUs, except for a small handful (such as STM32F103 -- see the STM32duino section) come preloaded with a factory bootloader that cannot be modified nor deleted.
To ensure compatibility with the STM32-DFU bootloader, make sure this block is present in your rules.mk (optionally with apm32-dfu instead):
dfu-util / :dfu-util target in QMK (recommended command line)
dfu-util -a 0 -d 0483:DF11 -s 0x8000000:leave -D <filename>
Flashing sequence:
Enter the bootloader using any of the following methods:
Tap the QK_BOOT keycode (may not work on STM32F042 devices)
If a reset circuit is present, tap the RESET button on the PCB; some boards may also have a toggle switch that must be flipped
Otherwise, you need to bridge BOOT0 to VCC (via BOOT0 button or jumper), short RESET to GND (via RESET button or jumper), and then let go of the BOOT0 bridge
Wait for the OS to detect the device
Flash a .bin file
Reset the device into application mode (may be done automatically)
:dfu-util: Waits until an STM32 bootloader device is available, and then flashes the firmware.
:dfu-util-split-left and :dfu-util-split-right: Flashes the firmware as with :dfu-util, but also sets the handedness setting in EEPROM. This is ideal for Proton-C-based split keyboards.
:st-link-cli: Allows you to flash the firmware via the ST-Link CLI utility, rather than dfu-util. Requires an ST-Link dongle.
:st-flash: Allows you to flash the firmware via the st-flash utility from STLink Tools, rather than dfu-util. Requires an ST-Link dongle.
This bootloader is used almost exclusively for STM32F103 boards, as they do not come with a USB DFU bootloader. The source code and prebuilt binaries can be found here.
To ensure compatibility with the STM32duino bootloader, make sure this block is present in your rules.mk:
dfu-util / :dfu-util target in QMK (recommended command line)
dfu-util -a 2 -d 1EAF:0003 -D <filename>
Flashing sequence:
Enter the bootloader using any of the following methods:
Tap the QK_BOOT keycode
If a reset circuit is present, tap the RESET button on the PCB
Otherwise, you need to bridge BOOT0 to VCC (via BOOT0 button or jumper), short RESET to GND (via RESET button or jumper), and then let go of the BOOT0 bridge
Wait for the OS to detect the device
Flash a .bin file
Reset the device into application mode (may be done automatically)
Keyboards produced by Input Club use NXP Kinetis microcontrollers rather than STM32, and come with their own custom bootloader, however the process and protocol is largely the same.
The rules.mk setting for this bootloader is kiibohd, but since this bootloader is limited to Input Club boards, it should not be necessary to set at keymap or user level.
Some keyboards produced for several commercial brands (GMMK, Akko, MonsGeek, Inland) use this bootloader. The wb32-dfu-updater utility is bundled with QMK MSYS and Glorious's build of QMK Toolbox. If neither of these flashing methods is available for your OS, you will likely need to compile the CLI version from source.
The info.json setting for this bootloader is wb32-dfu.
1: 260 series of chips have part of the SN32-DFU bootloader in userspace and therefore must be guarded to avoid bricking. Install the sonix-bootloader before flashing the firmware
If using $ qmk flash to flash a firmware, the offset is automatically applied if needed.
Flashing sequence:
Enter the bootloader using any of the following methods:
Tap the QK_BOOT keycode
If a reset circuit is present, tap the RESET button on the PCB; some boards may also have a toggle switch that must be flipped
Otherwise, you need to bridge BOOT to GND (via BOOT button or jumper), short RESET to GND (via RESET button, jumper or by unplugging and replugging USB), and then let go of the BOOT bridge
Wait for the OS to detect the device
Flash a .bin file
Wait for the keyboard to become available
', 156);
+const _hoisted_157 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_157);
+}
+const flashing = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ flashing as default
+};
diff --git a/assets/flashing.md.CzOj0blz.lean.js b/assets/flashing.md.CzOj0blz.lean.js
new file mode 100644
index 0000000..64a077b
--- /dev/null
+++ b/assets/flashing.md.CzOj0blz.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Flashing Instructions and Bootloader Information","description":"","frontmatter":{},"headers":[],"relativePath":"flashing.md","filePath":"flashing.md"}');
+const _sfc_main = { name: "flashing.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 156);
+const _hoisted_157 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_157);
+}
+const flashing = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ flashing as default
+};
diff --git a/assets/getting_started_docker.md.dHxmuSds.js b/assets/getting_started_docker.md.dHxmuSds.js
new file mode 100644
index 0000000..0ab3648
--- /dev/null
+++ b/assets/getting_started_docker.md.dHxmuSds.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Docker Quick Start","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_docker.md","filePath":"getting_started_docker.md"}');
+const _sfc_main = { name: "getting_started_docker.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This project includes a Docker workflow that will allow you to build a new firmware for your keyboard very easily without major changes to your primary operating system. This also ensures that when you clone the project and perform a build, you have the exact same environment as anyone else and the QMK build infrastructure. This makes it much easier for people to help you troubleshoot any issues you encounter.
util/docker_build.sh <keyboard>:<keymap>\n# For example: util/docker_build.sh planck/rev6:default
This will compile the desired keyboard/keymap and leave the resulting .hex or .bin file in the QMK directory for you to flash. If :keymap is omitted, all keymaps are used. Note that the parameter format is the same as when building with make.
There is also support for building and flashing the keyboard straight from Docker by specifying the target as well:
util/docker_build.sh keyboard:keymap:target\n# For example: util/docker_build.sh planck/rev6:default:flash
Note that mass storage bootloaders are not supported by the flash target. In this case you will have to manually copy the firmware file to the keyboard.
You can also start the script without any parameters, in which case it will ask you to input the build parameters one by one, which you may find easier to use:
util/docker_build.sh\n# Reads parameters as input (leave blank for all keyboards/keymaps)
You can manually set which container runtime you want to use by setting the RUNTIME environment variable to it's name or path. By default docker or podman are automatically detected and docker is preferred over podman.
On Windows and macOS, it requires Docker Machine to be running. This is tedious to set up, so it's not recommended; use QMK Toolbox instead.
WARNING
Docker for Windows requires Hyper-V to be enabled. This means that it cannot work on versions of Windows which don't have Hyper-V, such as Windows 7, Windows 8 and Windows 10 Home.
', 22);
+const _hoisted_23 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_23);
+}
+const getting_started_docker = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ getting_started_docker as default
+};
diff --git a/assets/getting_started_docker.md.dHxmuSds.lean.js b/assets/getting_started_docker.md.dHxmuSds.lean.js
new file mode 100644
index 0000000..967b2a7
--- /dev/null
+++ b/assets/getting_started_docker.md.dHxmuSds.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Docker Quick Start","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_docker.md","filePath":"getting_started_docker.md"}');
+const _sfc_main = { name: "getting_started_docker.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 22);
+const _hoisted_23 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_23);
+}
+const getting_started_docker = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ getting_started_docker as default
+};
diff --git a/assets/getting_started_github.md.EVx9Hm-S.js b/assets/getting_started_github.md.EVx9Hm-S.js
new file mode 100644
index 0000000..a731b20
--- /dev/null
+++ b/assets/getting_started_github.md.EVx9Hm-S.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"How to Use GitHub with QMK","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_github.md","filePath":"getting_started_github.md"}');
+const _sfc_main = { name: "getting_started_github.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
GitHub can be a little tricky to those that aren't familiar with it - this guide will walk through each step of forking, cloning, and submitting a pull request with QMK.
TIP
This guide assumes you're somewhat comfortable with running things at the command line, and have git installed on your system.
Start on the QMK GitHub page, and you'll see a button in the upper right that says "Fork":
If you're a part of an organization, you'll need to choose which account to fork it to. In most circumstances, you'll want to fork it to your personal account. Once your fork is completed (sometimes this takes a little while), click the "Clone or Download" button:
And be sure to select "HTTPS", and select the link and copy it:
From here, enter git clone --recurse-submodules into the command line, and then paste your link:
You now have your QMK fork on your local machine, and you can add your keymap, compile it and flash it to your board. Once you're happy with your changes, you can add, commit, and push them to your fork like this:
user@computer:~$ git add .\nuser@computer:~$ git commit -m "adding my keymap"\n[master cccb1608] adding my keymap\n 1 file changed, 1 insertion(+)\n create mode 100644 keyboards/planck/keymaps/mine/keymap.c\nuser@computer:~$ git push\nCounting objects: 1, done.\nDelta compression using up to 4 threads.\nCompressing objects: 100% (1/1), done.\nWriting objects: 100% (1/1), 1.64 KiB | 0 bytes/s, done.\nTotal 1 (delta 1), reused 0 (delta 0)\nremote: Resolving deltas: 100% (1/1), completed with 1 local objects.\nTo https://github.com/whoeveryouare/qmk_firmware.git\n + 20043e64...7da94ac5 master -> master
Your changes now exist on your fork on GitHub - if you go back there (https://github.com/<whoeveryouare>/qmk_firmware), you can create a "New Pull Request" by clicking this button:
Here you'll be able to see exactly what you've committed - if it all looks good, you can finalize it by clicking "Create Pull Request":
After submitting, we may talk to you about your changes, ask that you make changes, and eventually accept it! Thanks for contributing to QMK 😃
', 18);
+const _hoisted_19 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_19);
+}
+const getting_started_github = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ getting_started_github as default
+};
diff --git a/assets/getting_started_github.md.EVx9Hm-S.lean.js b/assets/getting_started_github.md.EVx9Hm-S.lean.js
new file mode 100644
index 0000000..9d76072
--- /dev/null
+++ b/assets/getting_started_github.md.EVx9Hm-S.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"How to Use GitHub with QMK","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_github.md","filePath":"getting_started_github.md"}');
+const _sfc_main = { name: "getting_started_github.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 18);
+const _hoisted_19 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_19);
+}
+const getting_started_github = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ getting_started_github as default
+};
diff --git a/assets/getting_started_introduction.md.BTOrKqLL.js b/assets/getting_started_introduction.md.BTOrKqLL.js
new file mode 100644
index 0000000..444c583
--- /dev/null
+++ b/assets/getting_started_introduction.md.BTOrKqLL.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_introduction.md","filePath":"getting_started_introduction.md"}');
+const _sfc_main = { name: "getting_started_introduction.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This page attempts to explain the basic information you need to know to work with the QMK project. It assumes that you are familiar with navigating a Unix shell, but does not assume you are familiar with C or with compiling using make.
QMK is a fork of Jun Wako's tmk_keyboard project. The original TMK code, with modifications, can be found in the tmk_core folder. The QMK additions to the project may be found in the quantum folder. Keyboard projects may be found in the keyboards folder.
Within the folder users is a directory for each user. This is a place for users to put code that they might use between keyboards. See the docs for Userspace feature for more information.
Within the folder keyboards, its subfolder handwired and its vendor and manufacture subdirectories e.g. clueboard is a directory for each keyboard project, for example qmk_firmware/keyboards/clueboard/2x1800. Within it, you'll find the following structure:
keymaps/: Different keymaps that can be built
rules.mk: The file that sets the default "make" options. Do not edit this file directly, instead use a keymap specific rules.mk.
config.h: The file that sets the default compile time options. Do not edit this file directly, instead use a keymap specific config.h.
info.json: The file used for setting layout for QMK Configurator. See Configurator Support for more information.
readme.md: A brief overview of the keyboard.
<keyboardName>.h: This file is where the keyboard layout is defined against the keyboard's switch matrix.
<keyboardName>.c: This file is where you can find custom code for the keyboard.
In every keymap folder, the following files may be found. Only keymap.c is required, and if the rest of the files are not found the default options will be chosen.
config.h: the options to configure your keymap
keymap.c: all of your keymap code, required
rules.mk: the features of QMK that are enabled
readme.md: a description of your keymap, how others might use it, and explanations of features. Please upload images to a service like imgur.
The build system automatically picks up the config files in the above order. If you wish to override any setting set by a previous config.h you will need to first include some boilerplate code for the settings you wish to change.
#pragma once
Then to override a setting from the previous config.h file you must #undef and then #define the setting again.
The boilerplate code and setting look like this together:
#pragma once\n\n// overrides go here!\n#undef MY_SETTING\n#define MY_SETTING 4
', 21);
+const _hoisted_22 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_22);
+}
+const getting_started_introduction = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ getting_started_introduction as default
+};
diff --git a/assets/getting_started_introduction.md.BTOrKqLL.lean.js b/assets/getting_started_introduction.md.BTOrKqLL.lean.js
new file mode 100644
index 0000000..e1385df
--- /dev/null
+++ b/assets/getting_started_introduction.md.BTOrKqLL.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_introduction.md","filePath":"getting_started_introduction.md"}');
+const _sfc_main = { name: "getting_started_introduction.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 21);
+const _hoisted_22 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_22);
+}
+const getting_started_introduction = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ getting_started_introduction as default
+};
diff --git a/assets/getting_started_make_guide.md.snyKLkVb.js b/assets/getting_started_make_guide.md.snyKLkVb.js
new file mode 100644
index 0000000..323a5ef
--- /dev/null
+++ b/assets/getting_started_make_guide.md.snyKLkVb.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"More Detailed make Instructions","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_make_guide.md","filePath":"getting_started_make_guide.md"}');
+const _sfc_main = { name: "getting_started_make_guide.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
The full syntax of the make command is <keyboard_folder>:<keymap>:<target>, where:
<keyboard_folder> is the path of the keyboard, for example planck
Use all to compile all keyboards
Specify the path to compile a revision, for example planck/rev4 or planck/rev3
If the keyboard doesn't have any folders, it can be left out
To compile the default folder, you can leave it out
<keymap> is the name of the keymap, for example algernon
Use all to compile all keymaps
<target> will be explained in more detail below.
The <target> means the following
If no target is given, then it's the same as all below
all compiles as many keyboard/revision/keymap combinations as specified. For example, make planck/rev4:default will generate a single .hex, while make planck/rev4:all will generate a hex for every keymap available to the planck.
flash, dfu, teensy, avrdude, dfu-util, or bootloadhid compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's dfu, but for ChibiOS keyboards you should use dfu-util, and teensy for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. Visit the Flashing Firmware guide for more details of the available bootloaders.
Note: some operating systems need privileged access for these commands to work. This means that you may need to setup udev rules to access these without root access, or to run the command with root access (sudo make planck/rev4:default:flash).
clean, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems.
distclean removes .hex files and .bin files.
The following targets are for developers:
show_path shows the path of the source and object files.
dump_vars dumps the makefile variable.
objs-size displays the size of individual object files.
show_build_options shows the options set in 'rules.mk'.
check-md5 displays the md5 checksum of the generated binary file.
You can also add extra options at the end of the make command line, after the target
make COLOR=false - turns off color output
make SILENT=true - turns off output besides errors/warnings
make VERBOSE=true - outputs all of the gcc stuff (not interesting, unless you need to debug)
make VERBOSE_LD_CMD=yes - execute the ld command with the -v option.
make VERBOSE_AS_CMD=yes - execute the as command with the -v option.
make VERBOSE_C_CMD=<c_source_file> - add the -v option when compiling the specified C source file.
make DUMP_C_MACROS=<c_source_file> - dump preprocessor macros when compiling the specified C source file.
make DUMP_C_MACROS=<c_source_file> > <logfile> - dump preprocessor macros to <logfile> when compiling the specified C source file.
make VERBOSE_C_INCLUDE=<c_source_file> - dumps the file names to be included when compiling the specified C source file.
make VERBOSE_C_INCLUDE=<c_source_file> 2> <logfile> - dumps the file names to be included to <logfile> when compiling the specified C source file.
The make command itself also has some additional options, type make --help for more information. The most useful is probably -jx, which specifies that you want to compile using more than one CPU, the x represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option.
Here are some examples commands
make all:all builds everything (all keyboard folders, all keymaps). Running just make from the root will also run this.
make ergodox_infinity:algernon:clean will clean the build output of the Ergodox Infinity keyboard.
make planck/rev4:default:flash COLOR=false builds and uploads the keymap without color output.
Set these variables to no to disable them, and yes to enable them.
BOOTMAGIC_ENABLE
This allows you to hold a key (usually Escape by default) to reset the EEPROM settings that persist over power loss and ready your keyboard to accept new firmware.
MOUSEKEY_ENABLE
This gives you control over cursor movements and clicks via keycodes/custom functions.
EXTRAKEY_ENABLE
This allows you to use the system and audio control key codes.
CONSOLE_ENABLE
This allows you to print messages that can be read using hid_listen.
By default, all debug (dprint) print (print, xprintf), and user print (uprint) messages will be enabled. This will eat up a significant portion of the flash and may make the keyboard .hex file too big to program.
To disable debug messages (dprint) and reduce the .hex file size, include #define NO_DEBUG in your config.h file.
To disable print messages (print, xprintf) and user print messages (uprint) and reduce the .hex file size, include #define NO_PRINT in your config.h file.
To disable print messages (print, xprintf) and KEEP user print messages (uprint), include #define USER_PRINT in your config.h file (do not also include #define NO_PRINT in this case).
To see the text, open hid_listen and enjoy looking at your printed messages.
NOTE: Do not include uprint messages in anything other than your keymap code. It must not be used within the QMK system framework. Otherwise, you will bloat other people's .hex files.
COMMAND_ENABLE
This enables magic commands, typically fired with the default magic key combo LSHIFT+RSHIFT+KEY. Magic commands include turning on debugging messages (MAGIC+D) or temporarily toggling NKRO (MAGIC+N).
SLEEP_LED_ENABLE
Enables your LED to breath while your computer is sleeping. Timer1 is being used here. This feature is largely unused and untested, and needs updating/abstracting.
NKRO_ENABLE
This allows the keyboard to tell the host OS that up to 248 keys are held down at once (default without NKRO is 6). NKRO is off by default, even if NKRO_ENABLE is set. NKRO can be forced by adding #define FORCE_NKRO to your config.h or by binding MAGIC_TOGGLE_NKRO to a key and then hitting the key.
BACKLIGHT_ENABLE
This enables the in-switch LED backlighting. You can specify the backlight pin by putting this in your config.h:
#define BACKLIGHT_PIN B7\n
MIDI_ENABLE
This enables MIDI sending and receiving with your keyboard. To enter MIDI send mode, you can use the keycode MI_ON, and MI_OFF to turn it off. This is a largely untested feature, but more information can be found in the quantum/quantum.c file.
UNICODE_ENABLE
This allows you to send Unicode characters using UC(<code point>) in your keymap. Code points up to 0x7FFF are supported. This covers characters for most modern languages, as well as symbols, but it doesn't cover emoji.
UNICODEMAP_ENABLE
This allows you to send Unicode characters using UM(<map index>) in your keymap. You will need to maintain a mapping table in your keymap file. All possible code points (up to 0x10FFFF) are supported.
UCIS_ENABLE
This allows you to send Unicode characters by inputting a mnemonic corresponding to the character you want to send. You will need to maintain a mapping table in your keymap file. All possible code points (up to 0x10FFFF) are supported.
For further details, as well as limitations, see the Unicode page.
AUDIO_ENABLE
This allows you output audio on the C6 pin (needs abstracting). See the audio page for more information.
VARIABLE_TRACE
Use this to debug changes to variable values, see the tracing variables section of the Unit Testing page for more information.
This enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common
SPLIT_TRANSPORT
As there is no standard split communication driver for ARM-based split keyboards yet, SPLIT_TRANSPORT = custom must be used for these. It will prevent the standard split keyboard communication code (which is AVR-specific) from being included, allowing a custom implementation to be used.
CUSTOM_MATRIX
Lets you replace the default matrix scanning routine with your own code. For further details, see the Custom Matrix page.
DEBOUNCE_TYPE
Lets you replace the default key debouncing routine with an alternative one. If custom you will need to provide your own implementation.
DEFERRED_EXEC_ENABLE
Enables deferred executor support -- timed delays before callbacks are invoked. See deferred execution for more information.
Customizing Makefile Options on a Per-Keymap Basis
If your keymap directory has a file called rules.mk any options you set in that file will take precedence over other rules.mk options for your particular keyboard.
So let's say your keyboard's rules.mk has BACKLIGHT_ENABLE = yes. You want your particular keyboard to not have the backlight, so you make a file called rules.mk and specify BACKLIGHT_ENABLE = no.
', 65);
+const _hoisted_66 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_66);
+}
+const getting_started_make_guide = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ getting_started_make_guide as default
+};
diff --git a/assets/getting_started_make_guide.md.snyKLkVb.lean.js b/assets/getting_started_make_guide.md.snyKLkVb.lean.js
new file mode 100644
index 0000000..6ed9a88
--- /dev/null
+++ b/assets/getting_started_make_guide.md.snyKLkVb.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"More Detailed make Instructions","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_make_guide.md","filePath":"getting_started_make_guide.md"}');
+const _sfc_main = { name: "getting_started_make_guide.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 65);
+const _hoisted_66 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_66);
+}
+const getting_started_make_guide = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ getting_started_make_guide as default
+};
diff --git a/assets/hand_wire.md.B69NBeYw.js b/assets/hand_wire.md.B69NBeYw.js
new file mode 100644
index 0000000..e41f147
--- /dev/null
+++ b/assets/hand_wire.md.B69NBeYw.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Hand-Wiring Guide","description":"","frontmatter":{},"headers":[],"relativePath":"hand_wire.md","filePath":"hand_wire.md"}');
+const _sfc_main = { name: "hand_wire.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
There are many ways to hand wire a PCB matrix, this guide will describe the fundamentals as well as some recommended ways to go about it.
As we are dealing with hand wiring, it is assumed that you already have a plate. If you are planning a completely custom layout, tools such as ai03 Plate Generator and Swillkb Plate & Case Builder can help when designing one.
Start by installing the switches and stabilisers in the plate. Depending on the thickness and material this may also involve hot gluing it in place.
If you are following a pre-existing handwire guide (e.g. for the keyboards in the handwire firmware section you can skip this step, just ensure you wire the matrix as described.
What you want to achieve is one leg from each switch being attached to the corresponding switches next to it (rows) and the other leg being attached to the switches above and below it (columns) and a diode to one of the legs, mosy commonly this will be the leg attached to the rows, and the diode will face away from it (Column to Row) i.e. with the wire furthest from the black line on the diode connected to the switch (as current will only travel in one direction through a diode).
It is fairly simple to plan for an ortholinear keyboard (like a Planck).
But the larger and more complicated your keyboard, the more complex the matrix. Keyboard Firmware Builder can help you plan your matrix layout (shown here with a basic fullsize ISO keyboard imported from Keyboard Layout Editor.
Bear in mind that the number of rows plus the number of columns can not exceed the number of I/O pins on your controller. So the fullsize matrix shown above would be possible on a Proton C or Teensy++, but not on a regular Teensy or Pro Micro.
*Elite C is essentially the same as a Pro Micro with a USB-C instead of Micro-USB
There are also a number of boards designed specifically for handwiring that mount directly to a small number of switches and offer pinouts for the rest. Though these are generally more expensive and may be more difficult to get hold of.
If you are planning a split keyboard (e.g. Dactyl) each half will require a controller and a means of communicating between them (like a TRRS or hardwired cable). Further information can be found in the QMK split keyboard documentation.
There are a lot of soldering guides and tips available elsewhere but here are some of the most useful and relevant for hand wiring:
To ensure a strong solder joint you want a good amount of contact between the solder and the two pieces of metal you are connecting. A good way of doing this (though not required) is looping around pins or twisting wires together before applying solder.
If your diodes are on a packaging strip and need a bend in them (either the start of a loop or for connecting to its neighbour) this can easily done by bending it over something straight like the edge of a box, table, or ruler. This also helps keep track of the direction of the diode as all the bends will be on the same side.
If your iron has temperature control, set it to 315ºC (600ºF).
Once heated, tin your soldering iron - this means melting a small amount of solder on the end of the iron and then quickly wiping it off on a wet sponge or wire cleaning pad, leaving a shiny silvery coating on the end which helps keep oxidisation at bay and helps solder to flow.
When you come to apply the solder, hold the soldering iron against the two surfaces for a second to heat it, then apply a small amount of solder to join the two pieces together. Heating the surfaces ensures that the solder adheres to it and that it does not cool too quickly.
Don't hold the iron on the solder/joint longer than necessary. Heat will be conducted through the surfaces and can damage components (melt switch housings etc.). Also, solder contains flux, which aids in "wetting". The longer heat is applied to the solder the more flux will evaporate meaning you may end up with a bad solder joint with peaks which, apart from looking bad, may also increase the risk of electrical shorts.
Starting at the top-left switch, place the diode (with tweezers if you have them) on the switch so that the diode itself is vertically aligned, and the black line is facing toward you. Make sure the diodes are soldered in parallel (diode outputs shouldn't connect to diode inputs). The input lead of the diode should be touching the left contact on the switch, and the bent, output end should be facing to the right and resting on the switch there, like this:
Letting the diode rest, grab your solder, and touch both it and the soldering iron to the left contact at the same time - the rosin in the solder should make it easy for the solder to flow over both the diode and the keyswitch contact. The diode may move a little, and if it does, carefully position it back it place by grabbing the bent end of the diode - the other end will become hot very quickly. If you find that it's moving too much, using needle-nose pliers of some sort may help to keep the diode still when soldering.
The smoke that the rosin releases is harmful, so be careful not to breath it or get it in your eyes/face.
After soldering things in place, it may be helpful to blow on the joint to push the smoke away from your face, and cool the solder quicker. You should see the solder develop a matte (not shiny) surface as it solidifies. Keep in mind that it will still be very hot afterwards, and will take a couple minutes to be cool to touch. Blowing on it will accelerate this process.
When the first diode is complete, the next one will need to be soldered to both the keyswitch, and the previous diode at the new elbow. That will look something like this:
After completing a row, use the wire cutters to trim the excess wire from the tops of the diodes, and from the right side on the final switch. This process will need to completed for each row you have.
When all of the diodes are completely soldered, it's a good idea to quickly inspect each one to ensure that your solder joints are solid and sturdy - repairing things after this is possible, but more difficult.
You'll have some options in the next process - it's a good idea to insulate the column wires (since the diodes aren't), but if you're careful enough, you can use exposed wires for the columns - it's not recommended, though. If you're using single-cored wire, stripping the plastic off of the whole wire and feeding it back on is probably the best option, but can be difficult depending on the size and materials. You'll want to leave parts of the wire exposed where you're going to be solder it onto the keyswitch.
If you're using stranded wire, it's probably easiest to just use a lot of small wires to connect each keyswitch along the column. It's possible to use one and melt through the insulation, but this isn't recommended, will produce even more harmful fumes, and can ruin your soldering iron.
Before beginning to solder, it helps to have your wire pre-bent (if using single-cored), or at least have an idea of how you're going to route the column (especially if you're making a staggered board). Where you go in particular doesn't matter too much, as we'll be basing our keymap definitions on how it was wired - just make sure every key in a particular row is in a unique column, and that they're in order from left to right.
If you're not using any insulation, you can try to keep the column wires elevated, and solder them near the tips of the keyswitch contacts - if the wires are sturdy enough, they won't short out to the row wiring an diodes.
Now that the matrix itself is complete, it's time to connect what you've done to the microcontroller board.
Place the microcontroller where you want it to be located, give thought to mounting and case alignment. Bear in mind that the location of the USB socket can be different from the controller by using a short male to female cable if required,.
Find the pinout/documentation for your microcontroller board (links here) and make a note of all the digital I/O pins on it (note that on some controllers, like the teensy, analogue I/O can double as digital) as these are the pins you want to connect your wires to.
There are some pins on the Teensy that are special, like D6 (the LED on the chip), or some of the UART, SPI, I2C, or PWM channels, but only avoid those if you're planning something in addition to a keyboard. If you're unsure about wanting to add something later, you should have enough pins in total to avoid a couple.
The pins you'll absolutely have to avoid, as with any controller, are: GND, VCC, AREF, and RST - all the others are usable and accessible in the firmware.
Cut wires to the length of the distance from the a point on each column/row to the controller. You can solder anywhere along the row, as long as it's after the diode - soldering before the diode (on the keyswitch side) will cause that row not to work.
Ribbon cable can be used to keep this extra tidy. You may also want to consider routing the wires beneath the exisiting columns/rows.
As you solder the wires to the controller make a note of which row/column is going to which pin on the controller as we'll use this data to setup the matrix when we create the firmware.
As you move along, be sure that the controller is staying in place - recutting and soldering the wires is a pain!
Go through the rest of the tabs, assigning keys until you get to the last one where you can compile and download your firmware. The .hex file can be flashed straight onto your keyboard, or for advanced functionality, compiled locally after Setting up Your Environment.
The source given by Keyboard Firmware Builder is QMK, but is based on a version of QMK from early 2017. To compile the firmware in a modern version of QMK Firmware, you'll need to export via the Save Configuration button, then run:
qmk import-kbfirmware /path/to/export.json
For example:
$ qmk import-kbfirmware ~/Downloads/gh62.json \nΨ Importing gh62.json.\n\n⚠ Support here is basic - Consider using 'qmk new-keyboard' instead\nΨ Imported a new keyboard named gh62.\nΨ To start working on things, `cd` into keyboards/gh62,\nΨ or open the directory in your preferred text editor.\nΨ And build with qmk compile -kb gh62 -km default.
Under "Local File" navigate to your newly created .hex file. Under "Microcontroller", select the corresponding one for your controller board (common ones available here).
Plug in your keyboard and press the reset button (or short the Reset and Ground pins if there is no button) and click the "Flash" button in QMK toolbox.
Use a website such as QMK Configurator's Keyboard Tester, Keyboard Tester, or Keyboard Checker or just open a text editor and try typing - you should get the characters that you put into your keymap. Test each key, and make a note of the ones that aren't working. Here's a quick trouble-shooting guide for non-working keys:
Flip the keyboard back over and short the keyswitch's contacts with a piece wire - this will eliminate the possibility of the keyswitch being bad and needing to be replaced.
Check the solder points on the keyswitch - these need to be plump and whole. If you touch it with a moderate amount of force and it comes apart, it's not strong enough.
Check the solder joints on the diode - if the diode is loose, part of your row may register, while the other may not.
Check the solder joints on the columns - if your column wiring is loose, part or all of the column may not work.
Check the solder joints on both sides of the wires going to/from the Teensy - the wires need to be fully soldered and connect to both sides.
Check the <project_name>.h file for errors and incorrectly placed KC_NOs - if you're unsure where they should be, instead duplicate a kxy variable.
Check to make sure you actually compiled the firmware and flashed the Teensy correctly. Unless you got error messages in the terminal, or a pop-up during flashing, you probably did everything correctly.
Use a multimeter to check that the switch is actually closing when actuated (completing the circuit when pressed down).
If you've done all of these things, keep in mind that sometimes you might have had multiple things affecting the keyswitch, so it doesn't hurt to test the keyswitch by shorting it out at the end.
Once you have confirmed that the keyboard is working, if you have used a seperate (non handwire specific) controller you will want to secure it in place. This can be done in many different ways e.g. hot glue, double sided sticky tape, 3D printed caddy, electrical tape.
There are a lot of possibilities inside the firmware - explore docs.qmk.fm for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by the OLKB subreddit or QMK Discord for help!
This page used to include more content. We have moved a section that used to be part of this page its own page. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.
Preamble: How a Keyboard Matrix Works (and why we need diodes)
QMK is used on a lot of different hardware. While support for the most common MCU's and matrix configurations is built-in there are a number of drivers that can be added to a keyboard to support additional hardware. Examples include mice and other pointing devices, i/o expanders for split keyboards, bluetooth modules, and LCD, OLED, and TFT screens.
Support for addressing pins on the ProMicro by their Arduino name rather than their AVR name. This needs to be better documented, if you are trying to do this and reading the code doesn't help please open an issue and we can help you through the process.
Support for up to 2 drivers. Each driver impliments 2 charlieplex matrices to individually address LEDs using I2C. This allows up to 144 same color LEDs or 32 RGB LEDs. For more information on how to setup the driver see the RGB Matrix page.
Support for up to a single driver with room for expansion. Each driver can control 192 individual LEDs or 64 RGB LEDs. For more information on how to setup the driver see the RGB Matrix page.
Support for an external I2C-based EEPROM instead of using the on-chip EEPROM. For more information on how to setup the driver see the EEPROM Driver page.
', 15);
+const _hoisted_16 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_16);
+}
+const hardware_drivers = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ hardware_drivers as default
+};
diff --git a/assets/hardware_drivers.md.DA73-xWQ.lean.js b/assets/hardware_drivers.md.DA73-xWQ.lean.js
new file mode 100644
index 0000000..cfb9ff1
--- /dev/null
+++ b/assets/hardware_drivers.md.DA73-xWQ.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK Hardware Drivers","description":"","frontmatter":{},"headers":[],"relativePath":"hardware_drivers.md","filePath":"hardware_drivers.md"}');
+const _sfc_main = { name: "hardware_drivers.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 15);
+const _hoisted_16 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_16);
+}
+const hardware_drivers = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ hardware_drivers as default
+};
diff --git a/assets/hardware_keyboard_guidelines.md.M0UlpwHv.js b/assets/hardware_keyboard_guidelines.md.M0UlpwHv.js
new file mode 100644
index 0000000..536e572
--- /dev/null
+++ b/assets/hardware_keyboard_guidelines.md.M0UlpwHv.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK Keyboard Guidelines","description":"","frontmatter":{},"headers":[],"relativePath":"hardware_keyboard_guidelines.md","filePath":"hardware_keyboard_guidelines.md"}');
+const _sfc_main = { name: "hardware_keyboard_guidelines.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Since starting, QMK has grown by leaps and bounds thanks to people like you who contribute to creating and maintaining our community keyboards. As we've grown we've discovered some patterns that work well, and ask that you conform to them to make it easier for other people to benefit from your hard work.
We have provided a tool, qmk lint, which will let you check over your keyboard for problems. We suggest using it frequently while working on your keyboard and keymap.
All keyboard names are in lower case, consisting only of letters, numbers, and underscore (_). Names may not begin with an underscore. Forward slash (/) is used as a sub-folder separation character.
The names test, keyboard, and all are reserved for make commands and may not be used as a keyboard or subfolder name.
If a sub-folder has a rules.mk file it will be considered a compilable keyboard. It will be available in QMK Configurator and tested with make all. If you are using a folder to organize several keyboards from the same maker you should not have a rules.mk file.
Example:
Clueboard uses sub-folders for both purposes, organization and keyboard revisions.
Your keyboard should be located in qmk_firmware/keyboards/ and the folder name should be your keyboard's name as described in the previous section. Inside this folder should be several files:
All projects need to have a readme.md file that explains what the keyboard is, who made it and where it's available. If applicable, it should also contain links to more information, such as the maker's website. Please follow the published template.
This file is used by the QMK API. It contains the information QMK Configurator needs to display a representation of your keyboard. You can also set metadata here. For more information see the reference page.
All projects need to have a config.h file that sets things like the matrix size, product name, USB VID/PID, description and other settings. In general, use this file to set essential information and defaults for your keyboard that will always work.
The config.h files can also be placed in sub-folders, and the order in which they are read is as follows:
The post_config.h file can be used for additional post-processing, depending on what is specified in the config.h file. For example, if you define the IOS_DEVICE_ENABLE macro in your keymap-level config.h file as follows, you can configure more detailed settings accordingly in the post_config.h file:
keyboards/top_folder/keymaps/a_keymap/config.h
c
#define IOS_DEVICE_ENABLE
keyboards/top_folder/post_config.h
c
#ifndef IOS_DEVICE_ENABLE\n // USB_MAX_POWER_CONSUMPTION value for this keyboard\n #define USB_MAX_POWER_CONSUMPTION 400\n#else\n // fix iPhone and iPad power adapter issue\n // iOS device need lessthan 100\n #define USB_MAX_POWER_CONSUMPTION 100\n#endif\n\n#ifdef RGBLIGHT_ENABLE\n #ifndef IOS_DEVICE_ENABLE\n #define RGBLIGHT_LIMIT_VAL 200\n #define RGBLIGHT_VAL_STEP 17\n #else\n #define RGBLIGHT_LIMIT_VAL 35\n #define RGBLIGHT_VAL_STEP 4\n #endif\n #ifndef RGBLIGHT_HUE_STEP\n #define RGBLIGHT_HUE_STEP 10\n #endif\n #ifndef RGBLIGHT_SAT_STEP\n #define RGBLIGHT_SAT_STEP 17\n #endif\n#endif
TIP
If you define options using post_config.h as in the above example, you should not define the same options in the keyboard- or user-level config.h.
The presence of this file means that the folder is a keyboard target and can be used in make commands. This is where you setup the build environment for your keyboard and configure the default set of features.
The rules.mk file can also be placed in a sub-folder, and its reading order is as follows:
Many of the settings written in the rules.mk file are interpreted by common_features.mk, which sets the necessary source files and compiler options.
The post_rules.mk file can interpret features of a keyboard-level before common_features.mk. For example, when your designed keyboard has the option to implement backlighting or underglow using rgblight.c, writing the following in the post_rules.mk makes it easier for the user to configure the rules.mk.
keyboards/top_folder/keymaps/a_keymap/rules.mk
make
# Please set the following according to the selection of the hardware implementation option.\nRGBLED_OPTION_TYPE = backlight ## none, backlight or underglow
This is where you will write custom code for your keyboard. Typically you will write code to initialize and interface with the hardware in your keyboard. If your keyboard consists of only a key matrix with no LEDs, speakers, or other auxiliary hardware this file can be blank.
The following functions are typically defined in this file:
This file is used to define the matrix for your keyboard. You should define at least one C macro which translates an array into a matrix representing the physical switch matrix for your keyboard. If it's possible to build your keyboard with multiple layouts you should define additional macros.
If you have only a single layout you should call this macro LAYOUT.
When defining multiple layouts you should have a base layout, named LAYOUT_all, that supports all possible switch positions on your matrix, even if that layout is impossible to build physically. This is the macro you should use in your default keymap. You should then have additional keymaps named default_<layout> that use your other layout macros. This will make it easier for people to use the layouts you define.
Layout macro names are entirely lowercase, except for the word LAYOUT at the front.
As an example, if you have a 60% PCB that supports ANSI and ISO you might define the following layouts and keymaps:
Layout Name
Keymap Name
Description
LAYOUT_all
default
A layout that supports both ISO and ANSI
LAYOUT_ansi
default_ansi
An ANSI layout
LAYOUT_iso
default_iso
An ISO layout
TIP
Providing only LAYOUT_all is invalid - especially when implementing the additional layouts within 3rd party tooling.
In an effort to keep the repo size down we're no longer accepting binary files of any format, with few exceptions. Hosting them elsewhere (such as https://imgur.com) and linking them in the readme.md is preferred.
Hardware files (such as plates, cases, pcb) can be contributed to the qmk.fm repo and they will be made available on qmk.fm. Downloadable files are stored in /<keyboard>/ (name follows the same format as above) which are served at https://qmk.fm/<keyboard>/, and pages are generated from /_pages/<keyboard>/ which are served at the same location (.md files are generated into .html files through Jekyll). Check out the lets_split folder for an example.
Given the amount of functionality that QMK exposes it's very easy to confuse new users. When putting together the default firmware for your keyboard we recommend limiting your enabled features and options to the minimal set needed to support your hardware. Recommendations for specific features follow.
Magic Keycodes and Command are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board.
By far the most common problem new users encounter is accidentally triggering Bootmagic while they're plugging in their keyboard. They're holding the keyboard by the bottom, unknowingly pressing in alt and spacebar, and then they find that these keys have been swapped on them. We recommend leaving this feature disabled by default, but if you do turn it on consider setting BOOTMAGIC_KEY_SALT to a key that is hard to press while plugging your keyboard in.
If your keyboard does not have 2 shift keys you should provide a working default for IS_COMMAND, even when you have set COMMAND_ENABLE = no. This will give your users a default to conform to if they do enable Command.
As documented on Customizing Functionality you can define custom functions for your keyboard. Please keep in mind that your users may want to customize that behavior as well, and make it possible for them to do that. If you are providing a custom function, for example process_record_kb(), make sure that your function calls the _user() version of the call too. You should also take into account the return value of the _user() version, and only run your custom code if the user returns true.
We're happy to accept any project that uses QMK, including prototypes and handwired ones, but we have a separate /keyboards/handwired/ folder for them, so the main /keyboards/ folder doesn't get overcrowded. If a prototype project becomes a production project at some point in the future, we'd be happy to move it to the main /keyboards/ folder!
When developing your keyboard, keep in mind that all warnings will be treated as errors - these small warnings can build-up and cause larger errors down the road (and keeping them is generally a bad practice).
If you're adapting your keyboard's setup from another project, but not using the same code, be sure to update the copyright header at the top of the files to show your name, in this format:
c
Copyright 2017 Your Name <your@email.com>
If you are modifying someone else's code and have made only trivial changes you should leave their name in the copyright statement. If you have done significant work on the file you should add your name to theirs, like so:
c
Copyright 2017 Their Name <original_author@example.com> Your Name <you@example.com>
The year should be the first year the file is created. If work was done to that file in later years you can reflect that by appending the second year to the first, like so:
The core of QMK is licensed under the GNU General Public License. If you are shipping binaries for AVR processors you may choose either GPLv2 or GPLv3. If you are shipping binaries for ARM processors you must choose GPL Version 3 to comply with the ChibiOS GPLv3 license.
', 78);
+const _hoisted_79 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_79);
+}
+const hardware_keyboard_guidelines = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ hardware_keyboard_guidelines as default
+};
diff --git a/assets/hardware_keyboard_guidelines.md.M0UlpwHv.lean.js b/assets/hardware_keyboard_guidelines.md.M0UlpwHv.lean.js
new file mode 100644
index 0000000..e59163e
--- /dev/null
+++ b/assets/hardware_keyboard_guidelines.md.M0UlpwHv.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK Keyboard Guidelines","description":"","frontmatter":{},"headers":[],"relativePath":"hardware_keyboard_guidelines.md","filePath":"hardware_keyboard_guidelines.md"}');
+const _sfc_main = { name: "hardware_keyboard_guidelines.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 78);
+const _hoisted_79 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_79);
+}
+const hardware_keyboard_guidelines = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ hardware_keyboard_guidelines as default
+};
diff --git a/assets/how_a_matrix_works.md.CaVS4G-x.js b/assets/how_a_matrix_works.md.CaVS4G-x.js
new file mode 100644
index 0000000..c25dde3
--- /dev/null
+++ b/assets/how_a_matrix_works.md.CaVS4G-x.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"How a Keyboard Matrix Works","description":"","frontmatter":{},"headers":[],"relativePath":"how_a_matrix_works.md","filePath":"how_a_matrix_works.md"}');
+const _sfc_main = { name: "how_a_matrix_works.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Keyboard switch matrices are arranged in rows and columns. Without a matrix circuit, each switch would require its own wire directly to the controller.
When the circuit is arranged in rows and columns, if a key is pressed, a column wire makes contact with a row wire and completes a circuit. The keyboard controller detects this closed circuit and registers it as a key press.
The microcontroller will be set up via the firmware to send a logical 1 to the columns, one at a time, and read from the rows, all at once - this process is called matrix scanning. The matrix is a bunch of open switches that, by default, don't allow any current to pass through - the firmware will read this as no keys being pressed. As soon as you press one key down, the logical 1 that was coming from the column the keyswitch is attached to gets passed through the switch and to the corresponding row - check out the following 2x2 example:
Column 0 being scanned Column 1 being scanned\n x x\n col0 col1 col0 col1\n | | | |\n row0 ---(key0)---(key1) row0 ---(key0)---(key1)\n | | | |\n row1 ---(key2)---(key3) row1 ---(key2)---(key3)
The x represents that the column/row associated has a value of 1, or is HIGH. Here, we see that no keys are being pressed, so no rows get an x. For one keyswitch, keep in mind that one side of the contacts is connected to its row, and the other, its column.
When we press key0, col0 gets connected to row0, so the values that the firmware receives for that row is 0b01 (the 0b here means that this is a bit value, meaning all of the following digits are bits - 0 or 1 - and represent the keys in that column). We'll use this notation to show when a keyswitch has been pressed, to show that the column and row are being connected:
Column 0 being scanned Column 1 being scanned\n x x\n col0 col1 col0 col1\n | | | |\n x row0 ---(-+-0)---(key1) row0 ---(-+-0)---(key1)\n | | | |\n row1 ---(key2)---(key3) row1 ---(key2)---(key3)
We can now see that row0 has an x, so has the value of 1. As a whole, the data the firmware receives when key0 is pressed is:
col0: 0b01\ncol1: 0b00\n │└row0\n └row1
A problem arises when you start pressing more than one key at a time. Looking at our matrix again, it should become pretty obvious:
Column 0 being scanned Column 1 being scanned\n x x\n col0 col1 col0 col1\n | | | |\n x row0 ---(-+-0)---(-+-1) x row0 ---(-+-0)---(-+-1)\n | | | |\n x row1 ---(key2)---(-+-3) x row1 ---(key2)---(-+-3)\n\n Remember that this ^ is still connected to row1
The data we get from that is:
col0: 0b11\ncol1: 0b11\n │└row0\n └row1
Which isn't accurate, since we only have 3 keys pressed down, not all 4. This behavior is called ghosting, and only happens in odd scenarios like this, but can be much more common on a bigger keyboard. The way we can get around this is by placing a diode after the keyswitch, but before it connects to its row. A diode only allows current to pass through one way, which will protect our other columns/rows from being activated in the previous example. We'll represent a dioded matrix like this;
In practical applications, the black line of the diode will be placed facing the row, and away from the keyswitch - the ! in this case is the diode, where the gap represents the black line. A good way to remember this is to think of this symbol: >|
Now when we press the three keys, invoking what would be a ghosting scenario:
Column 0 being scanned Column 1 being scanned\n x x\n col0 col1 col0 col1\n │ │ │ │\n (┌─┤0) (┌─┤1) (┌─┤0) (┌─┤1)\n ! │ ! │ ! │ ! │\n x row0 ─────┴────────┘ │ x row0 ─────┴────────┘ │\n │ │ │ │\n (key2) (┌─┘3) (key2) (┌─┘3)\n ! ! ! !\n row1 ─────┴────────┘ x row1 ─────┴────────┘
Things act as they should! Which will get us the following data:
col0: 0b01\ncol1: 0b11\n │└row0\n └row1
The firmware can then use this correct data to detect what it should do, and eventually, what signals it needs to send to the OS.
', 24);
+const _hoisted_25 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_25);
+}
+const how_a_matrix_works = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ how_a_matrix_works as default
+};
diff --git a/assets/how_a_matrix_works.md.CaVS4G-x.lean.js b/assets/how_a_matrix_works.md.CaVS4G-x.lean.js
new file mode 100644
index 0000000..541a28f
--- /dev/null
+++ b/assets/how_a_matrix_works.md.CaVS4G-x.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"How a Keyboard Matrix Works","description":"","frontmatter":{},"headers":[],"relativePath":"how_a_matrix_works.md","filePath":"how_a_matrix_works.md"}');
+const _sfc_main = { name: "how_a_matrix_works.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 24);
+const _hoisted_25 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_25);
+}
+const how_a_matrix_works = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ how_a_matrix_works as default
+};
diff --git a/assets/how_keyboards_work.md.DEm83W7w.js b/assets/how_keyboards_work.md.DEm83W7w.js
new file mode 100644
index 0000000..1964022
--- /dev/null
+++ b/assets/how_keyboards_work.md.DEm83W7w.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"How Keys Are Registered, and Interpreted by Computers","description":"","frontmatter":{},"headers":[],"relativePath":"how_keyboards_work.md","filePath":"how_keyboards_work.md"}');
+const _sfc_main = { name: "how_keyboards_work.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
How Keys Are Registered, and Interpreted by Computers
In this file, you can will learn the concepts of how keyboards work over USB, and you'll be able to better understand what you can expect from changing your firmware directly.
Whenever you press a key, the firmware of your keyboard can register this event. It can register when the key is pressed, held and released.
This usually happens with a periodic scan of key presses. This speed often is limited by the mechanical key response time, the protocol to transfer those key presses (here USB HID), and by the software it is used in.
The HID specification tells what a keyboard can actually send through USB to have a chance to be properly recognised. This includes a pre-defined list of scancodes which are simple numbers from 0x00 to 0xE7. The firmware assigns a scancode to each key of the keyboard.
The firmware does not send actual letters or characters, but only scancodes. Thus, by modifying the firmware, you can only modify what scancode is sent over USB for a given key.
The scancode is mapped to a keycode dependent on the keyboard 60-keyboard.hwdb at Main. Without this mapping, the operating system will not receive a valid keycode and will be unable to do anything useful with that key press.
Once the keycode reaches the operating system, a piece of software has to have it match an actual character thanks to a keyboard layout. For example, if your layout is set to QWERTY, a sample of the matching table is as follows:
As the layout is generally fixed (unless you create your own), the firmware can actually call a keycode by its layout name directly to ease things for you. This is exactly what is done here with KC_A actually representing 0x04 in QWERTY. The full list can be found in keycodes.
Putting aside shortcuts, having a limited set of keycodes mapped to a limited layout means that the list of characters you can assign to a given key are only the ones present in the layout.
For example, this means that if you have a QWERTY US layout, and you want to assign one key to produce € (euro currency symbol), you are unable to do so, because the QWERTY US layout does not have such mapping. You could fix that by using a QWERTY UK layout, or a QWERTY US International.
You may wonder why a keyboard layout containing all of Unicode is not devised then? The limited number of keycodes available through USB simply disallows such a thing.
You can have the firmware send sequences of keys to use the software Unicode Input Method of the target operating system, thus effectively entering characters independently of the layout defined in the OS.
Yet, it does come with multiple disadvantages:
Tied to a specific OS at a time (need recompilation when changing OS);
Within a given OS, does not work in all software;
Limited to a subset of Unicode on some systems.
', 27);
+const _hoisted_28 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_28);
+}
+const how_keyboards_work = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ how_keyboards_work as default
+};
diff --git a/assets/how_keyboards_work.md.DEm83W7w.lean.js b/assets/how_keyboards_work.md.DEm83W7w.lean.js
new file mode 100644
index 0000000..c2400ae
--- /dev/null
+++ b/assets/how_keyboards_work.md.DEm83W7w.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"How Keys Are Registered, and Interpreted by Computers","description":"","frontmatter":{},"headers":[],"relativePath":"how_keyboards_work.md","filePath":"how_keyboards_work.md"}');
+const _sfc_main = { name: "how_keyboards_work.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 27);
+const _hoisted_28 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_28);
+}
+const how_keyboards_work = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ how_keyboards_work as default
+};
diff --git a/assets/index.md.CE4UOGjJ.js b/assets/index.md.CE4UOGjJ.js
new file mode 100644
index 0000000..1c1103d
--- /dev/null
+++ b/assets/index.md.CE4UOGjJ.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Quantum Mechanical Keyboard Firmware","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md"}');
+const _sfc_main = { name: "index.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
QMK (Quantum Mechanical Keyboard) is an open source community centered around developing computer input devices. The community encompasses all sorts of input devices, such as keyboards, mice, and MIDI devices. A core group of collaborators maintains QMK Firmware, QMK Configurator, QMK Toolbox, qmk.fm, and this documentation with the help of community members like you.
QMK has lots of features to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your keymap, and changing the keycodes.
In order to flash a microcontroller over USB, it needs something called a bootloader. This bootloader lives in a specific section of the flash memory, and allows you to load the actual application firmware (in this case, QMK) into the rest of the flash.
However, it can sometimes happen that the bootloader becomes corrupted and needs reflashing, or you may want to change the bootloader to another one. It's not possible to do this with the existing bootloader, because, of course, it is already running, and cannot overwrite itself. Instead, you will need to ISP flash the microcontroller.
There are several different kinds of bootloaders available for AVR microcontrollers. Most STM32 ARM-based microcontrollers already have a USB-capable bootloader in ROM, so generally do not need to be ISP flashed. The one current exception is the STM32F103.
One of the following devices is required to perform the ISP flashing. The product links are to the official versions, however you can certainly source them elsewhere.
You'll also need some jumper wires to connect the ISP flasher and the target board. Some boards have an ISP header with the necessary pins broken out. If not, then you will need to temporarily solder the wires to the PCB -- usually to switch pins or directly to the MCU. The wiring is fairly straightforward; for the most part, you'll be connecting like to like. Refer to the target MCU's datasheet for the exact RESET, SCLK, MOSI and MISO pins.
Note that the 10 pin on the Pro Micro should be wired to the RESET pin on the keyboard's controller. DO NOT connect the RESET pin on the Pro Micro to the RESET on the keyboard.
A standard Uno or Micro can be used as an ISP flashing tool using the example "ArduinoISP" sketch to emulate an STK500 ISP. Also works with Sparkfun Pro Micros and clones.
Note that the 10 pin on the Uno/Micro should be wired to the RESET pin on the keyboard's controller. DO NOT connect the RESET pin on the Uno/Micro to the RESET on the keyboard.
Note that the B0 pin on the Teensy should be wired to the RESET pin on the keyboard's controller. DO NOT connect the RESET pin on the Teensy to the RESET on the keyboard.
SparkFun PocketAVR and USBtinyISP DO NOT support AVR chips with more than 64 KiB of flash (e.g., the AT90USB128 series). This limitation is mentioned on the shop page for SparkFun PocketAVR and in the FAQ for USBtinyISP. If you try to use one of these programmers with AT90USB128 chips, you will get verification errors from avrdude, and the bootloader won't be flashed properly (e.g., see the issue #3286).
The 5-pin "ICSP" header is for ISP flashing the PIC microcontroller of the Bus Pirate. Connect your target board to the 10-pin header opposite the USB connector instead.
AVRDUDE Programmer: buspirate AVRDUDE Port: Serial
QMK Toolbox supports flashing both the ISP firmware and bootloader, but note that it cannot (currently) set the AVR fuse bytes for the actual ISP flashing step, so you may want to work with avrdude directly instead.
Setting up the QMK environment is highly recommended, as it automatically installs avrdude along with a host of other tools.
One of these files is what you will be ISP flashing onto the board. The default fuses are also listed.
If you're not sure what your board uses, look in the rules.mk file for the keyboard in QMK. The MCU and BOOTLOADER lines will have the values you need. It may differ between different versions of the board.
These are the factory default bootloaders shipped by Atmel (now Microchip). Note that the AT90USB64 and AT90USB128 bootloaders are slightly modified, due to a bug causing them to not enumerate properly in Windows 8 and later.
This is the default Arduino-style bootloader derived from the LUFA CDC bootloader, and is only for the ATmega32U4.
There are several variants depending on the vendor, but they all mostly work the same way. The SparkFun variants, for example, require the RESET pin to be grounded twice quickly in order to stay in bootloader mode for more than 750 ms.
Files marked with a * have combined Arduino sketches, which runs by default and also appears as a serial port. However, this is not the bootloader device.
This bootloader is primarily for keyboards originally designed for the PS2AVRGB firmware and Bootmapper Client. It is not recommended for use in new designs.
USBaspLoader is a bootloader based on V-USB that emulates a hardware USBasp device. It runs on ATmega32A and ATmega328P MCUs.
Precompiled .hex files are generally not available, but you can compile it yourself by setting up the QMK environment and following Coseyfannitutti's guide for the appropriate MCU:
Note that some boards may have their own specialized build of this bootloader in a separate repository. This will usually be linked to in the board's readme.
Open a new Terminal window - if you are on Windows, use MSYS2 or QMK MSYS, not the Command Prompt. Navigate to the directory your bootloader .hex is in. Now it's time to run the avrdude command.
<programmer> corresponds to the programmer type listed for each ISP flasher in the Hardware section, for example avrisp.
<port> is the serial port that appears when you plug the ISP flasher in, if any. For some programmers this is simply usb (or you can omit the -P argument completely) since they do not operate as a serial device.
Windows: COMx - check Device Manager, under the "Ports (COM & LPT)" section
Linux: /dev/ttyACMx
macOS: /dev/tty.usbmodemXXXXXX
<mcu> should be the lowercase name of the target AVR microcontroller, for example atmega32u4.
<filename> is the absolute or relative path to the bootloader to be flashed, for example Caterina-Micro.hex.
You can also run man avrdude for more information.
If all goes well, you should get output similar to the following:
avrdude: AVR device initialized and ready to accept instructions\n\nReading | ################################################## | 100% 0.00s\n\navrdude: Device signature = 0x1e9587 (probably m32u4)\navrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed\n To disable this feature, specify the -D option.\navrdude: erasing chip\navrdude: reading input file "Caterina-Micro.hex"\navrdude: writing flash (32730 bytes):\n\nWriting | ################################################## | 100% 11.58s\n\navrdude: 32730 bytes of flash written\navrdude: verifying flash memory against Caterina-Micro.hex:\navrdude: load data flash data from input file Caterina-Micro.hex:\navrdude: input file Caterina-Micro.hex contains 32730 bytes\navrdude: reading on-chip flash data:\n\nReading | ################################################## | 100% 10.33s\n\navrdude: verifying ...\navrdude: 32730 bytes of flash verified\n\navrdude: safemode: Fuses OK (E:CB, H:D8, L:FF)\n\navrdude done. Thank you.
This is a slightly more advanced topic, but may be necessary if you are switching from one bootloader to another (for example, Caterina to Atmel/QMK DFU on a Pro Micro). Fuses control some of the low-level functionality of the AVR microcontroller, such as clock speed, whether JTAG is enabled, and the size of the section of flash memory reserved for the bootloader, among other things. You can find a fuse calculator for many AVR parts here.
WARNING
Setting incorrect fuse values, in particular the clock-related bits, may render the MCU practically unrecoverable without high voltage programming (not covered here)! Make sure to double check the commands you enter before you execute them.
To set the fuses, add the following to the avrdude command:
where the lfuse, hfuse and efuse arguments represent the low, high and extended fuse bytes as listed in the Hardware section.
TIP
You may get a warning from avrdude that the extended fuse byte does not match what you provided when reading it back. If the second hex digit matches, this can usually be safely ignored, because the top four bits of this fuse do not actually exist on many AVR parts, and may read back as anything.
For mass production purposes, it is possible to join the bootloader and QMK firmware together into a single file, due to the way the Intel Hex format works:
Open the QMK firmware and bootloader .hex files in a text editor.
Remove the last line of the QMK firmware (which should be :00000001FF - this is just an "end of file" marker).
Paste the contents of the bootloader .hex file onto a new line at the end of the QMK firmware file, with no empty lines between.
Save it as a new file, for example <keyboard>_<keymap>_production.hex.
You can then ISP flash this combined firmware instead, which allows you to skip the extra step of flashing the QMK firmware over USB.
As mentioned above, most supported STM32 devices already possess a USB DFU bootloader which cannot be overwritten, however the ROM bootloader in the STM32F103 used on the Bluepill is not USB capable. In this case an ST-Link V2 dongle is required to upload the STM32Duino bootloader to the device. These can be readily purchased for relatively cheap on eBay and other places.
This bootloader is a descendant of the Maple bootloader by Leaflabs, and is compatible with dfu-util.
To communicate with the ST-Link, you must install the following packages:
macOS:brew install stlink openocd
Windows (MSYS2):pacman -S mingw-w64-x86_64-stlink mingw-w64-x86_64-openocd
Linux: will vary by distribution, but will likely be stlink and openocd through your particular package manager
Additionally, you may need to update the ST-Link's firmware with the STSW-LINK007 application. Note you will be asked to provide your name and email address if you do not have an ST.com account (this does not create one).
Finally, the bootloader binary itself can be downloaded from here.
If the reported chipid is 0x0410, everything is working. If it is 0x0000, check your wiring, and try swapping the SWDIO and SWCLK pins, as some ST-Link dongles may have incorrect pinouts.
where <path-to-bootloader> is the path to the bootloader .bin file above. You can run this command from the directory you downloaded it to, so that you can simply pass in the filename.
If all goes well, you should get output similar to the following:
st-flash 1.7.0\n2022-03-08T12:16:30 INFO common.c: F1xx Medium-density: 20 KiB SRAM, 64 KiB flash in at least 1 KiB pages.\nfile generic_boot20_pc13.bin md5 checksum: 333c30605e739ce9bedee5999fdaf81b, stlink checksum: 0x0008e534\n2022-03-08T12:16:30 INFO common.c: Attempting to write 7172 (0x1c04) bytes to stm32 address: 134217728 (0x8000000)\n2022-03-08T12:16:30 INFO common.c: Flash page at addr: 0x08000000 erased\n2022-03-08T12:16:30 INFO common.c: Flash page at addr: 0x08000400 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08000800 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08000c00 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001000 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001400 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001800 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001c00 erased\n2022-03-08T12:16:31 INFO common.c: Finished erasing 8 pages of 1024 (0x400) bytes\n2022-03-08T12:16:31 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL\n2022-03-08T12:16:31 INFO flash_loader.c: Successfully loaded flash loader in sram\n2022-03-08T12:16:31 INFO flash_loader.c: Clear DFSR\n 8/ 8 pages written\n2022-03-08T12:16:31 INFO common.c: Starting verification of write complete\n2022-03-08T12:16:31 INFO common.c: Flash written and verified! jolly good!\n2022-03-08T12:16:31 WARN common.c: NRST is not connected
Otherwise, if you receive an Unknown memory region error, run the following command to unlock the STM32F103:
When defining a keymap each key needs a valid key definition. This page documents the symbols that correspond to keycodes that are available to you in QMK.
This is a reference only. Each group of keys links to the page documenting their functionality in more detail.
1. The Linux kernel HID driver recognizes nearly all keycodes, but the default bindings depend on the DE/WM. 2. Treated as F13-F15. 3. Must be held for about three seconds, and will display a prompt instead. 4. Holding Shift+Option allows for finer control of volume level. 5. Skips the entire track in iTunes when tapped, seeks within the current track when held. 6. WMP does not recognize the Rewind key, but both alter playback speed in VLC.
Momentarily turn on layer when pressed (requires KC_TRNS on destination layer)
OSL(layer)
Momentarily activates layer until a key is pressed. See One Shot Keys for details.
LM(layer, mod)
Momentarily turn on layer (like MO) with mod active as well. Where mod is a mods_bit. Mods can be viewed here. Example Implementation: LM(LAYER_1, MOD_LALT)
LT(layer, kc)
Turn on layer when held, kc when tapped
TG(layer)
Toggle layer on or off
TO(layer)
Turns on layer and turns off all other layers, except the default layer
TT(layer)
Normally acts like MO unless it's tapped multiple times, which toggles layer on
The basic set of keycodes are based on the HID Keyboard/Keypad Usage Page (0x07) with the exception of KC_NO, KC_TRNS and keycodes in the 0xA5-DF range. See below for more details.
These keycodes are not part of the Keyboard/Keypad usage page. The SYSTEM_ keycodes are found in the Generic Desktop page, and the rest are located in the Consumer page.
TIP
Some of these keycodes may behave differently depending on the OS. For example, on macOS, the keycodes KC_MEDIA_FAST_FORWARD, KC_MEDIA_REWIND, KC_MEDIA_NEXT_TRACK and KC_MEDIA_PREV_TRACK skip within the current track when held, but skip the entire track when tapped.
Magic Keycodes are prefixed with MAGIC_, and allow you to access the functionality of the deprecated Bootmagic feature after your keyboard has initialized. To use the keycodes, assign them to your keymap as you would any other keycode.
Key
Aliases
Description
QK_MAGIC_SWAP_CONTROL_CAPS_LOCK
CL_SWAP
Swap Caps Lock and Left Control
QK_MAGIC_UNSWAP_CONTROL_CAPS_LOCK
CL_NORM
Unswap Caps Lock and Left Control
QK_MAGIC_TOGGLE_CONTROL_CAPS_LOCK
CL_TOGG
Toggle Caps Lock and Left Control swap
QK_MAGIC_CAPS_LOCK_AS_CONTROL_ON
CL_CTRL
Treat Caps Lock as Control
QK_MAGIC_CAPS_LOCK_AS_CONTROL_OFF
CL_CAPS
Stop treating Caps Lock as Control
QK_MAGIC_SWAP_ESCAPE_CAPS_LOCK
EC_SWAP
Swap Caps Lock and Escape
QK_MAGIC_UNSWAP_ESCAPE_CAPS_LOCK
EC_NORM
Unswap Caps Lock and Escape
QK_MAGIC_TOGGLE_ESCAPE_CAPS_LOCK
EC_TOGG
Toggle Caps Lock and Escape swap
QK_MAGIC_SWAP_LCTL_LGUI
CG_LSWP
Swap Left Control and GUI
QK_MAGIC_UNSWAP_LCTL_LGUI
CG_LNRM
Unswap Left Control and GUI
QK_MAGIC_SWAP_RCTL_RGUI
CG_RSWP
Swap Right Control and GUI
QK_MAGIC_UNSWAP_RCTL_RGUI
CG_RNRM
Unswap Right Control and GUI
QK_MAGIC_SWAP_CTL_GUI
CG_SWAP
Swap Control and GUI on both sides
QK_MAGIC_UNSWAP_CTL_GUI
CG_NORM
Unswap Control and GUI on both sides
QK_MAGIC_TOGGLE_CTL_GUI
CG_TOGG
Toggle Control and GUI swap on both sides
QK_MAGIC_SWAP_LALT_LGUI
AG_LSWP
Swap Left Alt and GUI
QK_MAGIC_UNSWAP_LALT_LGUI
AG_LNRM
Unswap Left Alt and GUI
QK_MAGIC_SWAP_RALT_RGUI
AG_RSWP
Swap Right Alt and GUI
QK_MAGIC_UNSWAP_RALT_RGUI
AG_RNRM
Unswap Right Alt and GUI
QK_MAGIC_SWAP_ALT_GUI
AG_SWAP
Swap Alt and GUI on both sides
QK_MAGIC_UNSWAP_ALT_GUI
AG_NORM
Unswap Alt and GUI on both sides
QK_MAGIC_TOGGLE_ALT_GUI
AG_TOGG
Toggle Alt and GUI swap on both sides
QK_MAGIC_GUI_OFF
GU_OFF
Disable the GUI keys
QK_MAGIC_GUI_ON
GU_ON
Enable the GUI keys
QK_MAGIC_TOGGLE_GUI
GU_TOGG
Toggles the status of the GUI keys
QK_MAGIC_SWAP_GRAVE_ESC
GE_SWAP
Swap ` and Escape
QK_MAGIC_UNSWAP_GRAVE_ESC
GE_NORM
Unswap ` and Escape
QK_MAGIC_SWAP_BACKSLASH_BACKSPACE
BS_SWAP
Swap \\ and Backspace
QK_MAGIC_UNSWAP_BACKSLASH_BACKSPACE
BS_NORM
Unswap \\ and Backspace
QK_MAGIC_TOGGLE_BACKSLASH_BACKSPACE
BS_TOGG
Toggle \\ and Backspace swap state
QK_MAGIC_NKRO_ON
NK_ON
Enable N-key rollover
QK_MAGIC_NKRO_OFF
NK_OFF
Disable N-key rollover
QK_MAGIC_TOGGLE_NKRO
NK_TOGG
Toggle N-key rollover
QK_MAGIC_EE_HANDS_LEFT
EH_LEFT
Set the master half of a split keyboard as the left hand (for EE_HANDS)
QK_MAGIC_EE_HANDS_RIGHT
EH_RGHT
Set the master half of a split keyboard as the right hand (for EE_HANDS)
', 3);
+const _hoisted_4 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_4);
+}
+const keycodes_magic = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ keycodes_magic as default
+};
diff --git a/assets/keycodes_magic.md.LOQRAy94.lean.js b/assets/keycodes_magic.md.LOQRAy94.lean.js
new file mode 100644
index 0000000..49a9519
--- /dev/null
+++ b/assets/keycodes_magic.md.LOQRAy94.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Magic Keycodes","description":"","frontmatter":{},"headers":[],"relativePath":"keycodes_magic.md","filePath":"keycodes_magic.md"}');
+const _sfc_main = { name: "keycodes_magic.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 3);
+const _hoisted_4 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_4);
+}
+const keycodes_magic = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ keycodes_magic as default
+};
diff --git a/assets/keycodes_us_ansi_shifted.md.72mjMG-4.js b/assets/keycodes_us_ansi_shifted.md.72mjMG-4.js
new file mode 100644
index 0000000..81fd8ec
--- /dev/null
+++ b/assets/keycodes_us_ansi_shifted.md.72mjMG-4.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"US ANSI Shifted Symbols","description":"","frontmatter":{},"headers":[],"relativePath":"keycodes_us_ansi_shifted.md","filePath":"keycodes_us_ansi_shifted.md"}');
+const _sfc_main = { name: "keycodes_us_ansi_shifted.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
These keycodes correspond to characters that are "shifted" on a standard US ANSI keyboard. They do not have keycodes of their own but are simply shortcuts for LSFT(kc), and as such send a Left Shift with the unshifted keycode, not the symbol itself.
Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since any modifiers specified in the keycode are ignored.
Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes.
To fix this, open Remote Desktop Connection, click on "Show Options", open the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
QMK keymaps are defined inside a C source file. The data structure is an array of arrays. The outer array is a list of layer arrays while the inner layer array is a list of keys. Most keyboards define a LAYOUT() macro to help you create this array of arrays.
In QMK, const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] holds multiple layers of keymap information in 16 bit data holding the action code. You can define 32 layers at most.
For trivial key definitions, the higher 8 bits of the action code are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as keycode.
Respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence.
Keymap: 32 Layers Layer: action code matrix\n----------------- ---------------------\nstack of layers array_of_action_code[row][column]\n ____________ precedence _______________________\n / / | high / ESC / F1 / F2 / F3 ....\n 31 /___________// | /-----/-----/-----/-----\n 30 /___________// | / TAB / Q / W / E ....\n 29 /___________/ | /-----/-----/-----/-----\n : _:_:_:_:_:__ | : /LCtrl/ A / S / D ....\n : / : : : : : / | : / : : : :\n 2 /___________// | 2 `--------------------------\n 1 /___________// | 1 `--------------------------\n 0 /___________/ V low 0 `--------------------------
Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history.
The state of the Keymap layer is determined by two 32 bit parameters:
default_layer_state indicates a base keymap layer (0-31) which is always valid and to be referred (the default layer).
layer_state has current on/off status of each layer in its bits.
Keymap layer '0' is usually the default_layer, with other layers initially off after booting up the firmware, although this can configured differently in config.h. It is useful to change default_layer when you completely switch a key layout, for example, if you want to switch to Colemak instead of Qwerty.
On the other hand, you can change layer_state to overlay the base layer with other layers for features such as navigation keys, function keys (F1-F12), media keys, and/or special actions.
Note that higher layers have higher priority within the stack of layers. The firmware works its way down from the highest active layers to look up keycodes. Once the firmware locates a keycode other than KC_TRNS (transparent) on an active layer, it stops searching, and lower layers aren't referenced.
In the above scenario, the non-transparent keys on the higher layer would be usable, but whenever KC_TRNS (or equivalent) is defined, the keycode (KC_A) on the lower level would be used.
Note: Valid ways to denote transparency on a given layer:
KC_TRANSPARENT
KC_TRNS (alias)
_______ (alias)
These keycodes allow the processing to fall through to lower layers in search of a non-transparent keycode to process.
For this example we will walk through an older version of the default Clueboard 66% keymap. You'll find it helpful to open that file in another browser window so you can look at everything in context.
There are 2 main sections of a keymap.c file you'll want to concern yourself with:
#include QMK_KEYBOARD_H\n\n// Helpful defines\n#define GRAVE_MODS (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n * You can use _______ in place for KC_TRNS (transparent) *\n * Or you can use XXXXXXX for KC_NO (NOOP) *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n// Each layer gets a name for readability.\n// The underscores don't mean anything - you can\n// have a layer called STUFF or any other name.\n// Layer names don't all need to be of the same\n// length, and you can also skip them entirely\n// and just use numbers.\nenum layer_names {\n _BL,\n _FL,\n _CL,\n};
These are some handy definitions we can use when building our keymap and our custom function. The GRAVE_MODS definition will be used later in our custom function, and the following _BL, _FL, and _CL defines make it easier to refer to each of our layers.
Note: You may also find some older keymap files may also have a define(s) for _______ and/or XXXXXXX. These can be used in place for KC_TRNS and KC_NO respectively, making it easier to see what keys a layer is overriding. These definitions are now unnecessary, as they are included by default.
The main part of this file is the keymaps[] definition. This is where you list your layers and the contents of those layers. This part of the file begins with this definition:
After this you'll find the layer definitions. Typically you'll have one or more "base layers" (such as QWERTY, Dvorak, or Colemak) and then you'll layer on top of that one or more "function" layers. Due to the way layers are processed you can't overlay a "lower" layer on top of a "higher" layer.
keymaps[][MATRIX_ROWS][MATRIX_COLS] in QMK holds the 16 bit action code (sometimes referred as the quantum keycode) in it. For the keycode representing typical keys, its high byte is 0 and its low byte is the USB HID usage ID for keyboard.
INFO
TMK from which QMK was forked uses const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] instead and holds the 8 bit keycode.
The layer is defined using the LAYOUT macro, traditionally defined in the keyboard's .h file.
The LAYOUT macro takes a single list of keycodes, but we have written it in the C source using embedded whitespace and newlines to visualize where each key is on the physical device.
The LAYOUT macro hides and handles the mapping to the hardware's key scan matrix.
Plain keyboard scancodes are prefixed with KC_, while "special" keys are not.
The upper left key activates custom function 0 (F(0))
The "Fn" key is defined with MO(_FL), which moves to the _FL layer while that key is being held down.
Our function layer is, from a code point of view, no different from the base layer. Conceptually, however, you will build that layer as an overlay, not a replacement. For many people this distinction does not matter, but as you build more complicated layering setups it matters more and more.
The Mod-Tap key MT(mod, kc) acts like a modifier when held, and a regular keycode when tapped. In other words, you can have a key that sends Escape when you tap it, but functions as a Control or Shift key when you hold it down.
The modifiers this keycode and OSM() accept are prefixed with MOD_, not KC_:
Modifier
Description
MOD_LCTL
Left Control
MOD_LSFT
Left Shift
MOD_LALT
Left Alt
MOD_LGUI
Left GUI (Windows/Command/Meta key)
MOD_RCTL
Right Control
MOD_RSFT
Right Shift
MOD_RALT
Right Alt (AltGr)
MOD_RGUI
Right GUI (Windows/Command/Meta key)
MOD_HYPR
Hyper (Left Control, Shift, Alt and GUI)
MOD_MEH
Meh (Left Control, Shift, and Alt)
You can combine these by ORing them together like so:
c
MT(MOD_LCTL | MOD_LSFT, KC_ESC)
This key would activate Left Control and Left Shift when held, and send Escape when tapped.
For convenience, QMK includes some Mod-Tap shortcuts to make common combinations more compact in your keymap:
Currently, the kc argument of MT() is limited to the Basic Keycode set, meaning you can't use keycodes like LCTL(), KC_TILD, or anything greater than 0xFF. This is because QMK uses 16-bit keycodes, of which 3 bits are used for the function identifier, 1 bit for selecting right or left mods, and 4 bits to tell which mods are used, leaving only 8 bits for the keycode. Additionally, if at least one right-handed modifier is specified in a Mod-Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two - for example, Left Control and Right Shift would become Right Control and Right Shift.
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, Tap Dance can be used to accomplish this.
You may also run into issues when using Remote Desktop Connection on Windows. Because these keycodes send key events faster than a human, Remote Desktop could miss them. To fix this, open Remote Desktop Connection, click on "Show Options", open the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly. It can also be mitigated by increasing TAP_CODE_DELAY.
The basic keycode limitation with Mod-Tap can be worked around by intercepting it in process_record_user. For example, shifted keycode KC_DQUO cannot be used with MT() because it is a 16-bit keycode alias of LSFT(KC_QUOT). Modifiers on KC_DQUO will be masked by MT(). But the following custom code can be used to intercept the "tap" function to manually send KC_DQUO:
c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case LCTL_T(KC_DQUO):\n if (record->tap.count && record->event.pressed) {\n tap_code16(KC_DQUO); // Send KC_DQUO on tap\n return false; // Return false to ignore further processing of key\n }\n break;\n }\n return true;\n}
Likewise, similar custom code can also be used to intercept the hold function to send custom user key code. The following example uses LT(0, kc) (layer-tap key with no practical use because layer 0 is always active) to add cut, copy and paste function to X,C and V keys when they are held down:
c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case LT(0,KC_X):\n if (!record->tap.count && record->event.pressed) {\n tap_code16(C(KC_X)); // Intercept hold function to send Ctrl-X\n return false;\n }\n return true; // Return true for normal processing of tap keycode\n case LT(0,KC_C):\n if (!record->tap.count && record->event.pressed) {\n tap_code16(C(KC_C)); // Intercept hold function to send Ctrl-C\n return false;\n }\n return true; // Return true for normal processing of tap keycode\n case LT(0,KC_V):\n if (!record->tap.count && record->event.pressed) {\n tap_code16(C(KC_V)); // Intercept hold function to send Ctrl-V\n return false;\n }\n return true; // Return true for normal processing of tap keycode\n }\n return true;\n}
This last example implements custom tap and hold function with LT(0,KC_NO) to create a single copy-on-tap, paste-on-hold key:
c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n switch (keycode) {\n case LT(0,KC_NO):\n if (record->tap.count && record->event.pressed) {\n tap_code16(C(KC_C)); // Intercept tap function to send Ctrl-C\n } else if (record->event.pressed) {\n tap_code16(C(KC_V)); // Intercept hold function to send Ctrl-V\n }\n return false;\n }\n return true;\n}
Your computer keyboard has a processor inside of it, similar to the one inside your computer. This processor runs software that is responsible for detecting button presses and informing the computer when keys are pressed. QMK Firmware fills the role of that software, detecting button presses and passing that information on to the host computer. When you build your custom keymap, you are creating an executable program for your keyboard.
QMK tries to put a lot of power into your hands by making easy things easy, and hard things possible. You don't have to know how to program to create powerful keymaps — you only have to follow a few simple syntax rules.
Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a large number of hobbyist boards. If your current keyboard can't run QMK there are a lot of choices out there for boards that do.
This guide is suitable for everyone who wants to build a keyboard firmware using the source code. If you are already a programmer you will find the process very familiar and easier to follow. There are 3 main sections to this guide:
This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can ask us for guidance.
Beyond this guide there are several resources you may find helpful while you learn QMK. We've collected them on the Syllabus and Learning Resources pages.
', 11);
+const _hoisted_12 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_12);
+}
+const newbs = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ newbs as default
+};
diff --git a/assets/newbs.md.BD3QefyC.lean.js b/assets/newbs.md.BD3QefyC.lean.js
new file mode 100644
index 0000000..aa1590d
--- /dev/null
+++ b/assets/newbs.md.BD3QefyC.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"The QMK Tutorial","description":"","frontmatter":{},"headers":[],"relativePath":"newbs.md","filePath":"newbs.md"}');
+const _sfc_main = { name: "newbs.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 11);
+const _hoisted_12 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_12);
+}
+const newbs = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ newbs as default
+};
diff --git a/assets/newbs_building_firmware.md.CybovRdt.js b/assets/newbs_building_firmware.md.CybovRdt.js
new file mode 100644
index 0000000..ef2d3c6
--- /dev/null
+++ b/assets/newbs_building_firmware.md.CybovRdt.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Building Your First Firmware","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_building_firmware.md","filePath":"newbs_building_firmware.md"}');
+const _sfc_main = { name: "newbs_building_firmware.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Now that you have set up your build environment you are ready to start building custom firmware. For this section of the guide we will bounce between 3 programs- your file manager, your text editor, and your terminal window. Keep all 3 open until you are done and happy with your keyboard firmware.
Configure Your Build Environment Defaults (Optional)
You can configure your build environment to set the defaults and make working with QMK less tedious. Let's do that now!
Most people new to QMK only have 1 keyboard. You can set this keyboard as your default with the qmk config command. For example, to set your default keyboard to clueboard/66/rev4:
sh
qmk config user.keyboard=clueboard/66/rev4
TIP
The keyboard option is the path relative to the keyboard directory, the above example would be found in qmk_firmware/keyboards/clueboard/66/rev4. If you're unsure you can view a full list of supported keyboards with qmk list-keyboards.
You can also set your default keymap name. Most people use their GitHub username like the keymap name from the previous steps:
To create your own keymap you'll want to create a copy of the default keymap. If you configured your build environment in the last step you can do that easily with the QMK CLI:
sh
qmk new-keymap
If you did not configure your environment, or you have multiple keyboards, you can specify a keyboard name:
sh
qmk new-keymap -kb <keyboard_name>
Look at the output from that command, you should see something like this:
Ψ Created a new keymap called <github_username> in: /home/me/qmk_firmware/keyboards/clueboard/66/rev3/keymaps/<github_username>.
Open your keymap.c file in your text editor. Inside this file you'll find the structure that controls how your keyboard behaves. At the top of keymap.c there may be some defines and enums that make the keymap easier to read. Farther down you'll find a line that looks like this:
This line indicates where the list of Layers begins. Below that you'll find lines containing LAYOUT, and these lines indicate the start of a layer. Below that line is the list of keys that comprise a particular layer.
WARNING
When editing your keymap file be careful not to add or remove any commas. If you do, you will prevent your firmware from compiling and it may not be easy to figure out where the extra, or missing, comma is.
How to complete this step is entirely up to you. Make the one change that's been bugging you, or completely rework everything. You can remove layers if you don't need all of them, or add layers up to a total of 32. There are a lot of features in QMK, explore the sidebar to the left under "Using QMK" to see the full list. To get you started here are a few of the easier to use features:
When your changes to the keymap are complete you will need to build the firmware. To do so go back to your terminal window and run the compile command:
sh
qmk compile
If you did not configure defaults for your environment, or you have multiple keyboards, you can specify a keyboard and/or keymap:
sh
qmk compile -kb <keyboard> -km <keymap>
While this compiles you will have a lot of output going to the screen informing you of what files are being compiled. It should end with output that looks similar to this:
Linking: .build/planck_rev5_default.elf [OK]\nCreating load file for flashing: .build/planck_rev5_default.hex [OK]\nCopying planck_rev5_default.hex to qmk_firmware folder [OK]\nChecking file size of planck_rev5_default.hex [OK]\n * The firmware size is fine - 27312/28672 (95%, 1360 bytes free)
The QMK Configurator is an online graphical user interface that generates QMK Firmware .hex or .bin files.
It should be noted that Configurator cannot produce firmwares for keyboards using a different controller than they were designed for, i.e. an RP2040 controller on a board designed for pro micro. You will have to use the command line converters for this.
Watch the Video Tutorial. Many people find that is enough information to start programming their own keyboard.
The QMK Configurator works best with Chrome or Firefox.
WARNING
Note: Files from other tools such as Keyboard Layout Editor (KLE), or kbfirmware will not be compatible with QMK Configurator. Do not load them, do not import them. QMK Configurator is a DIFFERENT tool.
This is an intermediate QMK tutorial to setup an out-of-tree build environment with a personal GitHub repository. It avoids using a fork of the QMK firmware to store and build your keymap within its source tree. Keymap files will instead be stored in your own personal GitHub repository, in Userspace format, and built with an action workflow. Unlike the default tutorial, this guide requires some familiarity with using Git.
Is This Guide For Me?
This is a lean setup to avoid space-consuming local build environment in your computer. Troubleshooting compile-time errors will be slower with commit uploads to GitHub for the compiler workflow.
You’ll need a program that can edit and save plain text files. The default editor that comes with many OS's does not save plain text files, so you'll need to make sure that whatever editor you chose does.
If you are familiar with using github.dev, you can skip to step 2 and commit the code files that follows directly on GitHub using the web-based VSCode editor.
You will need a personal GitHub repository to host your QMK code. Follow this guide to create one named qmk_keymap. Do not proceed to commit any files just yet.
For Windows user running MSYS, those commands will create the folder qmk_keymap/ and its content in the C:\\Users\\<windows_username>\\qmk_keymap\\ path location.
Select your keyboard from the drop-down list (and choose a layout if required).
Use your GitHub username for the Keymap Name field.
Customise the key layout according to your preference.
Select download next to KEYMAP.JSON and save the JSON file into the ~/qmk_keymap/ folder.
WARNING
Important: Make sure that the GitHub username you use in step 2 is correct. If it is not, the build process will fail to locate your files in the right folder.
Use your GitHub personal access token at the password prompt. If you have setup SSH access, replace https://github.com/gh-username/qmk_keymap.git with git@github.com:gh-username/qmk_keymap.git in the remote origin command above.
Files committed to GitHub in the previous step will automatically trigger the workflow to build the JSON file listed in build.yml. To review its output:
Visit your "qmk_keymap" repository page on GitHub.
Select Actions tab to display the "Build QMK Firmware" workflow.
Select that workflow to display its run from the last commit.
Successfully compiled firmware will be under the "Artifacts" section.
If there are build errors, review the job log for details.
Download and flash the firmware file into your keyboard using QMK Toolbox.
This setup and workflow relies on the QMK Userspace feature. The build process will copy the QMK source codes and clone your repository into its users/ folder in a container. You must adhere to the following guidelines when customising your keymaps:
Keymap layout files must be retained in JSON format and cannot be converted to keymap.c.
User callback and functions (e.g. process_record_user()) can be placed in the source.c file.
Multiple keymap JSON files can be built in the same workflow. List them under matrix.file:, e.g.:
yml
file:\n - planck.json\n - crkbd.json
Code changes will require Git commit into GitHub to trigger the build workflow.
QMK Firmware now officially supports storing user keymaps outside of the normal QMK Firmware repository, allowing users to maintain their own keymaps without having to fork, modify, and maintain a copy of QMK Firmware themselves.
External Userspace mirrors the structure of the main QMK Firmware repository, but only contains the keymaps that you wish to build. You can still use keyboards/<my keyboard>/keymaps/<my keymap> to store your keymaps, or you can use the layouts/<my layout>/<my keymap> system as before -- they're just stored external to QMK Firmware.
The build system will still honor the use of users/<my keymap> if you rely on the traditional QMK Firmware userspace feature -- it's now supported externally too, using the same location inside the External Userspace directory.
Additionally, there is first-class support for using GitHub Actions to build your keymaps, allowing you to automatically compile your keymaps whenever you push changes to your External Userspace repository.
WARNING
External Userspace is new functionality and may have issues. Tighter integration with the qmk command will occur over time.
TIP
Historical keymap.json and GitHub-based firmware build instructions can be found here. This document supersedes those instructions, but they should still function correctly.
If you wish to build on your local machine, you will need to set up QMK locally. This is a one-time process, and is documented in the newbs setup guide.
WARNING
If you wish to use any QMK CLI commands related to manipulating External Userspace definitions, you will currently need a copy of QMK Firmware as well.
WARNING
Building locally has a much shorter turnaround time than waiting for GitHub Actions to complete.
External Userspace Repository Setup (forked on GitHub)
A basic skeleton External Userspace repository can be found here. If you wish to keep your keymaps on GitHub (strongly recommended!), you can fork the repository and use it as a base:
Going ahead with your fork will copy it to your account, at which point you can clone it to your local machine and begin adding your keymaps:
sh
cd $HOME\ngit clone https://github.com/{myusername}/qmk_userspace.git\nqmk config user.overlay_dir="$(realpath qmk_userspace)"
These instructions assume you have already set up QMK locally, and have a copy of the QMK Firmware repository on your machine.
Keymaps within External Userspace are defined in the same way as they are in the main QMK repository. You can either use the qmk new-keymap command to create a new keymap, or manually create a new directory in the keyboards directory.
Alternatively, you can use the layouts directory to store your keymaps, using the same layout system as the main QMK repository -- if you choose to do so you'll want to use the path layouts/<layout name>/<keymap name>/keymap.* to store your keymap files, where layout name matches an existing layout in QMK, such as tkl_ansi.
After creating your new keymap, building the keymap matches normal QMK usage:
sh
qmk compile -kb <keyboard> -km <keymap>
WARNING
The qmk config user.overlay_dir=... command must have been run when cloning the External Userspace repository for this to work correctly.
Adding the keymap to External Userspace build targets
Once you have created your keymap, if you want to use GitHub Actions to build your firmware, you will need to add it to the External Userspace build targets. This is done using the qmk userspace-add command:
sh
# for a keyboard/keymap combo:\nqmk userspace-add -kb <keyboard> -km <keymap>\n# or, for a json-based keymap (if kept "loose"):\nqmk userspace-add <relative/path/to/my/keymap.json>
This updates the qmk.json file in the root of your External Userspace directory. If you're using a git repository to store your keymaps, now is a great time to commit and push to your own fork.
Once you have added your keymaps to the External Userspace build targets, you can compile all of them at once using the qmk userspace-compile command:
sh
qmk userspace-compile
All firmware builds you've added to the External Userspace build targets will be built, and the resulting firmware files will be placed in the root of your External Userspace directory.
GitHub Actions can be used to automatically build your keymaps whenever you push changes to your External Userspace repository. If you have set up your list of build targets, this is as simple as enabling workflows in the GitHub repository settings:
Any push will result in compilation of all configured builds, and once completed a new release containing the newly-minted firmware files will be created on GitHub, which you can subsequently download and flash to your keyboard:
', 40);
+const _hoisted_41 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_41);
+}
+const newbs_external_userspace = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ newbs_external_userspace as default
+};
diff --git a/assets/newbs_external_userspace.md.BMYQp9mN.lean.js b/assets/newbs_external_userspace.md.BMYQp9mN.lean.js
new file mode 100644
index 0000000..da2ac21
--- /dev/null
+++ b/assets/newbs_external_userspace.md.BMYQp9mN.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"External QMK Userspace","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_external_userspace.md","filePath":"newbs_external_userspace.md"}');
+const _sfc_main = { name: "newbs_external_userspace.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 40);
+const _hoisted_41 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_41);
+}
+const newbs_external_userspace = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ newbs_external_userspace as default
+};
diff --git a/assets/newbs_flashing.md.BxrsbpFT.js b/assets/newbs_flashing.md.BxrsbpFT.js
new file mode 100644
index 0000000..a4282c5
--- /dev/null
+++ b/assets/newbs_flashing.md.BxrsbpFT.js
@@ -0,0 +1,63 @@
+import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Flashing Your Keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_flashing.md","filePath":"newbs_flashing.md"}');
+const _sfc_main = { name: "newbs_flashing.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
In order to flash your custom firmware you must first put your keyboard into a special flashing mode. While it is in this mode you will not be able to type or otherwise use your keyboard. It is very important that you do not unplug the keyboard or otherwise interrupt the flashing process while the firmware is being written.
Different keyboards have different ways to enter this special mode. If your PCB currently runs QMK, TMK, or PS2AVRGB (Bootmapper Client) and you have not been given specific instructions, try the following, in order:
Hold down both shift keys and press Pause
Hold down both shift keys and press B
Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys
Unplug your keyboard, hold down the top or bottom left key (usually Escape or Left Control) and plug in your keyboard
Press the physical RESET button, usually located on the underside of the PCB
Locate header pins on the PCB labeled RESET and GND, and short them together while plugging your PCB in
If you've attempted all of the above to no avail, and the main chip on the board says STM32 or RP2-B1 on it, this may be a bit more complicated. Generally your best bet is to ask on Discord for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!
Otherwise, you should see a message in yellow, similar to this in QMK Toolbox:
The simplest way to flash your keyboard will be with the QMK Toolbox.
However, the Toolbox is currently only available for Windows and macOS. If you're using Linux (or just wish to flash the firmware from the command line), skip to the Flash your Keyboard from the Command Line section.
TIP
QMK Toolbox is not necessary for flashing RP2040 devices.
Begin by opening the QMK Toolbox application. You'll want to locate the firmware file in Finder or Explorer. Your keyboard firmware may be in one of two formats- .hex or .bin. QMK tries to copy the appropriate one for your keyboard into the root qmk_firmware directory.
If you are on Windows or macOS, there are commands you can use to easily open the current folder in Explorer or Finder.
The firmware file always follows this naming format:
<keyboard_name>_<keymap_name>.{bin,hex}
For example, the planck/rev5 with a default keymap will have this filename:
planck_rev5_default.hex
Once you have located your firmware file, drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored.
This has been made pretty simple compared to what it used to be. When you are ready to compile and flash your firmware, open up your terminal window and run the flash command:
sh
qmk flash
If you did not configure your keyboard/keymap name in the CLI according to the Configure your build environment section, or you have multiple keyboards, you can specify the keyboard and keymap:
sh
qmk flash -kb <my_keyboard> -km <my_keymap>
This will check the keyboard's configuration, and then attempt to flash it based on the specified bootloader. This means that you don't need to know which bootloader that your keyboard uses. Just run the command, and let the command do the heavy lifting.
However, this does rely on the bootloader being set by the keyboard. If this information is not configured, or you're using a board that doesn't have a supported target to flash it, you will see this error:
WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time.
In this case, you'll have to fall back on specifying the bootloader. See the Flashing Firmware Guide for more details.
WARNING
If your bootloader is not detected by qmk flash, try running qmk doctor for suggestions on how to fix common problems.
Congrats! Your custom firmware has been programmed to your keyboard and you're ready to test it out!
With a little bit of luck everything will work perfectly, but if not there are steps that will help you figure out what's wrong. Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use QMK Configurator's test mode to check your keyboard, even if it doesn't run QMK.
Before you can build keymaps, you need to install some software and set up your build environment. This only has to be done once no matter how many keyboards you plan to compile firmware for.
You’ll need a program that can edit and save plain text files. The default editor that comes with many OS's does not save plain text files, so you'll need to make sure that whatever editor you chose does.
A graphical program for Windows and macOS that allows you to both program and debug your custom keyboard
TIP
If you haven't worked with the Linux/Unix command line before, there are a few basic concepts and commands you should learn. These resources will teach you enough to be able to work with QMK.
The qmk home folder can be specified at setup with qmk setup -H <path>, and modified afterwards using the cli configuration and the variable user.qmk_home. For all available options run qmk setup --help.
TIP
If you already know how to use GitHub, we recommend that you follow these instructions and use qmk setup <github_username>/qmk_firmware to clone your personal fork. If you don't know what that means you can safely ignore this message.
Now that your QMK build environment is set up, you can build a firmware for your keyboard. Start by trying to build the keyboard's default keymap. You should be able to do that with a command in this format:
sh
qmk compile -kb <keyboard> -km default
For example, to build a firmware for a Clueboard 66% you would use:
sh
qmk compile -kb clueboard/66/rev3 -km default
TIP
The keyboard option is the path relative to the keyboard directory, the above example would be found in qmk_firmware/keyboards/clueboard/66/rev3. If you're unsure you can view a full list of supported keyboards with qmk list-keyboards.
When it is done you should have a lot of output that ends similar to this:
Linking: .build/clueboard_66_rev3_default.elf [OK]\nCreating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]\nCopying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]\nChecking file size of clueboard_66_rev3_default.hex [OK]\n * The firmware size is fine - 26356/28672 (2316 bytes free)
Or, "How I Learned to Stop Worrying and Love Git."
This section aims to instruct novices in the best ways to have a smooth experience in contributing to QMK. We will walk through the process of contributing to QMK, detailing some ways to make this task easier, and then later we'll break some things in order to teach you how to fix them.
Sometimes when your work in a branch takes a long time to complete, changes that have been made by others conflict with changes you have made to your branch when you open a pull request. This is called a merge conflict, and is what happens when multiple people edit the same parts of the same files.
A rebase is Git's way of taking changes that were applied at one point in the commit history, reversing them, and then applying the same changes at another point. In the case of a merge conflict, you can rebase your branch to grab the changes that were made between when you created your branch and the present time.
The git rev-list command entered here returns the number of commits that differ between the current branch and QMK's master branch. We run git fetch first to make sure we have the refs that represent the current state of the upstream repo. The output of the git rev-list command entered returns two numbers:
The first number represents the number of commits on the current branch since it was created, and the second number is the number of commits made to upstream/master since the current branch was created, and thus, the changes that are not recorded in the current branch.
Now that the current states of both the current branch and the upstream repo are known, we can start a rebase operation:
git rebase upstream/master
This tells Git to undo the commits on the current branch, and then reapply them against QMK's master branch.
$ git rebase upstream/master\nFirst, rewinding head to replay your work on top of it...\nApplying: Commit #1\nUsing index info to reconstruct a base tree...\nM conflicting_file_1.txt\nFalling back to patching base and 3-way merge...\nAuto-merging conflicting_file_1.txt\nCONFLICT (content): Merge conflict in conflicting_file_1.txt\nerror: Failed to merge in the changes.\nhint: Use 'git am --show-current-patch' to see the failed patch\nPatch failed at 0001 Commit #1\n\nResolve all conflicts manually, mark them as resolved with\n"git add/rm <conflicted_files>", then run "git rebase --continue".\nYou can instead skip this commit: run "git rebase --skip".\nTo abort and get back to the state before "git rebase", run "git rebase --abort".
This tells us that we have a merge conflict, and gives the name of the file with the conflict. Open the conflicting file in your text editor, and somewhere in the file, you'll find something like this:
<<<<<<< HEAD\n<p>For help with any issues, email us at support@webhost.us.</p>\n=======\n<p>Need help? Email support@webhost.us.</p>\n>>>>>>> Commit #1
The line <<<<<<< HEAD marks the beginning of a merge conflict, and the >>>>>>> Commit #1 line marks the end, with the conflicting sections separated by =======. The part on the HEAD side is from the QMK master version of the file, and the part marked with the commit message is from the current branch and commit.
Because Git tracks changes to files rather than the contents of the files directly, if Git can't find the text that was in the file previous to the commit that was made, it won't know how to edit the file. Re-editing the file will solve the conflict. Make your changes, and then save the file.
<p>Need help? Email support@webhost.us.</p>
Now run:
git add conflicting_file_1.txt\ngit rebase --continue
Git logs the changes to the conflicting file, and continues applying the commits from our branch until it reaches the end.
', 22);
+const _hoisted_23 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_23);
+}
+const newbs_git_resolving_merge_conflicts = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ newbs_git_resolving_merge_conflicts as default
+};
diff --git a/assets/newbs_git_resolving_merge_conflicts.md.CbGBcgDe.lean.js b/assets/newbs_git_resolving_merge_conflicts.md.CbGBcgDe.lean.js
new file mode 100644
index 0000000..75bbb03
--- /dev/null
+++ b/assets/newbs_git_resolving_merge_conflicts.md.CbGBcgDe.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Resolving Merge Conflicts","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_resolving_merge_conflicts.md","filePath":"newbs_git_resolving_merge_conflicts.md"}');
+const _sfc_main = { name: "newbs_git_resolving_merge_conflicts.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 22);
+const _hoisted_23 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_23);
+}
+const newbs_git_resolving_merge_conflicts = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ newbs_git_resolving_merge_conflicts as default
+};
diff --git a/assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.js b/assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.js
new file mode 100644
index 0000000..2642b73
--- /dev/null
+++ b/assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Resynchronizing an Out-of-Sync Git Branch","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_resynchronize_a_branch.md","filePath":"newbs_git_resynchronize_a_branch.md"}');
+const _sfc_main = { name: "newbs_git_resynchronize_a_branch.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Suppose you have committed to your master branch, and now need to update your QMK repository. You could git pull QMK's master branch into your own, but GitHub will tell you that your branch is a number of commits ahead of qmk:master, which can create issues if you want to make a pull request to QMK.
Backing Up the Changes on Your Own Master Branch (Optional)
No one wants to lose work if it can be helped. If you want to save the changes you've already made to your master branch, the simplest way to do so is to simply create a duplicate of your "dirty" master branch:
git branch old_master master
Now you have a branch named old_master that is a duplicate of your master branch.
Now it's time to resynchronize your master branch. For this step, you'll want to have QMK's repository configured as a remote in Git. To check your configured remotes, run git remote -v, which should return something similar to:
These steps will update the repository on your computer, but your GitHub fork will still be out of sync. To resynchronize your fork on GitHub, you need to push to your fork, instructing Git to override any remote changes that are not reflected in your local repository. To do this, run:
DO NOT run git push --recurse-submodules=on-demand --force-with-lease on a fork to which other users post commits. This will erase their commits.
Now your GitHub fork, your local files, and QMK's repository are all the same. From here you can make further needed changes (use a branch!) and post them as normal.
', 24);
+const _hoisted_25 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_25);
+}
+const newbs_git_resynchronize_a_branch = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ newbs_git_resynchronize_a_branch as default
+};
diff --git a/assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.lean.js b/assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.lean.js
new file mode 100644
index 0000000..9636bc6
--- /dev/null
+++ b/assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Resynchronizing an Out-of-Sync Git Branch","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_resynchronize_a_branch.md","filePath":"newbs_git_resynchronize_a_branch.md"}');
+const _sfc_main = { name: "newbs_git_resynchronize_a_branch.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 24);
+const _hoisted_25 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_25);
+}
+const newbs_git_resynchronize_a_branch = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ newbs_git_resynchronize_a_branch as default
+};
diff --git a/assets/newbs_git_using_your_master_branch.md.CK4m9Sny.js b/assets/newbs_git_using_your_master_branch.md.CK4m9Sny.js
new file mode 100644
index 0000000..b2c57b0
--- /dev/null
+++ b/assets/newbs_git_using_your_master_branch.md.CK4m9Sny.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse(`{"title":"Your Fork's Master: Update Often, Commit Never","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_using_your_master_branch.md","filePath":"newbs_git_using_your_master_branch.md"}`);
+const _sfc_main = { name: "newbs_git_using_your_master_branch.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
It is highly recommended for QMK development, regardless of what is being done or where, to keep your master branch updated, but never commit to it. Instead, do all your changes in a development branch and issue pull requests from your branches when you're developing.
To reduce the chances of merge conflicts — instances where two or more users have edited the same part of a file concurrently — keep your master branch relatively up-to-date, and start any new developments by creating a new branch.
To keep your master branch updated, it is recommended to add the QMK Firmware repository ("repo") as a remote repository in git. To do this, open your Git command line interface and enter:
The name upstream is arbitrary, but a common convention; you can give the QMK remote any name that suits you. Git's remote command uses the syntax git remote add <name> <url>, <name> being shorthand for the remote repo. This name can be used with many Git commands, including but not limited to fetch, pull and push, to specify the remote repo on which to act.
To verify that the repository has been added, run git remote -v, which should return the following:
Now that this is done, you can check for updates to the repo by running git fetch upstream. This retrieves the branches and tags — collectively referred to as "refs" — from the QMK repo, which now has the nickname upstream. We can now compare the data on our fork origin to that held by QMK.
To update your fork's master, run the following, hitting the Enter key after each line:
This switches you to your master branch, retrieves the refs from the QMK repo, downloads the current QMK master branch to your computer, and then uploads it to your fork.
This creates a new branch named dev_branch, checks it out, and then saves the new branch to your fork. The --set-upstream argument tells git to use your fork and the dev_branch branch every time you use git push or git pull from this branch. It only needs to be used on the first push; after that, you can safely use git push or git pull, without the rest of the arguments.
TIP
With git push, you can use -u in place of --set-upstream — -u is an alias for --set-upstream.
You can name your branch nearly anything you want, though it is recommended to name it something related to the changes you are going to make.
By default git checkout -b will base your new branch on the branch that is currently checked out. You can base your new branch on an existing branch that is not checked out by adding the name of the existing branch to the command:
git checkout -b dev_branch master
Now that you have a development branch, open your text editor and make whatever changes you need to make. It is recommended to make many small commits to your branch; that way, any change that causes issues can be more easily traced and undone if needed. To make your changes, edit and save any files that need to be updated, add them to Git's staging area, and then commit them to your branch:
git add path/to/updated_file\ngit commit -m "My commit message."
git add adds files that have been changed to Git's staging area, which is Git's "loading zone." This contains the changes that are going to be committed by git commit, which saves the changes to the repo. Use descriptive commit messages so you can know what was changed at a glance.
TIP
If you've changed multiple files, you can use git add -- path/to/file1 path/to/file2 ... to add all your desired files.
One shot keys are keys that remain active until the next key is pressed, and then are released. This allows you to type keyboard combinations without pressing more than one key at a time. These keys are usually called "Sticky keys" or "Dead keys".
For example, if you define a key as OSM(MOD_LSFT), you can type a capital A character by first pressing and releasing shift, and then pressing and releasing A. Your computer will see the shift key being held the moment shift is pressed, and it will see the shift key being released immediately after A is released.
One shot keys also work as normal modifiers. If you hold down a one shot key and type other keys, your one shot will be released immediately after you let go of the key.
Additionally, hitting keys five times in a short period will lock that key. This applies for both One Shot Modifiers and One Shot Layers, and is controlled by the ONESHOT_TAP_TOGGLE define.
You can control the behavior of one shot keys by defining these in config.h:
c
#define ONESHOT_TAP_TOGGLE 5 /* Tapping this number of times holds the key until tapped once again. */\n#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */
OSM(mod) - Momentarily hold down mod. You must use the MOD_* keycodes as shown in Mod Tap, not the KC_* codes.
OSL(layer) - momentary switch to layer.
OS_ON - Turns on One Shot keys.
OS_OFF - Turns off One Shot keys. OSM act as regular mod keys, OSL act like MO.
OS_TOGG - Toggles the one shot key status.
Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine.
For one shot layers, you need to call set_oneshot_layer(LAYER, ONESHOT_START) on key down, and clear_oneshot_layer_state(ONESHOT_PRESSED) on key up. If you want to cancel the oneshot, call reset_oneshot_layer().
For one shot mods, you need to call set_oneshot_mods(MOD_BIT(KC_*)) to set it, or clear_oneshot_mods() to cancel it.
WARNING
If you're having issues with OSM translating over Remote Desktop Connection, this can be fixed by opening the settings, going to the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue and allow OSM to function properly over Remote Desktop.
When you'd like to perform custom logic when pressing a one shot key, there are several callbacks you can choose to implement. You could indicate changes in one shot keys by flashing an LED or making a sound, for example.
There is a callback for OSM(mod). It is called whenever the state of any one shot modifier key is changed: when it toggles on, but also when it is toggled off. You can use it like this:
c
void oneshot_mods_changed_user(uint8_t mods) {\n if (mods & MOD_MASK_SHIFT) {\n println("Oneshot mods SHIFT");\n }\n if (mods & MOD_MASK_CTRL) {\n println("Oneshot mods CTRL");\n }\n if (mods & MOD_MASK_ALT) {\n println("Oneshot mods ALT");\n }\n if (mods & MOD_MASK_GUI) {\n println("Oneshot mods GUI");\n }\n if (!mods) {\n println("Oneshot mods off");\n }\n}
The mods argument contains the active mods after the change, so it reflects the current state.
When you use One Shot Tap Toggle (by adding #define ONESHOT_TAP_TOGGLE 2 in your config.h file), you may lock a modifier key by pressing it the specified amount of times. There's a callback for that, too:
If any one shot layer is switched off, layer will be zero. When you're looking to do something on any layer change instead of one shot layer changes, layer_state_set_user is a better callback to use.
If you are making your own keyboard, there are also _kb equivalent functions:
Eclipse is an open-source Integrated Development Environment (IDE) widely used for Java development, but with an extensible plugin system that allows to customize it for other languages and usages.
Using an IDE such as Eclipse provides many advantages over a plain text editor, such as:
intelligent code completion
convenient navigation in the code
refactoring tools
build automation (no need for the command-line)
a GUI for GIT
static code analysis
many other tools such as debugging, code formatting, showing call hierarchies etc.
The purpose of this page is to document how to set-up Eclipse for developing AVR software, and working on the QMK code base.
Note that this set-up has been tested on Ubuntu 16.04 only for the moment.
Before starting, you must have followed the Getting Started section of the Tutorial. In particular, you must have been able to build the firmware with the qmk compile command.
Eclipse is a Java application, so you will need to install Java 8 or more recent to be able to run it. You may choose between the JRE or the JDK, the latter being useful if you intend to do Java development.
Eclipse comes in several flavours depending on the target usage that you will have. There is no package comprising the AVR stack, so we will need to start from Eclipse CDT (C/C++ Development Tooling) and install the necessary plugins.
If you already have Eclipse CDT on your system, you can skip this step. However it is advised to keep it up-to-date for better support.
If you have another Eclipse package installed, it is normally possible to install the CDT plugin over it. However it is probably better to reinstall it from scratch to keep it light and avoid the clutter of tools that you don't need for the projects you will be working on.
Installation is very simple: follow the 5 Steps to Install Eclipse, and choose Eclipse IDE for C/C++ Developers at Step 3.
When installation is complete, click the Launch button. (If you extracted the package manually, open the Eclipse installation folder and double-click the eclipse executable)
When you are prompted with the Workspace Selector, select a directory that will hold Eclipse metadata and usually your projects. Do not select the qmk_firmware directory, this will be the project directory. Select the parent folder instead, or another (preferably empty) folder of your choice (the default is fine if you do not use it yet).
Once started, click the Workbench button at the top right to switch to the workbench view (there is a also checkbox at the bottom to skip the welcome screen at startup).
This is the most important plugin as it will allow Eclipse to understand AVR C code. Follow the instructions for using the update site, and agree with the security warning for unsigned content.
Click File > New > Makefile Project with Existing Code
On the next screen:
Select the directory where you cloned the repository as Existing Code Location;
(Optional) Give a different name to the project¹, e.g. QMK or Quantum;
Select the AVR-GCC Toolchain;
Keep the rest as-is and click Finish
The project will now be loaded and indexed. Its files can be browsed easily through the Project Explorer on the left.
¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably qmk_firmware).
We will now change the default make target of the project from all to the specific keyboard and keymap combination we are working on, e.g. kinesis/kint36:stapelberg. This way, project-wide actions like cleaning and building the project will complete quickly, instead of taking a long time or outright locking up Eclipse.
Focus an editor tab within the project
Open the Project > Properties window, then select the C/C++ Build list entry and switch to the Behavior tab.
Change the default Make build target text fields for all enabled builds from all to e.g. kinesis/kint41:stapelberg.
Verify your setup works by selecting Project > Clean....
', 40);
+const _hoisted_41 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_41);
+}
+const other_eclipse = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ other_eclipse as default
+};
diff --git a/assets/other_eclipse.md.CWb0jnQC.lean.js b/assets/other_eclipse.md.CWb0jnQC.lean.js
new file mode 100644
index 0000000..b215ce7
--- /dev/null
+++ b/assets/other_eclipse.md.CWb0jnQC.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Setting up Eclipse for QMK Development","description":"","frontmatter":{},"headers":[],"relativePath":"other_eclipse.md","filePath":"other_eclipse.md"}');
+const _sfc_main = { name: "other_eclipse.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 40);
+const _hoisted_41 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_41);
+}
+const other_eclipse = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ other_eclipse as default
+};
diff --git a/assets/other_vscode.md.2L_hlV6T.js b/assets/other_vscode.md.2L_hlV6T.js
new file mode 100644
index 0000000..07ff417
--- /dev/null
+++ b/assets/other_vscode.md.2L_hlV6T.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Setting up Visual Studio Code for QMK Development","description":"","frontmatter":{},"headers":[],"relativePath":"other_vscode.md","filePath":"other_vscode.md"}');
+const _sfc_main = { name: "other_vscode.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Setting up Visual Studio Code for QMK Development
Visual Studio Code (VS Code) is an open-source code editor that supports many different programming languages.
Using a full-featured editor such as VS Code provides many advantages over a plain text editor, such as:
intelligent code completion
convenient navigation in the code
refactoring tools
build automation (no need for the command-line)
a graphical front end for GIT
many other tools such as debugging, code formatting, showing call hierarchies etc.
The purpose of this page is to document how to set up VS Code for developing QMK Firmware.
This guide covers how to configure everything needed on Windows and Ubuntu 18.04
Before starting, you will want to make sure that you have all of the build tools set up, and QMK Firmware cloned. Head to the Newbs Getting Started Guide to get things set up, if you haven't already.
Now, we will set up the MSYS2 window to show up in VSCode as the integrated terminal. This has a number of advantages. Mostly, you can control+click on errors and jump to those files. This makes debugging much easier. It's also nice, in that you don't have to jump to another window.
Click File > Preferences > > Settings
Click on the {} button, in the top right to open the settings.json file.
If there are settings here already, then just add everything between the first and last curly brackets and separate the existing settings with a comma from the newly added ones.
TIP
If you installed MSYS2 to a different folder, then you'll need to change the path for terminal.integrated.shell.windows to the correct path for your system.
Hit Ctrl-` (Grave) to bring up the terminal or go to View > Terminal (command workbench.action.terminal.toggleTerminal). A new terminal will be opened if there isn‘t one already.
This should start the terminal in the workspace's folder (so the qmk_firmware folder), and then you can compile your keyboard.
No, really, that's it. The paths needed are already included when installing the packages, and it is much better about detecting the current workspace files and parsing them for IntelliSense.
GitHub Markdown Preview - [Optional] - Makes the markdown preview in VS Code more like GitHub's.
VS Live Share Extension Pack - [Optional] - This extension allows somebody else to access your workspace (or you to access somebody else's workspace) and help out. This is great if you're having issues and need some help from somebody.
Using the standard compile_commands.json database, we can get the VS code clangd extension to use the correct includes and defines used for your keyboard and keymap.
Run qmk generate-compilation-database -kb <keyboard> -km <keymap> to generate the compile_commands.json.
Inside VS code, press Ctrl + Shift + P (macOS: Command + Shift + P) to open the command palette.
Start typing clangd: Download Language Server and select it when it appears. Note that this only needs to be done once on clangd extension installation, if it didn't already ask to do so.
Inside VS code, press Ctrl + Shift + P (macOS: Command + Shift + P) to open the command palette.
Start typing clangd: Restart Language Server and select it when it appears.
Visual Studio Code has the ability to debug applications, but requires some configuration in order to get it to be able to do so for ARM targets.
This documentation describes a known-working configuration for setting up the use of a Black Magic Probe to debug using VS Code.
It is assumed that you've correctly set up the electrical connectivity of the Black Magic Probe with your MCU. Wiring up NRST, SWDIO, SWCLK, and GND should be enough.
Install the following plugin into VS Code:
Cortex-Debug - This adds debugger support for ARM Cortex targets to VS Code.
A debugging target for the MCU for your board needs to be defined, and can be done so by adding the following to a .vscode/launch.json file:
json
{\n // Use IntelliSense to learn about possible attributes.\n // Hover to view descriptions of existing attributes.\n // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n "version": "0.2.0",\n "configurations": [\n {\n "name": "Black Magic Probe (OneKey Proton-C)",\n "type": "cortex-debug",\n "request": "launch",\n "cwd": "${workspaceRoot}",\n "executable": "${workspaceRoot}/.build/handwired_onekey_proton_c_default.elf",\n "servertype": "bmp",\n "BMPGDBSerialPort": "COM4",\n "svdFile": "Q:\\\\svd\\\\STM32F303.svd",\n "device": "STM32F303",\n "v1": false,\n "windows": {\n "armToolchainPath": "C:\\\\QMK_MSYS\\\\mingw64\\\\bin"\n }\n }\n ]\n}
You'll need to perform some modifications to the file above in order to target your specific device:
"name": Can be anything, but if you're debugging multiple targets you'll want something descriptive here.
"cwd": The path to the QMK Firmware repository root directory -- if using the .vscode directory existing in the qmk_firmware git repository, the default above should be correct
"executable": The path to the elf file generated as part of the build for your keyboard -- exists in <qmk_firmware>/.build
"BMPGDBSerialPort": The COM port under Windows, or the /dev/... path for Linux/macOS. Two serial port devices will be created -- the Black Magic Probe debug port is usually the first. If it doesn't work, try the second.
"svdFile": [Optional] The path to the SVD file that defines the register layout for the MCU -- the appropriate file can be downloaded from the cmsis-svd repository
"device": The name of the MCU, which matches the <name> tag at the top of the downloaded svd file.
"armToolchainPath": [Optional] The path to the ARM toolchain installation location on Windows -- under normal circumstances Linux/macOS will auto-detect this correctly and will not need to be specified.
WARNING
Windows builds of QMK Firmware are generally compiled using QMK MSYS, and the path to gdb's location (C:\\\\QMK_MSYS\\\\mingw64\\\\bin) needs to be specified under armToolchainPath for it to be detected. You may also need to change the GDB path to point at C:\\\\QMK_MSYS\\\\mingw64\\\\bin\\\\gdb-multiarch.exe in the VSCode Cortex-Debug user settings:
The following modifications must be made to the keyboard's rules.mk file to enable debug information and disable optimisations -- this will ensure breakpoints and variable viewing works correctly:
makefile
# Enable debug information in the final binaries\nDEBUG_ENABLE = yes\n# Disable optimisations for debugging purposes\nLTO_ENABLE = no\nOPT = g
At this point, you should build and flash your firmware through normal methods (qmk compile ... and qmk flash ...).
Once completed, you can:
Switch to the debug view in VS Code (in the sidebar, the Play button with a bug next to it)
Select the newly-created debug target in the dropdown at the top of the sidebar
Click the green play button next to the dropdown
VS Code's debugger will then start executing the compiled firmware on the MCU.
At this stage, you should have full debugging set up, with breakpoints and variable listings working!
', 51);
+const _hoisted_52 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_52);
+}
+const other_vscode = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ other_vscode as default
+};
diff --git a/assets/other_vscode.md.2L_hlV6T.lean.js b/assets/other_vscode.md.2L_hlV6T.lean.js
new file mode 100644
index 0000000..356b84b
--- /dev/null
+++ b/assets/other_vscode.md.2L_hlV6T.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Setting up Visual Studio Code for QMK Development","description":"","frontmatter":{},"headers":[],"relativePath":"other_vscode.md","filePath":"other_vscode.md"}');
+const _sfc_main = { name: "other_vscode.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 51);
+const _hoisted_52 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_52);
+}
+const other_vscode = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ other_vscode as default
+};
diff --git a/assets/platformdev_blackpill_f4x1.md.BvgwJuB9.js b/assets/platformdev_blackpill_f4x1.md.BvgwJuB9.js
new file mode 100644
index 0000000..8c3f74d
--- /dev/null
+++ b/assets/platformdev_blackpill_f4x1.md.BvgwJuB9.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"WeAct Blackpill (STM32F4x1)","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_blackpill_f4x1.md","filePath":"platformdev_blackpill_f4x1.md"}');
+const _sfc_main = { name: "platformdev_blackpill_f4x1.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This document applies to the F401- and F411-based Blackpills.
The WeAct Blackpill is a popular choice for handwired boards, as it offers a powerful micro controller, USB Type C, a good number of pins to use, and a large amount of firmware space. All for a ~$6 USD price tag.
While the Blackpill is a great choice to use in your keyboard, there are a number of caveats in regards to using them. The first is that a number of exposed pins cannot be used, or have special considerations/hardware tweaks that are required for proper operation.
Pin A9 is meant for VBUS Sense and should not be used, if it can be avoided. It has an internal pull-down resistor, which may cause issues with usage. However, a pull-up resistor can work (~5.1k), but should be avoided.
Pin A10 can be used, but should be avoided. Any connection on this pin can prevent the bootloader from entering the proper mode for DFU flashing. A pull-up resistor (~22k) on this pin fixes the bootloader issue.
Pin A0 is shared with the User Key (button) on the controller. It can be used.
Pin C13 is shared with the onboard LED indicator, and is connected to +3.3V. This can be used, but may cause the LED to blink intermittently, depending on activity on the pin.
Pins A4, A5, A6 and A7 are used by the SOI8 footprint on the back of the controller, that can be used for either an SPI Flash chip, or an SPI EEPROM chip. A4 is the Chip Select pin, and cannot be shared. However, A5, A6, and A7 are the SCK, MISO, and MOSI pins, respectively, and can be shared with other SPI devices.
Pins C13, C14, and C15 have limits on output current. They should be used only as input, e.g., they should not be used for row pins in COL2ROW matrix configurations, but can be used as column pins.
This is because the column pins (in COL2ROW) are pulled up (the pull-up strength is independent of the current sourcing limitation) and the ROW is driven low and sinks current, then we check the state of the COLs to look for keypresses.
Pins A0 and B5 are not 5V tolerant, and should only be used with 3.3V compatible functionality.
There is tinyuf2 support for the WeAct Blackpill. Instructions on how to compile the bootloader can be found here. Setting BOOTLOADER = tinyuf2 will enable support for this user bootloader, and the correct configuration to prevent it from being overwritten when flashing firmware.
', 21);
+const _hoisted_22 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_22);
+}
+const platformdev_blackpill_f4x1 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ platformdev_blackpill_f4x1 as default
+};
diff --git a/assets/platformdev_blackpill_f4x1.md.BvgwJuB9.lean.js b/assets/platformdev_blackpill_f4x1.md.BvgwJuB9.lean.js
new file mode 100644
index 0000000..9dfbb53
--- /dev/null
+++ b/assets/platformdev_blackpill_f4x1.md.BvgwJuB9.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"WeAct Blackpill (STM32F4x1)","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_blackpill_f4x1.md","filePath":"platformdev_blackpill_f4x1.md"}');
+const _sfc_main = { name: "platformdev_blackpill_f4x1.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 21);
+const _hoisted_22 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_22);
+}
+const platformdev_blackpill_f4x1 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ platformdev_blackpill_f4x1 as default
+};
diff --git a/assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.js b/assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.js
new file mode 100644
index 0000000..726eabf
--- /dev/null
+++ b/assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Arm/ChibiOS Early Initialization","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_chibios_earlyinit.md","filePath":"platformdev_chibios_earlyinit.md"}');
+const _sfc_main = { name: "platformdev_chibios_earlyinit.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
This page describes a part of QMK that is a somewhat advanced concept, and is only relevant to keyboard designers.
QMK uses ChibiOS as the underlying layer to support a multitude of Arm-based devices. Each ChibiOS-supported keyboard has a low-level board definition which is responsible for initializing hardware peripherals such as the clocks, and GPIOs.
Older QMK revisions required duplication of these board definitions inside your keyboard's directory in order to override such early initialization points; this is now abstracted into the following APIs, and allows usage of the board definitions supplied with ChibiOS itself. Check <qmk_firmware>/lib/chibios/os/hal/boards for the list of official definitions. If your keyboard needs extra initialization at a very early stage, consider providing keyboard-level overrides of the following APIs instead of duplicating the board definitions:
The function early_hardware_init_pre is the earliest possible code that can be executed by a keyboard firmware. This is intended as a replacement for the ChibiOS board definition's __early_init function, and is the equivalent of executing at the start of the function.
This is executed before RAM gets cleared, and before clocks or GPIOs are configured; for example, ChibiOS delays are not likely to work at this point. After executing this function, RAM on the MCU may be zero'ed. Assigning values to variables during execution of this function may be overwritten.
As such, if you wish to override this API consider limiting use to writing to low-level registers. The default implementation of this function can be configured to jump to bootloader if a QK_BOOT key was pressed:
config.h override
Description
Default
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP
Whether or not bootloader is to be executed during the early initialisation code of QMK.
FALSE
#define STM32_BOOTLOADER_DUAL_BANK
Relevant for dual-bank STM32 MCUs, signifies that a GPIO is to be toggled in order to enter bootloader mode.
FALSE
#define STM32_BOOTLOADER_DUAL_BANK_GPIO
Relevant for dual-bank STM32 MCUs, the pin to toggle when attempting to enter bootloader mode, e.g. B8
<none>
#define STM32_BOOTLOADER_DUAL_BANK_POLARITY
Relevant for dual-bank STM32 MCUs, the value to set the pin to in order to trigger charging of the RC circuit. e.g. 0 or 1.
0
#define STM32_BOOTLOADER_DUAL_BANK_DELAY
Relevant for dual-bank STM32 MCUs, an arbitrary measurement of time to delay before resetting the MCU. Increasing number increases the delay.
100
Kinetis MCUs have no configurable options.
Alternatively, to implement your own version of this function, in your keyboard's source files:
c
void early_hardware_init_pre(void) {\n // do things with registers\n}
The function early_hardware_init_post is the next earliest possible code that can be executed by a keyboard firmware. This is executed after RAM has been cleared, and clocks and GPIOs are configured. This is intended as a replacement for the ChibiOS board definition's __early_init function, and is the equivalent of executing at the end of the function.
Much like early_hardware_init_pre, ChibiOS has not yet been initialized either, so the same restrictions on delays and timing apply.
If you wish to override this API, consider limiting functionality to register writes, variable initialization, and GPIO toggling. The default implementation of this function is to do nothing.
To implement your own version of this function, in your keyboard's source files:
c
void early_hardware_init_post(void) {\n // toggle GPIO pins and write to variables\n}
The function board_init is executed directly after the ChibiOS initialization routines have completed. At this stage, all normal low-level functionality should be available for use (including timers and delays), with the restriction that USB is not yet connected. This is intended as a replacement for the ChibiOS board definition's boardInit function.
The default implementation of this function is to do nothing.
To implement your own version of this function, in your keyboard's source files:
c
void board_init(void) {\n // initialize anything that requires ChibiOS\n}
', 23);
+const _hoisted_24 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_24);
+}
+const platformdev_chibios_earlyinit = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ platformdev_chibios_earlyinit as default
+};
diff --git a/assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.lean.js b/assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.lean.js
new file mode 100644
index 0000000..f4cc854
--- /dev/null
+++ b/assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Arm/ChibiOS Early Initialization","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_chibios_earlyinit.md","filePath":"platformdev_chibios_earlyinit.md"}');
+const _sfc_main = { name: "platformdev_chibios_earlyinit.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 23);
+const _hoisted_24 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_24);
+}
+const platformdev_chibios_earlyinit = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ platformdev_chibios_earlyinit as default
+};
diff --git a/assets/platformdev_proton_c.md.65AUzKpy.js b/assets/platformdev_proton_c.md.65AUzKpy.js
new file mode 100644
index 0000000..1b8e2f8
--- /dev/null
+++ b/assets/platformdev_proton_c.md.65AUzKpy.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Proton C","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_proton_c.md","filePath":"platformdev_proton_c.md"}');
+const _sfc_main = { name: "platformdev_proton_c.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
Some of the PCBs compatible with Pro Micro have VCC (3.3V) and RAW (5V) pins connected (shorted) on the pcb. Using the Proton C will short 5V power from USB and regulated 3.3V which is connected directly to the MCU. Shorting those pins may damage the MCU on the Proton C.
So far, it appears that this is only an issue on the Gherkin PCBs, but other PCBs may be affected in this way.
In this case, you may want to not hook up the RAW pin at all.
To address individual pins on the RP2040, QMK uses the GPx abbreviation -- where the x stands for the GPIO number of the pin. This number can likely be found on the official pinout diagram of your board. Note that these GPIO numbers match the RP2040 MCU datasheet, and don't necessarily match the number you see printed on the board. For instance the Raspberry Pi Pico uses numbers from 1 to 40 for their pins, but these are not identical to the RP2040's GPIO numbers. So if you want to use the pin 11 of the Pico for your keyboard, you would refer to it as GP8 in the config files.
The RP2040 features flexible GPIO function multiplexing, this means that every pin can be connected to nearly all the internal peripherals like I2C, SPI, UART or PWM. This allows for flexible PCB designs that are much less restricted in the selection of GPIO pins. To find out which pin can use which peripheral refer to the official Raspberry PI RP2040 datasheet section 1.4.3 GPIO functions.
QMK RP2040 support builds upon ChibiOS and thus follows their convention for activating drivers and associated hardware peripherals. These tables only give a quick overview which values have to be used, please refer to the ChibiOS specific sections on the driver pages.
The double-tap reset mechanism is an alternate way in QMK to enter the embedded mass storage UF2 boot-loader of the RP2040. It enables bootloader entry by a fast double-tap of the reset pin on start up, which is similar to the behavior of AVR Pro Micros. This feature activated by default for the Pro Micro RP2040 board, but has to be configured for other boards. To activate it, add the following options to your keyboards config.h file:
c
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior\n#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.\n#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 // Specify a optional status led by GPIO number which blinks when entering the bootloader
QMK defines two boards that you can choose from to base your RP2040 powered keyboard upon. These boards provide pre-configured default pins and drivers.
This is the default board that is chosen, unless any other RP2040 board is selected in your keyboards rules.mk file. It assumes a pin layout for the I2C, SPI and Serial drivers which is identical to the Sparkfun Pro Micro RP2040, however all values can be overwritten by defining them in your keyboards config.h file. The double-tap reset to enter boot-loader behavior is activated by default.
The pin-outs of Adafruit's KB2040 and Boardsource's Blok both deviate from the Sparkfun Pro Micro RP2040. Lookup the pin-out of these boards and adjust your keyboards pin definition accordingly if you want to use these boards.
This board can be chosen as a base for RP2040 keyboards which configure all necessary pins and drivers themselves and do not wish to leverage the configuration matching the Generic Pro Micro RP2040 board. Thus it doesn't provide any pre-configured pins or drivers. To select this board add the following line to your keyboards rules.mk file.
Split keyboards are fully supported using the serial driver in both full-duplex and half-duplex configurations. Two driver subsystems are supported by the RP2040, the hardware UART based SIO and the Programmable IO based PIO driver.
The PIO driver is much more flexible then the SIO driver, the only "downside" is the usage of PIO resources which in turn are not available for advanced user programs. Under normal circumstances, this resource allocation will be a non-issue.
As the RP2040 does not have any internal flash memory it depends on an external SPI flash memory chip to store and execute instructions from. To successfully interact with a wide variety of these chips a second stage bootloader that is compatible with the chosen external flash memory has to be supplied with each firmware image. By default an W25Q080 compatible bootloader is assumed, but others can be chosen by adding one of the defines listed in the table below to your keyboards config.h file.
This page outlines the selection criteria to ensure compatibility with Arm/ChibiOS.
QMK uses the Hardware Abstraction Layer of ChibiOS in order to run on Arm devices. ChibiOS in general is best supported on STM32 devices, both in the perspective of base MCU support, as well as on-MCU peripheral support. As an extension to the core ChibiOS MCU support, QMK also utilises ChibiOS-Contrib (which includes the Kinetis MCU support layer, as an example), but it does not provide as great a level of peripheral support or general testing for supported devices.
Adding support for new MCU families must go through ChibiOS or ChibiOS-Contrib -- QMK does not have the bandwidth, resources, nor the inclination to maintain long-term MCU support for your board of choice.
To be clear: this also includes commercial boards -- unless agreed upon by all parties, QMK will not take over maintenance of a bespoke MCU support package. Even if MCU support is upstreamed into ChibiOS/ChibiOS-Contrib, QMK reserves the right to deprecate and/or remove keyboards utilising support packages that aren't kept up to date with upstream ChibiOS itself.
As outlined earlier, STM32 is the preferred option to ensure greatest compatibility with the subsystems already implemented in QMK. Not all subsystems are compatible yet, but for the most widely-used support is already present.
The simplest solution to determine if an STM32 MCU is compatible is to navigate to the list of supported STM32 ports in QMK's ChibiOS fork. Inside this directory, each of the supported STM32 families will be listed, and inside each family a file called stm32_registry.h will be present. Scanning through these files will show #defines such as the following, which can be used to determine if ChibiOS supports a particular MCU:
c
#if defined(STM32F303xC) || defined(__DOXYGEN__)
The example shows that STM32F303xC devices are supported by ChibiOS.
The next step is to ensure that USB is supported on those devices by ChibiOS -- you can confirm this by checking inside the same section guarded by the #define above, specifically for the following to be TRUE:
For the most part, this is the bare minimum to be able to have a high confidence that QMK will be able to run on your MCU. After that, it's all up to configuration.
ChibiOS does have support for a handful of non-STM32 devices, and the list can be found in QMK's ChibiOS fork and ChibiOS-Contrib fork. Non-STM32 support is likely out of date, and only supports ancient MCUs -- whilst it might be possible to use these, it's not recommended.
Do note that there are sometimes licensing restrictions with respect to redistribution. As an example, binaries built for nRF5 are not able to be redistributed via QMK Configurator, due to the licensing of their board support package.
Adding support for a new STM32 MCU (for an existing family)
Usually, one can "masquerade" as an existing MCU of the same family, especially if the only difference is RAM or Flash size. As an example, some MCUs within the same family are virtually identical, with the exception of adding a cryptographic peripheral -- STM32L072 vs. STM32L082 for instance. Given the unlikely use of the cryptographic peripheral, L082 chips can actually run as if they're an L072, and can be targeted accordingly.
Adding proper support for new MCUs within an existing STM32 family should ideally be upstreamed to ChibiOS. In general, this will require modifications of the stm32_registry.h file, providing correct responses for the same #defines provided for the other MCUs in that family.
If this is a requirement, this needs to go through upstream ChibiOS before QMK would consider accepting boards targeting the new family. More information for porting should be sought by approaching ChibiOS directly, rather than through QMK.
As stated earlier, in order for a new MCU family to be supported by QMK, it needs to be upstreamed into ChibiOS-Contrib before QMK will consider accepting boards using it. The same principle applies for development -- you're best approaching the ChibiOS-Contrib maintainers to get a bit more of an idea on what's involved with upstreaming your contribution.
', 26);
+const _hoisted_27 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_27);
+}
+const platformdev_selecting_arm_mcu = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ platformdev_selecting_arm_mcu as default
+};
diff --git a/assets/platformdev_selecting_arm_mcu.md.DpOE31Uf.lean.js b/assets/platformdev_selecting_arm_mcu.md.DpOE31Uf.lean.js
new file mode 100644
index 0000000..8d216cd
--- /dev/null
+++ b/assets/platformdev_selecting_arm_mcu.md.DpOE31Uf.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Choosing an Arm MCU","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_selecting_arm_mcu.md","filePath":"platformdev_selecting_arm_mcu.md"}');
+const _sfc_main = { name: "platformdev_selecting_arm_mcu.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 26);
+const _hoisted_27 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_27);
+}
+const platformdev_selecting_arm_mcu = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ platformdev_selecting_arm_mcu as default
+};
diff --git a/assets/porting_your_keyboard_to_qmk.md.CWUCjRnR.js b/assets/porting_your_keyboard_to_qmk.md.CWUCjRnR.js
new file mode 100644
index 0000000..f79943d
--- /dev/null
+++ b/assets/porting_your_keyboard_to_qmk.md.CWUCjRnR.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Adding Your Keyboard to QMK","description":"","frontmatter":{},"headers":[],"relativePath":"porting_your_keyboard_to_qmk.md","filePath":"porting_your_keyboard_to_qmk.md"}');
+const _sfc_main = { name: "porting_your_keyboard_to_qmk.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
If you have not yet you should read the Keyboard Guidelines to get a sense of how keyboards fit into QMK.
QMK has a number of features to simplify working with keyboards. For most, you don't have to write a single line of code. To get started, run qmk new-keyboard:
$ qmk new-keyboard\nΨ Generating a new QMK keyboard directory\n\nName Your Keyboard Project\nFor more infomation, see:\nhttps://docs.qmk.fm/hardware_keyboard_guidelines#naming-your-keyboardproject\n\nkeyboard Name? mycoolkeeb\n\nAttribution\nUsed for maintainer, copyright, etc\n\nYour GitHub Username? [jsmith] \n\nMore Attribution\nUsed for maintainer, copyright, etc\n\nYour Real Name? [John Smith] \n\nPick Base Layout\nAs a starting point, one of the common layouts can be used to bootstrap the process\n\nDefault Layout? \n 1. 60_ansi\n...\n 50. tkl_iso\n 51. none of the above\nPlease enter your choice: [51] \n\nWhat Powers Your Project\nFor more infomation, see:\nhttps://docs.qmk.fm/#/compatible_microcontrollers\n\nMCU? \n 1. atmega32u4\n...\n 22. STM32F303\nPlease enter your choice: [12]\nΨ Created a new keyboard called mycoolkeeb.\nΨ To start working on things, `cd` into keyboards/mycoolkeeb,\nΨ or open the directory in your preferred text editor.\nΨ And build with qmk compile -kb mycoolkeeb -km default.
This will create all the files needed to support your new keyboard, and populate the settings with default values. Now you just need to customize it for your keyboard.
This is where you'll describe your keyboard. Please follow the Keyboard Readme Template when writing your readme.md. You're encouraged to place an image at the top of your readme.md, please use an external service such as Imgur to host the images.
The info.json file is where you configure the hardware and feature set for your keyboard. There are a lot of options that can be placed in that file, too many to list here. For a complete overview of available options see the Data Driven Configuration Options page.
At the top of the info.json you'll find USB related settings. These control how your keyboard appears to the Operating System. If you don't have a good reason to change you should leave the usb.vid as 0xFEED. For the usb.pid you should pick a number that is not yet in use.
Do change the manufacturer and keyboard_name lines to accurately reflect your keyboard.
Windows and macOS will display the manufacturer and keyboard_name in the list of USB devices. lsusb on Linux instead prefers the values in the list maintained by the USB ID Repository. By default, it will only use manufacturer and keyboard_name if the list does not contain that usb.vid / usb.pid. sudo lsusb -v will show the values reported by the device, and they are also present in kernel logs after plugging it in.
The next section of the info file deals with your keyboard's matrix. The first thing you should define is which pins on your MCU are connected to rows and columns. To do so simply specify the names of those pins:
To configure a keyboard where each switch is connected to a separate pin and ground instead of sharing row and column pins, use matrix_pins.direct. The mapping defines the pins of each switch in rows and columns, from left to right. The size of the matrix_pins.direct array infers the size of the matrix. Use NO_PIN to fill in blank spaces. Overrides the behaviour of diode_direction, matrix_pins.cols and matrix_pins.rows.
Next is configuring Layout Macro(s). These define the physical arrangement of keys, and its position within the matrix that a switch are connected to. This allows you to have a physical arrangement of keys that differs from the wiring matrix.
There are a lot of features that can be turned on or off, configured or tuned. Some of these have yet to be migrated over to Data Driven Configuration. The following sections cover the process for when an info.json option is unavailable.
This is a non-exhaustive checklist of what the QMK Collaborators will be checking when reviewing submitted PRs.
If there are any inconsistencies with these recommendations, you're best off creating an issue against this document, or getting in touch with a QMK Collaborator on Discord.
PR should be submitted using a non-master branch on the source repository
this does not mean you target a different branch for your PR, rather that you're not working out of your own master branch
if submitter does use their own master branch, they'll be given a link to the "how to git" page after merging -- (end of this document will contain the contents of the message)
Note, frequently merging upstream with your branch is not needed and is discouraged. Valid reason for updating your branch may be resolving merge conflicts and pulling in new changes relevant to your PR.
PRs should contain the smallest amount of modifications required for a single change to the codebase
multiple keyboards at the same time is not acceptable
the smaller the PR, the higher likelihood of a quicker review, higher likelihood of quicker merge, and less chance of conflicts
newly-added directories and filenames must be lowercase
the lowercase requirement may be relaxed if upstream sources originally had uppercase characters (e.g. LUFA, ChibiOS, or imported files from other repositories etc.)
if there is valid justification (i.e. consistency with existing core files etc.) this can be relaxed
a board designer naming their keyboard with uppercase letters is not enough justification
valid license headers on all *.c and *.h source files
GPL2/GPL3 recommended for consistency
an example GPL2+ license header may be copied (and author modified) from the bottom of this document
other licenses are permitted, however they must be GPL-compatible and must allow for redistribution. Using a different license will almost certainly delay a PR getting merged
missing license headers will prevent PR merge due to ambiguity with license compatibility
simple assignment-only rules.mk files should not need a license header - where additional logic is used in an *.mk file a license header may be appropriate
QMK Codebase "best practices" followed
this is not an exhaustive list, and will likely get amended as time goes by
#pragma once instead of #ifndef include guards in header files
no "old-school" or other low-level GPIO/I2C/SPI functions may be used -- must use QMK abstractions unless justifiable (and laziness is not valid justification)
timing abstractions should be followed too:
wait_ms() instead of _delay_ms() (remove #include <util/delay.h> too)
timer_read() and timer_read32() etc. -- see timer.h for the timing APIs
if you think a new abstraction is useful, you're encouraged to:
prototype it in your own keyboard until it's feature-complete
discuss it with QMK Collaborators on Discord
refactor it as a separate core change
remove your specific copy in your board
fix all merge conflicts before opening the PR (in case you need help or advice, reach out to QMK Collaborators on Discord)
PR submitters will need to keep up-to-date with their base branch, resolving conflicts along the way
Note that personal keymap submissions will no longer be accepted. This section applies to manufacturer-supported keymaps. Please see this issue for more information.
PRs for vendor specific keymaps will be permitted. The naming convention for these should be default_${vendor} i.e. default_clueboard.
vendor specific keymaps do not necessarily need to be "vanilla" and can be more richly featured than default stock keymaps.
#include QMK_KEYBOARD_H preferred to including specific board files
prefer layer enums to #defines
custom keycode enums must have first entry = QK_USER
some care with spacing (e.g., alignment on commas or first char of keycodes) makes for a much nicer-looking keymap. Spaces are preferred to tabs
keymaps should not enable VIA
keymaps targeting VIA support should be submitted to the VIA QMK Userspace repository
keyboard moves within the repository must go through the develop branch instead of master, so as to ensure compatibility for users
data/mappings/keyboard_aliases.hjson must be updated to reflect the move, so users with pre-created configurator keymap.json files continue to detect the correct keyboard
keyboard updates and refactors (eg. to data driven) must go through develop to reduce master -> develop merge conflicts
PR submissions from a kbfirmware export (or equivalent) will not be accepted unless converted to new QMK standards -- try qmk import-kbfirmware first
info.json
With the move to data driven keyboard configuration, we encourage contributors to utilise as many features as possible of the info.json schema.
the mandatory elements for a minimally complete info.json at present are:
valid URL
valid maintainer
valid USB VID/PID and device version
displays correctly in Configurator (press Ctrl+Shift+I to preview local file, turn on fast input to verify ordering)
layout definitions must include matrix positions, so that LAYOUT macros can be generated at build time
should use standard definitions if applicable
use the Community Layout macro names where they apply (preferred above LAYOUT/LAYOUT_all)
If the keyboard only has a single electrical/switch layout:
use LAYOUT as your macro name, unless a community layout already exists
If the keyboard has multiple electrical/switch layouts:
include a LAYOUT_all which specifies all possible layout positions in the electrical matrix
use alternate layout names for all other possible layouts, preferring community layout names if an equivalent is available (e.g. LAYOUT_tkl_ansi, LAYOUT_ortho_4x4 etc.)
Microcontroller and bootloader
Diode Direction (if not using direct pins)
the following are required to be configured in info.json if necessary
Direct pin configuration
Backlight Configuration (where applicable)
Split keyboard configuration (where applicable)
Encoder Configuration
Bootmagic Configuration
LED Indicator Configuration
RGB Light Configuration
RGB Matrix Configuration
Run qmk format-json on this file before submitting your PR. Be sure to append the -i flag to directly modify the file, or paste the outputted code into the file.
valid hardware availability link (unless handwired) -- private groupbuys are okay, but one-off prototypes will be questioned. If open-source, a link to files should be provided.
clear instructions on how to reset the board into bootloader mode
a picture about the keyboard and preferably about the PCB, too
images are not to be placed in the qmk_firmware repository
images should be uploaded to an external image hosting service, such as imgur.
removed MIDI_ENABLE, FAUXCLICKY_ENABLE and HD44780_ENABLE
modified # Enable Bluetooth with the Adafruit EZ-Key HID -> # Enable Bluetooth
no (-/+size) comments related to enabling features
remove the list of alternate bootloaders if one has been specified
no re-definitions of the default MCU parameters if same value, when compared to the equivalent MCU in mcu_selection.mk
no "keymap only" features enabled
COMBO_ENABLE
ENCODER_MAP_ENABLE
keyboard config.h
no #define DESCRIPTION
no Magic Key Options, MIDI Options or HD44780 configuration
user preference configurable #defines should not be placed at the keyboard level
default values should not be redefined, such as DEBOUNCE, RGB related settings, etc.
feature specific documentation contains most default values
grep or alternative tool can be used to search for default values in core directories (e.g. grep -r "define DEBOUNCE" quantum)
no copy/pasted comment blocks explaining a feature and/or its caveats -- this is what the docs are for
Force NKRO to be enabled ... toggled again during a power-up
commented-out unused defines, such as RGB effects
no #include "config_common.h
no #define MATRIX_ROWS/COLS, unless necessary (e.g. a keyboard with a custom matrix)
bare minimum required code for a board to boot into QMK should be present
initialisation code for the matrix and critical devices
mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-default keymaps
Vial-related files or changes will not be accepted, as they are not used by QMK firmware (no Vial-specific core code has been submitted or merged)
<keyboard>.c
empty xxxx_xxxx_kb(), xxxx_xxxx_user(), or other weak-defined default implemented functions removed
commented-out functions removed too
matrix_init_board() etc. migrated to keyboard_pre_init_kb(), see: keyboard_pre_init*
prefer CUSTOM_MATRIX = lite if custom matrix used, allows for standard debounce, see custom matrix 'lite'
prefer LED indicator Configuration Options to custom led_update_*() implementations where possible
hardware that's enabled at the keyboard level and requires configuration such as OLED displays or encoders should have basic functionality implemented here
<keyboard>.h
#include "quantum.h" appears at the top
LAYOUT macros are no longer accepted and should instead be moved to info.json
keymap config.h
no duplication of rules.mk or config.h from keyboard
keymaps/default/keymap.c
QMKBEST/QMKURL example macros removed
if using MO(1) and MO(2) keycodes together to access a third layer, the Tri Layer feature should be used, rather than manually implementing this using layer_on/off() and update_tri_layer() functions in the keymap's process_record_user().
default keymaps should be "pristine"
bare minimum to be used as a "clean slate" for another user to develop their own user-specific keymap
what does pristine mean? no custom keycodes. no advanced features like tap dance or macros. basic mod taps and home row mods would be acceptable where their use is necessary
standard layouts preferred in these keymaps, if possible
default keymap should not enable VIA -- keymaps targeting VIA support should be submitted to the VIA QMK Userspace repository
submitters can add an example (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the VIA Keyboard Repo
Do not include KLE json files in the PR. These have no use within QMK.
Do not include source files from another keyboard or vendors keyboard folder. Including core files is fine.
For instance, only wilba_tech boards shall include keyboards/wilba_tech/wt_main.c and keyboards/wilba_tech/wt_rgb_backlight.c. But including drivers/sensors/pmw3360.c is absolutely fine for any and all boards that require it.
Code that needs to be used by multiple boards is a candidate for core code changes, and should be separated out.
Wireless-capable boards:
Given license abuse from vendors, QMK does not accept any vendor PRs for wireless- or Bluetooth-capable keyboards without wireless and/or Bluetooth code
Historically, vendors have done this in bad faith in order to attain downstream VIA compatibility with no intention of releasing wireless sources
QMK's license, the GPL2+, requires full source disclosure for any distributed binary -- including full sources for any keyboard shipped by vendors containing QMK and/or firmware-side VIA code
If a vendor's wireless-capable keyboard PR submission is lacking wireless capability, then the PR will be left on-hold and unmergeable until wireless bindings are provided
If a vendor's wireless-capable keyboard is merged into QMK before it's known that the board is wireless, then all existing and future PRs from the same vendor will be put on hold until wireless bindings for the offending keyboard are provided
Also, specific to ChibiOS:
strong preference to using existing ChibiOS board definitions.
a lot of the time, an equivalent Nucleo board can be used with a different flash size or slightly different model in the same family
example: For an STM32L082KZ, given the similarity to an STM32L073RZ, you can use BOARD = ST_NUCLEO64_L073RZ in rules.mk
QMK is migrating to not having custom board definitions if at all possible, due to the ongoing maintenance burden when upgrading ChibiOS
New board definitions must not be embedded in a keyboard PR
See Core PRs below for the procedure for adding a new board to QMK
if a board definition is unavoidable, board.c must have a standard __early_init() (as per normal ChibiOS board defs) and an empty boardInit():
all core PRs must now target develop branch, which will subsequently be merged back to master on the breaking changes timeline
as indicated above, the smallest set of changes to core components should be included in each PR
PRs containing multiple areas of change will be asked to be split up and raised separately
keyboard and keymap changes should only be included if they affect base keyboard builds, or the default-like default, default_???? keymaps etc.
keymap modifications for anything other than the default-like keymaps should not be included in the initial PR in order to simplify the review process
the core PR submitter should submit a followup PR affecting other keymaps after initial PR merge
large-scale refactoring or consolidation PRs that affect other keymaps (such as renaming keycodes) should always be raised separately
any new boards adding support for new hardware now requires a corresponding test board under keyboards/handwired/onekey
for new MCUs, a new "child" keyboard should be added that targets your newly-added MCU, so that builds can be verified
for new hardware support such as display panels, core-side matrix implementations, or other peripherals, an associated keymap should be provided
if an existing keymap exists that can leverage this functionality this may not be required (e.g. a new RGB driver chip, supported by the rgb keymap) -- consult with the QMK Collaborators on Discord to determine if there is sufficient overlap already
any features adding _kb/_user callbacks must return a bool, to allow for user override of keyboard-level callbacks.
where relevant, unit tests are strongly recommended -- they boost the confidence level that changes behave correctly
critical areas of the code -- such as the keycode handling pipeline -- will almost certainly require unit tests accompanying them to ensure current and future correctness
you should not be surprised if a QMK collaborator requests unit tests to be included in your PR if it's critical functionality
other requirements are at the discretion of QMK collaborators
core is a lot more subjective given the breadth of posted changes
For when people use their own master branch, post this after merge:
For future reference, we recommend against committing to your `master` branch as you've done here, because pull requests from modified `master` branches can make it more difficult to keep your QMK fork updated. It is highly recommended for QMK development – regardless of what is being done or where – to keep your master updated, but **NEVER** commit to it. Instead, do all your changes in a branch (branches are basically free in Git) and issue PRs from your branches when you're developing.\n\nThere are instructions on how to keep your fork updated here:\n\n[**Best Practices: Your Fork's Master: Update Often, Commit Never**](newbs_git_using_your_master_branch)\n\n[Fixing Your Branch](newbs_git_resynchronize_a_branch) will walk you through fixing up your `master` branch moving forward. If you need any help with this just ask.\n\nThanks for contributing!
In general, we want to see two (or more) approvals that are meaningful (e.g. that have inspected code) before a PR will be considered for merge. These reviews are not limited to collaborators -- any community member willing to put in the time is welcomed (and encouraged). The only difference is that your checkmark won't be green, and that's fine!
Additionally, PR reviews are something that is done in our free time. We are not paid nor compensated for the time we spend reviewing, as it is a labor of love. As such, this means that it can take time for us to get to your Pull Request. Things like family, or life can get in the way of us getting to PRs, and burnout is a serious concern. The QMK firmware repository averages 200 PRs opened and 200 PRs merged every month, so please have patience.
/* Copyright 2024 Your Name (@yourgithub)\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 2 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */
Quantum keycodes allow for easier customization of your keymap than the basic ones provide, without having to define custom actions.
All keycodes within quantum are numbers between 0x0000 and 0xFFFF. Within your keymap.c it may look like you have functions and other special cases, but ultimately the C preprocessor will translate those into a single 4 byte integer. QMK has reserved 0x0000 through 0x00FF for standard keycodes. These are keycodes such as KC_A, KC_1, and KC_LCTL, which are basic keys defined in the USB HID specification.
On this page we have documented keycodes between 0x00FF and 0xFFFF which are used to implement advanced quantum features. If you define your own custom keycodes they will be put into this range as well.
Quantum Painter is the standardised API for graphical displays. It currently includes support for basic drawing primitives, as well as custom images, animations, and fonts.
Due to the complexity, there is no support for Quantum Painter on AVR-based boards.
To enable overall Quantum Painter to be built into your firmware, add the following to rules.mk:
You will also likely need to select an appropriate driver in rules.mk, which is listed below.
WARNING
Quantum Painter is not currently integrated with system-level operations such as when the keyboard goes into suspend. Users will need to handle this manually at the current time.
The QMK CLI can be used to convert from normal images such as PNG files or animated GIFs, as well as fonts from TTF files.
This controls the amount of time (in milliseconds) that all displays will remain on after the last user input. If set to 0, the display will remain on indefinitely.
QUANTUM_PAINTER_TASK_THROTTLE
1
This controls the amount of time (in milliseconds) that the Quantum Painter internal task will wait between each execution. Affects animations, display timeout, and LVGL timing if enabled.
QUANTUM_PAINTER_NUM_IMAGES
8
The maximum number of images/animations that can be loaded at any one time.
QUANTUM_PAINTER_NUM_FONTS
4
The maximum number of fonts that can be loaded at any one time.
QUANTUM_PAINTER_CONCURRENT_ANIMATIONS
4
The maximum number of animations that can be executed at the same time.
QUANTUM_PAINTER_LOAD_FONTS_TO_RAM
FALSE
Whether or not fonts should be loaded to RAM. Relevant for fonts stored in off-chip persistent storage, such as external flash.
QUANTUM_PAINTER_PIXDATA_BUFFER_SIZE
1024
The limit of the amount of pixel data that can be transmitted in one transaction to the display. Higher values require more RAM on the MCU.
QUANTUM_PAINTER_SUPPORTS_256_PALETTE
FALSE
If 256-color palettes are supported. Requires significantly more RAM on the MCU.
QUANTUM_PAINTER_SUPPORTS_NATIVE_COLORS
FALSE
If native color range is supported. Requires significantly more RAM on the MCU.
QUANTUM_PAINTER_DEBUG
unset
Prints out significant amounts of debugging information to CONSOLE output. Significant performance degradation, use only for debugging.
QUANTUM_PAINTER_DEBUG_ENABLE_FLUSH_TASK_OUTPUT
unset
By default, debug output is disabled while the internal task is flushing the display(s). If you want to keep it enabled, add this to your config.h. Note: Console will get clogged.
Drivers have their own set of configurable options, and are described in their respective sections.
All APIs require a painter_device_t object as their first parameter -- this object comes from the specific device initialisation, and instructions on creating it can be found in each driver's respective section.
LVGL (Light and Versatile Graphics Library) is an open-source graphics library providing everything you need to create an embedded GUI for your board with easy-to-use graphical elements.
LVGL integrates with Quantum Painter's API and drivers to render to the display, the hardware supported by Quantum Painter is also supported by LVGL.
TIP
Keep in mind that enabling the LVGL integration has a big impact in firmware size, it is recommeded to use a supported MCU with >256 kB of flash space.
To learn more about LVGL and how to use it please take a look at their official documentation
The qp_lvgl_attach function is used to set up LVGL with the supplied display, and requires an already configured display.
c
static painter_device_t display;\nvoid keyboard_post_init_kb(void) {\n display = qp_make_.......; // Create the display\n qp_init(display, QP_ROTATION_0); // Initialise the display\n\n if (qp_lvgl_attach(display)) { // Attach LVGL to the display\n ...Your code to draw // Run LVGL specific code to draw\n }\n}
Attaching LVGL to a display means LVGL subsequently "owns" the display. Using standard Quantum Painter drawing operations with the display after LVGL attachment will likely result in display artifacts.
When LVGL is running, your keyboard's responsiveness may decrease, causing missing keystrokes or encoder rotations, especially during the animation of dynamically-generated content. This occurs because LVGL operates as a scheduled task with a default task rate of five milliseconds. While a fast task rate is advantageous when LVGL is responsible for detecting and processing inputs, it can lead to excessive recalculations of displayed content, which may slow down QMK's matrix scanning. If you rely on QMK instead of LVGL for processing inputs, it can be beneficial to increase the time between calls to the LVGL task handler to better match your preferred display update rate. To do this, add this to your config.h:
c
#define QP_LVGL_TASK_PERIOD 40
', 24);
+const _hoisted_25 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_25);
+}
+const quantum_painter_lvgl = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ quantum_painter_lvgl as default
+};
diff --git a/assets/quantum_painter_lvgl.md.CjwTIvjK.lean.js b/assets/quantum_painter_lvgl.md.CjwTIvjK.lean.js
new file mode 100644
index 0000000..fdfed60
--- /dev/null
+++ b/assets/quantum_painter_lvgl.md.CjwTIvjK.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Quantum Painter LVGL Integration","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_lvgl.md","filePath":"quantum_painter_lvgl.md"}');
+const _sfc_main = { name: "quantum_painter_lvgl.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 24);
+const _hoisted_25 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_25);
+}
+const quantum_painter_lvgl = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ quantum_painter_lvgl as default
+};
diff --git a/assets/quantum_painter_qff.md.C37fyLwS.js b/assets/quantum_painter_qff.md.C37fyLwS.js
new file mode 100644
index 0000000..51defce
--- /dev/null
+++ b/assets/quantum_painter_qff.md.C37fyLwS.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK Font Format","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_qff.md","filePath":"quantum_painter_qff.md"}');
+const _sfc_main = { name: "quantum_painter_qff.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
QMK uses a font format ("Quantum Font Format" - QFF) specifically for resource-constrained systems.
This format is capable of encoding 1-, 2-, 4-, and 8-bit-per-pixel greyscale- and palette-based images into a font. It also includes RLE for pixel data for some basic compression.
All integer values are in little-endian format.
The QFF is defined in terms of blocks -- each block contains a header and an optional blob of data. The header contains the block's typeid, and the length of the blob that follows. Each block type is denoted by a different typeid has its own block definition below. All blocks are defined as packed structs, containing zero padding between fields.
The general structure of the file is:
Font descriptor block
ASCII glyph block (optional, only if ASCII glyphs are included)
Unicode glyph block (optional, only if Unicode glyphs are included)
Font palette block (optional, depending on frame format)
This block must be located at the start of the file contents, and can exist a maximum of once in an entire QGF file. It is always followed by either the ASCII glyph table or the Unicode glyph table, depending on which glyphs are included in the font.
Block format:
c
typedef struct __attribute__((packed)) qff_font_descriptor_v1_t {\n qgf_block_header_v1_t header; // = { .type_id = 0x00, .neg_type_id = (~0x00), .length = 20 }\n uint24_t magic; // constant, equal to 0x464651 ("QFF")\n uint8_t qff_version; // constant, equal to 0x01\n uint32_t total_file_size; // total size of the entire file, starting at offset zero\n uint32_t neg_total_file_size; // negated value of total_file_size, used for detecting parsing errors\n uint8_t line_height; // glyph height in pixels\n bool has_ascii_table; // whether the font has an ascii table of glyphs (0x20...0x7E)\n uint16_t num_unicode_glyphs; // the number of glyphs in the unicode table -- no table specified if zero\n uint8_t format; // frame format, see below.\n uint8_t flags; // frame flags, see below.\n uint8_t compression_scheme; // compression scheme, see below.\n uint8_t transparency_index; // palette index used for transparent pixels (not yet implemented)\n} qff_font_descriptor_v1_t;\n// _Static_assert(sizeof(qff_font_descriptor_v1_t) == (sizeof(qgf_block_header_v1_t) + 20), "qff_font_descriptor_v1_t must be 25 bytes in v1 of QFF");
The values for format, flags, compression_scheme, and transparency_index match QGF's frame descriptor block, with the exception that the delta flag is ignored by QFF.
If this font contains unicode characters, the unicode glyph block must be located directly after the ASCII glyph table block, or the font descriptor block if the font does not contain ASCII characters.
c
typedef struct __attribute__((packed)) qff_unicode_glyph_table_v1_t {\n qgf_block_header_v1_t header; // = { .type_id = 0x02, .neg_type_id = (~0x02), .length = (N * 6) }\n struct __attribute__((packed)) { // container for a single unicode glyph\n uint24_t code_point; // the unicode code point\n uint24_t glyph; // the glyph information, as per ASCII glyphs above\n } glyph[N]; // N glyphs worth of data\n} qff_unicode_glyph_table_v1_t;
The font palette block is identical to QGF's frame palette block, retaining the same typeid of 0x03.
It is only specified in the QFF if the font is palette-based, and follows the unicode glyph block if the font contains any Unicode glyphs, or the ASCII glyph block if the font contains only ASCII glyphs.
QMK uses a graphics format ("Quantum Graphics Format" - QGF) specifically for resource-constrained systems.
This format is capable of encoding 1-, 2-, 4-, and 8-bit-per-pixel greyscale- and palette-based images. It also includes RLE for pixel data for some basic compression.
All integer values are in little-endian format.
The QGF is defined in terms of blocks -- each block contains a header and an optional blob of data. The header contains the block's typeid, and the length of the blob that follows. Each block type is denoted by a different typeid has its own block definition below. All blocks are defined as packed structs, containing zero padding between fields.
The general structure of the file is:
Graphics descriptor block
Frame offset block
Repeating list of frames:
Frame descriptor block
Frame palette block (optional, depending on frame format)
Frame delta block (optional, depending on delta flag)
Frame data block
Different frames within the file should be considered "isolated" and may have their own image format and/or palette.
This block header is present for all blocks, including the graphics descriptor.
Block header format:
c
typedef struct __attribute__((packed)) qgf_block_header_v1_t {\n uint8_t type_id; // See each respective block type\n uint8_t neg_type_id; // Negated type ID, used for detecting parsing errors\n uint24_t length; // 24-bit blob length, allowing for block sizes of a maximum of 16MB\n} qgf_block_header_v1_t;\n// _Static_assert(sizeof(qgf_block_header_v1_t) == 5, "qgf_block_header_v1_t must be 5 bytes in v1 of QGF");
The length describes the number of octets in the data following the block header -- a block header may specify a length of 0 if no blob is specified.
This block must be located at the start of the file contents, and can exist a maximum of once in an entire QGF file. It is always followed by the frame offset block.
Block format:
c
typedef struct __attribute__((packed)) qgf_graphics_descriptor_v1_t {\n qgf_block_header_v1_t header; // = { .type_id = 0x00, .neg_type_id = (~0x00), .length = 18 }\n uint24_t magic; // constant, equal to 0x464751 ("QGF")\n uint8_t qgf_version; // constant, equal to 0x01\n uint32_t total_file_size; // total size of the entire file, starting at offset zero\n uint32_t neg_total_file_size; // negated value of total_file_size, used for detecting parsing errors\n uint16_t image_width; // in pixels\n uint16_t image_height; // in pixels\n uint16_t frame_count; // minimum of 1\n} qgf_graphics_descriptor_v1_t;\n// _Static_assert(sizeof(qgf_graphics_descriptor_v1_t) == (sizeof(qgf_block_header_v1_t) + 18), "qgf_graphics_descriptor_v1_t must be 23 bytes in v1 of QGF");
This block denotes the offsets within the file to each frame's frame descriptor block, relative to the start of the file. The frame offset block always immediately follows the graphics descriptor block. The contents of this block are an array of U32's, with one entry for each frame.
Duplicate frame offsets in this block are allowed, if a certain frame is to be shown multiple times during animation.
Block format:
c
typedef struct __attribute__((packed)) qgf_frame_offsets_v1_t {\n qgf_block_header_v1_t header; // = { .type_id = 0x01, .neg_type_id = (~0x01), .length = (N * sizeof(uint32_t)) }\n uint32_t offset[N]; // where 'N' is the number of frames in the file\n} qgf_frame_offsets_v1_t;
typedef struct __attribute__((packed)) qgf_frame_v1_t {\n qgf_block_header_v1_t header; // = { .type_id = 0x02, .neg_type_id = (~0x02), .length = 5 }\n uint8_t format; // Frame format, see below.\n uint8_t flags; // Frame flags, see below.\n uint8_t compression_scheme; // Compression scheme, see below.\n uint8_t transparency_index; // palette index used for transparent pixels (not yet implemented)\n uint16_t delay; // frame delay time for animations (in units of milliseconds)\n} qgf_frame_v1_t;\n// _Static_assert(sizeof(qgf_frame_v1_t) == (sizeof(qgf_block_header_v1_t) + 6), "qgf_frame_v1_t must be 11 bytes in v1 of QGF");
If this frame is grayscale, the frame descriptor block (or frame delta block if flags denote a delta frame) is immediately followed by this frame's corresponding frame data block.
If the frame uses an indexed palette, the frame descriptor block (or frame delta block if flags denote a delta frame) is immediately followed by this frame's corresponding frame palette block.
Frame format possible values:
0x00: 1bpp grayscale, no palette, 0 = black, 1 = white, LSb first pixel
0x01: 2bpp grayscale, no palette, 0 = black, 3 = white, linear interpolation of brightness, LSb first pixel
0x02: 4bpp grayscale, no palette, 0 = black, 15 = white, linear interpolation of brightness, LSb first pixel
0x03: 8bpp grayscale, no palette, 0 = black, 255 = white, linear interpolation of brightness, LSb first pixel
0x04: 1bpp indexed palette, 2 colors, LSb first pixel
0x05: 2bpp indexed palette, 4 colors, LSb first pixel
0x06: 4bpp indexed palette, 16 colors, LSb first pixel
0x07: 8bpp indexed palette, 256 colors, LSb first pixel
Frame flags is a bitmask with the following format:
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
-
-
-
-
-
-
Delta
Transparency
[1] -- Delta: Signifies that the current frame is a delta frame, which specifies only a sub-image. The frame delta block follows the frame palette block if the image format specifies a palette, otherwise it directly follows the frame descriptor block.
[0] -- Transparency: The transparent palette index in the blob is considered valid and should be used when considering which pixels should be transparent during rendering this frame, if possible.
This block describes the palette used for the frame. The blob contains an array of palette entries -- one palette entry is present for each color used -- each palette entry is in QMK HSV888 format:
c
typedef struct __attribute__((packed)) qgf_palette_v1_t {\n qgf_block_header_v1_t header; // = { .type_id = 0x03, .neg_type_id = (~0x03), .length = (N * 3 * sizeof(uint8_t)) }\n struct { // container for a single HSV palette entry\n uint8_t h; // hue component: `[0,360)` degrees is mapped to `[0,255]` uint8_t.\n uint8_t s; // saturation component: `[0,1]` is mapped to `[0,255]` uint8_t.\n uint8_t v; // value component: `[0,1]` is mapped to `[0,255]` uint8_t.\n } hsv[N]; // N * hsv, where N is the number of palette entries depending on the frame format in the descriptor\n} qgf_palette_v1_t;
This block describes where the delta frame should be drawn, with respect to the top left location of the image.
c
typedef struct __attribute__((packed)) qgf_delta_v1_t {\n qgf_block_header_v1_t header; // = { .type_id = 0x04, .neg_type_id = (~0x04), .length = 8 }\n uint16_t left; // The left pixel location to draw the delta image\n uint16_t top; // The top pixel location to draw the delta image\n uint16_t right; // The right pixel location to to draw the delta image\n uint16_t bottom; // The bottom pixel location to to draw the delta image\n} qgf_delta_v1_t;\n// _Static_assert(sizeof(qgf_delta_v1_t) == 13, "qgf_delta_v1_t must be 13 bytes in v1 of QGF");
This block describes the data associated with the frame. The blob contains an array of bytes containing the data corresponding to the frame's image format:
c
typedef struct __attribute__((packed)) qgf_data_v1_t {\n qgf_block_header_v1_t header; // = { .type_id = 0x05, .neg_type_id = (~0x05), .length = N }\n uint8_t data[N]; // N data octets\n} qgf_data_v1_t;
', 50);
+const _hoisted_51 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_51);
+}
+const quantum_painter_qgf = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ quantum_painter_qgf as default
+};
diff --git a/assets/quantum_painter_qgf.md.DfrPXVeV.lean.js b/assets/quantum_painter_qgf.md.DfrPXVeV.lean.js
new file mode 100644
index 0000000..7ec0d47
--- /dev/null
+++ b/assets/quantum_painter_qgf.md.DfrPXVeV.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK Graphics Format","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_qgf.md","filePath":"quantum_painter_qgf.md"}');
+const _sfc_main = { name: "quantum_painter_qgf.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 50);
+const _hoisted_51 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_51);
+}
+const quantum_painter_qgf = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ quantum_painter_qgf as default
+};
diff --git a/assets/quantum_painter_rle.md.HUVkMPoB.js b/assets/quantum_painter_rle.md.HUVkMPoB.js
new file mode 100644
index 0000000..fa62fab
--- /dev/null
+++ b/assets/quantum_painter_rle.md.HUVkMPoB.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK QGF/QFF RLE data schema","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_rle.md","filePath":"quantum_painter_rle.md"}');
+const _sfc_main = { name: "quantum_painter_rle.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
There are two "modes" to the RLE algorithm used in both QGF/QFF:
Non-repeating sections of octets, with associated length of up to 128 octets
length = marker - 128
A corresponding length number of octets follow directly after the marker octet
Repeated octet with associated length, with associated length of up to 128
length = marker
A single octet follows the marker that should be repeated length times.
Decoder pseudocode:
while !EOF\n marker = READ_OCTET()\n\n if marker >= 128\n length = marker - 128\n for i = 0 ... length-1\n c = READ_OCTET()\n WRITE_OCTET(c)\n\n else\n length = marker\n c = READ_OCTET()\n for i = 0 ... length-1\n WRITE_OCTET(c)
', 5);
+const _hoisted_6 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_6);
+}
+const quantum_painter_rle = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ quantum_painter_rle as default
+};
diff --git a/assets/quantum_painter_rle.md.HUVkMPoB.lean.js b/assets/quantum_painter_rle.md.HUVkMPoB.lean.js
new file mode 100644
index 0000000..02444a8
--- /dev/null
+++ b/assets/quantum_painter_rle.md.HUVkMPoB.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"QMK QGF/QFF RLE data schema","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_rle.md","filePath":"quantum_painter_rle.md"}');
+const _sfc_main = { name: "quantum_painter_rle.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 5);
+const _hoisted_6 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_6);
+}
+const quantum_painter_rle = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ quantum_painter_rle as default
+};
diff --git a/assets/ref_functions.md.BmD0w9ZN.js b/assets/ref_functions.md.BmD0w9ZN.js
new file mode 100644
index 0000000..c1c7ba7
--- /dev/null
+++ b/assets/ref_functions.md.BmD0w9ZN.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"List of Useful Core Functions To Make Your Keyboard Better","description":"","frontmatter":{},"headers":[],"relativePath":"ref_functions.md","filePath":"ref_functions.md"}');
+const _sfc_main = { name: "ref_functions.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
List of Useful Core Functions To Make Your Keyboard Better
There are a lot of hidden functions in QMK that are incredibly useful, or may add a bit of functionality that you've been wanting. Functions that are specific to certain features are not included here, as those will be on their respective feature page.
The first is the update_tri_layer(x, y, z) function. This function check to see if layers x and y are both on. If they are both on, then it turns on layer z. Otherwise, if both x and y are not both on (either only one is, or neither is), then it turns off layer z.
This function is useful if you want to create specific keys that have this functionality, but other layer keycodes won't do this.
The other function is update_tri_layer_state(state, x, y, z). This function is meant to be called from the layer_state_set_* functions. This means that any time that you use a keycode to change the layer, this will be checked. So you could use LT(layer, kc) to change the layer and it will trigger the same layer check.
There are a couple of caveats to this method:
You cannot access the z layer without having x and y layers on, since if you try to activate just layer z, it will run this code and turn off layer z before you could use it.
Because layers are processed from the highest number z should be a higher layer than x and y or you may not be able to access it.
Alternatively, you don't have to immediately "return" the value. This is useful if you want to add multiple tri layers, or if you want to add additional effects.
c
layer_state_t layer_state_set_user(layer_state_t state) {\n state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);\n state = update_tri_layer_state(state, _RAISE, _SYMB, _SPECIAL);\n return state;\n}
Do you want to set the default layer, so that it's retained even after you unplug the board? If so, this is the function for you.
To use this, you would use set_single_persistent_default_layer(layer). If you have a name defined for your layer, you can use that instead (such as _QWERTY, _DVORAK or _COLEMAK).
This will set the default layer, update the persistent settings, and play a tune if you have Audio enabled on your board, and the default layer sounds set.
To configure the default layer sounds, you would want to define this in your config.h file, like this:
There is the QK_REBOOT or QK_RBT quantum keycode that you can use. But if you want to reset the board as part of a macro, rather than hitting a key separately, you can do that.
And to do so, add soft_reset_keyboard() to your function or macro.
If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage). To force an EEPROM reset, use the EE_CLR keycode or Bootmagic functionality. If neither of those are an option, then you can use a custom macro to do so.
To wipe the EEPROM, run eeconfig_init() from your function or macro to reset most of the settings to default.
If you want to send a random character to the host computer, you can use the tap_random_base64() function. This pseudorandomly selects a number between 0 and 63, and then sends a key press based on that selection. (0–25 is A–Z, 26–51 is a–z, 52–61 is 0–9, 62 is + and 63 is /).
TIP
Needless to say, but this is not a cryptographically secure method of generating random Base64 keys or passwords.
It's possible to start timers and read values for time-specific events. Here's an example:
c
static uint16_t key_timer;\nkey_timer = timer_read();\n\nif (timer_elapsed(key_timer) < 100) {\n // do something if less than 100ms have passed\n} else {\n // do something if 100ms or more have passed\n}
', 38);
+const _hoisted_39 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_39);
+}
+const ref_functions = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ ref_functions as default
+};
diff --git a/assets/ref_functions.md.BmD0w9ZN.lean.js b/assets/ref_functions.md.BmD0w9ZN.lean.js
new file mode 100644
index 0000000..0599340
--- /dev/null
+++ b/assets/ref_functions.md.BmD0w9ZN.lean.js
@@ -0,0 +1,15 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"List of Useful Core Functions To Make Your Keyboard Better","description":"","frontmatter":{},"headers":[],"relativePath":"ref_functions.md","filePath":"ref_functions.md"}');
+const _sfc_main = { name: "ref_functions.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 38);
+const _hoisted_39 = [
+ _hoisted_1
+];
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return openBlock(), createElementBlock("div", null, _hoisted_39);
+}
+const ref_functions = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ __pageData,
+ ref_functions as default
+};
diff --git a/assets/reference_configurator_support.md.DoavXRX9.js b/assets/reference_configurator_support.md.DoavXRX9.js
new file mode 100644
index 0000000..cb596cc
--- /dev/null
+++ b/assets/reference_configurator_support.md.DoavXRX9.js
@@ -0,0 +1,167 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js";
+const __pageData = JSON.parse('{"title":"Supporting Your Keyboard in QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"reference_configurator_support.md","filePath":"reference_configurator_support.md"}');
+const _sfc_main = { name: "reference_configurator_support.md" };
+const _hoisted_1 = /* @__PURE__ */ createStaticVNode('
To understand how the Configurator understands keyboards, first one must understand layout macros. For this exercise, we're going to imagine a 17-key numpad PCB, which we're going to call numpad.
The Configurator's API reads the keyboard's .h file from qmk_firmware/keyboards/<keyboard>/<keyboard>.h. For our numpad, this file would be qmk_firmware/keyboards/numpad/numpad.h:
QMK uses KC_NO to designate places in the switch matrix where there is no switch. Sometimes, XXX, ___ or ____ are used as shorthand to make this section easier to read if it needs to be debugged. This is usually defined near the beginning of the .h file:
This usage differs from that of keymap macros, which almost always use XXXXXXX (seven capital X's) for KC_NO and _______ (seven underscores) for KC_TRNS.
WARNING
To prevent user confusion, using KC_NO is preferred.
The layout macro tells the Configurator that our keyboard has 17 keys, arranged in five rows of four columns each. Our switch positions are named k<row><column>, counting from 0. The names themselves actually don't matter, as long as they match between the top section, which receives the keycodes from the keymap, and the bottom half which designates where each key is in the matrix.
To display our keyboard in a way that resembles the physical keyboard, we need to build a JSON file that tells the Configurator how to tie the physical locations and sizes of our keys to our switch matrix.
To build the JSON file, the easiest way is to build the layout in Keyboard Layout Editor ("KLE"), from which we'll feed the Raw Data into a QMK tool that converts this data into a JSON the Configurator will read and use. Since KLE opens by default with a numpad layout, we're just going to remove the Getting Started instructions, and use what's left.
Once the layout is as desired, move to the Raw Data tab in KLE, and copy the contents:
To convert this data into our JSON, go to the QMK KLE-JSON Converter, paste the Raw Data into the Input field, and click the Convert button. After a moment, our JSON data will appear in the Output field. Copy the contents to a new text document, and name the document info.json, saving it in the same folder that contains numpad.h.
Use the keyboard_name object to set the name of the keyboard. For instruction purposes, we will put each key's object on its own line. This is only to make the file more human-readable, and does not affect the Configurator's functionality.
The layouts object contains the data that represents the physical layout of the keyboard. It has an object LAYOUT, which needs to match the name of our layout macro from numpad.h. The LAYOUT object itself has an object named layout, which contains one JSON object for each physical key on our keyboard, formatted as follows:
The name of the key. Not displayed in the Configurator.\n |\n | The key's X-axis location, in key units from the\n | | keyboard's left edge.\n | |\n | | The key's Y-axis location, in key units from\n | | | the keyboard's top (rear-facing) edge.\n ↓ ↓ ↓\n{"label":"Num Lock", "x":0, "y":0},
Some objects will also have "w" and "h" keys, which represent a key's width and height, respectively.
The Configurator's API uses the layout macro and the JSON file we've given it to create a visual representation of the keyboard that has each visual object tied to a specific key, in sequence:
When a user selects the top-left key in the Configurator, and assigns Num Lock to it, the Configurator builds a keymap file with KC_NUM as the first key, and so on as the keymap is built. The label keys are not used; they are only for the user's reference in identifying specific keys when debugging the info.json file.
Currently, the Configurator does not support key rotation or non-rectangular key shapes like ISO Enter. Additionally, keys that are vertically-offset from their "row" — the arrow keys on 1800-layouts like the TKC1800 being a prominent example — confuse the KLE-to-JSON Converter, if not adjusted for by the contributor of the info.json file.
For ISO Enter keys, QMK custom is to display it as a rectangular key, 1.25u wide and 2u high, aligned so its right edge is aligned with the right edge of the alphanumeric key block.
A 60% keyboard in standard ISO layout, as rendered by QMK Configurator.
A wiring pattern of columns and rows that enables the MCU to detect keypresses with a fewer number of pins. The matrix often incorporates diodes to allow for NKRO.
A modifier that acts as if it is held down until another key is released, so you can press the mod and then press the key, rather than holding the mod while pressing the key. Also known as a Sticky key or a Dead key.
A low cost AVR development board. Clones of this device are often found on ebay very inexpensively (under $5) but people often struggle with flashing their pro micros.
A 1 byte number that is sent as part of a HID report over USB that represents a single key. These numbers are documented in the HID Usage Tables published by the USB-IF.
Pressing and releasing a key. In some situations you will need to distinguish between a key down and a key up event, and Tap always refers to both at once.
A low-cost AVR development board that is commonly used for hand-wired builds. A teensy is often chosen despite costing a few dollars more due to its halfkay bootloader, which makes flashing very simple.
A generic term for LEDs that light the underside of the board. These LEDs typically shine away from the bottom of the PCB and towards the surface the keyboard rests on.
In the larger computer world Unicode is a set of encoding schemes for representing characters in any language. As it relates to QMK it means using various OS schemes to send unicode codepoints instead of scancodes.
The information contained in info.json is combined with the config.h and rules.mk files, dynamically generating the necessary configuration for your keyboard at compile time. It is also used by the QMK API, and contains the information QMK Configurator needs to display a representation of your keyboard. Its key/value pairs are ruled by the data/schemas/keyboard.jsonschema file. To learn more about the why and how of the schema file see the Data Driven Configuration page.
You can create info.json files at every level under qmk_firmware/keyboards/<keyboard_name>. These files are combined, with more specific files overriding keys in less specific files. This means you do not need to duplicate your metadata information. For example, qmk_firmware/keyboards/clueboard/info.json specifies information common to all Clueboard products, such as manufacturer and maintainer, while qmk_firmware/keyboards/clueboard/66/info.json contains more specific information about Clueboard 66%.
A free-form text string describing the keyboard. This will be used as the USB product string. Can include Unicode characters, escaped to ASCII eg. \\u03A8 (Ψ).
Example: "Clueboard 66%"
maintainer (Required)
GitHub username of the maintainer, or qmk for community maintained boards.
Example: "skullydazed"
manufacturer (Required)
A free-form text string describing the keyboard's manufacturer. This will be used as the USB manufacturer string. Can include Unicode characters, escaped to ASCII eg. \\u03A8 (Ψ).
Example: "Clueboard"
url (Required)
A URL to the keyboard's product page, QMK.fm/keyboards page, or other page describing information about the keyboard.
Example: "https://clueboard.co"
bootloader_instructions
Instructions for putting the keyboard into a mode that allows for firmware flashing.
Example: "Press the button marked RESET on the back of the PCB"
The layouts portion of the dictionary contains several nested dictionaries. The outer layer consists of QMK layout names, for example LAYOUT_60_ansi or LAYOUT_60_iso.
Each key dictionary in a layout describes the physical properties of a key. If you are familiar with the Raw Data format for Keyboard Layout Editor, you will find many of the concepts the same. Key names and layout choices are reused wherever possible, but unlike KLE each key is stateless, inheriting no properties from the keys that came before it.
All key positions and rotations are specified in relation to the top-left corner of the keyboard, and the top-left corner of each key.
The ISO enter key is represented by a 1.25u×2uh key. Renderers which utilize info.json layout data (such as qmk info -l and the QMK Configurator) should display this key as expected.
community_layouts
A list of community layouts supported by the keyboard.
Example: ["60_ansi", "60_iso"]
layout_aliases
A mapping of layout aliases to layout definitions.
A dictionary of layouts supported by the keyboard.
LAYOUT_<layout_name>
layout
A list of key dictionaries comprising the layout. Each key dictionary contains:
matrix (Required)
The matrix position for the key.
Example: [0, 4] (row 0, column 4)
x (Required)
The absolute position of the key in the horizontal axis, in key units.
y (Required)
The absolute position of the key in the vertical axis, in key units.
h
The height of the key, in key units.
Default: 1 (1u)
label
What to name the key. This is not a key assignment as in the keymap, but should usually correspond to the keycode for the first layer of the default keymap.
Example: "Escape"
r
The rotation angle in degrees. Currently not implemented.
rx
The absolute X position of the rotation axis. Currently not implemented.
ry
The absolute Y position of the rotation axis. Currently not implemented.
w
The width of the key, in key units.
Default: 1 (1u)
encoder
The index of an encoder this key should be linked to
The centroid (geometric center) of the LEDs. Used for certain effects.
Default: [112, 32]
default
animation
The default effect. Must be one of led_matrix.animations
Default: "solid"
on
The default enabled state.
Default: true
val
The default brightness level.
Default: max_brightness
speed
The default animation speed.
Default: 128
driver (Required)
The driver to use. Must be one of custom, is31fl3218, is31fl3731, is31fl3733, is31fl3736, is31fl3737, is31fl3741, is31fl3742a, is31fl3743a, is31fl3745, is31fl3746a, snled27351.
layout (Required)
List of LED configuration dictionaries. Each dictionary contains:
flags (Required)
A bitfield of flags describing the type of LED.
x (Required)
The position of the LED in the horizontal axis, from 0 to 224.
y (Required)
The position of the LED in the vertical axis, from 0 to 64.
The centroid (geometric center) of the LEDs. Used for certain effects.
Default: [112, 32]
default
animation
The default effect. Must be one of rgb_matrix.animations
Default: "solid_color"
on
The default enabled state.
Default: true
hue
The default hue value.
Default: 0
sat
The default saturation value.
Default: 255
val
The default brightness level.
Default: max_brightness
speed
The default animation speed.
Default: 128
driver (Required)
The driver to use. Must be one of aw20216s, custom, is31fl3218, is31fl3236, is31fl3729, is31fl3731, is31fl3733, is31fl3736, is31fl3737, is31fl3741, is31fl3742a, is31fl3743a, is31fl3745, is31fl3746a, snled27351, ws2812.
hue_steps
The number of hue adjustment steps.
Default: 8
layout (Required)
List of LED configuration dictionaries. Each dictionary contains:
flags (Required)
A bitfield of flags describing the type of LED.
x (Required)
The position of the LED in the horizontal axis, from 0 to 224.
y (Required)
The position of the LED in the vertical axis, from 0 to 64.
Keyboards are able to support a wide range of languages. However, this support is not actually achieved within the keyboard itself - instead, it sends numerical codes, which the operating system maps to the appropriate characters depending on the user's configured keyboard layout. By default (and per the HID spec), this is the US ANSI layout. For example, when a Swedish person presses the key with the å character printed on it, the keyboard is actually sending the keycode for [.
Obviously, this can get confusing, so QMK provides language-specific keycode aliases for many keyboard layouts. These won't do much on their own - you still have to set the matching keyboard layout in your OS settings. Think of them more as keycap labels for your keymap.
Simply #include one of the keycode headers below at the top of your keymap.c, and assign the keycodes defined in the header in place of the KC_ prefixed ones.
By default, SEND_STRING() assumes a US ANSI keyboard layout is set. If you are using a different layout, you can include one of the Sendstring LUT headers below in your keymap.c to override the lookup tables used for mapping ASCII characters to keycodes. You do not need to include the corresponding keymap_*.h header, as it is implicit when including the Sendstring header.
An important thing to note here is that SEND_STRING() only operates on ASCII text. This means that you cannot pass it a string containing Unicode characters - this unfortunately includes accented characters that may be present in your desired layout. Many layouts make certain characters, such as Grave or Tilde, available only as dead keys, so you must add a space immediately after it in the string you want to send, to prevent it from potentially combining with the next character. Certain other layouts have no Sendstring header as they do not use a Latin-derived alphabet (for example Greek and Russian), and thus there is no way to input most of the ASCII character set.
AVR is severely resource-constrained, and as QMK continues to grow, it is approaching a point where support for AVR may need to be moved to legacy status as newer development is unable to fit into those constraints.
However, if you need to reduce the compiled size of your firmware to fit the controller's limited flash size, there are a number of options to do so.
First and foremost is enabling link time optimization. To do so, add this to your rules.mk:
make
LTO_ENABLE = yes
This will cause the final step to take longer, but should get you a smaller compiled size. This also disables Action Functions, and Action Macros, both of which are deprecated. This will get you the most savings, in most situations.
From there, disabling extraneous systems will help -- e.g.:
make
CONSOLE_ENABLE = no\nCOMMAND_ENABLE = no\nMOUSEKEY_ENABLE = no\nEXTRAKEY_ENABLE = no
This disables some of the functionality that you may not need. But note that extrakeys disables stuff like the media keys and system volume control.
If that isn't enough to get your firmware down to size, then there are some additional features that you can disable:
make
SPACE_CADET_ENABLE = no\nGRAVE_ESC_ENABLE = no \nMAGIC_ENABLE = no
These features are enabled by default, but they may not be needed. Double check to make sure. The Magic Keycodes are the largest and control things like NKRO toggling, GUI and ALT/CTRL swapping, etc. Disabling them will disable those functions. See Magic Functions for disabling related functions.
If you use sprintf or snprintf functions you can save around ~400 Bytes by enabling this option.
make
AVR_USE_MINIMAL_PRINTF = yes
This will include smaller implementations from AVRs libc into your Firmware. They are not fully featured, for instance zero padding and field width specifiers are not supported. So if you use sprintf or snprintf like this:
If you've done all of that, and you don't want to disable features like RGB, Audio, OLEDs, etc, there are some additional options that you can add to your config.h that can help.
Starting with Lock Key support. If you have a Cherry MX Lock switch (lucky you!), you don't want to do this. But chances are, you don't. In that case, add this to your config.h:
If you're using the Audio feature, by default that includes the music mode feature. This tranlates matrix positions into notes. It's neat for sure, but most likely, you're not using it. You can disable it by adding this to your config.h:
There are two __attribute__ ((weak)) placeholder functions available to customize magic keycodes. If you are not using that feature to swap keycodes, such as backslash with backspace, add the following to your keymap.c or user space code:
One place you can save a bunch of space here is by not using sprintf or snprintf. This function call takes up ~1.5kB of firmware space, and can be rewritten. For instance, WPM uses this a lot.
If you're using RGB on your board, both RGB Light (Underglow) and RGB Matrix (per key RGB) now require defines to enable different animations -- some keyboards enable a lot of animations by default, so you can generally gain back some space by disabling specific animations if you don't use them. For RGB Light you can disable these in your keymap's config.h:
For RGB Matrix, these need to be explicitly enabled as well. To disable any that were enabled by the keyboard, add one or more of these to your keymap's config.h:
If you've done all of this, and your firmware is still too large, then it is time to consider making the switch to ARM. There are a number of Pro Micro replacements with an ARM controller: