commit 26cbfa58b7e3e01d6b6a36b4c33bc43549e15ed6 Author: James Whiteman Date: Fri Jan 30 19:54:19 2026 -0800 Initial commit diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..9a34030 --- /dev/null +++ b/.clang-format @@ -0,0 +1,17 @@ +BasedOnStyle: LLVM +IndentWidth: 4 +AccessModifierOffset: -4 +BreakBeforeBraces: Allman +ColumnLimit: 120 +PointerAlignment: Left +ReferenceAlignment: Left +BinPackParameters: false +BinPackArguments: false +AllowAllArgumentsOnNextLine: false +AllowShortFunctionsOnASingleLine: Empty +BreakConstructorInitializers: AfterColon +AlwaysBreakAfterDefinitionReturnType: None +PenaltyReturnTypeOnItsOwnLine : 100 +PackConstructorInitializers: CurrentLine +AlwaysBreakTemplateDeclarations: Yes +AlignTrailingComments: false \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e984cd1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# Xmake cache +.xmake/ +build/ + +# MacOS Cache +.DS_Store + +compile_commands.json \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..c6baa46 --- /dev/null +++ b/README.md @@ -0,0 +1,114 @@ +# Game Jam Kit +A simple framework for making small games with [raylib](https://www.raylib.com/), [box2d](https://box2d.org/), and [LDtk](https://ldtk.io/). + +## Introduction +The framework in setup as a series of classes that manage the lifecycle of each other. + +`Game` manages `Manager`s and `Scene`s. + +A `Manager` holds resources that are used across scenes. The resources are loaded at `Game::init()`. + +`Scene` manages `Service`s and `GameObject`s. + +`Scene`s also perform game logic for each level. + +A `Service` holds resources that are used in a single scene. The resources are loaded during init and disposed when the scene is disposed. + +`GameObject` manages `Component`s + +`GameObject`s also perform game logic for individual game entities. + +A `Component` is a reusable tool for creating `GameObject` behavior. + +Each of these pieces has lifecycle functions for `init()`, `update()`, and `draw()` that can be overridden when creating your own subclasses. These functions are called by the containing manager. If you do not wish for your class to be managed you shouldn't inherit from these base classes. + +The managers also have larger overridable functions, `init_*()`, `update_*()`, and `draw_*()` that give you increased control over how the manager is used. + +See `engine/prefabs` for prebuilt managers, services, game objects, and components. + +See `samples` for examples on how to build a `Scene`. + +See `main.cpp` for how to build a `Game`. + +## Building +This project uses [xmake](https://xmake.io/) to build. Checkout `xmake.lua` for more details. + +Using the [xmake extension](https://marketplace.visualstudio.com/items?itemName=tboox.xmake-vscode) for VS Code is highly recommended. + +## Windows prerequisites +Install [Visual Studio Community Edition](https://visualstudio.microsoft.com/vs/community/), anything 2022 and over should be fine. +Make sure to install the C++ packages. +Install [xmake](https://xmake.io/guide/quick-start.html). + + +## Mac prerequisites +Install `xmake`: +```bash +brew install xmake +``` + +## Linux prerequisites +Install `xmake`, `cmake`, opengl libs, and x11 libs: +```bash +sudo apt-get install xmake +sudo apt-get install g++ +sudo apt-get install cmake +sudo apt-get install libgl1-mesa-dev +sudo apt-get install xorg-dev libx11-dev libxfixes-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev +``` + +## Build +```bash +xmake +``` + +## Run +```bash +xmake run +``` + +## Switch to debug mode +```bash +xmake config --mode debug +``` +Then run with the VS Code debugger. + +## Switch to release mode +```bash +xmake config --mode release +``` +Then run with `xmake run`. + +## Clean +```bash +xmake config --clean +``` + +## Setup header includes for your editor +### Option 1: +Generate compile_commands for VS Code. +```bash +xmake project -k compile_commands +``` +This has to be every time a new file is added. + +Add this line to `c_cpp_properties.json` by running the command `C/C++: Edit Configurations (JSON)` from the command pallette. +```json +"compileCommands": "${workspaceFolder}/compile_commands.json", +``` + +### Option 2: +Alternatively add the include directory for each library to your include path configs. +They are located here for Windows: +``` +C:\Users\user\AppData\Local\.xmake\packages\r\raylib\5.5\xxxxx\include +C:\Users\user\AppData\Local\.xmake\packages\b\box2d\v3.1.1\xxxxx\include +C:\Users\user\AppData\Local\.xmake\packages\l\ldtkloader\1.5.3+1\xxxxx\include +``` +and here for Linux: +``` +~/.xmake/packages/r/raylib/5.5/xxxxx/include +~/.xmake/packages/b/box2d/v3.1.1/xxxxx/include +~/.xmake/packages/l/ldtkloader/1.5.3+1/xxxxx/include +``` +The specific hashes are for the different platforms, targets, and modes, selecting any of them will give you what you need. diff --git a/assets/fonts/Roboto.ttf b/assets/fonts/Roboto.ttf new file mode 100644 index 0000000..7e3bb2f Binary files /dev/null and b/assets/fonts/Roboto.ttf differ diff --git a/assets/fonts/RobotoMono.ttf b/assets/fonts/RobotoMono.ttf new file mode 100644 index 0000000..3806bfb Binary files /dev/null and b/assets/fonts/RobotoMono.ttf differ diff --git a/assets/fonts/Tiny5.ttf b/assets/fonts/Tiny5.ttf new file mode 100644 index 0000000..635fe07 Binary files /dev/null and b/assets/fonts/Tiny5.ttf differ diff --git a/assets/gamecontrollerdb.txt b/assets/gamecontrollerdb.txt new file mode 100644 index 0000000..394156d --- /dev/null +++ b/assets/gamecontrollerdb.txt @@ -0,0 +1,2212 @@ +# Game Controller DB for SDL in 2.0.16 format +# Source: https://github.com/mdqinc/SDL_GameControllerDB + +# Windows +03000000300f00000a01000000000000,3 In 1 Conversion Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows, +03000000fa190000918d000000000000,3 In 1 Conversion Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows, +03000000fa2d00000100000000000000,3dRudder Foot Motion Controller,leftx:a0,lefty:a1,rightx:a5,righty:a2,platform:Windows, +03000000d0160000040d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000050d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000060d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000070d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000600a000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000c82d00001930000000000000,8BitDo 64,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b11,platform:Windows, +03000000c82d00000031000000000000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000531000000000000,8BitDo Adapter 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000951000000000000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightx:a3,righty:a5,start:b11,platform:Windows, +03000000008000000210000000000000,8BitDo F30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000003512000011ab000000000000,8BitDo F30 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000c82d00001028000000000000,8BitDo F30 Arcade Joystick,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d000011ab000000000000,8BitDo F30 Arcade Joystick,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000801000000900000000000000,8BitDo F30 Arcade Stick,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001038000000000000,8BitDo F30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000090000000000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00006a28000000000000,8BitDo GameCube,a:b0,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b9,paddle2:b8,rightshoulder:b10,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b1,y:b4,platform:Windows, +03000000c82d00001251000000000000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001151000000000000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000150000000000000,8BitDo M30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000151000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000650000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00005106000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,guide:b2,leftshoulder:b8,lefttrigger:b9,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00002090000000000000,8BitDo Micro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000310000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000451000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightx:a3,righty:a5,start:b11,platform:Windows, +03000000c82d00002028000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00008010000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d0000e002000000000000,8BitDo N30,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b6,platform:Windows, +03000000c82d00000190000000000000,8BitDo N30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001590000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00006528000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000290000000000000,8BitDo N64,+rightx:b9,+righty:b3,-rightx:b4,-righty:b8,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,platform:Windows, +03000000c82d00003038000000000000,8BitDo N64,+rightx:b9,+righty:b3,-rightx:b4,-righty:b8,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,platform:Windows, +03000000c82d00006928000000000000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b11,platform:Windows, +03000000c82d00002590000000000000,8BitDo NEOGEO,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000003512000012ab000000000000,8BitDo NES30,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Windows, +03000000c82d000012ab000000000000,8BitDo NES30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000022000000090000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000203800000900000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00002038000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000751000000000000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000851000000000000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000360000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000361000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000660000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000960000000000000,8BitDo Pro 3,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b17,paddle2:b16,paddle3:b2,paddle4:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000131000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000231000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000331000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000431000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00002867000000000000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a2,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b10,x:b3,y:b4,platform:Windows, +03000000c82d00000130000000000000,8BitDo SF30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000060000000000000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000061000000000000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000102800000900000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d000021ab000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00003028000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +030000003512000020ab000000000000,8BitDo SN30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000030000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000351000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a2,rightshoulder:b7,rightx:a3,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001290000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d000020ab000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00004028000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00006228000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000021000000000000,8BitDo SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000260000000000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000261000000000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001230000000000000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001260000000000000,8BitDo Ultimate 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b17,paddle2:b16,paddle3:b2,paddle4:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001b30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001c30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001d30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001530000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001630000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001730000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001130000000000000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001330000000000000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000121000000000000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000a00500003232000000000000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001890000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00003032000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +030000008f0e00001200000000000000,Acme GA02,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000c01100000355000000000000,Acrux,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000fa190000f0ff000000000000,Acteck AGJ 3200,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d1180000402c000000000000,ADT1,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a3,rightx:a2,righty:a5,x:b3,y:b4,platform:Windows, +030000006f0e00008801000000000000,Afterglow Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000341a00003608000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000263000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001101000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001401000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001402000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001901000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001a01000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001301000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001302000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001304000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001413000000000000,Afterglow Xbox Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00003901000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ab1200000103000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000000f9000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000100000008200000000000000,Akishop Customs PS360,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000007c1800000006000000000000,Alienware Dual Compatible PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000491900001904000000000000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000710100001904000000000000,Amazon Luna Controller,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b8,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b4,rightstick:b7,rightx:a3,righty:a4,start:b6,x:b3,y:b2,platform:Windows, +0300000008100000e501000000000000,Anbernic Game Pad,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000020500000913000000000000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000373500000710000000000000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000373500004610000000000000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000190e00000110000000000000,Aquaplus Piece,a:b1,b:b0,back:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b2,platform:Windows, +03000000830500000160000000000000,Arcade,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b3,x:b4,y:b4,platform:Windows, +03000000120c0000100e000000000000,Armor 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000490b00004406000000000000,ASCII Seamic Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000869800002500000000000000,Astro C40 TR PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000a30c00002700000000000000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000a30c00002800000000000000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000050b00000579000000000000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000050b00000679000000000000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000503200000110000000000000,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,start:b3,platform:Windows, +03000000503200000210000000000000,Atari VCS Modern Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, +03000000380800001889000000000000,AtGames Legends Gamer Pro,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b13,lefttrigger:b14,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000008a3500000102000000000000,Backbone One,a:b4,b:b5,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b10,leftstick:b17,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b18,righttrigger:b13,rightx:a3,righty:a4,start:b15,x:b7,y:b8,platform:Windows, +030000008a3500000201000000000000,Backbone One,a:b4,b:b5,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b10,leftstick:b17,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b18,righttrigger:b13,rightx:a3,righty:a4,start:b15,x:b7,y:b8,platform:Windows, +030000008a3500000302000000000000,Backbone One,a:b4,b:b5,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b10,leftstick:b17,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b18,righttrigger:b13,rightx:a3,righty:a4,start:b15,x:b7,y:b8,platform:Windows, +030000008a3500000402000000000000,Backbone One,a:b4,b:b5,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b10,leftstick:b17,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b18,righttrigger:b13,rightx:a3,righty:a4,start:b15,x:b7,y:b8,platform:Windows, +03000000e4150000103f000000000000,Batarang,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d6200000e557000000000000,Batarang PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000c01100001352000000000000,Battalife Joystick,a:b6,b:b7,back:b2,leftshoulder:b0,leftx:a0,lefty:a1,rightshoulder:b1,start:b3,x:b4,y:b5,platform:Windows, +030000006f0e00003201000000000000,Battlefield 4 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ad1b000001f9000000000000,BB 070,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000bc2000005250000000000000,Beitong G3,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a3,righty:a4,start:b15,x:b3,y:b4,platform:Windows, +030000000d0500000208000000000000,Belkin Nostromo N40,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000bc2000006012000000000000,Betop 2126F,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000000055000000000000,Betop BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000790000000700000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000808300000300000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000006312000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000006321000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000006412000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000555000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000655000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000006f0e00006401000000000000,BF One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000300f00000202000000000000,Bigben,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a5,righty:a2,start:b7,x:b2,y:b3,platform:Windows, +030000006b1400000209000000000000,Bigben,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006b1400000055000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006b1400000103000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +03000000120c0000200e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000210e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f10e000000000000,Brook PS2 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000310c000000000000,Brook Super Converter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000d81d00000b00000000000000,Buffalo BSGP1601 Series,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Windows, +030000005a1c00002400000000000000,Capcom Home Arcade Controller,a:b3,b:b4,back:b7,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b6,x:b0,y:b1,platform:Windows, +030000005b1c00002400000000000000,Capcom Home Arcade Controller,a:b3,b:b4,back:b7,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b6,x:b0,y:b1,platform:Windows, +030000005b1c00002500000000000000,Capcom Home Arcade Controller,a:b3,b:b4,back:b7,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b6,x:b0,y:b1,platform:Windows, +030000006d04000042c2000000000000,ChillStream,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000e82000006058000000000000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000457500000401000000000000,Cobra,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000b0400003365000000000000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Windows, +030000004c050000c505000000000000,CronusMax Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000d814000007cd000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000d8140000cefa000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Windows, +030000003807000002cb000000000000,Cyborg,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000a306000022f6000000000000,Cyborg V.3 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000f806000000a3000000000000,DA Leader,a:b7,b:b6,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b0,leftstick:b8,lefttrigger:b1,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:b3,rightx:a2,righty:a3,start:b12,x:b4,y:b5,platform:Windows, +030000001a1c00000001000000000000,Datel Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000451300000830000000000000,Defender Game Racer X7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000791d00000103000000000000,Dual Box Wii,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000004f040000070f000000000000,Dual Power,a:b8,b:b9,back:b4,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,leftshoulder:b13,leftstick:b6,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b12,rightstick:b7,righttrigger:b15,start:b5,x:b10,y:b11,platform:Windows, +030000004f04000012b3000000000000,Dual Power 3,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000020b3000000000000,Dual Trigger,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +03000000bd12000002e0000000000000,Dual Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows, +03000000ff1100003133000000000000,DualForce,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b1,platform:Windows, +030000006f0e00003001000000000000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000fc0400000250000000000000,Easy Grip,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000bc2000000091000000000000,EasySMX Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000006e0500000a20000000000000,Elecom DUX60 MMO,a:b2,b:b3,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b14,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b15,righttrigger:b13,rightx:a3,righty:a4,start:b20,x:b0,y:b1,platform:Windows, +03000000b80500000410000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +03000000b80500000610000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +03000095090000010000000000000000,Elecom JC-U609,a:b0,b:b1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b8,x:b3,y:b4,platform:Windows, +0300004112000000e500000000000000,Elecom JC-U909Z,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b8,x:b3,y:b4,platform:Windows, +03000041120000001050000000000000,Elecom JC-U911,a:b1,b:b2,back:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b0,x:b4,y:b5,platform:Windows, +030000006e0500000520000000000000,Elecom P301U PlayStation Controller Adapter,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +03000000250900000218000000000000,Elecom PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000411200004450000000000000,Elecom U1012,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000320000000000000,Elecom U3613M,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000e20000000000000,Elecom U3912T,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000f20000000000000,Elecom U4013S,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500001320000000000000,Elecom U4113,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006e0500001020000000000000,Elecom U4113S,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000720000000000000,Elecom W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +030000007d0400000640000000000000,Eliminator AfterShock,a:b1,b:b2,back:b9,dpdown:+a3,dpleft:-a5,dpright:+a5,dpup:-a3,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a4,righty:a2,start:b8,x:b0,y:b3,platform:Windows, +03000000120c0000f61c000000000000,Elite,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000430b00000300000000000000,EMS Production PS2 Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000062000001801000000000000,EMS TrioLinker Plus II,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Windows, +03000000242f000000b7000000000000,ESM 9110,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Windows, +03000000101c0000181c000000000000,Essential,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b4,leftx:a1,lefty:a0,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000008f0e00000f31000000000000,EXEQ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +03000000341a00000108000000000000,EXEQ RF Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006f0e00008401000000000000,Faceoff Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00008101000000000000,Faceoff Deluxe Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00008001000000000000,Faceoff Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000021000000090000000000000,FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +0300000011040000c600000000000000,FC801,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000852100000201000000000000,FF GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ad1b000028f0000000000000,Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b00002ef0000000000000,Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000038f0000000000000,Fightpad TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03005036852100000000000000000000,Final Fantasy XIV Online Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000f806000001a3000000000000,Firestorm,a:b9,b:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b0,leftstick:b10,lefttrigger:b1,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b12,x:b8,y:b4,platform:Windows, +03000000b50700000399000000000000,Firestorm 2,a:b2,b:b4,back:b10,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,righttrigger:b9,start:b11,x:b3,y:b5,platform:Windows, +03000000b50700001302000000000000,Firestorm D3,a:b0,b:b2,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,x:b1,y:b3,platform:Windows, +03000000b40400001024000000000000,Flydigi Apex,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000151900004000000000000000,Flydigi Vader 2,a:b27,b:b26,back:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b23,leftstick:b17,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b22,rightstick:b16,righttrigger:b20,rightx:a3,righty:a4,start:b18,x:b25,y:b24,platform:Windows, +03000000b40400001124000000000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b14,paddle1:b4,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b2,y:b3,platform:Windows, +03000000b40400001224000000000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000008305000000a0000000000000,G08XU,a:b0,b:b1,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b5,x:b2,y:b3,platform:Windows, +0300000066f700000100000000000000,Game VIB Joystick,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows, +03000000260900002625000000000000,GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,lefttrigger:a4,leftx:a0,lefty:a1,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Windows, +03000000341a000005f7000000000000,GameCube Controller,a:b2,b:b3,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b1,y:b0,platform:Windows, +03000000430b00000500000000000000,GameCube Controller,a:b0,b:b2,dpdown:b10,dpleft:b8,dpright:b9,dpup:b11,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a3,rightx:a5,righty:a2,start:b7,x:b1,y:b3,platform:Windows, +03000000790000004718000000000000,GameCube Controller,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000790000004618000000000000,GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +030000008f0e00000d31000000000000,Gamepad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ac0500003d03000000000000,GameSir G3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000ac0500005b05000000000000,GameSir G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000ac0500002d02000000000000,GameSir G4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000ac0500004d04000000000000,GameSir G4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000ac0500001a06000000000000,GameSir T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000373500009410000000000000,GameSir Tegenaria Lite,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000004c0e00001035000000000000,Gamester,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00001110000000000000,GameStick Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +0300000047530000616d000000000000,GameStop,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000c01100000140000000000000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000b62500000100000000000000,Gametel GT004 01,a:b3,b:b0,dpdown:b10,dpleft:b9,dpright:b8,dpup:b11,leftshoulder:b4,rightshoulder:b5,start:b7,x:b1,y:b2,platform:Windows, +030000008f0e00001411000000000000,Gamo2 Divaller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000a857000000000000,Gator Claw,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000c21100000791000000000000,Be1 GC101 Controller 1.03,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c9110000f055000000000000,Be1 GC100XF Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000008305000009a0000000000000,Genius,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000008305000031b0000000000000,Genius Maxfire Blaze 3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000451300000010000000000000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000005c1a00003330000000000000,Genius MaxFire Grandias 12V,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000300f00000b01000000000000,GGE909 Recoil,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c283000000000000,Gioteck PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f025000021c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f025000031c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c383000000000000,Gioteck VX2 PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c483000000000000,Gioteck VX2 PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d11800000094000000000000,Google Stadia Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b11,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, +030000004f04000026b3000000000000,GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +0300000079000000d418000000000000,GPD Win,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000025b000000000000,GPX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000007d0400000840000000000000,Gravis Destroyer Tilt,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,x:b0,y:b3,platform:Windows, +030000007d0400000540000000000000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000280400000140000000000000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a3,dpup:-a4,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000008f0e00000610000000000000,GreenAsia,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a5,righty:a2,start:b11,x:b3,y:b0,platform:Windows, +03000000ac0500006b05000000000000,GT2a,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000341a00000302000000000000,Hama Scorpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000008a2e0000dd10000000000000,Hand Held Legend GC Ultimate,a:b0,b:b2,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,misc2:b24,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b1,y:b3,platform:Windows, +030000008a2e0000df10000000000000,Hand Held Legend ProGCC,a:b1,b:b0,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b3,y:b2,platform:Windows, +030000000d0f00004900000000000000,Hatsune Miku Sho PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000001008000001e1000000000000,Havit HV G60,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows, +030000000d0f00000c00000000000000,HEXT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d81400000862000000000000,HitBox Edition Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +03000000632500002605000000000000,HJD X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000000d0f00000a00000000000000,Hori DOA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00008500000000000000,Hori Fighting Commander 2016 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002500000000000000,Hori Fighting Commander 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002d00000000000000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005f00000000000000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000000d0f00008400000000000000,Hori Fighting Commander 5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006201000000000000,Hori Fighting Commander Octa,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006401000000000000,Hori Fighting Commander Octa,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00005100000000000000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008600000000000000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000ba00000000000000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00008800000000000000,Hori Fighting Stick mini 4 PS3,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows, +030000000d0f00008700000000000000,Hori Fighting Stick mini 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000000d0f00001000000000000000,Hori Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00003200000000000000,Hori Fightstick 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000c000000000000000,Hori Fightstick 4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00000d00000000000000,Hori Fightstick EX2,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00003701000000000000,Hori Fightstick Mini,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Windows, +030000000d0f00004000000000000000,Hori Fightstick Mini 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002100000000000000,Hori Fightstick V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002700000000000000,Hori Fightstick V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000a000000000000000,Hori Grip TAC4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b13,x:b0,y:b3,platform:Windows, +030000000d0f0000a500000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000000d0f0000a600000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000000d0f00000101000000000000,Hori Mini Hatsune Miku FT,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005400000000000000,Hori Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00000900000000000000,Hori Pad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004d00000000000000,Hori Pad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00003801000000000000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Windows, +030000000d0f00009200000000000000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002301000000000000,Hori PS4 Controller Light,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000000d0f00001100000000000000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002600000000000000,Hori Real Arcade Pro 3P,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004b00000000000000,Hori Real Arcade Pro 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006a00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006b00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008a00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008b00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006f00000000000000,Hori Real Arcade Pro 4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00007000000000000000,Hori Real Arcade Pro 4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00003d00000000000000,Hori Real Arcade Pro N3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b10,leftstick:b4,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b6,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000ae00000000000000,Hori Real Arcade Pro N4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00008c00000000000000,Hori Real Arcade Pro P4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000aa00000000000000,Hori Real Arcade Pro S,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000d800000000000000,Hori Real Arcade Pro S,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00002200000000000000,Hori Real Arcade Pro V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005b00000000000000,Hori Real Arcade Pro V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005c00000000000000,Hori Real Arcade Pro V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000af00000000000000,Hori Real Arcade Pro VHS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00001b00000000000000,Hori Real Arcade Pro VX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000002f5000000000000,Hori Real Arcade Pro VX,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00009c00000000000000,Hori TAC Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000c900000000000000,Hori Taiko Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006400000000000000,Horipad 3TP,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00001300000000000000,Horipad 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005500000000000000,Horipad 4 FPS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006e00000000000000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006600000000000000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000000d0f00004200000000000000,Horipad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000ad1b000001f5000000000000,Horipad EXT2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000ee00000000000000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000c100000000000000,Horipad Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000f600000000000000,Horipad Nintendo Switch Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000000d0f00000202000000000000,Horipad O Nintendo Switch 2 Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,misc2:b14,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +030000000d0f00006700000000000000,Horipad One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00009601000000000000,Horipad Steam,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc2:b2,paddle1:b5,paddle2:b15,paddle3:b18,paddle4:b19,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000000d0f0000dc00000000000000,Horipad Switch,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000242e00000b20000000000000,Hyperkin Admiral N64 Controller,+rightx:b11,+righty:b13,-rightx:b8,-righty:b12,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,platform:Windows, +03000000242e0000ff0b000000000000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Windows, +03000000790000004e95000000000000,Hyperkin N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a5,righty:a2,start:b9,platform:Windows, +03000000242e00006a48000000000000,Hyperkin RetroN Sq,a:b3,b:b7,back:b5,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b0,rightshoulder:b1,start:b4,x:b2,y:b6,platform:Windows, +03000000242f00000a20000000000000,Hyperkin Scout,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows, +03000000242e00000a20000000000000,Hyperkin Scout Premium SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows, +03000000242e00006a38000000000000,Hyperkin Trooper 2,a:b0,b:b1,back:b4,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b3,start:b5,platform:Windows, +03000000f00300008d04000000000000,HyperX Clutch,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:-a2,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:+a5,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000d81d00000e00000000000000,iBuffalo AC02 Arcade Joystick,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,rightx:a2,righty:a5,start:b8,x:b4,y:b5,platform:Windows, +03000000d81d00000f00000000000000,iBuffalo BSGP1204 Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d81d00001000000000000000,iBuffalo BSGP1204P Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000005c0a00000285000000000000,iDroidCon,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b6,platform:Windows, +03000000696400006964000000000000,iDroidCon Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000511d00000230000000000000,iGUGU Gamecore,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b1,leftstick:b4,lefttrigger:b3,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b2,platform:Windows, +03000000b50700001403000000000000,Impact Black,a:b2,b:b3,back:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +030000006f0e00002401000000000000,Injustice Fightstick PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000830500005130000000000000,InterAct ActionPad,a:b0,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000ef0500000300000000000000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows, +03000000fd0500000230000000000000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a5,start:b11,x:b0,y:b1,platform:Windows, +03000000fd0500000030000000000000,Interact GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Windows, +03000000fd0500003902000000000000,InterAct Hammerhead,a:b3,b:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b2,lefttrigger:b8,rightshoulder:b7,rightstick:b5,righttrigger:b9,start:b10,x:b0,y:b1,platform:Windows, +03000000fd0500002a26000000000000,InterAct Hammerhead FX,a:b3,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b0,y:b1,platform:Windows, +03000000fd0500002f26000000000000,InterAct Hammerhead FX,a:b4,b:b5,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b1,y:b2,platform:Windows, +03000000fd0500005302000000000000,InterAct ProPad,a:b3,b:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Windows, +03000000ac0500002c02000000000000,Ipega Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000491900000204000000000000,Ipega PG9023,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000491900000304000000000000,Ipega PG9087,+righty:+a5,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows, +030000007e0500000620000000000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Windows, +030000007e0500000720000000000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows, +03000000250900000017000000000000,Joypad Adapter,a:b2,b:b1,back:b9,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b8,x:b3,y:b0,platform:Windows, +03000000bd12000003c0000000000000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ff1100004033000000000000,JPD FFB,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a2,start:b15,x:b3,y:b0,platform:Windows, +03000000242f00002d00000000000000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000242f00008a00000000000000,JYS Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows, +03000000c4100000c082000000000000,KADE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000828200000180000000000000,Keio,a:b4,b:b5,back:b8,leftshoulder:b2,lefttrigger:b3,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,y:b1,platform:Windows, +03000000790000000200000000000000,King PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000bd12000001e0000000000000,Leadership,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000006f0e00000103000000000000,Logic3,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00000104000000000000,Logic3,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000008f0e00001300000000000000,Logic3,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d040000d2ca000000000000,Logitech Cordless Precision,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000011c2000000000000,Logitech Cordless Wingman,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b2,righttrigger:b7,rightx:a3,righty:a4,x:b4,platform:Windows, +030000006d04000016c2000000000000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d0400001dc2000000000000,Logitech F310,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006d04000018c2000000000000,Logitech F510,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d0400001ec2000000000000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006d04000019c2000000000000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d0400001fc2000000000000,Logitech F710,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006d0400001ac2000000000000,Logitech Precision,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000009c2000000000000,Logitech WingMan,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000006d0400000bc2000000000000,Logitech WingMan Action Pad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b8,lefttrigger:a5~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:a2~,start:b8,x:b3,y:b4,platform:Windows, +030000006d0400000ac2000000000000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows, +03000000380700005645000000000000,Lynx,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000222200006000000000000000,Macally,a:b1,b:b2,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b33,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700003888000000000000,Mad Catz Arcade Fightstick TE S Plus PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008532000000000000,Mad Catz Arcade Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006352000000000000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006652000000000000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000380700005032000000000000,Mad Catz Fightpad Pro PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700005082000000000000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000380700008031000000000000,Mad Catz FightStick Alpha PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000003807000038b7000000000000,Mad Catz Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000380700008433000000000000,Mad Catz Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008483000000000000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000380700008134000000000000,Mad Catz Fightstick TE2 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008184000000000000,Mad Catz Fightstick TE2 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000380700006252000000000000,Mad Catz Micro CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008232000000000000,Mad Catz PlayStation Brawlpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008731000000000000,Mad Catz PlayStation Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000003807000056a8000000000000,Mad Catz PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700001888000000000000,Mad Catz SFIV Fightstick PS3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000380700008081000000000000,Mad Catz SFV Arcade Fightstick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000380700001847000000000000,Mad Catz Street Fighter 4 Xbox 360 FightStick,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000380700008034000000000000,Mad Catz TE2 PS3 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000002a0600001024000000000000,Matricom,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, +030000009f000000adbb000000000000,MaxJoypad Virtual Controller,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900000128000000000000,Mayflash Arcade Stick,a:b1,b:b2,back:b8,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b5,y:b6,platform:Windows, +030000008f0e00001330000000000000,Mayflash Controller Adapter,a:b1,b:b2,back:b8,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3~,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000242f00003700000000000000,Mayflash F101,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000790000003018000000000000,Mayflash F300 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000242f00003900000000000000,Mayflash F300 Elite Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000790000004418000000000000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000790000004318000000000000,Mayflash GameCube Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000242f00007300000000000000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows, +0300000079000000d218000000000000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d620000010a7000000000000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000242f0000f500000000000000,Mayflash N64 Adapter,a:b2,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a5,start:b9,platform:Windows, +03000000242f0000f400000000000000,Mayflash N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a5,start:b9,platform:Windows, +03000000790000007918000000000000,Mayflash N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,righttrigger:b7,rightx:a3,righty:a2,start:b8,platform:Windows, +030000008f0e00001030000000000000,Mayflash Saturn Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +0300000025090000e803000000000000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +03000000790000000318000000000000,Mayflash Wii DolphinBar,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +03000000790000000018000000000000,Mayflash Wii U Pro Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000790000002418000000000000,Mega Drive Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b2,start:b9,x:b3,y:b4,platform:Windows, +0300000079000000ae18000000000000,Mega Drive Controller,a:b0,b:b1,back:b7,dpdown:b14,dpleft:b15,dpright:b13,dpup:b2,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000c0160000990a000000000000,Mega Drive Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,righttrigger:b2,start:b3,platform:Windows, +030000005e0400002800000000000000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Windows, +030000005e0400000300000000000000,Microsoft SideWinder,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000005e0400000700000000000000,Microsoft SideWinder,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +030000005e0400000e00000000000000,Microsoft SideWinder Freestyle Pro,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b8,x:b3,y:b4,platform:Windows, +030000005e0400002700000000000000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Windows, +03000000280d00000202000000000000,Miller Lite Cantroller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b5,x:b2,y:b3,platform:Windows, +03000000ad1b000023f0000000000000,MLG,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a6,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000ad1b00003ef0000000000000,MLG Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000380700006382000000000000,MLG PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000004523000015e0000000000000,Mobapad Chitu HD,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000491900000904000000000000,Mobapad Chitu HD,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000ffff00000000000000000000,Mocute M053,a:b3,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b11,leftstick:b7,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b6,righttrigger:b4,rightx:a3,righty:a4,start:b8,x:b1,y:b0,platform:Windows, +03000000d6200000e589000000000000,Moga 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000007162000000000000,Moga Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000d6200000ad0d000000000000,Moga Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c62400002a89000000000000,Moga XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c62400002b89000000000000,Moga XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c62400001a89000000000000,Moga XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c62400001b89000000000000,Moga XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000250900006688000000000000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000091200004488000000000000,MUSIA PlayStation 2 Input Display,a:b0,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:b11,rightx:a2,righty:a3,start:b5,x:b1,y:b3,platform:Windows, +03000000f70600000100000000000000,N64 Adaptoid,+rightx:b2,+righty:b1,-rightx:b4,-righty:b5,a:b0,b:b3,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,platform:Windows, +030000006b140000010c000000000000,Nacon GC 400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006b1400001106000000000000,Nacon Revolution 3 PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +0300000085320000170d000000000000,Nacon Revolution 5 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +0300000085320000190d000000000000,Nacon Revolution 5 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000006b140000100d000000000000,Nacon Revolution Infinity PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000006b140000080d000000000000,Nacon Revolution Unlimited Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000bd12000001c0000000000000,Nebular,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000eb0300000000000000000000,NeGcon Adapter,a:a2,b:b13,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,lefttrigger:a4,leftx:a1,righttrigger:b11,start:b3,x:a3,y:b12,platform:Windows, +0300000038070000efbe000000000000,NEO SE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +0300000092120000474e000000000000,NeoGeo X Arcade Stick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b3,y:b2,platform:Windows, +03000000921200004b46000000000000,NES 2 port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Windows, +03000000000f00000100000000000000,NES Controller,a:b1,b:b0,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows, +03000000921200004346000000000000,NES Controller,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows, +03000000790000004518000000000000,NEXILUX GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +030000001008000001e5000000000000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Windows, +03000000050b00000045000000000000,Nexus,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Windows, +03000000152000000182000000000000,NGDS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000ec110000e1a7000000000000,Nintendo Switch,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000007e0500006920000000000000,Nintendo Switch 2 Pro Controller,a:b0,b:b1,back:b14,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b12,leftstick:b15,lefttrigger:b13,leftx:a0,lefty:a1~,misc1:b17,misc2:b20,paddle1:b18,paddle2:b19,rightshoulder:b4,rightstick:b7,righttrigger:b5,rightx:a2,righty:a3~,start:b6,x:b2,y:b3,platform:Windows, +030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000000d0500000308000000000000,Nostromo N45,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Windows, +030000007e0500007320000000000000,NSO GameCube Controller,a:b1,b:b3,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b13,lefttrigger:b12,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b4,rightx:a2,righty:a3~,start:b6,x:b0,y:b2,platform:Windows, +030000007e0500001920000000000000,NSO N64 Controller,+rightx:b8,+righty:b2,-rightx:b3,-righty:b7,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Windows, +030000007e0500001720000000000000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b15,start:b9,x:b2,y:b3,platform:Windows, +03000000550900001472000000000000,NVIDIA Controller,a:b11,b:b10,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b5,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b4,righttrigger:a5,rightx:a3,righty:a6,start:b3,x:b9,y:b8,platform:Windows, +03000000550900001072000000000000,NVIDIA Shield,a:b9,b:b8,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b3,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b2,righttrigger:a4,rightx:a2,righty:a5,start:b0,x:b7,y:b6,platform:Windows, +030000005509000000b4000000000000,NVIDIA Virtual,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000120c00000288000000000000,Nyko Air Flo Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000004b120000014d000000000000,NYKO Airflo EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000d62000001d57000000000000,Nyko Airflo PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000791d00000900000000000000,Nyko Playpad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000782300000a10000000000000,Onlive Controller,a:b15,b:b14,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b11,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b13,y:b12,platform:Windows, +030000000d0f00000401000000000000,Onyx,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000008916000001fd000000000000,Onza CE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a3,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000008916000000fd000000000000,Onza TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000006d57000000000000,OPP PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006b14000001a1000000000000,Orange Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +0300000009120000072f000000000000,OrangeFox86 DreamPicoPort,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:-a2,leftx:a0,lefty:a1,righttrigger:-a5,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000362800000100000000000000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Windows, +03000000120c0000f60e000000000000,P4 Gamepad,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b7,rightshoulder:b4,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +03000000790000002201000000000000,PC Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000006f0e00008501000000000000,PDP Fightpad Pro GameCube Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006f0e00000901000000000000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00008901000000000000,PDP Realmz Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000008f0e00004100000000000000,PlaySega,a:b1,b:b0,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b4,y:b3,platform:Windows, +03000000d620000011a7000000000000,PowerA Core Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000dd62000015a7000000000000,PowerA Fusion Nintendo Switch Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d620000012a7000000000000,PowerA Fusion Nintendo Switch Fight Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000dd62000016a7000000000000,PowerA Fusion Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d620000013a7000000000000,PowerA Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d62000003340000000000000,PowerA OPS Pro Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000d62000002640000000000000,PowerA OPS Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000d62000006dca000000000000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +0300000062060000d570000000000000,PowerA PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d620000014a7000000000000,PowerA Spectra Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000084ca000000000000,Precision,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000d62000009557000000000000,Pro Elite PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000c62400001a53000000000000,Pro Ex Mini,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000009f31000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d6200000c757000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000110e000000000000,Pro5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000100800000100000000000000,PS1 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000008f0e00007530000000000000,PS1 Controller,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b1,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000100800000300000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000250900000088000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900006888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b6,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900008888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000006b1400000303000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000009d0d00001330000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000151a00006222000000000000,PS2 Dual Plus Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000120a00000100000000000000,PS3 Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000120c00001307000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c00001cf1000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f90e000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000250900000118000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900000500000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows, +030000004c0500006802000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b10,lefttrigger:a3~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:a4~,rightx:a2,righty:a5,start:b8,x:b3,y:b0,platform:Windows, +030000004f1f00000800000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000632500007505000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000888800000803000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Windows, +03000000888800000804000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows, +030000008f0e00000300000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +030000008f0e00001431000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ba2200002010000000000000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b2,platform:Windows, +03000000120c00000807000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000111e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000121e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000130e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000150e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000180e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000181e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000191e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c00001e0e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000a957000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000aa57000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f21c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f31c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f41c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f51c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f70e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000160e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000001a1e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c0500005f0e000000000000,PS5 Access Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c050000e60c000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c050000f20d000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000830500005020000000000000,PSX,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Windows, +03000000300f00000111000000000000,Qanba 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00000211000000000000,Qanba 2P,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000300f00000011000000000000,Qanba Arcade Stick 1008,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b10,x:b0,y:b3,platform:Windows, +03000000300f00001611000000000000,Qanba Arcade Stick 4018,a:b1,b:b2,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows, +03000000222c00000025000000000000,Qanba Dragon Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000222c00000020000000000000,Qanba Drone Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001211000000000000,Qanba Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001210000000000000,Qanba Joystick Plus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows, +03000000341a00000104000000000000,Qanba Joystick Q4RAF,a:b5,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b1,y:b2,platform:Windows, +03000000222c00000223000000000000,Qanba Obsidian Arcade Stick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000222c00000023000000000000,Qanba Obsidian Arcade Stick PS4,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000008a2400006682000000000000,R1 Mobile Controller,a:b3,b:b1,back:b7,leftx:a0,lefty:a1,start:b6,x:b4,y:b0,platform:Windows, +03000000086700006626000000000000,RadioShack,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000ff1100004733000000000000,Ramox FPS Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows, +030000009b2800002300000000000000,Raphnet 3DO Adapter,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b2,start:b3,platform:Windows, +030000009b2800006900000000000000,Raphnet 3DO Adapter,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b2,start:b3,platform:Windows, +030000009b2800000800000000000000,Raphnet Dreamcast Adapter,a:b2,b:b1,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,lefttrigger:a2,leftx:a0,righttrigger:a3,righty:a1,start:b3,x:b10,y:b9,platform:Windows, +030000009b280000d000000000000000,Raphnet Dreamcast Adapter,a:b1,b:b0,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,lefttrigger:+a5,leftx:a0,lefty:a1,righttrigger:+a2,start:b3,x:b5,y:b4,platform:Windows, +030000009b2800006200000000000000,Raphnet GameCube Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows, +030000009b2800003200000000000000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows, +030000009b2800006000000000000000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows, +030000009b2800001800000000000000,Raphnet Jaguar Adapter,a:b2,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b10,start:b3,x:b11,y:b12,platform:Windows, +030000009b2800003c00000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows, +030000009b2800006100000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows, +030000009b2800006300000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows, +030000009b2800006400000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows, +030000009b2800000200000000000000,Raphnet NES Adapter,a:b7,b:b6,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b4,platform:Windows, +030000009b2800004400000000000000,Raphnet PS1 and PS2 Adapter,a:b1,b:b2,back:b5,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b9,rightx:a3,righty:a4,start:b4,x:b0,y:b3,platform:Windows, +030000009b2800004300000000000000,Raphnet Saturn,a:b0,b:b1,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000009b2800000500000000000000,Raphnet Saturn Adapter 2.0,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, +030000009b2800000300000000000000,Raphnet SNES Adapter,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +030000009b2800002600000000000000,Raphnet SNES Adapter,a:b1,b:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800002e00000000000000,Raphnet SNES Adapter,a:b1,b:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800002f00000000000000,Raphnet SNES Adapter,a:b1,b:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800005600000000000000,Raphnet SNES Adapter,a:b1,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800005700000000000000,Raphnet SNES Adapter,a:b1,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800001e00000000000000,Raphnet Vectrex Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a1,lefty:a2,x:b2,y:b3,platform:Windows, +030000009b2800002b00000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800002c00000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800008000000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows, +03000000790000008f18000000000000,Rapoo Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +0300000032150000a602000000000000,Razer Huntsman V3 Pro,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b12,dpright:b13,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000321500000003000000000000,Razer Hydra,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000f8270000bf0b000000000000,Razer Kishi,a:b6,b:b7,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b18,leftshoulder:b12,leftstick:b19,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b13,rightstick:b20,righttrigger:b15,rightx:a3,righty:a4,start:b17,x:b9,y:b10,platform:Windows, +03000000321500000204000000000000,Razer Panthera PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000104000000000000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000321500000010000000000000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000507000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000321500000707000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000321500000710000000000000,Razer Raiju TE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000a10000000000000,Razer Raiju TE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000410000000000000,Razer Raiju UE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000910000000000000,Razer Raiju UE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000011000000000000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000321500000009000000000000,Razer Serval,+lefty:+a2,-lefty:-a1,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,leftx:a0,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000921200004547000000000000,Retro Bit Sega Genesis Controller Adapter,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b6,x:b3,y:b4,platform:Windows, +03000000790000001100000000000000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, +03000000830500006020000000000000,Retro Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b8,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000632500007805000000000000,Retro Fighters Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +0300000003040000c197000000000000,Retrode Adapter,a:b0,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +03000000bd12000013d0000000000000,Retrolink Sega Saturn Classic Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,lefttrigger:b6,rightshoulder:b2,righttrigger:b7,start:b8,x:b3,y:b4,platform:Windows, +03000000bd12000015d0000000000000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000341200000400000000000000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Windows, +0300000000f000000300000000000000,RetroUSB RetroPad,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows, +0300000000f00000f100000000000000,RetroUSB Super RetroPort,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows, +03000000830500000960000000000000,Revenger,a:b0,b:b1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b3,x:b4,y:b5,platform:Windows, +030000006b140000010d000000000000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000020d000000000000,Revolution Pro Controller 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000130d000000000000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001f01000000000000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00004601000000000000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000fefa000000000000,Rock Candy Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00008701000000000000,Rock Candy Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001e01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00002801000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000830500007030000000000000,Rockfire Space Ranger,a:b0,b:b1,back:b5,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b9,righttrigger:b8,start:b2,x:b3,y:b4,platform:Windows, +03000000050b0000e318000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b0000e518000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b00005819000000000000,ROG Chakram Core,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b0000181a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b00001a1a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b00001c1a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +030000004f04000001d0000000000000,Rumble Force,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000000d0f0000ad00000000000000,RX Gamepad,a:b0,b:b4,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b6,start:b9,x:b2,y:b1,platform:Windows, +030000008916000000fe000000000000,Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000045d000000000000,Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001311000000000000,Saffun Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b0,platform:Windows, +03000000a30600001af5000000000000,Saitek Cyborg,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000a306000023f6000000000000,Saitek Cyborg,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001201000000000000,Saitek Dual Analog,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000a30600000701000000000000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Windows, +03000000a30600000cff000000000000,Saitek P2500 Force Rumble,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b0,y:b1,platform:Windows, +03000000a30600000d5f000000000000,Saitek P2600,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Windows, +03000000a30600000dff000000000000,Saitek P2600,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b8,x:b0,y:b3,platform:Windows, +03000000a30600000c04000000000000,Saitek P2900,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000a306000018f5000000000000,Saitek P3200,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001001000000000000,Saitek P480 Rumble,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000a30600000901000000000000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b8,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b5,rightx:a3,righty:a2,x:b0,y:b1,platform:Windows, +03000000a30600000b04000000000000,Saitek P990,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000a30600002106000000000000,Saitek PS1000 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000a306000020f6000000000000,Saitek PS2700 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001101000000000000,Saitek Rumble,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000e804000000a0000000000000,Samsung EIGP20,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c01100000252000000000000,Sanwa Easy Grip,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000c01100004350000000000000,Sanwa Micro Grip P3,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,x:b3,y:b2,platform:Windows, +03000000411200004550000000000000,Sanwa Micro Grip Pro,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a1,righty:a2,start:b9,x:b1,y:b3,platform:Windows, +03000000c01100004150000000000000,Sanwa Micro Grip Pro,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +03000000c01100004450000000000000,Sanwa Online Grip,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b11,righttrigger:b9,rightx:a3,righty:a2,start:b14,x:b3,y:b4,platform:Windows, +03000000730700000401000000000000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows, +030000009d0d00001130000000000000,Sanwa PlayStation Adapter,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000830500006120000000000000,Sanwa Smart Grip II,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,x:b1,y:b3,platform:Windows, +03000000c01100000051000000000000,Satechi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000004f04000028b3000000000000,Score A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000952e00002577000000000000,Scuf PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000a30c00002500000000000000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Windows, +03000000a30c00002400000000000000,Sega Mega Drive Mini 6B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000d804000086e6000000000000,Sega Multi Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a2,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +0300000000050000289b000000000000,Sega Saturn Adapter,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, +0300000000f000000800000000000000,Sega Saturn Controller,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b7,righttrigger:b3,start:b0,x:b5,y:b6,platform:Windows, +03000000730700000601000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000b40400000a01000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000003b07000004a1000000000000,SFX,a:b0,b:b2,back:b7,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Windows, +03000000632500002705000000000000,ShanWan Q36,a:b0,b:b1,x:b3,y:b4,leftshoulder:b6,rightshoulder:b7,lefttrigger:b8,righttrigger:b9,back:b10,start:b11,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,platform:Windows, +03000000f82100001900000000000000,Shogun Bros Chameleon X1,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000120c00001c1e000000000000,SnakeByte 4S PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000140300000918000000000000,SNES Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +0300000081170000960a000000000000,SNES Controller,a:b4,b:b0,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b5,y:b1,platform:Windows, +03000000811700009d0a000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +030000008b2800000300000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +03000000921200004653000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +030000008f0e00000910000000000000,Sony DualShock 2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows, +03000000317300000100000000000000,Sony DualShock 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000666600006706000000000000,Sony PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Windows, +03000000e30500009605000000000000,Sony PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000fe1400002a23000000000000,Sony PlayStation Adapter,a:b0,b:b1,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,x:b2,y:b3,platform:Windows, +030000004c050000da0c000000000000,Sony PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000632500002306000000000000,Sony PlayStation Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, +03000000f0250000c183000000000000,Sony PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d9040000160f000000000000,Sony PlayStation Controller Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000ff000000cb01000000000000,Sony PlayStation Portable,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +030000004c0500003713000000000000,Sony PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000341a00000208000000000000,Speedlink 6555,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,platform:Windows, +03000000341a00000908000000000000,Speedlink 6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000380700001722000000000000,Speedlink Competition Pro,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,x:b2,y:b3,platform:Windows, +030000008f0e00000800000000000000,Speedlink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000de280000fc11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000de280000ff11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000120c0000160e000000000000,Steel Play Metaltech PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000110100001914000000000000,SteelSeries,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000381000001214000000000000,SteelSeries Free,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, +03000000110100003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000381000003014000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000381000003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,platform:Windows, +03000000380700003847000000000000,Street Fighter Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,start:b7,x:b2,y:b3,platform:Windows, +030000001f08000001e4000000000000,Super Famicom Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000790000000418000000000000,Super Famicom Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b33,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000341200001300000000000000,Super Racer,a:b2,b:b3,back:b8,leftshoulder:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b7,x:b0,y:b1,platform:Windows, +03000000457500002211000000000000,Szmy Power PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000004f0400000ab1000000000000,T16000M,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b10,x:b2,y:b3,platform:Windows, +030000000d0f00007b00000000000000,TAC GEAR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000e40a00000307000000000000,Taito Egret II Mini Control Panel,a:b4,b:b2,back:b6,guide:b9,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Windows, +03000000e40a00000207000000000000,Taito Egret II Mini Controller,a:b4,b:b2,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b9,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Windows, +03000000d814000001a0000000000000,TE Kitty,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000fa1900000706000000000000,Team 5,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000b50700001203000000000000,Techmobility X6-38V,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000ba2200000701000000000000,Technology Innovation PS2 Adapter,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b2,platform:Windows, +03000000c61100001000000000000000,Tencent Xianyou Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows, +03000000790000001c18000000000000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000790000002601000000000000,TGZ Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000591c00002400000000000000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000591c00002600000000000000,THEGamepad,a:b2,b:b1,back:b6,leftx:a0,lefty:a1,start:b7,x:b3,y:b0,platform:Windows, +030000004f04000015b3000000000000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000023b3000000000000,Thrustmaster Dual Trigger PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f0400000ed0000000000000,Thrustmaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f04000008d0000000000000,Thrustmaster Ferrari 150 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Windows, +030000004f04000004b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000003d0000000000000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:a3,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:a4,rightstick:b11,righttrigger:b5,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f04000009d0000000000000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000088ca000000000000,Thunderpad,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000666600000288000000000000,TigerGame PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000666600000488000000000000,TigerGame PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000004f04000007d0000000000000,TMini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000571d00002100000000000000,Tomee NES Controller Adapter,a:b1,b:b0,back:b2,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,start:b3,platform:Windows, +03000000571d00002000000000000000,Tomee SNES Controller Adapter,a:b0,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000006000000000000000,Tournament PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000c01100000055000000000000,Tronsmart,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000005f140000c501000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000b80500000210000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000004f04000087b6000000000000,TWCS Throttle,dpdown:b8,dpleft:b9,dpright:b7,dpup:b6,leftstick:b5,lefttrigger:-a5,leftx:a0,lefty:a1,righttrigger:+a5,platform:Windows, +03000000411200000450000000000000,Twin Shock,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Windows, +03000000d90400000200000000000000,TwinShock PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000151900005678000000000000,Uniplay U6,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000101c0000171c000000000000,uRage Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000000b0400003065000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000242f00006e00000000000000,USB Controller,a:b1,b:b4,back:b10,leftshoulder:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b7,rightx:a2,righty:a5,start:b11,x:b0,y:b3,platform:Windows, +03000000300f00000701000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000341a00002308000000000000,USB Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000666600000188000000000000,USB Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000006b1400000203000000000000,USB Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000790000000a00000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000b404000081c6000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000b50700001503000000000000,USB Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000bd12000012d0000000000000,USB Controller,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000ff1100004133000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000632500002305000000000000,USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000882800000305000000000000,V5 Game Pad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,x:b2,y:b3,platform:Windows, +03000000790000001a18000000000000,Venom PS4 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000790000001b18000000000000,Venom PS4 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000302000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000006f0e00000702000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +0300000034120000adbe000000000000,vJoy Device,a:b0,b:b1,back:b15,dpdown:b6,dpleft:b7,dpright:b8,dpup:b5,guide:b16,leftshoulder:b9,leftstick:b13,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b14,righttrigger:b12,rightx:a3,righty:a4,start:b4,x:b2,y:b3,platform:Windows, +03000000120c0000ab57000000000000,Warrior Joypad JS083,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000007e0500003003000000000000,Wii U Pro,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b6,leftstick:b11,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b12,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +0300000032150000030a000000000000,Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +0300000032150000140a000000000000,Wolverine,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000002e160000efbe000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,rightshoulder:b5,righttrigger:b11,start:b7,x:b2,y:b3,platform:Windows, +03000000380700001647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700002045000000000000,Xbox 360 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700002644000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a2,righty:a5,start:b8,x:b2,y:b3,platform:Windows, +03000000380700002647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000003807000026b7000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700003647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a7,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400001907000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400009102000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000000fd000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000001fd000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000016f0000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b00008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c62400000053000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000fdfa000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700002847000000000000,Xbox 360 Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000a102000000000000,Xbox 360 Wireless Receiver,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000120c00000a88000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a2,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000120c00001088000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2~,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5~,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000002a0600002000000000000000,Xbox Controller,a:b0,b:b1,back:b13,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b5,leftstick:b14,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b15,righttrigger:b7,rightx:a2,righty:a5,start:b12,x:b2,y:b3,platform:Windows, +03000000380700001645000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000380700002645000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700003645000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000380700008645000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400000202000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000005e0400008502000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400008702000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000005e0400008902000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b10,leftstick:b8,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b9,righttrigger:b4,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000005e0400000c0b000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000d102000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000dd02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000e002000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000e302000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000fd02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000ff02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e0000a802000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e0000c802000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c62400003a54000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000130b000000000000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000341a00000608000000000000,Xeox,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000450c00002043000000000000,Xeox SL6556BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006f0e00000300000000000000,XGear,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000e0ff00000201000000000000,Xiaomi Black Shark (L),back:b0,dpdown:b11,dpleft:b9,dpright:b10,dpup:b8,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,platform:Windows, +03000000172700004431000000000000,Xiaomi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a7,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000172700003350000000000000,Xiaomi XMGP01YM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000bc2000005060000000000000,Xiaomi XMGP01YM,+lefty:+a2,+righty:+a5,-lefty:-a1,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows, +03000000c0160000e105000000000000,XinMo Dual Arcade,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000007d0400000340000000000000,Xterminator Digital Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:-a4,lefttrigger:+a4,leftx:a0,lefty:a1,paddle1:b7,paddle2:b6,rightshoulder:b5,rightstick:b9,righttrigger:b2,rightx:a3,righty:a5,start:b8,x:b3,y:b4,platform:Windows, +030000002c3600000100000000000000,Yawman Arrow,+rightx:h0.2,+righty:h0.4,-rightx:h0.8,-righty:h0.1,a:b4,b:b5,back:b6,dpdown:b15,dpleft:b14,dpright:b16,dpup:b13,leftshoulder:b10,leftstick:b0,lefttrigger:-a4,leftx:a0,lefty:a1,paddle1:b11,paddle2:b12,rightshoulder:b8,rightstick:b9,righttrigger:+a4,start:b3,x:b1,y:b2,platform:Windows, +03000000790000004f18000000000000,ZDT Android Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000073500000400000000000000,Zenaim Arcade Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000120c00000500000000000000,Zeroplus Adapter,a:b2,b:b1,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b0,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows, +03000000120c0000101e000000000000,Zeroplus P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, + +# Mac OS X +030000008f0e00000300000009010000,2 In 1 Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000c82d00001930000000000000,8BitDo 64,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +03000000c82d00001930000000020000,8BitDo 64,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +03000000c82d00001930000001000000,8BitDo 64,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +03000000c82d00000031000001000000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000531000000020000,8BitDo Adapter 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000951000000010000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +03000000c82d00000090000001000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00006a28000000010000,8BitDo GameCube,a:b0,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b9,paddle2:b8,rightshoulder:b10,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b1,y:b4,platform:Mac OS X, +03000000c82d00001251000000010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001251000000020000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001151000000010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001151000000020000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000a30c00002400000006020000,8BitDo M30,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,guide:b9,leftshoulder:b6,lefttrigger:b5,rightshoulder:b4,righttrigger:b7,start:b8,x:b3,y:b0,platform:Mac OS X, +03000000c82d00000151000000010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000650000001000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00005106000000010000,8BitDo M30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b2,leftshoulder:b6,lefttrigger:a5,rightshoulder:b7,righttrigger:a4,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00002090000000010000,8BitDo Micro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000451000000010000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +03000000c82d00001590000001000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00006928000000010000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +03000000c82d00002590000000010000,8BitDo NEOGEO,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00002590000001000000,8BitDo NEOGEO,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00002690000000010000,8BitDo NEOGEO,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b10,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +030000003512000012ab000001000000,8BitDo NES30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d000012ab000001000000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00002028000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000022000000090000001000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000203800000900000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000190000001000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000751000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000851000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000660000000010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000660000000020000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000131000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000231000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000331000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000431000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00002867000000010000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b3,y:b4,platform:Mac OS X, +03000000c82d00003028000000010000,8Bitdo SFC30 Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000102800000900000000000000,8BitDo SFC30 Joystick,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000351000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001290000001000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00004028000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000160000001000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000260000001000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000261000000010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001230000000010000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001b30000001000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001d30000001000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001c30000001000000,8BitDo Ultimate 2C Wireless Controller,a:b0,b:b1,x:b3,y:b4,back:b10,guide:b12,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4,platform:Mac OS X, +03000000c82d00001530000001000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001630000001000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001730000001000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001130000000020000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001330000000020000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001330000001000000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000a00500003232000008010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000a00500003232000009010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001890000001000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a31,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000491900001904000001010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X, +0300000008100000e501000019040000,Anbernic Handheld,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a4,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000373500004610000001000000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000a30c00002700000003030000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000a30c00002800000003030000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000050b00000579000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b42,paddle1:b9,paddle2:b11,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X, +03000000050b00000679000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b23,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X, +03000000503200000110000045010000,Atari VCS Classic,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b3,start:b2,platform:Mac OS X, +03000000503200000110000047010000,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b3,start:b2,platform:Mac OS X, +03000000503200000210000047010000,Atari VCS Modern Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Mac OS X, +030000008a3500000102000000010000,Backbone One,a:b0,b:b1,back:b16,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b17,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b15,x:b2,y:b3,platform:Mac OS X, +030000008a3500000201000000010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000008a3500000202000000010000,Backbone One,a:b0,b:b1,back:b16,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b17,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b15,x:b2,y:b3,platform:Mac OS X, +030000008a3500000402000000010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000008a3500000302000000010000,Backbone One PlayStation Edition,a:b0,b:b1,back:b16,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b17,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b15,x:b2,y:b3,platform:Mac OS X, +03000000c62400001a89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X, +03000000c62400001b89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000d62000002a79000000010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +03000000120c0000200e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +03000000120c0000210e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d8140000cecf000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000a306000022f6000001030000,Cyborg V3 Rumble Pad PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000791d00000103000009010000,Dual Box Wii Classic Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000006e0500000720000010020000,Elecom JC-W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Mac OS X, +030000006f0e00008401000003010000,Faceoff Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000151900004000000001000000,Flydigi Vader 2,a:b14,b:b15,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Mac OS X, +03000000b40400001124000001040000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000b40400001224000003030000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000790000004618000000010000,GameCube Controller Adapter,a:b4,b:b0,dpdown:b56,dpleft:b60,dpright:b52,dpup:b48,lefttrigger:a12,leftx:a0,lefty:a4,rightshoulder:b28,righttrigger:a16,rightx:a20,righty:a8,start:b36,x:b8,y:b12,platform:Mac OS X, +03000000ac0500001a06000002020000,GameSir T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000373500000411000023000000,GameSir X4A Xbox Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000ad1b000001f9000000000000,Gamestop BB070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000c01100000140000000010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000006f0e00000102000000000000,GameStop Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000ff1100003133000007010000,GameWare PC Control Pad,a:b2,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Mac OS X, +03000000d11800000094000000010000,Google Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, +030000007d0400000540000001010000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000280400000140000000020000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008f0e00000300000007010000,GreenAsia Joystick,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Mac OS X, +030000000d0f00002d00000000100000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005f00000000000000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005f00000000010000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005e00000000010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008400000000010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008500000000010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000341a00000302000014010000,Hori Fighting Stick Mini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008800000000010000,Hori Fighting Stick mini 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008700000000010000,Hori Fighting Stick mini 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000000d0f00004d00000000000000,Hori Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00003801000008010000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Mac OS X, +030000000d0f00009200000000010000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f0000aa00000072050000,Hori Real Arcade Pro for Nintendo Switch,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000000d0f00000002000017010000,Hori Split Pad Fit,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00000002000015010000,Hori Switch Split Pad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00006e00000000010000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00006600000000010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000000d0f00006600000000000000,Horipad FPS Plus 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f0000ee00000000010000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f0000c100000072050000,Horipad Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000242e0000ff0b000000010000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Mac OS X, +03000000790000004e95000000010000,Hyperkin N64 Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a5,righty:a2,start:b9,platform:Mac OS X, +03000000830500006020000000000000,iBuffalo Super Famicom Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X, +03000000ef0500000300000000020000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Mac OS X, +03000000fd0500000030000010010000,Interact GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Mac OS X, +030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Mac OS X, +030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000242f00002d00000007010000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000006d04000019c2000000000000,Logitech Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000019c2000000020000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000000020000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000000030000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000014040000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000000000000,Logitech F310,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000018c2000000000000,Logitech F510,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000019c2000005030000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d0400001fc2000000000000,Logitech F710,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000006d04000018c2000000010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700005032000000010000,Mad Catz PS3 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700008433000000010000,Mad Catz PS3 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700005082000000010000,Mad Catz PS4 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +03000000380700008483000000010000,Mad Catz PS4 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +0300000049190000020400001b010000,Manba One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b22,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000790000000600000007010000,Marvo GT-004,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000008f0e00001330000011010000,Mayflash Controller Adapter,a:b2,b:b4,back:b16,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b12,lefttrigger:b16,leftx:a0,lefty:a2,rightshoulder:b14,rightx:a6~,righty:a4,start:b18,x:b0,y:b6,platform:Mac OS X, +03000000790000004318000000010000,Mayflash GameCube Adapter,a:b4,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a12,leftx:a0,lefty:a4,rightshoulder:b28,righttrigger:a16,rightx:a20,righty:a8,start:b36,x:b8,y:b12,platform:Mac OS X, +03000000790000004418000000010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000242f00007300000000020000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Mac OS X, +0300000079000000d218000026010000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000d620000010a7000003010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008f0e00001030000011010000,Mayflash Saturn Adapter,a:b0,b:b2,dpdown:b28,dpleft:b30,dpright:b26,dpup:b24,leftshoulder:b10,lefttrigger:b14,rightshoulder:b12,righttrigger:b4,start:b18,x:b6,y:b8,platform:Mac OS X, +0300000025090000e803000000000000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Mac OS X, +03000000790000000318000000010000,Mayflash Wii DolphinBar,a:b8,b:b12,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b44,leftshoulder:b16,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b4,platform:Mac OS X, +03000000790000000018000000000000,Mayflash Wii U Pro Adapter,a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X, +03000000790000000018000000010000,Mayflash Wii U Pro Adapter,a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X, +030000005e0400002800000002010000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Mac OS X, +030000005e0400000300000006010000,Microsoft SideWinder,a:b0,b:b1,back:b9,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Mac OS X, +030000005e0400000700000006010000,Microsoft SideWinder,a:b0,b:b1,back:b8,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Mac OS X, +030000005e0400002700000001010000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Mac OS X, +030000004523000015e0000072050000,Mobapad Chitu HD,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000d62000007162000001000000,Moga Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X, +03000000c62400002a89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c62400002b89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000853200008906000000010000,Nacon Revolution X Unlimited,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000632500007505000000020000,NeoGeo mini PAD Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000921200004b46000003020000,NES 2-port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Mac OS X, +030000001008000001e5000006010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000ec110000e1a7000001010000,Nintendo Switch,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +030000007e0500006920000001010000,Nintendo Switch 2 Pro Controller,a:b0,b:b1,back:b14,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b12,leftstick:b15,lefttrigger:b13,leftx:a0,lefty:a1~,misc1:b17,misc2:b20,paddle1:b18,paddle2:b19,rightshoulder:b4,rightstick:b7,righttrigger:b5,rightx:a2,righty:a3~,start:b6,x:b2,y:b3,platform:Mac OS X, +030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +030000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +030000007e0500000920000010020000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:Mac OS X, +050000007e05000009200000ff070000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:Mac OS X, +030000007e0500007320000001010000,NSO GameCube Controller,a:b1,b:b3,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b13,lefttrigger:b12,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b4,rightx:a2,righty:a3~,start:b6,x:b0,y:b2,platform:Mac OS X, +030000007e0500001920000001000000,NSO N64 Controller,+rightx:b8,+righty:b7,-rightx:b3,-righty:b2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Mac OS X, +030000007e0500001720000001000000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b15,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000550900001472000025050000,NVIDIA Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Mac OS X, +030000004b120000014d000000010000,Nyko Airflo EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Mac OS X, +0300000009120000072f000000010000,OrangeFox86 DreamPicoPort,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a2,leftx:a0,lefty:a1,righttrigger:a5,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Mac OS X, +030000006f0e00000901000002010000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008f0e00000300000000000000,Piranha Xtreme PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000d620000011a7000000020000,PowerA Core Plus Gamecube Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000d620000011a7000010050000,PowerA Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d62000006dca000000010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000100800000300000006010000,PS2 Adapter,a:b2,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, +030000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, +030000004c0500006802000072050000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, +030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +0300004b4c0500005f0e000000010000,PS5 Access Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +050000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000005e040000e002000001000000,PXN P30 Pro Mobile,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000222c00000225000000010000,Qanba Dragon Arcade Joystick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000222c00000020000000010000,Qanba Drone Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000009b2800005600000020020000,Raphnet SNES Adapter,a:b1,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Mac OS X, +030000009b2800008000000022020000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Mac OS X, +030000008916000000fd000000000000,Razer Onza TE,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000321500000204000000010000,Razer Panthera PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000104000000010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +03000000321500000010000000010000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000507000001010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000321500000011000000010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +03000000321500000009000000020000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, +030000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, +0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000632500008005000000010000,Redgear,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000632500002305000000010000,Redragon Saturn,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000921200004547000000020000,Retro Bit Sega Genesis Controller Adapter,a:b0,b:b2,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,lefttrigger:b14,rightshoulder:b10,righttrigger:b4,start:b12,x:b6,y:b8,platform:Mac OS X, +03000000790000001100000000000000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000790000001100000005010000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b4,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000830500006020000000010000,Retro Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b8,righttrigger:b9,start:b7,x:b2,y:b3,platform:Mac OS X, +0300000003040000c197000000000000,Retrode Adapter,a:b0,b:b4,back:b2,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Mac OS X, +03000000790000001100000006010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000341200000400000000000000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Mac OS X, +030000006b140000010d000000010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006b140000130d000000010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c0500006802000002100000,Rii RK707,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b2,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b3,righttrigger:b9,rightx:a2,righty:a3,start:b1,x:b15,y:b12,platform:Mac OS X, +030000006f0e00008701000005010000,Rock Candy Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000c6240000fefa000000000000,Rock Candy PS3,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000e804000000a000001b010000,Samsung EIGP20,a:b1,b:b3,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b11,leftx:a1,lefty:a3,rightshoulder:b12,rightx:a4,righty:a5,start:b16,x:b7,y:b9,platform:Mac OS X, +03000000730700000401000000010000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Mac OS X, +03000000a30c00002500000006020000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Mac OS X, +03000000811700007e05000000000000,Sega Saturn,a:b2,b:b4,dpdown:b16,dpleft:b15,dpright:b14,dpup:b17,leftshoulder:b8,lefttrigger:a5,leftx:a0,lefty:a2,rightshoulder:b9,righttrigger:a4,start:b13,x:b0,y:b6,platform:Mac OS X, +03000000b40400000a01000000000000,Sega Saturn,a:b0,b:b1,back:b5,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b2,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Mac OS X, +030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +0300000000f00000f100000000000000,SNES RetroPort,a:b2,b:b3,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,rightshoulder:b7,start:b6,x:b0,y:b1,platform:Mac OS X, +030000004c050000a00b000000000000,Sony DualShock 4 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +03000000666600006706000088020000,Sony PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Mac OS X, +030000004c050000da0c000000010000,Sony PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +030000004c0500003713000000010000,Sony PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X, +030000005e0400008e02000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000110100002014000000000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, +03000000110100002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, +03000000381000002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, +05000000484944204465766963650000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b15,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b14,x:b2,y:b3,platform:Mac OS X, +050000004e696d6275732b0000000000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b15,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b14,x:b2,y:b3,platform:Mac OS X, +03000000381000003014000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000381000003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000110100001714000000000000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X, +03000000110100001714000020010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X, +030000000d0f0000f600000000010000,Switch Hori Pad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000457500002211000000010000,SZMY Power PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000e40a00000307000001000000,Taito Egret II Mini Control Panel,a:b4,b:b2,back:b6,guide:b9,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Mac OS X, +03000000e40a00000207000001000000,Taito Egret II Mini Controller,a:b4,b:b2,back:b6,guide:b9,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Mac OS X, +03000000790000001c18000000010000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000790000001c18000003100000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000591c00002400000021000000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000591c00002600000021000000,THEGamepad,a:b2,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Mac OS X, +030000004f04000015b3000000000000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Mac OS X, +030000004f0400000ed0000000020000,Thrustmaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Mac OS X, +03000000571d00002100000021000000,Tomee NES Controller Adapter,a:b1,b:b0,back:b2,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,start:b3,platform:Mac OS X, +03000000bd12000015d0000000010000,Tomee Retro Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000bd12000015d0000000000000,Tomee SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000571d00002000000021000000,Tomee SNES Controller Adapter,a:b0,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Mac OS X, +030000005f140000c501000000020000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000100800000100000000000000,Twin USB Joystick,a:b4,b:b2,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b12,leftstick:b20,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b14,rightstick:b22,righttrigger:b10,rightx:a6,righty:a4,start:b18,x:b6,y:b0,platform:Mac OS X, +03000000632500002605000000010000,Uberwith Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c0160000e105000000040000,Ultimate Atari Fight Stick,a:b2,b:b4,back:b18,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,rightshoulder:b8,righttrigger:b10,start:b16,x:b0,y:b6,platform:Mac OS X, +03000000151900005678000010010000,Uniplay U6,a:b3,b:b6,back:b25,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,leftstick:b31,lefttrigger:b21,leftx:a1,lefty:a3,rightshoulder:b19,rightstick:b33,righttrigger:b23,rightx:a4,righty:a5,start:b27,x:b11,y:b13,platform:Mac OS X, +030000006f0e00000302000025040000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000006f0e00000702000003060000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,back:b7,dpdown:b3,dpleft:b0,dpright:b1,dpup:b2,guide:b8,leftshoulder:b11,lefttrigger:b12,leftx:a0,lefty:a1,start:b6,x:b10,y:b9,platform:Mac OS X, +050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b8,leftshoulder:b19,leftstick:b23,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b24,righttrigger:b22,rightx:a2,righty:a3,start:b6,x:b18,y:b17,platform:Mac OS X, +030000005e0400008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e0400008e02000010010000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4~,start:b8,x:b2,y:b3,platform:Mac OS X, +030000006f0e00000104000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000c6240000045d000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000050b000003090000,Xbox Elite Controller Series 2,a:b0,b:b1,back:b31,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b53,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000011050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000200b000011050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000200b000013050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000200b000015050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000d102000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000dd02000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000e002000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X, +030000005e040000e002000003090000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X, +030000005e040000e302000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000fd02000003090000,Xbox One Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000220b000013050000,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,paddle1:b11,paddle2:b13,paddle3:b12,paddle4:b14,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X, +03000000c62400003a54000000000000,Xbox One PowerA Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000009050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000013050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000015050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000007050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000022050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000220b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000220b000021050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000172700004431000029010000,XiaoMi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000120c0000100e000000010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000120c0000101e000000010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, + +# Linux +03000000c82d00001930000011010000,8BitDo 64,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Linux, +05000000c82d00001930000001000000,8BitDo 64,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Linux, +03000000c82d00000031000011010000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000631000000010000,8BitDo Adapter 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00000951000000010000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Linux, +03000000021000000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00006a28000000010000,8BitDo GameCube,a:b0,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b9,paddle2:b8,rightshoulder:b10,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b1,y:b4,platform:Linux, +03000000c82d00001251000011010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001251000000010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001151000011010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001151000000010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000151000000010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000650000011010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00005106000000010000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000a20000000020000,8BitDo M30 Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00002090000011010000,8BitDo Micro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00002090000000010000,8BitDo Micro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000451000000010000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Linux, +03000000c82d00001590000011010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00006928000011010000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Linux, +05000000c82d00006928000000010000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Linux, +05000000c82d00002590000001000000,8BitDo NEOGEO,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000008000000210000011010000,8BitDo NES30,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000c82d00000310000011010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00008010000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux, +03000000022000000090000011010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000190000011010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000203800000900000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00002038000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000751000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00000851000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000660000011010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001030000011010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000660000000010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000020000000000000,8BitDo Pro 2 for Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +06000000c82d00000020000006010000,8BitDo Pro 2 for Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00000960000011010000,8BitDo Pro 3,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b17,paddle2:b16,paddle3:b2,paddle4:b5,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000131000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000231000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000331000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000431000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00002867000000010000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b3,y:b4,platform:Linux, +03000000c82d00000060000011010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000060000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000061000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +030000003512000012ab000010010000,8BitDo SFC30,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Linux, +030000003512000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000102800000900000000010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00003028000000010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000351000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000160000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001290000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00006228000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000260000011010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000261000000010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000202800000900000000010000,8BitDo SNES30,a:b1,b:b0,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001230000000010000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000a31000014010000,8BitDo Ultimate 2C,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00001d30000011010000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00001b30000001000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001530000011010000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001630000011010000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001730000011010000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001130000011010000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000631000010010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00000631000014010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00000760000011010000,8BitDo Ultimate Wireless,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001230000011010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001330000011010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000121000011010000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00000121000000010000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000a00500003232000001000000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux, +05000000a00500003232000008010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001890000011010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c01100000355000011010000,Acrux Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00008801000011010000,Afterglow Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00003901000000430000,Afterglow Prismatic Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003901000013020000,Afterglow Prismatic Controller 048-007-NA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001302000000010000,Afterglow Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003901000020060000,Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000100000008200000011010000,Akishop Customs PS360,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000007c1800000006000010010000,Alienware Dual Compatible Game PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +05000000491900000204000021000000,Amazon Fire Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b17,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000491900001904000011010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux, +05000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +0300000008100000e501000001010000,Anbernic Handheld,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a4,start:b11,x:b3,y:b4,platform:Linux, +03000000020500000913000010010000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000373500000710000010010000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000373500004610000001000000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000190e00000110000010010000,Aquaplus Piece,a:b1,b:b0,back:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b2,platform:Linux, +03000000790000003018000011010000,Arcade Fightstick F300,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000a30c00002700000011010000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000a30c00002800000011010000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +05000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux, +05000000050b00000045000040000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux, +03000000050b00000579000011010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b36,paddle1:b52,paddle2:b53,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000050b00000679000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b21,paddle1:b22,paddle2:b23,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000503200000110000000000000,Atari VCS Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +03000000503200000110000011010000,Atari VCS Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +05000000503200000110000000000000,Atari VCS Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +05000000503200000110000044010000,Atari VCS Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +05000000503200000110000046010000,Atari VCS Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +03000000503200000210000000000000,Atari VCS Modern Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Linux, +03000000503200000210000011010000,Atari VCS Modern Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000000000000,Atari VCS Modern Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000045010000,Atari VCS Modern Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000046010000,Atari VCS Modern Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000047010000,Atari VCS Modern Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:-a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Linux, +030000008a3500000201000011010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000008a3500000202000011010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000008a3500000302000011010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000008a3500000402000011010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c62400001b89000011010000,BDA MOGA XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000d62000002a79000011010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000c21100000791000011010000,Be1 GC101 Controller 1.03,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000c31100000791000011010000,Be1 GC101 Controller 1.03,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000005e0400008e02000003030000,Be1 GC101 Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000bc2000004d50000011010000,Beitong A1T2 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000bc2000000055000001000000,Betop AX1 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000bc2000006412000011010000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b30,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006b1400000209000011010000,Bigben,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000300e000011010000,Brook Audio Fighting Board PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000310e000011010000,Brook Audio Fighting Board PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000120c0000200e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000120c0000210e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000120c0000f70e000011010000,Brook Universal Fighting Board,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000d81d00000b00000010010000,Buffalo BSGP1601,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Linux, +03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000af1e00002400000010010000,Clockwork Pi DevTerm,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b9,x:b3,y:b0,platform:Linux, +030000000b0400003365000000010000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Linux, +03000000632500007a05000001020000,Cosmic Byte Ares Wired Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000260900008888000000010000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Linux, +03000000a306000022f6000011010000,Cyborg V3 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +030000005e0400008e02000002010000,Data Frog S80,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +03000000791d00000103000010010000,Dual Box Wii Classic Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e00003001000001010000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000c11100000191000011010000,EasySMX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000242f00009100000000010000,EasySMX ESM-9101,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006e0500000320000010010000,Elecom U3613M,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux, +030000006e0500000720000010010000,Elecom W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux, +030000007d0400000640000010010000,Eliminator AfterShock,a:b1,b:b2,back:b9,dpdown:+a3,dpleft:-a5,dpright:+a5,dpup:-a3,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a4,righty:a2,start:b8,x:b0,y:b3,platform:Linux, +03000000430b00000300000000010000,EMS Production PS2 Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e00008401000011010000,Faceoff Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00008101000011010000,Faceoff Deluxe Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00008001000011010000,Faceoff Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000852100000201000010010000,FF GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +05000000b40400001224000001010000,Flydigi APEX 4,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b4,leftstick:b10,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b20,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000b40400001124000011010000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000b40400001224000011010000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000151900004000000001000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000007e0500003703000000000000,GameCube Adapter,a:b0,b:b1,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +19000000030000000300000002030000,GameForce Controller,a:b1,b:b0,back:b8,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b14,lefttrigger:b6,leftx:a1,lefty:a0,rightshoulder:b5,rightstick:b15,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000373500000b10000019010000,GameSir Cyclone 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000ac0500005b05000010010000,GameSir G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000bc2000000055000011010000,GameSir G3w,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000558500001b06000010010000,GameSir G4 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000ac0500002d0200001b010000,GameSir G4s,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b33,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000ac0500007a05000011010000,GameSir G5,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000373500009710000001020000,GameSir Kaleid Flux,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000ac0500001a06000011010000,GameSir T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000bc2000005656000011010000,GameSir T4w,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000373500009410000010010000,GameSir Tegenaria Lite,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000008f0e00000800000010010000,Gasia PlayStation Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000451300000010000010010000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000f025000021c1000010010000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000f0250000c283000010010000,Gioteck VX2 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +190000004b4800000010000000010000,GO-Advance Controller,a:b1,b:b0,back:b10,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,leftshoulder:b4,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b13,start:b15,x:b2,y:b3,platform:Linux, +190000004b4800000010000001010000,GO-Advance Controller,a:b1,b:b0,back:b12,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b4,leftstick:b13,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b16,righttrigger:b15,start:b17,x:b2,y:b3,platform:Linux, +190000004b4800000011000000010000,GO-Super Gamepad,a:b0,b:b1,back:b12,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b16,leftshoulder:b4,leftstick:b14,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b3,y:b2,platform:Linux, +03000000f0250000c183000010010000,Goodbetterbest Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d11800000094000011010000,Google Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +05000000d11800000094000000010000,Google Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +0300000079000000d418000000010000,GPD Win 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000001010000,GPD Win Max 2 6800U Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000007d0400000540000000010000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000280400000140000000010000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000008f0e00000610000000010000,GreenAsia Electronics Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Linux, +030000008f0e00001200000010010000,GreenAsia Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +0500000047532067616d657061640000,GS gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000f0250000c383000010010000,GT VX2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000008a2e0000dd10000011010000,Hand Held Legend GC Ultimate,a:b0,b:b2,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,misc2:b24,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b1,y:b3,platform:Linux, +030000008a2e0000df10000011010000,Hand Held Legend ProGCC,a:b1,b:b0,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b3,y:b2,platform:Linux, +06000000adde0000efbe000002010000,Hidromancer Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d81400000862000011010000,HitBox PS3 PC Analog Mode,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b12,x:b0,y:b3,platform:Linux, +03000000c9110000f055000011010000,HJC Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000000d0f00006d00000020010000,Hori EDGE 301,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:+a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00008400000011010000,Hori Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00005f00000011010000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00005e00000011010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000000d0f00005001000009040000,Hori Fighting Commander Octa Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00008500000010010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00008600000002010000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000000d0f00003701000013010000,Hori Fighting Stick Mini,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b3,y:b2,platform:Linux, +030000000d0f00008800000011010000,Hori Fighting Stick mini 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00008700000011010000,Hori Fighting Stick mini 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,rightstick:b11,righttrigger:a4,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000000d0f00001000000011010000,Hori Fightstick 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b000003f5000033050000,Hori Fightstick VX,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b8,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, +030000000d0f00004d00000011010000,Hori Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00003801000011010000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Linux, +030000000d0f00009200000011010000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00001100000011010000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00002200000011010000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006a00000011010000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006b00000011010000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00001600000000010000,Hori Real Arcade Pro EXSE,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, +030000000d0f0000aa00000011010000,Hori Real Arcade Pro for Nintendo Switch,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000000d0f00008501000017010000,Hori Split Pad Fit,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00008501000015010000,Hori Switch Split Pad Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00006e00000011010000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006600000011010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000000d0f0000ee00000011010000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f0000c100000011010000,Horipad Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006700000001010000,Horipad One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f0000ab01000011010000,Horipad Steam,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc2:b2,paddle1:b19,paddle2:b18,paddle3:b15,paddle4:b5,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000000d0f00009601000091000000,Horipad Steam,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc2:b2,paddle1:b19,paddle2:b18,paddle3:b15,paddle4:b5,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000000d0f0000f600000001000000,Horipad Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000341a000005f7000010010000,HuiJia GameCube Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +05000000242e00000b20000001000000,Hyperkin Admiral N64 Controller,+rightx:b11,+righty:b13,-rightx:b8,-righty:b12,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,platform:Linux, +03000000242e0000ff0b000011010000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Linux, +03000000242e00006a38000010010000,Hyperkin Trooper 2,a:b0,b:b1,back:b4,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b3,start:b5,platform:Linux, +03000000242e00008816000001010000,Hyperkin X91,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000f00300008d03000011010000,HyperX Clutch,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000830500006020000010010000,iBuffalo Super Famicom Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux, +03000000d80400004bea000011010000,icedragon.io STAC Dance Pad,a:b0,b:b1,x:b2,y:b3,back:b4,platform:Linux, +03000000d80400004aea000011010000,icedragon.io STAC Dance Pad,a:b0,b:b1,x:b2,y:b3,back:b4,platform:Linux, +030000008a2e0000d910000011010000,icedragon.io STAC2 Dance Pad,a:b0,b:b1,x:b2,y:b3,back:b4,platform:Linux, +030000008a2e0000e910000011010000,icedragon.io STAC2 Dance Pad,a:b8,b:b9,x:b10,y:b11,back:b12,platform:Linux, +030000008f0e00001330000001010000,iCode Retro Adapter,b:b3,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b1,start:b7,x:b2,y:b0,platform:Linux, +050000006964726f69643a636f6e0000,idroidcon Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000b50700001503000010010000,Impact,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000d80400008200000003000000,IMS PCU0,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b5,x:b3,y:b2,platform:Linux, +03000000120c00000500000010010000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux, +03000000ef0500000300000000010000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux, +03000000fd0500000030000000010000,InterAct GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Linux, +03000000fd0500002a26000000010000,InterAct HammerHead FX,a:b3,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b2,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux, +0500000049190000020400001b010000,Ipega PG 9069,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b161,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000632500007505000011010000,Ipega PG 9099,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +0500000049190000030400001b010000,Ipega PG9099,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000491900000204000000000000,Ipega PG9118,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000300f00001101000010010000,Jess Tech Colour Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000300f00001001000010010000,Jess Tech Dual Analog Rumble,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000300f00000b01000010010000,Jess Tech GGE909 PC Recoil,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000ba2200002010000001010000,Jess Technology Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux, +050000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux, +030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux, +03000000bd12000003c0000010010000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000242f00002d00000011010000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000242f00008a00000011010000,JYS Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux, +030000006f0e00000103000000020000,Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d040000d1ca000000000000,Logitech Chillstream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d040000d1ca000011010000,Logitech Chillstream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000016c2000010010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000016c2000011010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d0400001dc2000014400000,Logitech F310,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d0400001ec2000019200000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d0400001ec2000020200000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d04000019c2000011010000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d0400001fc2000005030000,Logitech F710,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b10,rightx:a3,righty:a4,start:b8,x:b3,y:b4,platform:Linux, +030000006d0400000ac2000010010000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Linux, +05000000380700006652000025010000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008532000010010000,Mad Catz Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000380700005032000011010000,Mad Catz Fightpad Pro PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700005082000011010000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux, +03000000380700008031000011010000,Mad Catz FightStick Alpha PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008081000011010000,Mad Catz FightStick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008034000011010000,Mad Catz Fightstick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008084000011010000,Mad Catz Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000380700008433000011010000,Mad Catz Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008483000011010000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000380700001888000010010000,Mad Catz Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700003888000010010000,Mad Catz Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700001647000010040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000380700003847000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000120c00000500000000010000,Manta DualShock 2,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +030000008f0e00001330000010010000,Mayflash Controller Adapter,a:b1,b:b2,back:b8,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3~,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +03000000790000004318000010010000,Mayflash GameCube Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000790000004418000010010000,Mayflash GameCube Controller,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000242f00007300000011010000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux, +0300000079000000d218000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d620000010a7000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000242f0000f700000001010000,Mayflash Magic S Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000008f0e00001030000010010000,Mayflash Saturn Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Linux, +0300000025090000e803000001010000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +03000000790000000318000011010000,Mayflash Wii DolphinBar,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux, +03000000790000000018000011010000,Mayflash Wii U Pro Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000b50700001203000010010000,Mega World Logic 3 Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000b50700004f00000000010000,Mega World Logic 3 Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux, +03000000780000000600000010010000,Microntek Joystick,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +030000005e0400002800000000010000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Linux, +030000005e0400000300000000010000,Microsoft SideWinder,a:b0,b:b1,back:b9,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Linux, +030000005e0400000700000000010000,Microsoft SideWinder,a:b0,b:b1,back:b8,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Linux, +030000005e0400000e00000000010000,Microsoft SideWinder Freestyle Pro,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux, +030000005e0400002700000000010000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Linux, +030000005e0400008502000000010000,Microsoft Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +030000005e0400008902000021010000,Microsoft Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +030000005e0400008e02000001000000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.1,dpleft:h0.2,dpright:h0.8,dpup:h0.4,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000004010000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000056210000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000062230000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000d102000001010000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000d102000003020000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000dd02000003020000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000008040000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea0200000f050000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000120b000009050000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000e302000003020000,Microsoft Xbox One Elite,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000000b000007040000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b12,paddle2:b14,paddle3:b13,paddle4:b15,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000000b000008040000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b12,paddle2:b14,paddle3:b13,paddle4:b15,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000050b000003090000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e0400008e02000030110000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b13,paddle3:b12,paddle4:b14,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b00000b050000,Microsoft Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000016050000,Microsoft Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000017050000,Microsoft Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000120b000001050000,Microsoft Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000030000000300000002000000,Miroof,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux, +03000000790000001c18000010010000,Mobapad Chitu HD,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000004d4f435554452d3035335800,Mocute 053X,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +05000000e80400006e0400001b010000,Mocute 053X M59,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000004d4f435554452d3035305800,Mocute 054X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000d6200000e589000001000000,Moga 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +05000000d6200000ad0d000001000000,Moga Pro,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +05000000d62000007162000001000000,Moga Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +03000000c82d00000960000000000000,8BitDo Pro 3,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b17,paddle2:b16,paddle3:b2,paddle4:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c62400002b89000011010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c62400002a89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b22,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c62400001a89000000010000,MOGA XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000250900006688000000010000,MP8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +030000005e0400008e02000010020000,MSI GC20 V2,a:b0,b:b1,back:b6,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000f70600000100000000010000,N64 Adaptoid,+rightx:b2,+righty:b1,-rightx:b4,-righty:b5,a:b0,b:b3,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,platform:Linux, +030000006b1400000906000014010000,Nacon Asymmetric Wireless PS4 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006b140000010c000010010000,Nacon GC 400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000853200000706000012010000,Nacon GC-100,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +05000000853200000503000000010000,Nacon MG-X Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +0300000085320000170d000011010000,Nacon Revolution 5 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +0300000085320000190d000011010000,Nacon Revolution 5 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000000d0f00000900000010010000,Natec Genesis P44,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004f1f00000800000011010000,NeoGeo PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +0300000092120000474e000000010000,NeoGeo X Arcade Stick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b3,y:b2,platform:Linux, +03000000790000004518000010010000,Nexilux GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +030000001008000001e5000010010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Linux, +060000007e0500003713000000000000,Nintendo 3DS,a:b0,b:b1,back:b8,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +03000000790000004618000010010000,Nintendo GameCube Controller Adapter,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a5~,righty:a2~,start:b9,x:b2,y:b3,platform:Linux, +03000000ec110000e1a7000010010000,Nintendo Switch,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000007e0500006920000011010000,Nintendo Switch 2 Pro Controller,a:b0,b:b1,back:b14,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b12,leftstick:b15,lefttrigger:b13,leftx:a0,lefty:a1~,misc1:b17,misc2:b20,paddle1:b18,paddle2:b19,rightshoulder:b4,rightstick:b7,righttrigger:b5,rightx:a2,righty:a3~,start:b6,x:b2,y:b3,platform:Linux, +060000004e696e74656e646f20537700,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +060000007e0500000620000000000000,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +060000007e0500000820000000000000,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +050000004c69632050726f20436f6e00,Nintendo Switch Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500000620000001800000,Nintendo Switch Left Joy-Con,a:b16,b:b15,back:b4,leftshoulder:b6,leftstick:b12,leftx:a1,lefty:a0~,rightshoulder:b8,start:b9,x:b14,y:b17,platform:Linux, +030000007e0500000920000000026803,Nintendo Switch Pro Controller,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Linux, +030000007e0500000920000011810000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500000920000001800000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +050000007e0500000720000001800000,Nintendo Switch Right Joy-Con,a:b1,b:b2,back:b9,leftshoulder:b4,leftstick:b10,leftx:a1~,lefty:a0,rightshoulder:b6,start:b8,x:b0,y:b3,platform:Linux, +05000000010000000100000003000000,Nintendo Wii Remote,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500003003000001000000,Nintendo Wii U Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +050000005a1d00000218000003000000,Nokia GC 5000,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000000d0500000308000010010000,Nostromo n45 Dual Analog,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Linux, +030000007e0500007320000011010000,NSO GameCube Controller,a:b1,b:b3,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b13,lefttrigger:b12,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b4,rightx:a2,righty:a3~,start:b6,x:b0,y:b2,platform:Linux, +030000007e0500001920000011810000,NSO N64 Controller,+rightx:b2,+righty:b3,-rightx:b4,-righty:b10,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b5,rightshoulder:b7,righttrigger:b9,start:b11,platform:Linux, +050000007e0500001920000001000000,NSO N64 Controller,+rightx:b8,+righty:b7,-rightx:b3,-righty:b2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Linux, +050000007e0500001920000001800000,NSO N64 Controller,+rightx:b2,+righty:b3,-rightx:b4,-righty:b10,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b5,rightshoulder:b7,righttrigger:b9,start:b11,platform:Linux, +030000007e0500001e20000011810000,NSO Sega Genesis Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,misc1:b3,rightshoulder:b2,righttrigger:b4,start:b5,platform:Linux, +030000007e0500001720000011810000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, +050000007e0500001720000001000000,NSO SNES Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b8,start:b10,x:b3,y:b2,platform:Linux, +050000007e0500001720000001800000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, +03000000550900001072000011010000,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000550900001472000011010000,NVIDIA Controller,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux, +05000000550900001472000001000000,NVIDIA Controller,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux, +030000004b120000014d000000010000,NYKO Airflo EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000451300000830000010010000,NYKO CORE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +19000000010000000100000001010000,ODROID Go 2,a:b1,b:b0,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,guide:b10,leftshoulder:b4,leftstick:b12,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b14,start:b15,x:b2,y:b3,platform:Linux, +19000000010000000200000011000000,ODROID Go 2,a:b1,b:b0,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b12,leftshoulder:b4,leftstick:b14,lefttrigger:b13,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b16,start:b17,x:b2,y:b3,platform:Linux, +05000000362800000100000002010000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux, +05000000362800000100000003010000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux, +05000000362800000100000004010000,OUYA Controller,a:b0,b:b3,back:b14,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,start:b16,x:b1,y:b2,platform:Linux, +03000000830500005020000010010000,Padix Rockfire PlayStation Bridge,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Linux, +03000000ff1100003133000010010000,PC Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e0000b802000001010000,PDP Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000b802000013020000,PDP Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00006401000001010000,PDP Battlefield One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000d702000006640000,PDP Black Camo Wired Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:b13,dpleft:b14,dpright:b13,dpup:b14,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003101000000010000,PDP EA Sports Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00008501000011010000,PDP Fightpad Pro Gamecube Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000006f0e0000c802000012010000,PDP Kingdom Hearts Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00002801000011010000,PDP PS3 Rock Candy Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00000901000011010000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00002f01000011010000,PDP Wired PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b000004f9000000010000,PDP Xbox 360 Versus Fighting,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000f102000000000000,PDP Xbox Atomic,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000a802000023020000,PDP Xbox One Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000006f0e0000a702000023020000,PDP Xbox One Raven Black,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000d802000006640000,PDP Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000ef02000007640000,PDP Xbox Series Kinetic Wired Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c62400000053000000010000,PowerA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c62400003a54000001010000,PowerA 1428124-01,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000540000001010000,PowerA Advantage Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d620000011a7000011010000,PowerA Core Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000dd62000015a7000011010000,PowerA Fusion Nintendo Switch Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d620000012a7000011010000,PowerA Fusion Nintendo Switch Fight Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d62000000140000001010000,PowerA Fusion Pro 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000dd62000016a7000000000000,PowerA Fusion Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000c62400001a53000000010000,PowerA Mini Pro Ex,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d620000013a7000011010000,PowerA Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d62000006dca000011010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d620000014a7000011010000,PowerA Spectra Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000c62400001a58000001010000,PowerA Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000220000001010000,PowerA Xbox One Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux, +03000000d62000000228000001010000,PowerA Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c62400001a54000001010000,PowerA Xbox One Mini Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000240000001010000,PowerA Xbox One Spectra Infinity,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000520000050010000,PowerA Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000b20000001010000,PowerA Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000f20000001010000,PowerA Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d040000d2ca000011010000,Precision Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000250900000017000010010000,PS/SS/N64 Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b5,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2~,righty:a3,start:b8,platform:Linux, +03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000120c0000160e000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004c0500006802000010010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +030000004c0500006802000010810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000005f1400003102000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e00001402000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000008f0e00000300000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +050000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +050000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:a12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:a13,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +050000004c0500006802000000800000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +05000000504c415953544154494f4e00,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +060000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000004c050000a00b000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000004c050000c405000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +03000000c01100000140000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000c405000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +050000004c050000cc09000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000cc09000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +0300004b4c0500005f0e000011010000,PS5 Access Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000004c050000e60c000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000004c050000e60c000011810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000f20d000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000004c050000f20d000011810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +050000004c050000e60c000000810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +050000004c050000f20d000000810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +03000000300f00001211000011010000,Qanba Arcade Joystick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,platform:Linux, +03000000222c00000225000011010000,Qanba Dragon Arcade Joystick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000025000011010000,Qanba Dragon Arcade Joystick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000222c00001220000011010000,Qanba Drone 2 Arcade Joystick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00001020000011010000,Qanba Drone 2 Arcade Joystick PS5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000020000011010000,Qanba Drone Arcade PS4 Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000300f00001210000010010000,Qanba Joystick Plus,a:b0,b:b1,back:b8,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,start:b9,x:b2,y:b3,platform:Linux, +03000000222c00000223000011010000,Qanba Obsidian Arcade Joystick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000023000011010000,Qanba Obsidian Arcade Joystick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000009b2800000300000001010000,Raphnet 4nes4snes,a:b0,b:b4,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux, +030000009b2800004200000001010000,Raphnet Dual NES Adapter,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Linux, +0300132d9b2800006500000000000000,Raphnet GameCube Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, +0300132d9b2800006500000001010000,Raphnet GameCube Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, +030000009b2800003200000001010000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, +030000009b2800006000000001010000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, +030000009b2800003c00000001010000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Linux, +030000009b2800006100000001010000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Linux, +030000009b2800006300000001010000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Linux, +030000009b2800006400000001010000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Linux, +030000009b2800008000000020020000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Linux, +030000009b2800008000000001010000,Raphnet Wii Classic Adapter V3,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Linux, +03000000f8270000bf0b000011010000,Razer Kishi,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000008916000001fd000024010000,Razer Onza Classic Edition,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000321500000204000011010000,Razer Panthera PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000104000011010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000321500000810000011010000,Razer Panthera PS4 Evo Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000321500000010000011010000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000507000000010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000321500000a10000001000000,Razer Raiju Tournament Edition,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000011000011010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000008916000000fe000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000045d000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000321500000009000011010000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +050000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +0300000032150000030a000001010000,Razer Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000321500000b10000011010000,Razer Wolverine PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +0300000032150000140a000001010000,Razer Wolverine Ultimate Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f0000c100000010010000,Retro Bit Legacy16,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b12,leftshoulder:b4,lefttrigger:b6,misc1:b13,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000790000001100000010010000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Linux, +0300000003040000c197000011010000,Retrode Adapter,a:b0,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux, +190000004b4800000111000000010000,RetroGame Joypad,a:b1,b:b0,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +0300000081170000990a000001010000,Retronic Adapter,a:b0,leftx:a0,lefty:a1,platform:Linux, +0300000000f000000300000000010000,RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, +00000000526574726f53746f6e653200,RetroStone 2 Controller,a:b1,b:b0,back:b10,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,righttrigger:b9,start:b11,x:b4,y:b3,platform:Linux, +03000000341200000400000000010000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Linux, +030000006b140000010d000011010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000006b140000130d000011010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00001f01000000010000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00008701000011010000,Rock Candy Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00001e01000011010000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000c6240000fefa000000010000,Rock Candy Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00004601000001010000,Rock Candy Xbox One Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001311000011010000,Saffun Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b0,platform:Linux, +03000000a306000023f6000011010000,Saitek Cyborg PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000a30600001005000000010000,Saitek P150,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b2,righttrigger:b5,x:b3,y:b4,platform:Linux, +03000000a30600000701000000010000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Linux, +03000000a30600000cff000010010000,Saitek P2500 Force Rumble,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b0,y:b1,platform:Linux, +03000000a30600000d5f000010010000,Saitek P2600,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Linux, +03000000a30600000c04000011010000,Saitek P2900,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b12,x:b0,y:b3,platform:Linux, +03000000a306000018f5000010010000,Saitek P3200 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000300f00001201000010010000,Saitek P380,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,platform:Linux, +03000000a30600000b04000000010000,Saitek P990 Dual Analog,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Linux, +03000000a306000020f6000011010000,Saitek PS2700 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +05000000e804000000a000001b010000,Samsung EIGP20,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000d81d00000e00000010010000,Savior,a:b0,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b9,x:b4,y:b5,platform:Linux, +03000000952e00004b43000011010000,Scuf Envision,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux, +03000000952e00004d43000011010000,Scuf Envision,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux, +03000000952e00004e43000011010000,Scuf Envision,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux, +03000000a30c00002500000011010000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Linux, +03000000790000001100000011010000,Sega Saturn,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b4,start:b9,x:b0,y:b3,platform:Linux, +03000000b40400000a01000000010000,Sega Saturn,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Linux, +03000000632500002305000010010000,ShanWan Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000632500002605000010010000,ShanWan Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000632500007505000010010000,ShanWan Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000bc2000000055000010010000,ShanWan Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000341a00000908000010010000,SL6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000004b2900000430000011000000,Snakebyte Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000004c050000cc09000001000000,Sony DualShock 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000666600006706000000010000,Sony PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Linux, +030000004c050000da0c000011010000,Sony PlayStation Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000d9040000160f000000010000,Sony PlayStation Controller Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000ff000000cb01000010010000,Sony PlayStation Portable,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, +030000004c0500003713000011010000,Sony PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000250900000500000000010000,Sony PS2 pad with SmartJoy Adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +030000005e0400008e02000073050000,Speedlink Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000020200000,SpeedLink Xeox Pro Analog,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000112000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000112000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:+a5,dpleft:-a4,dpright:+a4,dpup:-a5,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux, +03000000de2800000211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b16,paddle2:b15,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux, +03000000de2800004211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800004211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b16,paddle2:b15,rightshoulder:b7,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux, +03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +05000000de2800000212000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000512000010010000,Steam Deck,a:b3,b:b4,back:b11,dpdown:b17,dpleft:b18,dpright:b19,dpup:b16,guide:b13,leftshoulder:b7,leftstick:b14,lefttrigger:a9,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b15,righttrigger:a8,rightx:a2,righty:a3,start:b12,x:b5,y:b6,platform:Linux, +03000000de2800000512000011010000,Steam Deck,a:b3,b:b4,back:b11,dpdown:b17,dpleft:b18,dpright:b19,dpup:b16,guide:b13,leftshoulder:b7,leftstick:b14,lefttrigger:a9,leftx:a0,lefty:a1,misc1:b2,paddle1:b21,paddle2:b20,paddle3:b23,paddle4:b22,rightshoulder:b8,rightstick:b15,righttrigger:a8,rightx:a2,righty:a3,start:b12,x:b5,y:b6,platform:Linux, +03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000004e696d6275732b0000000000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b10,guide:b11,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b12,x:b2,y:b3,platform:Linux, +03000000381000003014000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000381000003114000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +0500000011010000311400001b010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b32,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000110100001914000009010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000ad1b000038f0000090040000,Street Fighter IV Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000003b07000004a1000000010000,Suncom SFX Plus,a:b0,b:b2,back:b7,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Linux, +030000001f08000001e4000010010000,Super Famicom Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000666600000488000000010000,Super Joy Box 5 Pro,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +0300000000f00000f100000000010000,Super RetroPort,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, +030000008f0e00000d31000010010000,SZMY Power 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000457500000401000011010000,SZMY Power DS4 Wired Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000457500002211000010010000,SZMY Power Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000008f0e00001431000010010000,SZMY Power PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000e40a00000307000011010000,Taito Egret II Mini Control Panel,a:b4,b:b2,back:b6,guide:b9,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Linux, +03000000e40a00000207000011010000,Taito Egret II Mini Controller,a:b4,b:b2,back:b6,guide:b9,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Linux, +03000000ba2200000701000001010000,Technology Innovation PS2 Adapter,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b2,platform:Linux, +03000000790000001c18000011010000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000591c00002400000010010000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, +03000000591c00002600000010010000,THEGamepad,a:b2,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Linux, +030000004f04000015b3000001010000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000020b3000010010000,Thrustmaster Dual Trigger,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000023b3000000010000,Thrustmaster Dual Trigger PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004f0400000ed0000011010000,Thrustmaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000b50700000399000000010000,Thrustmaster Firestorm Digital 2,a:b2,b:b4,back:b11,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b0,righttrigger:b9,start:b1,x:b3,y:b5,platform:Linux, +030000004f04000003b3000010010000,Thrustmaster Firestorm Dual Analog 2,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b9,rightx:a2,righty:a3,x:b1,y:b3,platform:Linux, +030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Linux, +030000004f04000004b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000026b3000002040000,Thrustmaster GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000025b000002020000,Thrustmaster GPX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000004f04000008d0000000010000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004f04000009d0000000010000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004f04000007d0000000010000,Thrustmaster T Mini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004f04000012b3000010010000,Thrustmaster Vibrating Gamepad,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +03000000571d00002000000010010000,Tomee SNES Adapter,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, +03000000bd12000015d0000010010000,Tomee SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000d814000007cd000011010000,Toodles 2008 Chimp PC PS3,a:b0,b:b1,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, +030000005e0400008e02000070050000,Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c01100000591000011010000,Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000680a00000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +03000000780300000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +03000000e00d00000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +03000000f00600000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +030000005f140000c501000010010000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +06000000f51000000870000003010000,Turtle Beach Recon,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000100800000100000010010000,Twin PS2 Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000c0160000e105000010010000,Ultimate Atari Fight Stick,a:b1,b:b2,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b4,righttrigger:b5,start:b8,x:b0,y:b3,platform:Linux, +03000000151900005678000010010000,Uniplay U6,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000100800000300000010010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000790000000600000007010000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux, +03000000790000001100000000010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,platform:Linux, +03000000790000001a18000011010000,Venom PS4 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000790000001b18000011010000,Venom PS4 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00000302000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000006f0e00000702000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +05000000ac0500003232000001000000,VR Box Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +05000000434f4d4d414e440000000000,VX Gaming Command Series,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +0000000058626f782033363020576900,Xbox 360 Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux, +030000005e0400001907000000010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000010010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000014010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400009102000007010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000a102000000010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000a102000007010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000a102000030060000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001503000000020000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000000010000,Xbox 360 EasySMX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000a102000014010000,Xbox 360 Receiver,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +0000000058626f782047616d65706100,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400000202000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +030000005e0400008e02000072050000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001304000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000ffff0000ffff000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +030000005e0400000a0b000005040000,Xbox One Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +030000005e040000d102000002010000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000001030000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000e002000003090000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000fd02000003090000,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000fd02000030110000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000dd02000003020000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000e302000002090000,Xbox One Elite,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000220b000013050000,Xbox One Elite 2 Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000050b000002090000,Xbox One Elite Series 2,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000005e040000ea02000011050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000015050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000017050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000ea0200000b050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000ea0200000d050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000ea02000016050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000001050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000005050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000007050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000009050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b00000d050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b00000f050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000011050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000014050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000015050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000007050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000009050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000011050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000013050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000015050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000017050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +060000005e040000120b000007050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000120b00000b050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000120b00000d050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000120b00000f050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000130b000022050000,Xbox Series X Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +060000005e040000120b000011050000,Xbox Series X Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000200b000013050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000200b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000200b000023050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000220b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000450c00002043000010010000,XEOX SL6556 BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +05000000172700004431000029010000,XiaoMi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Linux, +03000000c0160000e105000001010000,XinMo Dual Arcade,a:b4,b:b3,back:b6,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b9,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b1,y:b0,platform:Linux, +030000005e0400008e02000020010000,XInput Adapter,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000120c0000100e000011010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000101e000011010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000182e000011010000,Zeroplus PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000790000002201000011010000,ZhiXu GuliKit D,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, + +# Android +38653964633230666463343334313533,8BitDo Adapter,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +36666264316630653965636634386234,8BitDo Adapter 2,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f20417263616465205374,8BitDo Arcade Stick,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b5,leftshoulder:b9,lefttrigger:a4,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61393962646434393836356631636132,8BitDo Arcade Stick,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +64323139346131306233636562663738,8BitDo Arcade Stick,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +64643565386136613265663236636564,8BitDo Arcade Stick,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +33313433353539306634656436353432,8BitDo Dogbone,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f20446f67626f6e65204d,8BitDo Dogbone,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +34343439373236623466343934376233,8BitDo FC30 Pro,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b28,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b29,righttrigger:b7,start:b5,x:b30,y:b2,platform:Android, +38426974446f204e4743204d6f646b69,8BitDo GameCube,a:b0,b:b2,back:b4,dpdown:b12,dpleft:b13,dpright:b14,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,paddle1:b18,paddle2:b17,rightshoulder:b15,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b1,y:b3,platform:Android, +38426974446f2038426974446f204c69,8BitDo Lite,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +30643332373663313263316637356631,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f204c6974652032000000,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +62656331626461363634633735353032,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38393936616436383062666232653338,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f204c6974652053450000,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +39356430616562366466646636643435,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000006500000ffff3f00,8BitDo M30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b17,leftshoulder:b9,lefttrigger:a5,rightshoulder:b10,righttrigger:a4,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000051060000ffff3f00,8BitDo M30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b17,leftshoulder:b9,lefttrigger:a4,rightshoulder:b10,righttrigger:a5,start:b6,x:b3,y:b2,platform:Android, +32323161363037623637326438643634,8BitDo M30,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33656266353630643966653238646264,8BitDo M30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,start:b10,x:b19,y:b2,platform:Android, +38426974446f204d3330204d6f646b69,8BitDo M30,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39366630663062373237616566353437,8BitDo M30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,start:b6,x:b2,y:b3,platform:Android, +64653533313537373934323436343563,8BitDo M30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,start:b6,x:b2,y:b3,platform:Android, +66356438346136366337386437653934,8BitDo M30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,start:b18,x:b19,y:b2,platform:Android, +66393064393162303732356665666366,8BitDo M30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,start:b6,x:b2,y:b3,platform:Android, +38426974446f204d6963726f2067616d,8BitDo Micro,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,lefttrigger:a4,leftx:b0,lefty:b1,rightshoulder:b10,righttrigger:a5,rightx:b2,righty:b3,start:b6,x:b3,y:b2,platform:Android, +61653365323561356263373333643266,8BitDo Micro,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,lefttrigger:a4,leftx:b0,lefty:b1,rightshoulder:b10,righttrigger:a5,rightx:b2,righty:b3,start:b6,x:b3,y:b2,platform:Android, +62613137616239666338343866326336,8BitDo Micro,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,lefttrigger:a4,leftx:b0,lefty:b1,rightshoulder:b10,righttrigger:a5,rightx:b2,righty:b3,start:b6,x:b3,y:b2,platform:Android, +33663431326134333366393233616633,8BitDo N30,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +38426974446f204e3330204d6f646b69,8BitDo N30,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +05000000c82d000015900000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000065280000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38323035343766666239373834336637,8BitDo N64,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,platform:Android, +38426974446f204e3634204d6f646b69,8BitDo N64,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,platform:Android, +32363135613966656338666638666237,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35363534633333373639386466346631,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f204e454f47454f204750,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39383963623932353561633733306334,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000000220000000900000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +050000002038000009000000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38313433643131656262306631373166,8BitDo P30,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38326536643339353865323063616339,8BitDo P30,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f2050333020636c617373,8BitDo P30,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35376664343164386333616535333434,8BitDo Pro 2,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,start:b10,x:b19,y:b2,platform:Android, +38426974446f2038426974446f205072,8BitDo Pro 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f2050726f203200000000,8BitDo Pro 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +61333362366131643730353063616330,8BitDo Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +62373739366537363166326238653463,8BitDo Pro 2,a:b1,b:b0,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b3,y:b2,platform:Android, +38386464613034326435626130396565,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f2038426974446f205265,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +66303230343038613365623964393766,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20533330204d6f646b69,8BitDo S30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66316462353561376330346462316137,8BitDo S30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000c82d000000600000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000000610000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974646f20534633302050726f00,8BitDo SF30 Pro,a:b1,b:b0,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b17,platform:Android, +61623334636338643233383735326439,8BitDo SFC30,a:b0,b:b1,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b31,start:b5,x:b30,y:b2,platform:Android, +05000000c82d000012900000ffff3f00,8BitDo SN30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000062280000ffff3f00,8BitDo SN30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +38316230613931613964356666353839,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20534e3330204d6f646b,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +65323563303231646531383162646335,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +35383531346263653330306238353131,8BitDo SN30 PP,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000c82d000001600000ffff3f00,8BitDo SN30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000002600000ffff0f00,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +36653638656632326235346264663661,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +38303232393133383836366330346462,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +38346630346135363335366265656666,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20534e33302050726f2b,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +536f6e7920436f6d707574657220456e,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66306331643531333230306437353936,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +050000002028000009000000ffff3f00,8BitDo SNES30,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +050000003512000020ab000000780f00,8BitDo SNES30,a:b21,b:b20,back:b30,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b26,rightshoulder:b27,start:b31,x:b24,y:b23,platform:Android, +33666663316164653937326237613331,8BitDo Zero,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +38426974646f205a65726f2047616d65,8BitDo Zero,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +05000000c82d000018900000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000030320000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +33663434393362303033616630346337,8BitDo Zero 2,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +34656330626361666438323266633963,8BitDo Zero 2,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, +63396666386564393334393236386630,8BitDo Zero 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +63633435623263373466343461646430,8BitDo Zero 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +32333634613735616163326165323731,Amazon Luna Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +4c696e757820342e31392e3137322077,Anbernic Handheld,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a4,start:b6,x:b2,y:b3,platform:Android, +417374726f2063697479206d696e6920,Astro City Mini,a:b23,b:b22,back:b29,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b25,righttrigger:b26,start:b30,x:b24,y:b21,platform:Android, +35643263313264386134376362363435,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,start:b6,platform:Android, +32353831643566306563643065356239,Atari VCS Modern Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4f64696e20436f6e74726f6c6c657200,AYN Odin,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b14,dpright:b13,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:+a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +32303165626138343962363666346165,Brook Mars PS4 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +38383337343564366131323064613561,Brook Mars PS4 Controller,a:b1,b:b19,back:b17,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +34313430343161653665353737323365,Elecom JC-W01U,a:b23,b:b24,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +4875694a6961204a432d573031550000,Elecom JC-W01U,a:b23,b:b24,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +30363230653635633863366338623265,Evo VR,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,x:b2,y:b3,platform:Android, +05000000b404000011240000dfff3f00,Flydigi Vader 2,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000bc20000000550000ffff3f00,GameSir G3w,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34323662653333636330306631326233,Google Nexus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35383633353935396534393230616564,Google Stadia Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +476f6f676c65204c4c43205374616469,Google Stadia Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +5374616469614e3848532d6532633400,Google Stadia Controller,a:b0,b:b1,back:b15,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000d6020000e5890000dfff3f00,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, +05000000d6020000e5890000dfff3f80,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a3,rightx:a4,righty:a5,start:b6,x:b2,y:b3,platform:Android, +66633030656131663837396562323935,Hori Battle,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +35623466343433653739346434636330,Hori Fighting Commander 3 Pro,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +484f524920434f2e2c4c54442e203130,Hori Fighting Commander 3 Pro,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b20,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b9,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +484f524920434f2e2c4c544420205041,Hori Gem Pad 3,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b0,y:b2,platform:Android, +65656436646661313232656661616130,Hori PC Engine Mini Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,start:b18,platform:Android, +31303433326562636431653534636633,Hori Real Arcade Pro 3,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +32656664353964393561366362333636,Hori Switch Split Pad Pro,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +30306539356238653637313730656134,HORIPAD Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +48797065726b696e2050616400000000,Hyperkin Admiral N64 Controller,+rightx:b6,+righty:b7,-rightx:b17,-righty:b5,a:b1,b:b0,leftshoulder:b3,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,platform:Android, +62333331353131353034386136626636,Hyperkin Admiral N64 Controller,+rightx:b6,+righty:b7,-rightx:b17,-righty:b5,a:b1,b:b0,leftshoulder:b3,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,platform:Android, +31306635363562663834633739396333,Hyperkin N64 Adapter,a:b1,b:b19,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +5368616e57616e202020202048797065,Hyperkin N64 Adapter,a:b1,b:b19,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +0500000083050000602000000ffe0000,iBuffalo SNES Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b15,rightshoulder:b16,start:b10,x:b2,y:b3,platform:Android, +5553422c322d6178697320382d627574,iBuffalo Super Famicom Controller,a:b1,b:b0,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b17,rightshoulder:b18,start:b10,x:b3,y:b2,platform:Android, +64306137363261396266353433303531,InterAct GoPad,a:b24,b:b25,leftshoulder:b23,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,x:b21,y:b22,platform:Android, +532e542e442e20496e74657261637420,InterAct HammerHead FX,a:b23,b:b24,back:b30,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b26,leftstick:b22,lefttrigger:b28,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b25,righttrigger:b29,rightx:a2,righty:a3,start:b31,x:b20,y:b21,platform:Android, +65346535636333663931613264643164,Joy-Con,a:b21,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b23,y:b24,platform:Android, +33346566643039343630376565326335,Joy-Con (L),a:b0,b:b1,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +35313531613435623366313835326238,Joy-Con (L),a:b0,b:b1,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +4a6f792d436f6e20284c290000000000,Joy-Con (L),a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +38383665633039363066383334653465,Joy-Con (R),a:b0,b:b1,back:b5,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +39363561613936303237333537383931,Joy-Con (R),a:b0,b:b1,back:b5,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +39373064396565646338333134303131,Joy-Con (R),a:b1,b:b2,back:b5,leftstick:b8,leftx:a1~,lefty:a0,start:b6,x:b0,y:b3,platform:Android, +4a6f792d436f6e202852290000000000,Joy-Con (R),a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +39656136363638323036303865326464,JYS Aapter,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +63316564383539663166353034616434,JYS Adapter,a:b1,b:b3,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b0,y:b2,platform:Android, +64623163333561643339623235373232,Logitech F310,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35623364393661626231343866613337,Logitech F710,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4c6f6769746563682047616d65706164,Logitech F710,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64396331333230326333313330336533,Logitech F710,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39653365373864633935383236363438,Logitech G Cloud,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +416d617a6f6e2047616d6520436f6e74,Luna Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +4c756e612047616d6570616400000000,Luna Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30363066623539323534363639323363,Magic NS,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +31353762393935386662336365626334,Magic NS,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +39623565346366623931666633323530,Magic NS,a:b1,b:b3,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b0,y:b2,platform:Android, +6d6179666c617368206c696d69746564,Mayflash GameCube Adapter,a:b22,b:b21,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a5,righty:a2,start:b30,x:b23,y:b24,platform:Android, +436f6e74726f6c6c6572000000000000,Mayflash N64 Adapter,a:b1,b:b19,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +65666330633838383061313633326461,Mayflash N64 Adapter,a:b1,b:b19,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +37316565396364386635383230353365,Mayflash Saturn Adapter,a:b21,b:b22,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +4875694a696120205553422047616d65,Mayflash Saturn Adapter,a:b21,b:b22,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +535a4d792d706f776572204c54442043,Mayflash Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b31,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +30653962643666303631376438373532,Mayflash Wii DolphinBar,a:b23,b:b24,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b0,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +39346131396233376535393665363161,Mayflash Wii U Pro Adapter,a:b22,b:b23,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,leftstick:b31,lefttrigger:b27,rightshoulder:b26,rightstick:b0,righttrigger:b28,rightx:a0,righty:a1,start:b30,x:b21,y:b24,platform:Android, +31323564663862633234646330373138,Mega Drive,a:b23,b:b22,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b25,righttrigger:b26,start:b30,x:b24,y:b21,platform:Android, +37333564393261653735306132613061,Mega Drive,a:b21,b:b22,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +64363363336633363736393038313464,Mega Drive,a:b1,b:b0,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,start:b9,x:b2,y:b3,platform:Android, +33323763323132376537376266393366,Microsoft Dual Strike,a:b24,b:b23,back:b25,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b27,lefttrigger:b29,rightshoulder:b78,rightx:a0,righty:a1~,start:b26,x:b22,y:b21,platform:Android, +30306461613834333439303734316539,Microsoft SideWinder Pro,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b20,lefttrigger:b9,rightshoulder:b19,righttrigger:b10,start:b17,x:b2,y:b3,platform:Android, +32386235353630393033393135613831,Microsoft Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4d4f42415041442050726f2d48440000,Mobapad Chitu HD,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4d4f435554452d303533582d4d35312d,Mocute 053X,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33343361376163623438613466616531,Mocute M053,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39306635663061636563316166303966,Mocute M053,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +7573622067616d657061642020202020,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Android, +050000007e05000009200000ffff0f00,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b17,y:b2,platform:Android, +31316661666466633938376335383661,Nintendo Switch Pro Controller,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,misc1:b5,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,start:b6,x:b3,y:b2,platform:Android, +34323437396534643531326161633738,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,misc1:b5,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +50726f20436f6e74726f6c6c65720000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b2,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b10,rightx:a2,righty:a3,start:b18,y:b3,platform:Android, +36326533353166323965623661303933,NSO N64 Controller,+rightx:b17,+righty:b10,-rightx:b2,-righty:b19,a:b1,b:b0,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,righttrigger:b15,start:b18,platform:Android, +4e363420436f6e74726f6c6c65720000,NSO N64 Controller,+rightx:b17,+righty:b10,-rightx:b2,-righty:b19,a:b1,b:b0,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,righttrigger:b15,start:b18,platform:Android, +534e455320436f6e74726f6c6c657200,NSO SNES Controller,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +64623863346133633561626136366634,NSO SNES Controller,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +050000005509000003720000cf7f3f00,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005509000010720000ffff3f00,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005509000014720000df7f3f00,NVIDIA Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, +050000005509000014720000df7f3f80,NVIDIA Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a3,rightx:a4,righty:a5,start:b6,x:b2,y:b3,platform:Android, +37336435666338653565313731303834,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4e564944494120436f72706f72617469,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61363931656135336130663561616264,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39383335313438623439373538343266,OUYA Controller,a:b0,b:b2,dpdown:b18,dpleft:b15,dpright:b16,dpup:b17,leftshoulder:b3,leftstick:b9,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,x:b1,y:b19,platform:Android, +4f5559412047616d6520436f6e74726f,OUYA Controller,a:b0,b:b2,dpdown:b18,dpleft:b15,dpright:b6,dpup:b17,leftshoulder:b3,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b19,platform:Android, +506572666f726d616e63652044657369,PDP PS3 Rock Candy Controller,a:b1,b:b17,back:h0.2,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b0,y:b2,platform:Android, +61653962353232366130326530363061,Pokken,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,rightshoulder:b20,righttrigger:b10,start:b18,x:b0,y:b2,platform:Android, +32666633663735353234363064386132,PS2,a:b23,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a3,righty:a2,start:b30,x:b24,y:b21,platform:Android, +050000004c05000068020000dfff3f00,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +536f6e7920504c415953544154494f4e,PS3 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61363034663839376638653463633865,PS3 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66366539656564653432353139356536,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66383132326164626636313737373037,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000c405000000783f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000c4050000fffe3f00,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000c4050000fffe3f80,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a3,rightx:a4,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000c4050000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000cc090000fffe3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000cc090000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30303839663330346632363232623138,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +31326235383662333266633463653332,PS4 Controller,a:b1,b:b16,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b17,x:b0,y:b2,platform:Android, +31373231336561636235613666323035,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +31663838336334393132303338353963,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34613139376634626133336530386430,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35643031303033326130316330353564,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +37626233336235343937333961353732,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +37626464343430636562316661643863,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38393161636261653636653532386639,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +63313733393535663339656564343962,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +63393662363836383439353064663939,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65366465656364636137653363376531,PS4 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +66613532303965383534396638613230,PS4 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +050000004c050000e60c0000fffe3f00,PS5 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000e60c0000fffe3f80,PS5 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a3,rightx:a4,righty:a5,start:b16,x:b2,y:b17,platform:Android, +050000004c050000e60c0000ffff3f00,PS5 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32346465346533616263386539323932,PS5 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32633532643734376632656664383733,PS5 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +37363764353731323963323639666565,PS5 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +61303162353165316365336436343139,PS5 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +64336263393933626535303339616332,Qanba 4RAF,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b20,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b9,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +36626666353861663864336130363137,Razer Junglecat,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000f8270000bf0b0000ffff3f00,Razer Kishi,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +62653861643333663663383332396665,Razer Kishi,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000003215000005070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000003215000007070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000003215000000090000bf7f3f00,Razer Serval,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +5a6869587520526574726f2042697420,Retro Bit Saturn Controller,a:b21,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b26,rightshoulder:b27,righttrigger:b28,start:b30,x:b23,y:b24,platform:Android, +32417865732031314b6579732047616d,Retro Bit SNES Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +36313938306539326233393732613361,Retro Bit SNES Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +526574726f466c616720576972656420,Retro Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b17,rightshoulder:b18,start:b10,x:b2,y:b3,platform:Android, +61343739353764363165343237303336,Retro Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b17,lefttrigger:b18,leftx:a0,lefty:a1,start:b10,x:b2,y:b3,platform:Android, +526574726f696420506f636b65742043,Retroid Pocket,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +582d426f7820436f6e74726f6c6c6572,Retroid Pocket,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64633735616665613536653363336132,Retroid Pocket,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,paddle1:b19,paddle2:b20,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38653130373365613538333235303036,Retroid Pocket 2,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64363363336633363736393038313463,Retrolink,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,start:b6,platform:Android, +37393234373533633333323633646531,RetroUSB N64 RetroPort,+rightx:b17,+righty:b15,-rightx:b18,-righty:b6,a:b10,b:b9,dpdown:b19,dpleft:b1,dpright:b0,dpup:b2,leftshoulder:b7,lefttrigger:b20,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Android, +5365616c6965436f6d707574696e6720,RetroUSB N64 RetroPort,+rightx:b17,+righty:b15,-rightx:b18,-righty:b6,a:b10,b:b9,dpdown:b19,dpleft:b1,dpright:b0,dpup:b2,leftshoulder:b7,lefttrigger:b20,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Android, +526574726f5553422e636f6d20534e45,RetroUSB SNES RetroPort,a:b1,b:b20,back:b19,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b2,x:b0,y:b3,platform:Android, +64643037633038386238303966376137,RetroUSB SNES RetroPort,a:b1,b:b20,back:b19,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b2,x:b0,y:b3,platform:Android, +37656564346533643138636436356230,Rock Candy Switch Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +33373336396634316434323337666361,RumblePad 2,a:b22,b:b23,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b24,platform:Android, +36363537303435333566386638366333,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +53616d73756e672047616d6520506164,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66386565396238363534313863353065,Sanwa PlayOnline Mobile,a:b21,b:b22,back:b23,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b24,platform:Android, +32383165316333383766336338373261,Saturn,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:a4,righttrigger:a5,x:b2,y:b3,platform:Android, +38613865396530353338373763623431,Saturn,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,lefttrigger:b10,rightshoulder:b20,righttrigger:b19,start:b17,x:b2,y:b3,platform:Android, +61316232336262373631343137633631,Saturn,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:a4,righttrigger:a5,x:b2,y:b3,platform:Android, +30353835333338613130373363646337,SG H510,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +66386262366536653765333235343634,SG H510,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +66633132393363353531373465633064,SG H510,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +62653761636366393366613135366338,SN30 PP,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38376662666661636265313264613039,SNES,a:b0,b:b1,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, +5346432f555342205061640000000000,SNES Adapter,a:b0,b:b1,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, +5553422047616d657061642000000000,SNES Controller,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +62653335326261303663356263626339,Sony PlayStation Classic Controller,a:b19,b:b1,back:b17,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,lefttrigger:b3,rightshoulder:b10,righttrigger:b20,start:b18,x:b2,y:b0,platform:Android, +536f6e7920496e746572616374697665,Sony PlayStation Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +576972656c65737320436f6e74726f6c,Sony PlayStation Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +63303964303462366136616266653561,Sony PSP,a:b21,b:b22,back:b27,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b28,x:b23,y:b24,platform:Android, +63376637643462343766333462383235,Sony Vita,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a3,righty:a4,start:b18,x:b0,y:b2,platform:Android, +05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, +0500000011010000201400000f7e0f00,SteelSeries Nimbus,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,x:b19,y:b2,platform:Android, +35306436396437373135383665646464,SteelSeries Nimbus Plus,a:b0,b:b1,leftshoulder:b3,leftstick:b17,lefttrigger:b9,leftx:a0,rightshoulder:b20,rightstick:b18,righttrigger:b10,rightx:a2,x:b19,y:b2,platform:Android, +33313930373536613937326534303931,Taito Egret II Mini Control Panel,a:b25,b:b23,back:b27,guide:b30,leftx:a0,lefty:a1,rightshoulder:b21,righttrigger:b22,start:b28,x:b29,y:b24,platform:Android, +54475a20436f6e74726f6c6c65720000,TGZ Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +62363434353532386238336663643836,TGZ Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +37323236633763666465316365313236,THEC64 Joystick,a:b21,b:b22,back:b27,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b27,x:b23,y:b24,platform:Android, +38346162326232346533316164363336,THEGamepad,a:b23,b:b22,back:b27,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b28,x:b24,y:b21,platform:Android, +050000004f0400000ed00000fffe3f00,Thrustmaster eSwap Pro Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +5477696e20555342204a6f7973746963,Twin Joystick,a:b22,b:b21,back:b28,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b26,leftstick:b30,lefttrigger:b24,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b31,righttrigger:b25,rightx:a3,righty:a2,start:b29,x:b23,y:b20,platform:Android, +30623739343039643830333266346439,Valve Steam Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,paddle1:b24,paddle2:b23,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +31643365666432386133346639383937,Valve Steam Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,paddle1:b24,paddle2:b23,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30386438313564306161393537333663,Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +33333034646336346339646538643633,Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +050000005e0400008e02000000783f00,Xbox 360 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30396232393162346330326334636566,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38313038323730383864666463383533,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +58626f782033363020576972656c6573,Xbox 360 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65353331386662343338643939643636,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65613532386633373963616462363038,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +47656e6572696320582d426f78207061,Xbox Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4d6963726f736f667420582d426f7820,Xbox Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64633436313965656664373634323364,Xbox Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e04000091020000ff073f00,Xbox One Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +050000005e04000091020000ff073f80,Xbox One Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000e00200000ffe3f00,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b17,y:b2,platform:Android, +050000005e040000e00200000ffe3f80,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a2,righty:a3,start:b10,x:b17,y:b2,platform:Android, +050000005e040000e0020000ffff3f00,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b4,leftshoulder:b3,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b17,y:b2,platform:Android, +050000005e040000e0020000ffff3f80,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b4,leftshoulder:b3,leftstick:b8,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b10,x:b17,y:b2,platform:Android, +050000005e040000fd020000ffff3f00,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33356661323266333733373865656366,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34356136633366613530316338376136,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,x:b17,y:b2,platform:Android, +35623965373264386238353433656138,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +36616131643361333337396261666433,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +58626f7820576972656c65737320436f,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65316262316265373335666131623538,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000000b000000783f00,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +050000005e040000000b000000783f80,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000050b0000ffff3f00,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000e002000000783f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000ea02000000783f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000fd020000ff7f3f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000120b000000783f00,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +050000005e040000120b000000783f80,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000130b0000ffff3f00,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65633038363832353634653836396239,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000001727000044310000ffff3f00,XiaoMi Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, + +# iOS +05000000ac0500000100000000006d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac050000010000004f066d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac05000001000000cf076d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac05000001000000df076d01,*,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +05000000ac05000001000000ff076d01,*,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +05000000ac0500000200000000006d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS, +05000000ac050000020000004f066d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS, +05000000ac05000004000000a8986d04,8BitDo Micro,a:b1,b:b0,back:b4,dpdown:b7,dpleft:b8,dpright:b9,dpup:b10,guide:b2,leftshoulder:b11,lefttrigger:b12,rightshoulder:b13,righttrigger:b14,start:b3,x:b6,y:b5,platform:iOS, +05000000ac05000004000000fd216d04,8BitDo Pro 2,a:b3,b:b2,back:b6,dpdown:b9,dpleft:b10,dpright:b11,dpup:b12,guide:b4,leftshoulder:b13,leftstick:b14,lefttrigger:+a2,leftx:a0,lefty:a1~,paddle1:b1,paddle2:b0,rightshoulder:b16,rightstick:b17,righttrigger:+a5,rightx:a3,righty:a4~,start:b5,x:b8,y:b7,platform:iOS, +05000000ac05000004000000209f6d04,8Bitdo SN30 Pro,a:b1,b:b0,back:b4,dpdown:b7,dpleft:b8,dpright:b9,dpup:b10,guide:b2,leftshoulder:b11,leftstick:b12,lefttrigger:b13,leftx:a0,lefty:a1~,rightshoulder:b14,rightstick:b15,righttrigger:b16,rightx:a2,righty:a3~,start:b3,x:b6,y:b5,platform:iOS, +05000000ac050000040000003b8a6d04,8BitDo SN30 Pro+,a:b1,b:b0,back:b4,dpdown:b7,dpleft:b8,dpright:b9,dpup:b10,guide:b2,leftshoulder:b11,leftstick:b12,lefttrigger:b13,leftx:a0,lefty:a1~,rightshoulder:b14,rightstick:b15,righttrigger:b16,rightx:a2,righty:a3~,start:b3,x:b6,y:b5,platform:iOS, +050000008a35000003010000ff070000,Backbone One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000008a35000004010000ff070000,Backbone One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +4d466947616d65706164010000000000,MFi Extended Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:iOS, +4d466947616d65706164020000000000,MFi Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,platform:iOS, +050000007e050000062000000f060000,Nintendo Switch Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b2,leftshoulder:b4,rightshoulder:b5,x:b1,y:b3,platform:iOS, +050000007e050000062000004f060000,Nintendo Switch Joy-Con (L),+leftx:h0.1,+lefty:h0.2,-leftx:h0.4,-lefty:h0.8,dpdown:b2,dpleft:b0,dpright:b3,dpup:b1,leftshoulder:b4,misc1:b6,rightshoulder:b5,platform:iOS, +050000007e05000008200000df070000,Nintendo Switch Joy-Con (L/R),a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:iOS, +050000007e0500000e200000df070000,Nintendo Switch Joy-Con (L/R),a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:iOS, +050000007e050000072000000f060000,Nintendo Switch Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b2,leftshoulder:b4,rightshoulder:b5,x:b1,y:b3,platform:iOS, +050000007e050000072000004f060000,Nintendo Switch Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b2,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b1,y:b3,platform:iOS, +050000007e05000009200000df870000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b10,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:iOS, +050000007e05000009200000ff870000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b3,y:b2,platform:iOS, +05000000ac050000040000008e586d04,PlayStation VR2 Sense Controller (L),+leftx:+a3,+lefty:+a1,-leftx:+a2,-lefty:+a4,back:b2,leftstick:b4,lefttrigger:+a7,paddle2:b3,x:b0,y:b1,platform:iOS, +05000000ac050000040000000eb86d04,PlayStation VR2 Sense Controller (R),+rightx:+a3,+righty:+a1,-rightx:+a2,-righty:+a4,a:b0,b:b1,paddle1:b3,rightstick:b4,righttrigger:+a7,start:b2,platform:iOS, +050000004c050000cc090000df070000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000004c050000cc090000df870001,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000004c050000cc090000ff070000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000004c050000cc090000ff870001,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,touchpad:b11,x:b2,y:b3,platform:iOS, +050000004c050000cc090000ff876d01,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000004c050000e60c0000df870000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,touchpad:b10,x:b2,y:b3,platform:iOS, +050000004c050000e60c0000ff870000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,touchpad:b11,x:b2,y:b3,platform:iOS, +05000000ac0500000300000000006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS, +05000000ac0500000300000043006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS, +05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS, +050000005e040000050b0000df070001,Xbox Elite Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b10,paddle2:b12,paddle3:b11,paddle4:b13,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000005e040000050b0000ff070001,Xbox Elite Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b13,paddle3:b12,paddle4:b14,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000005e040000130b0000df870001,Xbox Series X Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b10,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000005e040000130b0000ff870001,Xbox Series X Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000005e040000e0020000df070000,Xbox Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000005e040000e0020000ff070000,Xbox Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, diff --git a/assets/levels/collecting.ldtk b/assets/levels/collecting.ldtk new file mode 100644 index 0000000..926052a --- /dev/null +++ b/assets/levels/collecting.ldtk @@ -0,0 +1,5571 @@ +{ + "__header__": { + "fileType": "LDtk Project JSON", + "app": "LDtk", + "doc": "https://ldtk.io/json", + "schema": "https://ldtk.io/files/JSON_SCHEMA.json", + "appAuthor": "Sebastien 'deepnight' Benard", + "appVersion": "1.5.3", + "url": "https://ldtk.io" + }, + "iid": "d73f3980-d380-11f0-87cf-5fab6ff1ccf3", + "jsonVersion": "1.5.3", + "appBuildId": 473703, + "nextUid": 193, + "identifierStyle": "Capitalize", + "toc": [], + "worldLayout": "Free", + "worldGridWidth": 256, + "worldGridHeight": 256, + "defaultLevelWidth": 256, + "defaultLevelHeight": 256, + "defaultPivotX": 0, + "defaultPivotY": 0, + "defaultGridSize": 18, + "defaultEntityWidth": 18, + "defaultEntityHeight": 18, + "bgColor": "#40465B", + "defaultLevelBgColor": "#696A79", + "minifyJson": false, + "externalLevels": false, + "exportTiled": false, + "simplifiedExport": false, + "imageExportMode": "None", + "exportLevelBg": true, + "pngFilePattern": null, + "backupOnSave": false, + "backupLimit": 10, + "backupRelPath": null, + "levelNamePattern": "Level_%idx", + "tutorialDesc": null, + "customCommands": [], + "flags": [], + "defs": { "layers": [ + { + "__type": "Entities", + "identifier": "Entities", + "type": "Entities", + "uid": 191, + "doc": null, + "uiColor": null, + "gridSize": 4, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 0.6, + "hideInList": false, + "hideFieldsWhenInactive": true, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [], + "intGridValuesGroups": [], + "autoRuleGroups": [], + "autoSourceLayerDefUid": null, + "tilesetDefUid": null, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + }, + { + "__type": "IntGrid", + "identifier": "IntGrid", + "type": "IntGrid", + "uid": 3, + "doc": null, + "uiColor": null, + "gridSize": 18, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 1, + "hideInList": false, + "hideFieldsWhenInactive": false, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [ + { "value": 1, "identifier": "walls", "color": "#C28569", "tile": null, "groupUid": 0 }, + { "value": 2, "identifier": "clouds", "color": "#F7F5F5", "tile": null, "groupUid": 0 }, + { "value": 3, "identifier": "trees", "color": "#63C74D", "tile": null, "groupUid": 0 }, + { "value": 4, "identifier": "trunks", "color": "#BE4A2F", "tile": null, "groupUid": 0 } + ], + "intGridValuesGroups": [], + "autoRuleGroups": [ + { + "uid": 116, + "name": "trunks", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 167, + "active": true, + "size": 3, + "tileRectsIds": [[58]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,3,0,3,3,4,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3116739, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 172, + "active": true, + "size": 3, + "tileRectsIds": [[57]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,3,0,-3,3,4,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3116739, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 168, + "active": true, + "size": 3, + "tileRectsIds": [[38]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,3,0,3,3,4,0,3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3116739, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 169, + "active": true, + "size": 3, + "tileRectsIds": [[38]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,3,0,4,3,3,0,3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3116739, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 170, + "active": true, + "size": 3, + "tileRectsIds": [[58]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,3,0,4,3,3,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3116739, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 171, + "active": true, + "size": 3, + "tileRectsIds": [[59]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,3,0,4,3,-3,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3116739, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 173, + "active": true, + "size": 3, + "tileRectsIds": [[38]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,3,0,3,3,3,0,4,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3116739, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 174, + "active": true, + "size": 3, + "tileRectsIds": [[18]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-3,0,3,3,3,0,4,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3116739, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 117, + "active": true, + "size": 3, + "tileRectsIds": [[97]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,3,0,3,4,3,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4416921, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 166, + "active": true, + "size": 3, + "tileRectsIds": [ [96], [116] ], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,4,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3675461, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 175, + "active": true, + "size": 3, + "tileRectsIds": [[137]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,4,0,0,4,0,0,1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3675461, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": false, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + }, + { + "uid": 99, + "name": "trees", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 150, + "active": true, + "size": 3, + "tileRectsIds": [[16]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-3,0,-3,3,-3,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 8361328, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 151, + "active": true, + "size": 3, + "tileRectsIds": [[77]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-3,0,-3,3,0,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2633089, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 152, + "active": true, + "size": 3, + "tileRectsIds": [[79]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-3,0,0,3,-3,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 5051035, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 153, + "active": true, + "size": 3, + "tileRectsIds": [[78]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-3,0,0,3,0,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 1854154, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 154, + "active": true, + "size": 3, + "tileRectsIds": [[36]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-3,0,-3,3,-3,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 579623, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 155, + "active": true, + "size": 3, + "tileRectsIds": [[76]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-3,3,-3,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 7616645, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 156, + "active": true, + "size": 3, + "tileRectsIds": [[56]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-3,3,-3,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 9052676, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 157, + "active": true, + "size": 3, + "tileRectsIds": [[17]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-3,0,-3,3,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 1665955, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 158, + "active": true, + "size": 3, + "tileRectsIds": [[19]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-3,0,0,3,-3,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6836908, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 159, + "active": true, + "size": 3, + "tileRectsIds": [[59]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,3,-3,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 9407960, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 160, + "active": true, + "size": 3, + "tileRectsIds": [[57]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-3,3,0,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2177855, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 161, + "active": true, + "size": 3, + "tileRectsIds": [[18]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-3,0,0,3,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 1611404, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 162, + "active": true, + "size": 3, + "tileRectsIds": [[39]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,3,-3,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 7076077, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 163, + "active": true, + "size": 3, + "tileRectsIds": [[58]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,3,0,0,-3,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4450915, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 164, + "active": true, + "size": 3, + "tileRectsIds": [[37]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-3,3,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 5393818, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 165, + "active": true, + "size": 1, + "tileRectsIds": [[38]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [3], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 3, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 1014530, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": false, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + }, + { + "uid": 39, + "name": "clouds", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 40, + "active": true, + "size": 3, + "tileRectsIds": [[156]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-2,0,-2,2,-2,0,-2,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 2, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 1447730, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 41, + "active": true, + "size": 3, + "tileRectsIds": [[153]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-2,0,-2,2,0,0,-2,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 2, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3308547, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 42, + "active": true, + "size": 3, + "tileRectsIds": [[155]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-2,0,0,2,-2,0,-2,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 2, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2061711, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 43, + "active": true, + "size": 3, + "tileRectsIds": [[154]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-2,0,0,2,0,0,-2,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 2, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6319210, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": true, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + }, + { + "uid": 4, + "name": "walls", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 47, + "active": true, + "size": 3, + "tileRectsIds": [[0]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,-1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2573424, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 48, + "active": true, + "size": 3, + "tileRectsIds": [[4]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,1,0,1,-1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 5728887, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 49, + "active": true, + "size": 3, + "tileRectsIds": [[5]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,1,1,-1,-1,1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3731684, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 50, + "active": true, + "size": 3, + "tileRectsIds": [[25]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [-1,1,0,1,1,-1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 5393657, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 51, + "active": true, + "size": 3, + "tileRectsIds": [[24]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,1,-1,-1,1,1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2759139, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 52, + "active": true, + "size": 3, + "tileRectsIds": [[1]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3628070, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 53, + "active": true, + "size": 3, + "tileRectsIds": [[3]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,-1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 329268, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 54, + "active": true, + "size": 3, + "tileRectsIds": [[2]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3230151, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 55, + "active": true, + "size": 3, + "tileRectsIds": [[21]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 5032169, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 56, + "active": true, + "size": 3, + "tileRectsIds": [[23]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,-1,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3560916, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 57, + "active": true, + "size": 3, + "tileRectsIds": [[143]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,1,-1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2981275, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 58, + "active": true, + "size": 3, + "tileRectsIds": [[141]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-1,1,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2125068, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 59, + "active": true, + "size": 3, + "tileRectsIds": [[22]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4206024, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 60, + "active": true, + "size": 3, + "tileRectsIds": [[123]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,1,-1,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6801093, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 61, + "active": true, + "size": 3, + "tileRectsIds": [[142]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,1,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 256579, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 62, + "active": true, + "size": 3, + "tileRectsIds": [[121]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-1,1,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6625497, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 63, + "active": true, + "size": 1, + "tileRectsIds": [[122]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 58927, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": true, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + }, + { + "uid": 21, + "name": "plants", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 22, + "active": true, + "size": 3, + "tileRectsIds": [ [124], [125], [128], [144] ], + "alpha": 1, + "chance": 0.2, + "breakOnMatch": true, + "pattern": [0,0,0,0,0,0,0,1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 467680, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": false, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + } + ], + "autoSourceLayerDefUid": null, + "tilesetDefUid": 1, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + }, + { + "__type": "Tiles", + "identifier": "Background", + "type": "Tiles", + "uid": 180, + "doc": null, + "uiColor": null, + "gridSize": 24, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 1, + "hideInList": false, + "hideFieldsWhenInactive": false, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [], + "intGridValuesGroups": [], + "autoRuleGroups": [], + "autoSourceLayerDefUid": null, + "tilesetDefUid": 2, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + } + ], "entities": [ + { + "identifier": "Start", + "uid": 181, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 24, + "height": 24, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#4CBE2F", + "renderMode": "Tile", + "showName": true, + "tilesetId": 183, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 183, "x": 24, "y": 0, "w": 24, "h": 24 }, + "uiTileRect": { "tilesetUid": 183, "x": 24, "y": 0, "w": 24, "h": 24 }, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0.5, + "pivotY": 0.5, + "fieldDefs": [] + }, + { + "identifier": "Bat", + "uid": 182, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 24, + "height": 24, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#F03307", + "renderMode": "Tile", + "showName": true, + "tilesetId": 183, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 183, "x": 144, "y": 48, "w": 24, "h": 24 }, + "uiTileRect": { "tilesetUid": 183, "x": 144, "y": 48, "w": 24, "h": 24 }, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0.5, + "pivotY": 0.5, + "fieldDefs": [ + { + "identifier": "end", + "doc": null, + "__type": "Point", + "uid": 185, + "type": "F_Point", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "PointPath", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "DrillHead", + "uid": 186, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 24, + "height": 24, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#F52F01", + "renderMode": "Tile", + "showName": true, + "tilesetId": 183, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 183, "x": 144, "y": 24, "w": 24, "h": 24 }, + "uiTileRect": { "tilesetUid": 183, "x": 144, "y": 24, "w": 24, "h": 24 }, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0.5, + "pivotY": 0.5, + "fieldDefs": [ + { + "identifier": "end", + "doc": null, + "__type": "Point", + "uid": 188, + "type": "F_Point", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "PointPath", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "BlockHead", + "uid": 189, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 24, + "height": 24, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#EB350B", + "renderMode": "Tile", + "showName": true, + "tilesetId": 183, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 183, "x": 0, "y": 48, "w": 24, "h": 24 }, + "uiTileRect": { "tilesetUid": 183, "x": 0, "y": 48, "w": 24, "h": 24 }, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0.5, + "pivotY": 0.5, + "fieldDefs": [ + { + "identifier": "end", + "doc": null, + "__type": "Point", + "uid": 190, + "type": "F_Point", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "PointPath", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "Coin", + "uid": 192, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 18, + "height": 18, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#E5EB08", + "renderMode": "Tile", + "showName": true, + "tilesetId": 1, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0.5, + "pivotY": 0.5, + "fieldDefs": [] + } + ], "tilesets": [ + { + "__cWid": 20, + "__cHei": 9, + "identifier": "Tilemap", + "uid": 1, + "relPath": "../pixel_platformer/tilemap.png", + "embedAtlas": null, + "pxWid": 360, + "pxHei": 162, + "tileGridSize": 18, + "spacing": 0, + "padding": 0, + "tags": [], + "tagsSourceEnumUid": null, + "enumTags": [], + "customData": [], + "savedSelections": [], + "cachedPixelData": { + "opaqueTiles": "001011000000000000000010110000000000001000100000010000110000001000000001011100000010000000000000000000101000000000000000111100000010000000000010000000100000000000000000000000000000", + "averageColors": "f786f886f886f886fc85fc85fa756a653965fc94fc95fc96fd75fc65fc65fc65c396e3a7e3a7e3a7f886f886f996f886fc85fc85fa659a73fb84fa75fa75fa759c96f3bef6bdf6bdd397e3a7f3a8e3a7fa76fb86fb86fb866b4359444446fa65fb75fb75fb75c9659c96f3bef4bdf4bde397e3a7e3a7e3a7fb86fb86fc86fb867977797779776379688978665889f965ac96f3cef6bdf6bdd397d397e3a7d397fa99fba9fbaafba9ca65ca65ca65b955b9555854786658547866c3acc3ace39bb786f59765868675fb99fba9fcaafba9fc85c96589657977997878664b75ca55ca55c3acc3ace39c9a65ba6538545954fb75fb76fc85fb7563869386748693866b657a75fa765778e39be39ce39be39baa65aa65aa653854fa76fb75fb75fb754899a9998a658976589a489afa656b854a74abcccccdabcc7aaa167769996889599a5999599a599a5999599a599a5899599a599a799a5999799a799a7999899a699a699979aa699a" + } + }, + { + "__cWid": 8, + "__cHei": 3, + "identifier": "Backgrounds", + "uid": 2, + "relPath": "../pixel_platformer/backgrounds.png", + "embedAtlas": null, + "pxWid": 192, + "pxHei": 72, + "tileGridSize": 24, + "spacing": 0, + "padding": 0, + "tags": [], + "tagsSourceEnumUid": null, + "enumTags": [], + "customData": [], + "savedSelections": [], + "cachedPixelData": { + "opaqueTiles": "111111111111111111111111", + "averageColors": "fdeefdeefdeefdeeffc7ffc7f7eaf7eafefffeeefffffefffea6fea6f4d7f4d8fbdefbdefbdefbdefc85fc85f3a8f3a8" + } + }, + { + "__cWid": 9, + "__cHei": 3, + "identifier": "Characters", + "uid": 183, + "relPath": "../pixel_platformer/characters.png", + "embedAtlas": null, + "pxWid": 216, + "pxHei": 72, + "tileGridSize": 24, + "spacing": 0, + "padding": 0, + "tags": [], + "tagsSourceEnumUid": null, + "enumTags": [], + "customData": [], + "savedSelections": [], + "cachedPixelData": { + "opaqueTiles": "000000000000000000000000000", + "averageColors": "a9cba9cbaacdaabdacbcacbcacbbacbb9889accbaccb8c948c954a744a74597769775977568a568a568ac68ad68ac69a587758775877" + } + } + ], "enums": [], "externalEnums": [], "levelFields": [] }, + "levels": [ + { + "identifier": "Level", + "iid": "d7407200-d380-11f0-87cf-077db831fe53", + "uid": 0, + "worldX": 0, + "worldY": 0, + "worldDepth": 0, + "pxWid": 1024, + "pxHei": 1024, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": null, + "bgPos": null, + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": null, + "externalRelPath": null, + "fieldInstances": [], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 256, + "__cHei": 256, + "__gridSize": 4, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "a2f8aa20-d380-11f0-8c50-9763fc783dba", + "levelId": 0, + "layerDefUid": 191, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 2769432, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "Start", + "__grid": [14,15], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 24, "y": 0, "w": 24, "h": 24 }, + "__smartColor": "#4CBE2F", + "iid": "00a25df0-d380-11f0-8c50-739061d740f3", + "width": 24, + "height": 24, + "defUid": 181, + "px": [58,62], + "fieldInstances": [], + "__worldX": 58, + "__worldY": 62 + }, + { + "__identifier": "Start", + "__grid": [221,46], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 24, "y": 0, "w": 24, "h": 24 }, + "__smartColor": "#4CBE2F", + "iid": "045d4310-d380-11f0-8c50-710bd1478e02", + "width": 24, + "height": 24, + "defUid": 181, + "px": [886,186], + "fieldInstances": [], + "__worldX": 886, + "__worldY": 186 + }, + { + "__identifier": "Bat", + "__grid": [98,160], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 144, "y": 48, "w": 24, "h": 24 }, + "__smartColor": "#F03307", + "iid": "0ae13340-d380-11f0-8c50-65300abf4c46", + "width": 24, + "height": 24, + "defUid": 182, + "px": [394,642], + "fieldInstances": [{ "__identifier": "end", "__type": "Point", "__value": { "cx": 157, "cy": 160 }, "__tile": null, "defUid": 185, "realEditorValues": [{ + "id": "V_String", + "params": ["157,160"] + }] }], + "__worldX": 394, + "__worldY": 642 + }, + { + "__identifier": "Bat", + "__grid": [224,82], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 144, "y": 48, "w": 24, "h": 24 }, + "__smartColor": "#F03307", + "iid": "177d0b60-d380-11f0-8c50-ffbb9eac13b3", + "width": 24, + "height": 24, + "defUid": 182, + "px": [898,330], + "fieldInstances": [{ "__identifier": "end", "__type": "Point", "__value": { "cx": 241, "cy": 82 }, "__tile": null, "defUid": 185, "realEditorValues": [{ + "id": "V_String", + "params": ["241,82"] + }] }], + "__worldX": 898, + "__worldY": 330 + }, + { + "__identifier": "Bat", + "__grid": [98,34], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 144, "y": 48, "w": 24, "h": 24 }, + "__smartColor": "#F03307", + "iid": "19da8360-d380-11f0-8c50-bf21d35bf7f8", + "width": 24, + "height": 24, + "defUid": 182, + "px": [394,138], + "fieldInstances": [{ "__identifier": "end", "__type": "Point", "__value": { "cx": 166, "cy": 34 }, "__tile": null, "defUid": 185, "realEditorValues": [{ + "id": "V_String", + "params": ["166,34"] + }] }], + "__worldX": 394, + "__worldY": 138 + }, + { + "__identifier": "DrillHead", + "__grid": [51,123], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 144, "y": 24, "w": 24, "h": 24 }, + "__smartColor": "#F52F01", + "iid": "201a65b0-d380-11f0-8c50-5d44b9b521d7", + "width": 24, + "height": 24, + "defUid": 186, + "px": [206,494], + "fieldInstances": [{ "__identifier": "end", "__type": "Point", "__value": { "cx": 10, "cy": 123 }, "__tile": null, "defUid": 188, "realEditorValues": [{ + "id": "V_String", + "params": ["10,123"] + }] }], + "__worldX": 206, + "__worldY": 494 + }, + { + "__identifier": "DrillHead", + "__grid": [160,132], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 144, "y": 24, "w": 24, "h": 24 }, + "__smartColor": "#F52F01", + "iid": "2a8e06a0-d380-11f0-8c50-75c2c285118f", + "width": 24, + "height": 24, + "defUid": 186, + "px": [642,530], + "fieldInstances": [{ "__identifier": "end", "__type": "Point", "__value": { "cx": 204, "cy": 132 }, "__tile": null, "defUid": 188, "realEditorValues": [{ + "id": "V_String", + "params": ["204,132"] + }] }], + "__worldX": 642, + "__worldY": 530 + }, + { + "__identifier": "BlockHead", + "__grid": [32,235], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 0, "y": 48, "w": 24, "h": 24 }, + "__smartColor": "#EB350B", + "iid": "3119bf00-d380-11f0-8c50-576bc1ad5a31", + "width": 24, + "height": 24, + "defUid": 189, + "px": [130,942], + "fieldInstances": [{ "__identifier": "end", "__type": "Point", "__value": { "cx": 90, "cy": 235 }, "__tile": null, "defUid": 190, "realEditorValues": [{ + "id": "V_String", + "params": ["90,235"] + }] }], + "__worldX": 130, + "__worldY": 942 + }, + { + "__identifier": "BlockHead", + "__grid": [145,235], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 0, "y": 48, "w": 24, "h": 24 }, + "__smartColor": "#EB350B", + "iid": "3868a050-d380-11f0-8c50-85188ffcff08", + "width": 24, + "height": 24, + "defUid": 189, + "px": [582,942], + "fieldInstances": [{ "__identifier": "end", "__type": "Point", "__value": { "cx": 191, "cy": 235 }, "__tile": null, "defUid": 190, "realEditorValues": [{ + "id": "V_String", + "params": ["191,235"] + }] }], + "__worldX": 582, + "__worldY": 942 + }, + { + "__identifier": "BlockHead", + "__grid": [182,82], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 0, "y": 48, "w": 24, "h": 24 }, + "__smartColor": "#EB350B", + "iid": "41315060-d380-11f0-8c50-1b8e3004102a", + "width": 24, + "height": 24, + "defUid": 189, + "px": [730,330], + "fieldInstances": [{ "__identifier": "end", "__type": "Point", "__value": { "cx": 200, "cy": 82 }, "__tile": null, "defUid": 190, "realEditorValues": [{ + "id": "V_String", + "params": ["200,82"] + }] }], + "__worldX": 730, + "__worldY": 330 + }, + { + "__identifier": "Coin", + "__grid": [89,74], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "4972f620-d380-11f0-8c50-5d5d153784fc", + "width": 18, + "height": 18, + "defUid": 192, + "px": [358,298], + "fieldInstances": [], + "__worldX": 358, + "__worldY": 298 + }, + { + "__identifier": "Coin", + "__grid": [127,168], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "4bc76d70-d380-11f0-8c50-e5748b4866b3", + "width": 18, + "height": 18, + "defUid": 192, + "px": [510,674], + "fieldInstances": [], + "__worldX": 510, + "__worldY": 674 + }, + { + "__identifier": "Coin", + "__grid": [111,167], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "4ccfdcc0-d380-11f0-8c50-c39270d8de5b", + "width": 18, + "height": 18, + "defUid": 192, + "px": [446,670], + "fieldInstances": [], + "__worldX": 446, + "__worldY": 670 + }, + { + "__identifier": "Coin", + "__grid": [145,166], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "4d9eec90-d380-11f0-8c50-57a6decc2b9e", + "width": 18, + "height": 18, + "defUid": 192, + "px": [582,666], + "fieldInstances": [], + "__worldX": 582, + "__worldY": 666 + }, + { + "__identifier": "Coin", + "__grid": [200,183], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "4f3d0c30-d380-11f0-8c50-fbf31ff006f5", + "width": 18, + "height": 18, + "defUid": 192, + "px": [802,734], + "fieldInstances": [], + "__worldX": 802, + "__worldY": 734 + }, + { + "__identifier": "Coin", + "__grid": [247,235], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "5093c290-d380-11f0-8c50-6bd5819aa46f", + "width": 18, + "height": 18, + "defUid": 192, + "px": [990,942], + "fieldInstances": [], + "__worldX": 990, + "__worldY": 942 + }, + { + "__identifier": "Coin", + "__grid": [225,234], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "516ac1a0-d380-11f0-8c50-6f45c2705899", + "width": 18, + "height": 18, + "defUid": 192, + "px": [902,938], + "fieldInstances": [], + "__worldX": 902, + "__worldY": 938 + }, + { + "__identifier": "Coin", + "__grid": [54,204], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "5312f360-d380-11f0-8c50-c96e13577028", + "width": 18, + "height": 18, + "defUid": 192, + "px": [218,818], + "fieldInstances": [], + "__worldX": 218, + "__worldY": 818 + }, + { + "__identifier": "Coin", + "__grid": [20,123], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "54a88780-d380-11f0-8c50-ab7ce626f220", + "width": 18, + "height": 18, + "defUid": 192, + "px": [82,494], + "fieldInstances": [], + "__worldX": 82, + "__worldY": 494 + }, + { + "__identifier": "Coin", + "__grid": [43,123], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "559a6190-d380-11f0-8c50-cb4213af8bca", + "width": 18, + "height": 18, + "defUid": 192, + "px": [174,494], + "fieldInstances": [], + "__worldX": 174, + "__worldY": 494 + }, + { + "__identifier": "Coin", + "__grid": [103,87], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "5757f010-d380-11f0-8c50-874c95593ff2", + "width": 18, + "height": 18, + "defUid": 192, + "px": [414,350], + "fieldInstances": [], + "__worldX": 414, + "__worldY": 350 + }, + { + "__identifier": "Coin", + "__grid": [58,56], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "596bb4e0-d380-11f0-8c50-5f2f941b5561", + "width": 18, + "height": 18, + "defUid": 192, + "px": [234,226], + "fieldInstances": [], + "__worldX": 234, + "__worldY": 226 + }, + { + "__identifier": "Coin", + "__grid": [91,56], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "5a79a270-d380-11f0-8c50-479af5647ebf", + "width": 18, + "height": 18, + "defUid": 192, + "px": [366,226], + "fieldInstances": [], + "__worldX": 366, + "__worldY": 226 + }, + { + "__identifier": "Coin", + "__grid": [142,60], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "5b745620-d380-11f0-8c50-4ff429a23456", + "width": 18, + "height": 18, + "defUid": 192, + "px": [570,242], + "fieldInstances": [], + "__worldX": 570, + "__worldY": 242 + }, + { + "__identifier": "Coin", + "__grid": [159,60], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "5c31d9c0-d380-11f0-8c50-192cafdb0960", + "width": 18, + "height": 18, + "defUid": 192, + "px": [638,242], + "fieldInstances": [], + "__worldX": 638, + "__worldY": 242 + }, + { + "__identifier": "Coin", + "__grid": [231,15], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "5db67df0-d380-11f0-8c50-bd6a51eabfa2", + "width": 18, + "height": 18, + "defUid": 192, + "px": [926,62], + "fieldInstances": [], + "__worldX": 926, + "__worldY": 62 + }, + { + "__identifier": "Coin", + "__grid": [239,46], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "5f078f00-d380-11f0-8c50-9bfe2de7aee6", + "width": 18, + "height": 18, + "defUid": 192, + "px": [958,186], + "fieldInstances": [], + "__worldX": 958, + "__worldY": 186 + }, + { + "__identifier": "Coin", + "__grid": [188,32], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "5fedf760-d380-11f0-8c50-59f5dad6cb06", + "width": 18, + "height": 18, + "defUid": 192, + "px": [754,130], + "fieldInstances": [], + "__worldX": 754, + "__worldY": 130 + }, + { + "__identifier": "Coin", + "__grid": [223,110], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "60b65070-d380-11f0-8c50-3b7861f4afae", + "width": 18, + "height": 18, + "defUid": 192, + "px": [894,442], + "fieldInstances": [], + "__worldX": 894, + "__worldY": 442 + }, + { + "__identifier": "Coin", + "__grid": [191,82], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "620a47b0-d380-11f0-8c50-d35c233a202e", + "width": 18, + "height": 18, + "defUid": 192, + "px": [766,330], + "fieldInstances": [], + "__worldX": 766, + "__worldY": 330 + }, + { + "__identifier": "Coin", + "__grid": [232,165], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "63760cb0-d380-11f0-8c50-412f99fa06fb", + "width": 18, + "height": 18, + "defUid": 192, + "px": [930,662], + "fieldInstances": [], + "__worldX": 930, + "__worldY": 662 + }, + { + "__identifier": "Coin", + "__grid": [10,236], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "661e7060-d380-11f0-8c50-2b6841643e82", + "width": 18, + "height": 18, + "defUid": 192, + "px": [42,946], + "fieldInstances": [], + "__worldX": 42, + "__worldY": 946 + }, + { + "__identifier": "Coin", + "__grid": [61,235], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "672a3b10-d380-11f0-8c50-5b5a32b08555", + "width": 18, + "height": 18, + "defUid": 192, + "px": [246,942], + "fieldInstances": [], + "__worldX": 246, + "__worldY": 942 + }, + { + "__identifier": "Coin", + "__grid": [112,235], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "69c7f060-d380-11f0-8c50-7f9a3ec5a2a9", + "width": 18, + "height": 18, + "defUid": 192, + "px": [450,942], + "fieldInstances": [], + "__worldX": 450, + "__worldY": 942 + }, + { + "__identifier": "Coin", + "__grid": [208,204], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 198, "y": 126, "w": 18, "h": 18 }, + "__smartColor": "#E5EB08", + "iid": "6cf49f40-d380-11f0-8c50-dd815cc55c9d", + "width": 18, + "height": 18, + "defUid": 192, + "px": [834,818], + "fieldInstances": [], + "__worldX": 834, + "__worldY": 818 + }, + { + "__identifier": "Start", + "__grid": [44,203], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 24, "y": 0, "w": 24, "h": 24 }, + "__smartColor": "#4CBE2F", + "iid": "d3d65b90-d380-11f0-99ec-6ba27ee57174", + "width": 24, + "height": 24, + "defUid": 181, + "px": [178,814], + "fieldInstances": [], + "__worldX": 178, + "__worldY": 814 + }, + { + "__identifier": "Start", + "__grid": [205,235], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": { "tilesetUid": 183, "x": 24, "y": 0, "w": 24, "h": 24 }, + "__smartColor": "#4CBE2F", + "iid": "d5b61810-d380-11f0-99ec-55871e1edc52", + "width": 24, + "height": 24, + "defUid": 181, + "px": [822,942], + "fieldInstances": [], + "__worldX": 822, + "__worldY": 942 + } + ] + }, + { + "__identifier": "IntGrid", + "__type": "IntGrid", + "__cWid": 57, + "__cHei": 57, + "__gridSize": 18, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../pixel_platformer/tilemap.png", + "iid": "546900d0-d380-11f0-87cf-9d65a3c66d96", + "levelId": 0, + "layerDefUid": 3, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [ + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3, + 3,3,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,1,1,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,3,4,3,3,0,0,1,1,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0, + 1,1,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,4,0,0,0,0,1,1,0,0,0,0,0,0,0,0,3,3,4, + 3,3,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,3,4,3,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,1,1,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0, + 0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0, + 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0, + 0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0, + 0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,3,3,3,3,3,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1, + 1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,2,2,2,2, + 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,0,0,3,3,3,3,3,3,3,3,3,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3, + 3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0, + 3,3,3,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, + 0,0,0,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0, + 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,4,3,3,3,3,0, + 0,0,0,0,1,1,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0, + 0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0, + 0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1, + 0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + ], + "autoLayerTiles": [ + { "px": [18,54], "src": [144,108], "f": 0, "t": 128, "d": [22,172], "a": 1 }, + { "px": [72,54], "src": [90,108], "f": 0, "t": 125, "d": [22,175], "a": 1 }, + { "px": [900,180], "src": [72,126], "f": 0, "t": 144, "d": [22,620], "a": 1 }, + { "px": [972,180], "src": [72,108], "f": 0, "t": 124, "d": [22,624], "a": 1 }, + { "px": [990,180], "src": [72,126], "f": 0, "t": 144, "d": [22,625], "a": 1 }, + { "px": [450,216], "src": [144,108], "f": 0, "t": 128, "d": [22,709], "a": 1 }, + { "px": [432,324], "src": [72,108], "f": 0, "t": 124, "d": [22,1050], "a": 1 }, + { "px": [18,486], "src": [72,126], "f": 0, "t": 144, "d": [22,1540], "a": 1 }, + { "px": [108,486], "src": [72,126], "f": 0, "t": 144, "d": [22,1545], "a": 1 }, + { "px": [144,486], "src": [144,108], "f": 0, "t": 128, "d": [22,1547], "a": 1 }, + { "px": [792,522], "src": [90,108], "f": 0, "t": 125, "d": [22,1697], "a": 1 }, + { "px": [810,522], "src": [90,108], "f": 0, "t": 125, "d": [22,1698], "a": 1 }, + { "px": [612,684], "src": [72,126], "f": 0, "t": 144, "d": [22,2200], "a": 1 }, + { "px": [630,684], "src": [144,108], "f": 0, "t": 128, "d": [22,2201], "a": 1 }, + { "px": [684,756], "src": [90,108], "f": 0, "t": 125, "d": [22,2432], "a": 1 }, + { "px": [90,810], "src": [90,108], "f": 0, "t": 125, "d": [22,2570], "a": 1 }, + { "px": [126,810], "src": [144,108], "f": 0, "t": 128, "d": [22,2572], "a": 1 }, + { "px": [774,810], "src": [72,108], "f": 0, "t": 124, "d": [22,2608], "a": 1 }, + { "px": [810,810], "src": [90,108], "f": 0, "t": 125, "d": [22,2610], "a": 1 }, + { "px": [918,864], "src": [144,108], "f": 0, "t": 128, "d": [22,2787], "a": 1 }, + { "px": [54,936], "src": [144,108], "f": 0, "t": 128, "d": [22,2967], "a": 1 }, + { "px": [108,936], "src": [144,108], "f": 0, "t": 128, "d": [22,2970], "a": 1 }, + { "px": [144,936], "src": [72,108], "f": 0, "t": 124, "d": [22,2972], "a": 1 }, + { "px": [288,936], "src": [72,126], "f": 0, "t": 144, "d": [22,2980], "a": 1 }, + { "px": [378,936], "src": [144,108], "f": 0, "t": 128, "d": [22,2985], "a": 1 }, + { "px": [468,936], "src": [72,126], "f": 0, "t": 144, "d": [22,2990], "a": 1 }, + { "px": [486,936], "src": [144,108], "f": 0, "t": 128, "d": [22,2991], "a": 1 }, + { "px": [558,936], "src": [90,108], "f": 0, "t": 125, "d": [22,2995], "a": 1 }, + { "px": [594,936], "src": [72,126], "f": 0, "t": 144, "d": [22,2997], "a": 1 }, + { "px": [630,936], "src": [72,108], "f": 0, "t": 124, "d": [22,2999], "a": 1 }, + { "px": [648,936], "src": [90,108], "f": 0, "t": 125, "d": [22,3000], "a": 1 }, + { "px": [666,936], "src": [144,108], "f": 0, "t": 128, "d": [22,3001], "a": 1 }, + { "px": [702,936], "src": [72,108], "f": 0, "t": 124, "d": [22,3003], "a": 1 }, + { "px": [864,936], "src": [72,126], "f": 0, "t": 144, "d": [22,3012], "a": 1 }, + { "px": [918,936], "src": [72,108], "f": 0, "t": 124, "d": [22,3015], "a": 1 }, + { "px": [0,72], "src": [36,108], "f": 0, "t": 122, "d": [63,228], "a": 1 }, + { "px": [0,90], "src": [36,108], "f": 0, "t": 122, "d": [63,285], "a": 1 }, + { "px": [1008,198], "src": [36,108], "f": 0, "t": 122, "d": [63,683], "a": 1 }, + { "px": [324,252], "src": [36,108], "f": 0, "t": 122, "d": [63,816], "a": 1 }, + { "px": [432,252], "src": [36,108], "f": 0, "t": 122, "d": [63,822], "a": 1 }, + { "px": [450,252], "src": [36,108], "f": 0, "t": 122, "d": [63,823], "a": 1 }, + { "px": [468,252], "src": [36,108], "f": 0, "t": 122, "d": [63,824], "a": 1 }, + { "px": [486,252], "src": [36,108], "f": 0, "t": 122, "d": [63,825], "a": 1 }, + { "px": [504,252], "src": [36,108], "f": 0, "t": 122, "d": [63,826], "a": 1 }, + { "px": [486,270], "src": [36,108], "f": 0, "t": 122, "d": [63,882], "a": 1 }, + { "px": [504,270], "src": [36,108], "f": 0, "t": 122, "d": [63,883], "a": 1 }, + { "px": [522,270], "src": [36,108], "f": 0, "t": 122, "d": [63,884], "a": 1 }, + { "px": [540,270], "src": [36,108], "f": 0, "t": 122, "d": [63,885], "a": 1 }, + { "px": [504,288], "src": [36,108], "f": 0, "t": 122, "d": [63,940], "a": 1 }, + { "px": [522,288], "src": [36,108], "f": 0, "t": 122, "d": [63,941], "a": 1 }, + { "px": [540,288], "src": [36,108], "f": 0, "t": 122, "d": [63,942], "a": 1 }, + { "px": [504,306], "src": [36,108], "f": 0, "t": 122, "d": [63,997], "a": 1 }, + { "px": [486,324], "src": [36,108], "f": 0, "t": 122, "d": [63,1053], "a": 1 }, + { "px": [468,342], "src": [36,108], "f": 0, "t": 122, "d": [63,1109], "a": 1 }, + { "px": [486,342], "src": [36,108], "f": 0, "t": 122, "d": [63,1110], "a": 1 }, + { "px": [432,360], "src": [36,108], "f": 0, "t": 122, "d": [63,1164], "a": 1 }, + { "px": [450,360], "src": [36,108], "f": 0, "t": 122, "d": [63,1165], "a": 1 }, + { "px": [468,360], "src": [36,108], "f": 0, "t": 122, "d": [63,1166], "a": 1 }, + { "px": [486,360], "src": [36,108], "f": 0, "t": 122, "d": [63,1167], "a": 1 }, + { "px": [396,378], "src": [36,108], "f": 0, "t": 122, "d": [63,1219], "a": 1 }, + { "px": [414,378], "src": [36,108], "f": 0, "t": 122, "d": [63,1220], "a": 1 }, + { "px": [432,378], "src": [36,108], "f": 0, "t": 122, "d": [63,1221], "a": 1 }, + { "px": [450,378], "src": [36,108], "f": 0, "t": 122, "d": [63,1222], "a": 1 }, + { "px": [468,378], "src": [36,108], "f": 0, "t": 122, "d": [63,1223], "a": 1 }, + { "px": [486,378], "src": [36,108], "f": 0, "t": 122, "d": [63,1224], "a": 1 }, + { "px": [0,504], "src": [36,108], "f": 0, "t": 122, "d": [63,1596], "a": 1 }, + { "px": [0,522], "src": [36,108], "f": 0, "t": 122, "d": [63,1653], "a": 1 }, + { "px": [648,558], "src": [36,108], "f": 0, "t": 122, "d": [63,1803], "a": 1 }, + { "px": [666,558], "src": [36,108], "f": 0, "t": 122, "d": [63,1804], "a": 1 }, + { "px": [684,558], "src": [36,108], "f": 0, "t": 122, "d": [63,1805], "a": 1 }, + { "px": [702,558], "src": [36,108], "f": 0, "t": 122, "d": [63,1806], "a": 1 }, + { "px": [720,558], "src": [36,108], "f": 0, "t": 122, "d": [63,1807], "a": 1 }, + { "px": [738,558], "src": [36,108], "f": 0, "t": 122, "d": [63,1808], "a": 1 }, + { "px": [756,558], "src": [36,108], "f": 0, "t": 122, "d": [63,1809], "a": 1 }, + { "px": [774,558], "src": [36,108], "f": 0, "t": 122, "d": [63,1810], "a": 1 }, + { "px": [792,558], "src": [36,108], "f": 0, "t": 122, "d": [63,1811], "a": 1 }, + { "px": [648,576], "src": [36,108], "f": 0, "t": 122, "d": [63,1860], "a": 1 }, + { "px": [666,576], "src": [36,108], "f": 0, "t": 122, "d": [63,1861], "a": 1 }, + { "px": [684,576], "src": [36,108], "f": 0, "t": 122, "d": [63,1862], "a": 1 }, + { "px": [702,576], "src": [36,108], "f": 0, "t": 122, "d": [63,1863], "a": 1 }, + { "px": [720,576], "src": [36,108], "f": 0, "t": 122, "d": [63,1864], "a": 1 }, + { "px": [738,576], "src": [36,108], "f": 0, "t": 122, "d": [63,1865], "a": 1 }, + { "px": [756,576], "src": [36,108], "f": 0, "t": 122, "d": [63,1866], "a": 1 }, + { "px": [774,576], "src": [36,108], "f": 0, "t": 122, "d": [63,1867], "a": 1 }, + { "px": [792,576], "src": [36,108], "f": 0, "t": 122, "d": [63,1868], "a": 1 }, + { "px": [0,954], "src": [36,108], "f": 0, "t": 122, "d": [63,3021], "a": 1 }, + { "px": [1008,954], "src": [36,108], "f": 0, "t": 122, "d": [63,3077], "a": 1 }, + { "px": [0,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3078], "a": 1 }, + { "px": [18,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3079], "a": 1 }, + { "px": [36,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3080], "a": 1 }, + { "px": [54,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3081], "a": 1 }, + { "px": [72,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3082], "a": 1 }, + { "px": [90,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3083], "a": 1 }, + { "px": [108,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3084], "a": 1 }, + { "px": [126,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3085], "a": 1 }, + { "px": [144,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3086], "a": 1 }, + { "px": [162,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3087], "a": 1 }, + { "px": [180,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3088], "a": 1 }, + { "px": [198,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3089], "a": 1 }, + { "px": [216,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3090], "a": 1 }, + { "px": [234,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3091], "a": 1 }, + { "px": [252,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3092], "a": 1 }, + { "px": [270,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3093], "a": 1 }, + { "px": [288,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3094], "a": 1 }, + { "px": [306,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3095], "a": 1 }, + { "px": [324,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3096], "a": 1 }, + { "px": [342,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3097], "a": 1 }, + { "px": [360,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3098], "a": 1 }, + { "px": [378,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3099], "a": 1 }, + { "px": [396,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3100], "a": 1 }, + { "px": [414,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3101], "a": 1 }, + { "px": [432,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3102], "a": 1 }, + { "px": [450,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3103], "a": 1 }, + { "px": [468,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3104], "a": 1 }, + { "px": [486,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3105], "a": 1 }, + { "px": [504,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3106], "a": 1 }, + { "px": [522,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3107], "a": 1 }, + { "px": [540,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3108], "a": 1 }, + { "px": [558,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3109], "a": 1 }, + { "px": [576,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3110], "a": 1 }, + { "px": [594,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3111], "a": 1 }, + { "px": [612,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3112], "a": 1 }, + { "px": [630,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3113], "a": 1 }, + { "px": [648,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3114], "a": 1 }, + { "px": [666,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3115], "a": 1 }, + { "px": [684,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3116], "a": 1 }, + { "px": [702,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3117], "a": 1 }, + { "px": [720,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3118], "a": 1 }, + { "px": [738,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3119], "a": 1 }, + { "px": [756,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3120], "a": 1 }, + { "px": [774,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3121], "a": 1 }, + { "px": [792,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3122], "a": 1 }, + { "px": [810,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3123], "a": 1 }, + { "px": [828,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3124], "a": 1 }, + { "px": [846,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3125], "a": 1 }, + { "px": [864,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3126], "a": 1 }, + { "px": [882,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3127], "a": 1 }, + { "px": [900,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3128], "a": 1 }, + { "px": [918,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3129], "a": 1 }, + { "px": [936,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3130], "a": 1 }, + { "px": [954,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3131], "a": 1 }, + { "px": [972,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3132], "a": 1 }, + { "px": [990,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3133], "a": 1 }, + { "px": [1008,972], "src": [36,108], "f": 0, "t": 122, "d": [63,3134], "a": 1 }, + { "px": [0,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3135], "a": 1 }, + { "px": [18,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3136], "a": 1 }, + { "px": [36,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3137], "a": 1 }, + { "px": [54,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3138], "a": 1 }, + { "px": [72,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3139], "a": 1 }, + { "px": [90,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3140], "a": 1 }, + { "px": [108,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3141], "a": 1 }, + { "px": [126,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3142], "a": 1 }, + { "px": [144,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3143], "a": 1 }, + { "px": [162,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3144], "a": 1 }, + { "px": [180,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3145], "a": 1 }, + { "px": [198,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3146], "a": 1 }, + { "px": [216,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3147], "a": 1 }, + { "px": [234,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3148], "a": 1 }, + { "px": [252,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3149], "a": 1 }, + { "px": [270,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3150], "a": 1 }, + { "px": [288,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3151], "a": 1 }, + { "px": [306,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3152], "a": 1 }, + { "px": [324,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3153], "a": 1 }, + { "px": [342,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3154], "a": 1 }, + { "px": [360,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3155], "a": 1 }, + { "px": [378,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3156], "a": 1 }, + { "px": [396,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3157], "a": 1 }, + { "px": [414,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3158], "a": 1 }, + { "px": [432,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3159], "a": 1 }, + { "px": [450,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3160], "a": 1 }, + { "px": [468,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3161], "a": 1 }, + { "px": [486,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3162], "a": 1 }, + { "px": [504,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3163], "a": 1 }, + { "px": [522,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3164], "a": 1 }, + { "px": [540,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3165], "a": 1 }, + { "px": [558,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3166], "a": 1 }, + { "px": [576,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3167], "a": 1 }, + { "px": [594,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3168], "a": 1 }, + { "px": [612,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3169], "a": 1 }, + { "px": [630,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3170], "a": 1 }, + { "px": [648,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3171], "a": 1 }, + { "px": [666,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3172], "a": 1 }, + { "px": [684,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3173], "a": 1 }, + { "px": [702,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3174], "a": 1 }, + { "px": [720,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3175], "a": 1 }, + { "px": [738,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3176], "a": 1 }, + { "px": [756,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3177], "a": 1 }, + { "px": [774,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3178], "a": 1 }, + { "px": [792,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3179], "a": 1 }, + { "px": [810,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3180], "a": 1 }, + { "px": [828,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3181], "a": 1 }, + { "px": [846,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3182], "a": 1 }, + { "px": [864,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3183], "a": 1 }, + { "px": [882,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3184], "a": 1 }, + { "px": [900,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3185], "a": 1 }, + { "px": [918,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3186], "a": 1 }, + { "px": [936,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3187], "a": 1 }, + { "px": [954,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3188], "a": 1 }, + { "px": [972,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3189], "a": 1 }, + { "px": [990,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3190], "a": 1 }, + { "px": [1008,990], "src": [36,108], "f": 0, "t": 122, "d": [63,3191], "a": 1 }, + { "px": [0,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3192], "a": 1 }, + { "px": [18,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3193], "a": 1 }, + { "px": [36,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3194], "a": 1 }, + { "px": [54,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3195], "a": 1 }, + { "px": [72,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3196], "a": 1 }, + { "px": [90,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3197], "a": 1 }, + { "px": [108,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3198], "a": 1 }, + { "px": [126,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3199], "a": 1 }, + { "px": [144,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3200], "a": 1 }, + { "px": [162,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3201], "a": 1 }, + { "px": [180,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3202], "a": 1 }, + { "px": [198,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3203], "a": 1 }, + { "px": [216,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3204], "a": 1 }, + { "px": [234,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3205], "a": 1 }, + { "px": [252,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3206], "a": 1 }, + { "px": [270,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3207], "a": 1 }, + { "px": [288,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3208], "a": 1 }, + { "px": [306,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3209], "a": 1 }, + { "px": [324,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3210], "a": 1 }, + { "px": [342,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3211], "a": 1 }, + { "px": [360,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3212], "a": 1 }, + { "px": [378,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3213], "a": 1 }, + { "px": [396,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3214], "a": 1 }, + { "px": [414,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3215], "a": 1 }, + { "px": [432,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3216], "a": 1 }, + { "px": [450,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3217], "a": 1 }, + { "px": [468,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3218], "a": 1 }, + { "px": [486,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3219], "a": 1 }, + { "px": [504,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3220], "a": 1 }, + { "px": [522,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3221], "a": 1 }, + { "px": [540,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3222], "a": 1 }, + { "px": [558,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3223], "a": 1 }, + { "px": [576,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3224], "a": 1 }, + { "px": [594,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3225], "a": 1 }, + { "px": [612,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3226], "a": 1 }, + { "px": [630,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3227], "a": 1 }, + { "px": [648,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3228], "a": 1 }, + { "px": [666,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3229], "a": 1 }, + { "px": [684,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3230], "a": 1 }, + { "px": [702,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3231], "a": 1 }, + { "px": [720,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3232], "a": 1 }, + { "px": [738,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3233], "a": 1 }, + { "px": [756,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3234], "a": 1 }, + { "px": [774,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3235], "a": 1 }, + { "px": [792,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3236], "a": 1 }, + { "px": [810,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3237], "a": 1 }, + { "px": [828,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3238], "a": 1 }, + { "px": [846,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3239], "a": 1 }, + { "px": [864,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3240], "a": 1 }, + { "px": [882,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3241], "a": 1 }, + { "px": [900,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3242], "a": 1 }, + { "px": [918,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3243], "a": 1 }, + { "px": [936,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3244], "a": 1 }, + { "px": [954,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3245], "a": 1 }, + { "px": [972,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3246], "a": 1 }, + { "px": [990,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3247], "a": 1 }, + { "px": [1008,1008], "src": [36,108], "f": 0, "t": 122, "d": [63,3248], "a": 1 }, + { "px": [1008,0], "src": [18,108], "f": 0, "t": 121, "d": [62,56], "a": 1 }, + { "px": [1008,18], "src": [18,108], "f": 0, "t": 121, "d": [62,113], "a": 1 }, + { "px": [1008,36], "src": [18,108], "f": 0, "t": 121, "d": [62,170], "a": 1 }, + { "px": [1008,54], "src": [18,108], "f": 0, "t": 121, "d": [62,227], "a": 1 }, + { "px": [1008,72], "src": [18,108], "f": 0, "t": 121, "d": [62,284], "a": 1 }, + { "px": [1008,90], "src": [18,108], "f": 0, "t": 121, "d": [62,341], "a": 1 }, + { "px": [1008,108], "src": [18,108], "f": 0, "t": 121, "d": [62,398], "a": 1 }, + { "px": [1008,126], "src": [18,108], "f": 0, "t": 121, "d": [62,455], "a": 1 }, + { "px": [1008,144], "src": [18,108], "f": 0, "t": 121, "d": [62,512], "a": 1 }, + { "px": [1008,162], "src": [18,108], "f": 0, "t": 121, "d": [62,569], "a": 1 }, + { "px": [1008,180], "src": [18,108], "f": 0, "t": 121, "d": [62,626], "a": 1 }, + { "px": [1008,216], "src": [18,108], "f": 0, "t": 121, "d": [62,740], "a": 1 }, + { "px": [1008,234], "src": [18,108], "f": 0, "t": 121, "d": [62,797], "a": 1 }, + { "px": [306,252], "src": [18,108], "f": 0, "t": 121, "d": [62,815], "a": 1 }, + { "px": [1008,252], "src": [18,108], "f": 0, "t": 121, "d": [62,854], "a": 1 }, + { "px": [306,270], "src": [18,108], "f": 0, "t": 121, "d": [62,872], "a": 1 }, + { "px": [1008,270], "src": [18,108], "f": 0, "t": 121, "d": [62,911], "a": 1 }, + { "px": [306,288], "src": [18,108], "f": 0, "t": 121, "d": [62,929], "a": 1 }, + { "px": [486,288], "src": [18,108], "f": 0, "t": 121, "d": [62,939], "a": 1 }, + { "px": [1008,288], "src": [18,108], "f": 0, "t": 121, "d": [62,968], "a": 1 }, + { "px": [486,306], "src": [18,108], "f": 0, "t": 121, "d": [62,996], "a": 1 }, + { "px": [1008,306], "src": [18,108], "f": 0, "t": 121, "d": [62,1025], "a": 1 }, + { "px": [1008,324], "src": [18,108], "f": 0, "t": 121, "d": [62,1082], "a": 1 }, + { "px": [1008,342], "src": [18,108], "f": 0, "t": 121, "d": [62,1139], "a": 1 }, + { "px": [1008,360], "src": [18,108], "f": 0, "t": 121, "d": [62,1196], "a": 1 }, + { "px": [1008,378], "src": [18,108], "f": 0, "t": 121, "d": [62,1253], "a": 1 }, + { "px": [1008,396], "src": [18,108], "f": 0, "t": 121, "d": [62,1310], "a": 1 }, + { "px": [1008,414], "src": [18,108], "f": 0, "t": 121, "d": [62,1367], "a": 1 }, + { "px": [1008,432], "src": [18,108], "f": 0, "t": 121, "d": [62,1424], "a": 1 }, + { "px": [1008,450], "src": [18,108], "f": 0, "t": 121, "d": [62,1481], "a": 1 }, + { "px": [1008,468], "src": [18,108], "f": 0, "t": 121, "d": [62,1538], "a": 1 }, + { "px": [1008,486], "src": [18,108], "f": 0, "t": 121, "d": [62,1595], "a": 1 }, + { "px": [1008,504], "src": [18,108], "f": 0, "t": 121, "d": [62,1652], "a": 1 }, + { "px": [1008,522], "src": [18,108], "f": 0, "t": 121, "d": [62,1709], "a": 1 }, + { "px": [1008,540], "src": [18,108], "f": 0, "t": 121, "d": [62,1766], "a": 1 }, + { "px": [630,558], "src": [18,108], "f": 0, "t": 121, "d": [62,1802], "a": 1 }, + { "px": [1008,558], "src": [18,108], "f": 0, "t": 121, "d": [62,1823], "a": 1 }, + { "px": [630,576], "src": [18,108], "f": 0, "t": 121, "d": [62,1859], "a": 1 }, + { "px": [1008,576], "src": [18,108], "f": 0, "t": 121, "d": [62,1880], "a": 1 }, + { "px": [1008,594], "src": [18,108], "f": 0, "t": 121, "d": [62,1937], "a": 1 }, + { "px": [1008,612], "src": [18,108], "f": 0, "t": 121, "d": [62,1994], "a": 1 }, + { "px": [1008,630], "src": [18,108], "f": 0, "t": 121, "d": [62,2051], "a": 1 }, + { "px": [1008,648], "src": [18,108], "f": 0, "t": 121, "d": [62,2108], "a": 1 }, + { "px": [1008,666], "src": [18,108], "f": 0, "t": 121, "d": [62,2165], "a": 1 }, + { "px": [1008,684], "src": [18,108], "f": 0, "t": 121, "d": [62,2222], "a": 1 }, + { "px": [1008,702], "src": [18,108], "f": 0, "t": 121, "d": [62,2279], "a": 1 }, + { "px": [1008,720], "src": [18,108], "f": 0, "t": 121, "d": [62,2336], "a": 1 }, + { "px": [1008,738], "src": [18,108], "f": 0, "t": 121, "d": [62,2393], "a": 1 }, + { "px": [1008,756], "src": [18,108], "f": 0, "t": 121, "d": [62,2450], "a": 1 }, + { "px": [1008,774], "src": [18,108], "f": 0, "t": 121, "d": [62,2507], "a": 1 }, + { "px": [1008,792], "src": [18,108], "f": 0, "t": 121, "d": [62,2564], "a": 1 }, + { "px": [1008,810], "src": [18,108], "f": 0, "t": 121, "d": [62,2621], "a": 1 }, + { "px": [1008,828], "src": [18,108], "f": 0, "t": 121, "d": [62,2678], "a": 1 }, + { "px": [1008,846], "src": [18,108], "f": 0, "t": 121, "d": [62,2735], "a": 1 }, + { "px": [1008,864], "src": [18,108], "f": 0, "t": 121, "d": [62,2792], "a": 1 }, + { "px": [1008,882], "src": [18,108], "f": 0, "t": 121, "d": [62,2849], "a": 1 }, + { "px": [1008,900], "src": [18,108], "f": 0, "t": 121, "d": [62,2906], "a": 1 }, + { "px": [1008,918], "src": [18,108], "f": 0, "t": 121, "d": [62,2963], "a": 1 }, + { "px": [1008,936], "src": [18,108], "f": 0, "t": 121, "d": [62,3020], "a": 1 }, + { "px": [18,90], "src": [36,126], "f": 0, "t": 142, "d": [61,286], "a": 1 }, + { "px": [36,90], "src": [36,126], "f": 0, "t": 142, "d": [61,287], "a": 1 }, + { "px": [54,90], "src": [36,126], "f": 0, "t": 142, "d": [61,288], "a": 1 }, + { "px": [72,90], "src": [36,126], "f": 0, "t": 142, "d": [61,289], "a": 1 }, + { "px": [342,252], "src": [36,126], "f": 0, "t": 142, "d": [61,817], "a": 1 }, + { "px": [360,252], "src": [36,126], "f": 0, "t": 142, "d": [61,818], "a": 1 }, + { "px": [378,252], "src": [36,126], "f": 0, "t": 142, "d": [61,819], "a": 1 }, + { "px": [396,252], "src": [36,126], "f": 0, "t": 142, "d": [61,820], "a": 1 }, + { "px": [414,252], "src": [36,126], "f": 0, "t": 142, "d": [61,821], "a": 1 }, + { "px": [450,270], "src": [36,126], "f": 0, "t": 142, "d": [61,880], "a": 1 }, + { "px": [468,270], "src": [36,126], "f": 0, "t": 142, "d": [61,881], "a": 1 }, + { "px": [324,306], "src": [36,126], "f": 0, "t": 142, "d": [61,987], "a": 1 }, + { "px": [522,306], "src": [36,126], "f": 0, "t": 142, "d": [61,998], "a": 1 }, + { "px": [540,306], "src": [36,126], "f": 0, "t": 142, "d": [61,999], "a": 1 }, + { "px": [342,396], "src": [36,126], "f": 0, "t": 142, "d": [61,1273], "a": 1 }, + { "px": [360,396], "src": [36,126], "f": 0, "t": 142, "d": [61,1274], "a": 1 }, + { "px": [378,396], "src": [36,126], "f": 0, "t": 142, "d": [61,1275], "a": 1 }, + { "px": [396,396], "src": [36,126], "f": 0, "t": 142, "d": [61,1276], "a": 1 }, + { "px": [414,396], "src": [36,126], "f": 0, "t": 142, "d": [61,1277], "a": 1 }, + { "px": [432,396], "src": [36,126], "f": 0, "t": 142, "d": [61,1278], "a": 1 }, + { "px": [450,396], "src": [36,126], "f": 0, "t": 142, "d": [61,1279], "a": 1 }, + { "px": [468,396], "src": [36,126], "f": 0, "t": 142, "d": [61,1280], "a": 1 }, + { "px": [486,396], "src": [36,126], "f": 0, "t": 142, "d": [61,1281], "a": 1 }, + { "px": [18,522], "src": [36,126], "f": 0, "t": 142, "d": [61,1654], "a": 1 }, + { "px": [36,522], "src": [36,126], "f": 0, "t": 142, "d": [61,1655], "a": 1 }, + { "px": [54,522], "src": [36,126], "f": 0, "t": 142, "d": [61,1656], "a": 1 }, + { "px": [72,522], "src": [36,126], "f": 0, "t": 142, "d": [61,1657], "a": 1 }, + { "px": [648,594], "src": [36,126], "f": 0, "t": 142, "d": [61,1917], "a": 1 }, + { "px": [666,594], "src": [36,126], "f": 0, "t": 142, "d": [61,1918], "a": 1 }, + { "px": [684,594], "src": [36,126], "f": 0, "t": 142, "d": [61,1919], "a": 1 }, + { "px": [702,594], "src": [36,126], "f": 0, "t": 142, "d": [61,1920], "a": 1 }, + { "px": [720,594], "src": [36,126], "f": 0, "t": 142, "d": [61,1921], "a": 1 }, + { "px": [738,594], "src": [36,126], "f": 0, "t": 142, "d": [61,1922], "a": 1 }, + { "px": [756,594], "src": [36,126], "f": 0, "t": 142, "d": [61,1923], "a": 1 }, + { "px": [774,594], "src": [36,126], "f": 0, "t": 142, "d": [61,1924], "a": 1 }, + { "px": [792,594], "src": [36,126], "f": 0, "t": 142, "d": [61,1925], "a": 1 }, + { "px": [108,846], "src": [36,126], "f": 0, "t": 142, "d": [61,2685], "a": 1 }, + { "px": [126,846], "src": [36,126], "f": 0, "t": 142, "d": [61,2686], "a": 1 }, + { "px": [144,846], "src": [36,126], "f": 0, "t": 142, "d": [61,2687], "a": 1 }, + { "px": [162,846], "src": [36,126], "f": 0, "t": 142, "d": [61,2688], "a": 1 }, + { "px": [180,846], "src": [36,126], "f": 0, "t": 142, "d": [61,2689], "a": 1 }, + { "px": [198,846], "src": [36,126], "f": 0, "t": 142, "d": [61,2690], "a": 1 }, + { "px": [774,846], "src": [36,126], "f": 0, "t": 142, "d": [61,2722], "a": 1 }, + { "px": [792,846], "src": [36,126], "f": 0, "t": 142, "d": [61,2723], "a": 1 }, + { "px": [810,846], "src": [36,126], "f": 0, "t": 142, "d": [61,2724], "a": 1 }, + { "px": [0,0], "src": [54,108], "f": 0, "t": 123, "d": [60,0], "a": 1 }, + { "px": [0,18], "src": [54,108], "f": 0, "t": 123, "d": [60,57], "a": 1 }, + { "px": [0,36], "src": [54,108], "f": 0, "t": 123, "d": [60,114], "a": 1 }, + { "px": [0,54], "src": [54,108], "f": 0, "t": 123, "d": [60,171], "a": 1 }, + { "px": [0,108], "src": [54,108], "f": 0, "t": 123, "d": [60,342], "a": 1 }, + { "px": [0,126], "src": [54,108], "f": 0, "t": 123, "d": [60,399], "a": 1 }, + { "px": [0,144], "src": [54,108], "f": 0, "t": 123, "d": [60,456], "a": 1 }, + { "px": [0,162], "src": [54,108], "f": 0, "t": 123, "d": [60,513], "a": 1 }, + { "px": [0,180], "src": [54,108], "f": 0, "t": 123, "d": [60,570], "a": 1 }, + { "px": [0,198], "src": [54,108], "f": 0, "t": 123, "d": [60,627], "a": 1 }, + { "px": [0,216], "src": [54,108], "f": 0, "t": 123, "d": [60,684], "a": 1 }, + { "px": [0,234], "src": [54,108], "f": 0, "t": 123, "d": [60,741], "a": 1 }, + { "px": [0,252], "src": [54,108], "f": 0, "t": 123, "d": [60,798], "a": 1 }, + { "px": [0,270], "src": [54,108], "f": 0, "t": 123, "d": [60,855], "a": 1 }, + { "px": [324,270], "src": [54,108], "f": 0, "t": 123, "d": [60,873], "a": 1 }, + { "px": [558,270], "src": [54,108], "f": 0, "t": 123, "d": [60,886], "a": 1 }, + { "px": [0,288], "src": [54,108], "f": 0, "t": 123, "d": [60,912], "a": 1 }, + { "px": [324,288], "src": [54,108], "f": 0, "t": 123, "d": [60,930], "a": 1 }, + { "px": [558,288], "src": [54,108], "f": 0, "t": 123, "d": [60,943], "a": 1 }, + { "px": [0,306], "src": [54,108], "f": 0, "t": 123, "d": [60,969], "a": 1 }, + { "px": [0,324], "src": [54,108], "f": 0, "t": 123, "d": [60,1026], "a": 1 }, + { "px": [504,324], "src": [54,108], "f": 0, "t": 123, "d": [60,1054], "a": 1 }, + { "px": [0,342], "src": [54,108], "f": 0, "t": 123, "d": [60,1083], "a": 1 }, + { "px": [504,342], "src": [54,108], "f": 0, "t": 123, "d": [60,1111], "a": 1 }, + { "px": [0,360], "src": [54,108], "f": 0, "t": 123, "d": [60,1140], "a": 1 }, + { "px": [504,360], "src": [54,108], "f": 0, "t": 123, "d": [60,1168], "a": 1 }, + { "px": [0,378], "src": [54,108], "f": 0, "t": 123, "d": [60,1197], "a": 1 }, + { "px": [504,378], "src": [54,108], "f": 0, "t": 123, "d": [60,1225], "a": 1 }, + { "px": [0,396], "src": [54,108], "f": 0, "t": 123, "d": [60,1254], "a": 1 }, + { "px": [0,414], "src": [54,108], "f": 0, "t": 123, "d": [60,1311], "a": 1 }, + { "px": [0,432], "src": [54,108], "f": 0, "t": 123, "d": [60,1368], "a": 1 }, + { "px": [0,450], "src": [54,108], "f": 0, "t": 123, "d": [60,1425], "a": 1 }, + { "px": [0,468], "src": [54,108], "f": 0, "t": 123, "d": [60,1482], "a": 1 }, + { "px": [0,486], "src": [54,108], "f": 0, "t": 123, "d": [60,1539], "a": 1 }, + { "px": [0,540], "src": [54,108], "f": 0, "t": 123, "d": [60,1710], "a": 1 }, + { "px": [0,558], "src": [54,108], "f": 0, "t": 123, "d": [60,1767], "a": 1 }, + { "px": [810,558], "src": [54,108], "f": 0, "t": 123, "d": [60,1812], "a": 1 }, + { "px": [0,576], "src": [54,108], "f": 0, "t": 123, "d": [60,1824], "a": 1 }, + { "px": [810,576], "src": [54,108], "f": 0, "t": 123, "d": [60,1869], "a": 1 }, + { "px": [0,594], "src": [54,108], "f": 0, "t": 123, "d": [60,1881], "a": 1 }, + { "px": [0,612], "src": [54,108], "f": 0, "t": 123, "d": [60,1938], "a": 1 }, + { "px": [0,630], "src": [54,108], "f": 0, "t": 123, "d": [60,1995], "a": 1 }, + { "px": [0,648], "src": [54,108], "f": 0, "t": 123, "d": [60,2052], "a": 1 }, + { "px": [0,666], "src": [54,108], "f": 0, "t": 123, "d": [60,2109], "a": 1 }, + { "px": [0,684], "src": [54,108], "f": 0, "t": 123, "d": [60,2166], "a": 1 }, + { "px": [0,702], "src": [54,108], "f": 0, "t": 123, "d": [60,2223], "a": 1 }, + { "px": [0,720], "src": [54,108], "f": 0, "t": 123, "d": [60,2280], "a": 1 }, + { "px": [0,738], "src": [54,108], "f": 0, "t": 123, "d": [60,2337], "a": 1 }, + { "px": [0,756], "src": [54,108], "f": 0, "t": 123, "d": [60,2394], "a": 1 }, + { "px": [0,774], "src": [54,108], "f": 0, "t": 123, "d": [60,2451], "a": 1 }, + { "px": [0,792], "src": [54,108], "f": 0, "t": 123, "d": [60,2508], "a": 1 }, + { "px": [0,810], "src": [54,108], "f": 0, "t": 123, "d": [60,2565], "a": 1 }, + { "px": [0,828], "src": [54,108], "f": 0, "t": 123, "d": [60,2622], "a": 1 }, + { "px": [0,846], "src": [54,108], "f": 0, "t": 123, "d": [60,2679], "a": 1 }, + { "px": [0,864], "src": [54,108], "f": 0, "t": 123, "d": [60,2736], "a": 1 }, + { "px": [0,882], "src": [54,108], "f": 0, "t": 123, "d": [60,2793], "a": 1 }, + { "px": [0,900], "src": [54,108], "f": 0, "t": 123, "d": [60,2850], "a": 1 }, + { "px": [0,918], "src": [54,108], "f": 0, "t": 123, "d": [60,2907], "a": 1 }, + { "px": [0,936], "src": [54,108], "f": 0, "t": 123, "d": [60,2964], "a": 1 }, + { "px": [18,72], "src": [36,18], "f": 0, "t": 22, "d": [59,229], "a": 1 }, + { "px": [36,72], "src": [36,18], "f": 0, "t": 22, "d": [59,230], "a": 1 }, + { "px": [54,72], "src": [36,18], "f": 0, "t": 22, "d": [59,231], "a": 1 }, + { "px": [72,72], "src": [36,18], "f": 0, "t": 22, "d": [59,232], "a": 1 }, + { "px": [306,234], "src": [36,18], "f": 0, "t": 22, "d": [59,758], "a": 1 }, + { "px": [324,234], "src": [36,18], "f": 0, "t": 22, "d": [59,759], "a": 1 }, + { "px": [342,234], "src": [36,18], "f": 0, "t": 22, "d": [59,760], "a": 1 }, + { "px": [360,234], "src": [36,18], "f": 0, "t": 22, "d": [59,761], "a": 1 }, + { "px": [378,234], "src": [36,18], "f": 0, "t": 22, "d": [59,762], "a": 1 }, + { "px": [396,234], "src": [36,18], "f": 0, "t": 22, "d": [59,763], "a": 1 }, + { "px": [414,234], "src": [36,18], "f": 0, "t": 22, "d": [59,764], "a": 1 }, + { "px": [432,234], "src": [36,18], "f": 0, "t": 22, "d": [59,765], "a": 1 }, + { "px": [450,234], "src": [36,18], "f": 0, "t": 22, "d": [59,766], "a": 1 }, + { "px": [468,234], "src": [36,18], "f": 0, "t": 22, "d": [59,767], "a": 1 }, + { "px": [486,234], "src": [36,18], "f": 0, "t": 22, "d": [59,768], "a": 1 }, + { "px": [522,252], "src": [36,18], "f": 0, "t": 22, "d": [59,827], "a": 1 }, + { "px": [540,252], "src": [36,18], "f": 0, "t": 22, "d": [59,828], "a": 1 }, + { "px": [558,252], "src": [36,18], "f": 0, "t": 22, "d": [59,829], "a": 1 }, + { "px": [450,342], "src": [36,18], "f": 0, "t": 22, "d": [59,1108], "a": 1 }, + { "px": [414,360], "src": [36,18], "f": 0, "t": 22, "d": [59,1163], "a": 1 }, + { "px": [360,378], "src": [36,18], "f": 0, "t": 22, "d": [59,1217], "a": 1 }, + { "px": [378,378], "src": [36,18], "f": 0, "t": 22, "d": [59,1218], "a": 1 }, + { "px": [18,504], "src": [36,18], "f": 0, "t": 22, "d": [59,1597], "a": 1 }, + { "px": [36,504], "src": [36,18], "f": 0, "t": 22, "d": [59,1598], "a": 1 }, + { "px": [54,504], "src": [36,18], "f": 0, "t": 22, "d": [59,1599], "a": 1 }, + { "px": [72,504], "src": [36,18], "f": 0, "t": 22, "d": [59,1600], "a": 1 }, + { "px": [90,504], "src": [36,18], "f": 0, "t": 22, "d": [59,1601], "a": 1 }, + { "px": [630,540], "src": [36,18], "f": 0, "t": 22, "d": [59,1745], "a": 1 }, + { "px": [648,540], "src": [36,18], "f": 0, "t": 22, "d": [59,1746], "a": 1 }, + { "px": [666,540], "src": [36,18], "f": 0, "t": 22, "d": [59,1747], "a": 1 }, + { "px": [684,540], "src": [36,18], "f": 0, "t": 22, "d": [59,1748], "a": 1 }, + { "px": [702,540], "src": [36,18], "f": 0, "t": 22, "d": [59,1749], "a": 1 }, + { "px": [720,540], "src": [36,18], "f": 0, "t": 22, "d": [59,1750], "a": 1 }, + { "px": [738,540], "src": [36,18], "f": 0, "t": 22, "d": [59,1751], "a": 1 }, + { "px": [756,540], "src": [36,18], "f": 0, "t": 22, "d": [59,1752], "a": 1 }, + { "px": [774,540], "src": [36,18], "f": 0, "t": 22, "d": [59,1753], "a": 1 }, + { "px": [792,540], "src": [36,18], "f": 0, "t": 22, "d": [59,1754], "a": 1 }, + { "px": [108,828], "src": [36,18], "f": 0, "t": 22, "d": [59,2628], "a": 1 }, + { "px": [126,828], "src": [36,18], "f": 0, "t": 22, "d": [59,2629], "a": 1 }, + { "px": [144,828], "src": [36,18], "f": 0, "t": 22, "d": [59,2630], "a": 1 }, + { "px": [162,828], "src": [36,18], "f": 0, "t": 22, "d": [59,2631], "a": 1 }, + { "px": [180,828], "src": [36,18], "f": 0, "t": 22, "d": [59,2632], "a": 1 }, + { "px": [198,828], "src": [36,18], "f": 0, "t": 22, "d": [59,2633], "a": 1 }, + { "px": [774,828], "src": [36,18], "f": 0, "t": 22, "d": [59,2665], "a": 1 }, + { "px": [792,828], "src": [36,18], "f": 0, "t": 22, "d": [59,2666], "a": 1 }, + { "px": [810,828], "src": [36,18], "f": 0, "t": 22, "d": [59,2667], "a": 1 }, + { "px": [18,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3022], "a": 1 }, + { "px": [36,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3023], "a": 1 }, + { "px": [54,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3024], "a": 1 }, + { "px": [72,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3025], "a": 1 }, + { "px": [90,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3026], "a": 1 }, + { "px": [108,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3027], "a": 1 }, + { "px": [126,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3028], "a": 1 }, + { "px": [144,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3029], "a": 1 }, + { "px": [162,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3030], "a": 1 }, + { "px": [180,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3031], "a": 1 }, + { "px": [198,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3032], "a": 1 }, + { "px": [216,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3033], "a": 1 }, + { "px": [234,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3034], "a": 1 }, + { "px": [252,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3035], "a": 1 }, + { "px": [270,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3036], "a": 1 }, + { "px": [288,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3037], "a": 1 }, + { "px": [306,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3038], "a": 1 }, + { "px": [324,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3039], "a": 1 }, + { "px": [342,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3040], "a": 1 }, + { "px": [360,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3041], "a": 1 }, + { "px": [378,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3042], "a": 1 }, + { "px": [396,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3043], "a": 1 }, + { "px": [414,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3044], "a": 1 }, + { "px": [432,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3045], "a": 1 }, + { "px": [450,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3046], "a": 1 }, + { "px": [468,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3047], "a": 1 }, + { "px": [486,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3048], "a": 1 }, + { "px": [504,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3049], "a": 1 }, + { "px": [522,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3050], "a": 1 }, + { "px": [540,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3051], "a": 1 }, + { "px": [558,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3052], "a": 1 }, + { "px": [576,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3053], "a": 1 }, + { "px": [594,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3054], "a": 1 }, + { "px": [612,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3055], "a": 1 }, + { "px": [630,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3056], "a": 1 }, + { "px": [648,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3057], "a": 1 }, + { "px": [666,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3058], "a": 1 }, + { "px": [684,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3059], "a": 1 }, + { "px": [702,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3060], "a": 1 }, + { "px": [720,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3061], "a": 1 }, + { "px": [738,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3062], "a": 1 }, + { "px": [756,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3063], "a": 1 }, + { "px": [774,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3064], "a": 1 }, + { "px": [792,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3065], "a": 1 }, + { "px": [810,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3066], "a": 1 }, + { "px": [828,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3067], "a": 1 }, + { "px": [846,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3068], "a": 1 }, + { "px": [864,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3069], "a": 1 }, + { "px": [882,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3070], "a": 1 }, + { "px": [900,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3071], "a": 1 }, + { "px": [918,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3072], "a": 1 }, + { "px": [936,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3073], "a": 1 }, + { "px": [954,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3074], "a": 1 }, + { "px": [972,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3075], "a": 1 }, + { "px": [990,954], "src": [36,18], "f": 0, "t": 22, "d": [59,3076], "a": 1 }, + { "px": [432,270], "src": [18,126], "f": 0, "t": 141, "d": [58,879], "a": 1 }, + { "px": [306,306], "src": [18,126], "f": 0, "t": 141, "d": [58,986], "a": 1 }, + { "px": [630,594], "src": [18,126], "f": 0, "t": 141, "d": [58,1916], "a": 1 }, + { "px": [90,846], "src": [18,126], "f": 0, "t": 141, "d": [58,2684], "a": 1 }, + { "px": [756,846], "src": [18,126], "f": 0, "t": 141, "d": [58,2721], "a": 1 }, + { "px": [90,90], "src": [54,126], "f": 0, "t": 143, "d": [57,290], "a": 1 }, + { "px": [558,306], "src": [54,126], "f": 0, "t": 143, "d": [57,1000], "a": 1 }, + { "px": [504,396], "src": [54,126], "f": 0, "t": 143, "d": [57,1282], "a": 1 }, + { "px": [90,522], "src": [54,126], "f": 0, "t": 143, "d": [57,1658], "a": 1 }, + { "px": [810,594], "src": [54,126], "f": 0, "t": 143, "d": [57,1926], "a": 1 }, + { "px": [216,846], "src": [54,126], "f": 0, "t": 143, "d": [57,2691], "a": 1 }, + { "px": [828,846], "src": [54,126], "f": 0, "t": 143, "d": [57,2725], "a": 1 }, + { "px": [90,72], "src": [54,18], "f": 0, "t": 23, "d": [56,233], "a": 1 }, + { "px": [504,234], "src": [54,18], "f": 0, "t": 23, "d": [56,769], "a": 1 }, + { "px": [810,540], "src": [54,18], "f": 0, "t": 23, "d": [56,1755], "a": 1 }, + { "px": [216,828], "src": [54,18], "f": 0, "t": 23, "d": [56,2634], "a": 1 }, + { "px": [828,828], "src": [54,18], "f": 0, "t": 23, "d": [56,2668], "a": 1 }, + { "px": [468,324], "src": [18,18], "f": 0, "t": 21, "d": [55,1052], "a": 1 }, + { "px": [432,342], "src": [18,18], "f": 0, "t": 21, "d": [55,1107], "a": 1 }, + { "px": [396,360], "src": [18,18], "f": 0, "t": 21, "d": [55,1162], "a": 1 }, + { "px": [342,378], "src": [18,18], "f": 0, "t": 21, "d": [55,1216], "a": 1 }, + { "px": [90,828], "src": [18,18], "f": 0, "t": 21, "d": [55,2627], "a": 1 }, + { "px": [756,828], "src": [18,18], "f": 0, "t": 21, "d": [55,2664], "a": 1 }, + { "px": [864,198], "src": [36,0], "f": 0, "t": 2, "d": [54,675], "a": 1 }, + { "px": [882,198], "src": [36,0], "f": 0, "t": 2, "d": [54,676], "a": 1 }, + { "px": [900,198], "src": [36,0], "f": 0, "t": 2, "d": [54,677], "a": 1 }, + { "px": [918,198], "src": [36,0], "f": 0, "t": 2, "d": [54,678], "a": 1 }, + { "px": [936,198], "src": [36,0], "f": 0, "t": 2, "d": [54,679], "a": 1 }, + { "px": [954,198], "src": [36,0], "f": 0, "t": 2, "d": [54,680], "a": 1 }, + { "px": [972,198], "src": [36,0], "f": 0, "t": 2, "d": [54,681], "a": 1 }, + { "px": [990,198], "src": [36,0], "f": 0, "t": 2, "d": [54,682], "a": 1 }, + { "px": [198,234], "src": [36,0], "f": 0, "t": 2, "d": [54,752], "a": 1 }, + { "px": [216,234], "src": [36,0], "f": 0, "t": 2, "d": [54,753], "a": 1 }, + { "px": [234,234], "src": [36,0], "f": 0, "t": 2, "d": [54,754], "a": 1 }, + { "px": [252,234], "src": [36,0], "f": 0, "t": 2, "d": [54,755], "a": 1 }, + { "px": [270,234], "src": [36,0], "f": 0, "t": 2, "d": [54,756], "a": 1 }, + { "px": [288,234], "src": [36,0], "f": 0, "t": 2, "d": [54,757], "a": 1 }, + { "px": [576,252], "src": [36,0], "f": 0, "t": 2, "d": [54,830], "a": 1 }, + { "px": [594,252], "src": [36,0], "f": 0, "t": 2, "d": [54,831], "a": 1 }, + { "px": [612,252], "src": [36,0], "f": 0, "t": 2, "d": [54,832], "a": 1 }, + { "px": [630,252], "src": [36,0], "f": 0, "t": 2, "d": [54,833], "a": 1 }, + { "px": [342,306], "src": [36,0], "f": 0, "t": 2, "d": [54,988], "a": 1 }, + { "px": [306,396], "src": [36,0], "f": 0, "t": 2, "d": [54,1271], "a": 1 }, + { "px": [324,396], "src": [36,0], "f": 0, "t": 2, "d": [54,1272], "a": 1 }, + { "px": [108,504], "src": [36,0], "f": 0, "t": 2, "d": [54,1602], "a": 1 }, + { "px": [126,504], "src": [36,0], "f": 0, "t": 2, "d": [54,1603], "a": 1 }, + { "px": [144,504], "src": [36,0], "f": 0, "t": 2, "d": [54,1604], "a": 1 }, + { "px": [162,504], "src": [36,0], "f": 0, "t": 2, "d": [54,1605], "a": 1 }, + { "px": [180,504], "src": [36,0], "f": 0, "t": 2, "d": [54,1606], "a": 1 }, + { "px": [558,540], "src": [36,0], "f": 0, "t": 2, "d": [54,1741], "a": 1 }, + { "px": [576,540], "src": [36,0], "f": 0, "t": 2, "d": [54,1742], "a": 1 }, + { "px": [594,540], "src": [36,0], "f": 0, "t": 2, "d": [54,1743], "a": 1 }, + { "px": [612,540], "src": [36,0], "f": 0, "t": 2, "d": [54,1744], "a": 1 }, + { "px": [630,702], "src": [36,0], "f": 0, "t": 2, "d": [54,2258], "a": 1 }, + { "px": [648,702], "src": [36,0], "f": 0, "t": 2, "d": [54,2259], "a": 1 }, + { "px": [702,774], "src": [36,0], "f": 0, "t": 2, "d": [54,2490], "a": 1 }, + { "px": [918,882], "src": [36,0], "f": 0, "t": 2, "d": [54,2844], "a": 1 }, + { "px": [936,882], "src": [36,0], "f": 0, "t": 2, "d": [54,2845], "a": 1 }, + { "px": [306,900], "src": [36,0], "f": 0, "t": 2, "d": [54,2867], "a": 1 }, + { "px": [324,900], "src": [36,0], "f": 0, "t": 2, "d": [54,2868], "a": 1 }, + { "px": [648,252], "src": [54,0], "f": 0, "t": 3, "d": [53,834], "a": 1 }, + { "px": [360,306], "src": [54,0], "f": 0, "t": 3, "d": [53,989], "a": 1 }, + { "px": [198,504], "src": [54,0], "f": 0, "t": 3, "d": [53,1607], "a": 1 }, + { "px": [666,702], "src": [54,0], "f": 0, "t": 3, "d": [53,2260], "a": 1 }, + { "px": [720,774], "src": [54,0], "f": 0, "t": 3, "d": [53,2491], "a": 1 }, + { "px": [954,882], "src": [54,0], "f": 0, "t": 3, "d": [53,2846], "a": 1 }, + { "px": [342,900], "src": [54,0], "f": 0, "t": 3, "d": [53,2869], "a": 1 }, + { "px": [846,198], "src": [18,0], "f": 0, "t": 1, "d": [52,674], "a": 1 }, + { "px": [180,234], "src": [18,0], "f": 0, "t": 1, "d": [52,751], "a": 1 }, + { "px": [288,396], "src": [18,0], "f": 0, "t": 1, "d": [52,1270], "a": 1 }, + { "px": [540,540], "src": [18,0], "f": 0, "t": 1, "d": [52,1740], "a": 1 }, + { "px": [612,702], "src": [18,0], "f": 0, "t": 1, "d": [52,2257], "a": 1 }, + { "px": [684,774], "src": [18,0], "f": 0, "t": 1, "d": [52,2489], "a": 1 }, + { "px": [900,882], "src": [18,0], "f": 0, "t": 1, "d": [52,2843], "a": 1 }, + { "px": [288,900], "src": [18,0], "f": 0, "t": 1, "d": [52,2866], "a": 1 }, + { "px": [738,144], "src": [252,126], "f": 0, "t": 154, "d": [43,497], "a": 1 }, + { "px": [756,144], "src": [252,126], "f": 0, "t": 154, "d": [43,498], "a": 1 }, + { "px": [360,540], "src": [252,126], "f": 0, "t": 154, "d": [43,1730], "a": 1 }, + { "px": [378,540], "src": [252,126], "f": 0, "t": 154, "d": [43,1731], "a": 1 }, + { "px": [396,540], "src": [252,126], "f": 0, "t": 154, "d": [43,1732], "a": 1 }, + { "px": [414,540], "src": [252,126], "f": 0, "t": 154, "d": [43,1733], "a": 1 }, + { "px": [270,576], "src": [252,126], "f": 0, "t": 154, "d": [43,1839], "a": 1 }, + { "px": [180,648], "src": [252,126], "f": 0, "t": 154, "d": [43,2062], "a": 1 }, + { "px": [198,648], "src": [252,126], "f": 0, "t": 154, "d": [43,2063], "a": 1 }, + { "px": [216,648], "src": [252,126], "f": 0, "t": 154, "d": [43,2064], "a": 1 }, + { "px": [900,666], "src": [252,126], "f": 0, "t": 154, "d": [43,2159], "a": 1 }, + { "px": [918,666], "src": [252,126], "f": 0, "t": 154, "d": [43,2160], "a": 1 }, + { "px": [936,666], "src": [252,126], "f": 0, "t": 154, "d": [43,2161], "a": 1 }, + { "px": [324,702], "src": [252,126], "f": 0, "t": 154, "d": [43,2241], "a": 1 }, + { "px": [342,702], "src": [252,126], "f": 0, "t": 154, "d": [43,2242], "a": 1 }, + { "px": [360,702], "src": [252,126], "f": 0, "t": 154, "d": [43,2243], "a": 1 }, + { "px": [774,144], "src": [270,126], "f": 0, "t": 155, "d": [42,499], "a": 1 }, + { "px": [432,540], "src": [270,126], "f": 0, "t": 155, "d": [42,1734], "a": 1 }, + { "px": [288,576], "src": [270,126], "f": 0, "t": 155, "d": [42,1840], "a": 1 }, + { "px": [234,648], "src": [270,126], "f": 0, "t": 155, "d": [42,2065], "a": 1 }, + { "px": [954,666], "src": [270,126], "f": 0, "t": 155, "d": [42,2162], "a": 1 }, + { "px": [378,702], "src": [270,126], "f": 0, "t": 155, "d": [42,2244], "a": 1 }, + { "px": [720,144], "src": [234,126], "f": 0, "t": 153, "d": [41,496], "a": 1 }, + { "px": [342,540], "src": [234,126], "f": 0, "t": 153, "d": [41,1729], "a": 1 }, + { "px": [252,576], "src": [234,126], "f": 0, "t": 153, "d": [41,1838], "a": 1 }, + { "px": [162,648], "src": [234,126], "f": 0, "t": 153, "d": [41,2061], "a": 1 }, + { "px": [882,666], "src": [234,126], "f": 0, "t": 153, "d": [41,2158], "a": 1 }, + { "px": [306,702], "src": [234,126], "f": 0, "t": 153, "d": [41,2240], "a": 1 }, + { "px": [684,198], "src": [288,126], "f": 0, "t": 156, "d": [40,665], "a": 1 }, + { "px": [252,414], "src": [288,126], "f": 0, "t": 156, "d": [40,1325], "a": 1 }, + { "px": [198,450], "src": [288,126], "f": 0, "t": 156, "d": [40,1436], "a": 1 }, + { "px": [252,756], "src": [288,126], "f": 0, "t": 156, "d": [40,2408], "a": 1 }, + { "px": [900,90], "src": [324,18], "f": 0, "t": 38, "d": [165,335], "a": 1 }, + { "px": [936,90], "src": [324,18], "f": 0, "t": 38, "d": [165,337], "a": 1 }, + { "px": [180,144], "src": [324,18], "f": 0, "t": 38, "d": [165,466], "a": 1 }, + { "px": [216,144], "src": [324,18], "f": 0, "t": 38, "d": [165,468], "a": 1 }, + { "px": [450,702], "src": [324,18], "f": 0, "t": 38, "d": [165,2248], "a": 1 }, + { "px": [468,702], "src": [324,18], "f": 0, "t": 38, "d": [165,2249], "a": 1 }, + { "px": [486,702], "src": [324,18], "f": 0, "t": 38, "d": [165,2250], "a": 1 }, + { "px": [504,702], "src": [324,18], "f": 0, "t": 38, "d": [165,2251], "a": 1 }, + { "px": [522,702], "src": [324,18], "f": 0, "t": 38, "d": [165,2252], "a": 1 }, + { "px": [540,702], "src": [324,18], "f": 0, "t": 38, "d": [165,2253], "a": 1 }, + { "px": [558,702], "src": [324,18], "f": 0, "t": 38, "d": [165,2254], "a": 1 }, + { "px": [450,720], "src": [324,18], "f": 0, "t": 38, "d": [165,2305], "a": 1 }, + { "px": [468,720], "src": [324,18], "f": 0, "t": 38, "d": [165,2306], "a": 1 }, + { "px": [486,720], "src": [324,18], "f": 0, "t": 38, "d": [165,2307], "a": 1 }, + { "px": [504,720], "src": [324,18], "f": 0, "t": 38, "d": [165,2308], "a": 1 }, + { "px": [522,720], "src": [324,18], "f": 0, "t": 38, "d": [165,2309], "a": 1 }, + { "px": [540,720], "src": [324,18], "f": 0, "t": 38, "d": [165,2310], "a": 1 }, + { "px": [558,720], "src": [324,18], "f": 0, "t": 38, "d": [165,2311], "a": 1 }, + { "px": [450,738], "src": [324,18], "f": 0, "t": 38, "d": [165,2362], "a": 1 }, + { "px": [468,738], "src": [324,18], "f": 0, "t": 38, "d": [165,2363], "a": 1 }, + { "px": [486,738], "src": [324,18], "f": 0, "t": 38, "d": [165,2364], "a": 1 }, + { "px": [504,738], "src": [324,18], "f": 0, "t": 38, "d": [165,2365], "a": 1 }, + { "px": [522,738], "src": [324,18], "f": 0, "t": 38, "d": [165,2366], "a": 1 }, + { "px": [540,738], "src": [324,18], "f": 0, "t": 38, "d": [165,2367], "a": 1 }, + { "px": [558,738], "src": [324,18], "f": 0, "t": 38, "d": [165,2368], "a": 1 }, + { "px": [450,756], "src": [324,18], "f": 0, "t": 38, "d": [165,2419], "a": 1 }, + { "px": [468,756], "src": [324,18], "f": 0, "t": 38, "d": [165,2420], "a": 1 }, + { "px": [486,756], "src": [324,18], "f": 0, "t": 38, "d": [165,2421], "a": 1 }, + { "px": [522,756], "src": [324,18], "f": 0, "t": 38, "d": [165,2423], "a": 1 }, + { "px": [540,756], "src": [324,18], "f": 0, "t": 38, "d": [165,2424], "a": 1 }, + { "px": [558,756], "src": [324,18], "f": 0, "t": 38, "d": [165,2425], "a": 1 }, + { "px": [882,90], "src": [306,18], "f": 0, "t": 37, "d": [164,334], "a": 1 }, + { "px": [162,144], "src": [306,18], "f": 0, "t": 37, "d": [164,465], "a": 1 }, + { "px": [432,702], "src": [306,18], "f": 0, "t": 37, "d": [164,2247], "a": 1 }, + { "px": [432,720], "src": [306,18], "f": 0, "t": 37, "d": [164,2304], "a": 1 }, + { "px": [432,738], "src": [306,18], "f": 0, "t": 37, "d": [164,2361], "a": 1 }, + { "px": [432,756], "src": [306,18], "f": 0, "t": 37, "d": [164,2418], "a": 1 }, + { "px": [450,774], "src": [324,36], "f": 0, "t": 58, "d": [163,2476], "a": 1 }, + { "px": [468,774], "src": [324,36], "f": 0, "t": 58, "d": [163,2477], "a": 1 }, + { "px": [540,774], "src": [324,36], "f": 0, "t": 58, "d": [163,2481], "a": 1 }, + { "px": [558,774], "src": [324,36], "f": 0, "t": 58, "d": [163,2482], "a": 1 }, + { "px": [954,90], "src": [342,18], "f": 0, "t": 39, "d": [162,338], "a": 1 }, + { "px": [234,144], "src": [342,18], "f": 0, "t": 39, "d": [162,469], "a": 1 }, + { "px": [576,702], "src": [342,18], "f": 0, "t": 39, "d": [162,2255], "a": 1 }, + { "px": [576,720], "src": [342,18], "f": 0, "t": 39, "d": [162,2312], "a": 1 }, + { "px": [576,738], "src": [342,18], "f": 0, "t": 39, "d": [162,2369], "a": 1 }, + { "px": [576,756], "src": [342,18], "f": 0, "t": 39, "d": [162,2426], "a": 1 }, + { "px": [900,72], "src": [324,0], "f": 0, "t": 18, "d": [161,278], "a": 1 }, + { "px": [918,72], "src": [324,0], "f": 0, "t": 18, "d": [161,279], "a": 1 }, + { "px": [936,72], "src": [324,0], "f": 0, "t": 18, "d": [161,280], "a": 1 }, + { "px": [180,126], "src": [324,0], "f": 0, "t": 18, "d": [161,409], "a": 1 }, + { "px": [198,126], "src": [324,0], "f": 0, "t": 18, "d": [161,410], "a": 1 }, + { "px": [216,126], "src": [324,0], "f": 0, "t": 18, "d": [161,411], "a": 1 }, + { "px": [450,684], "src": [324,0], "f": 0, "t": 18, "d": [161,2191], "a": 1 }, + { "px": [468,684], "src": [324,0], "f": 0, "t": 18, "d": [161,2192], "a": 1 }, + { "px": [486,684], "src": [324,0], "f": 0, "t": 18, "d": [161,2193], "a": 1 }, + { "px": [504,684], "src": [324,0], "f": 0, "t": 18, "d": [161,2194], "a": 1 }, + { "px": [522,684], "src": [324,0], "f": 0, "t": 18, "d": [161,2195], "a": 1 }, + { "px": [540,684], "src": [324,0], "f": 0, "t": 18, "d": [161,2196], "a": 1 }, + { "px": [558,684], "src": [324,0], "f": 0, "t": 18, "d": [161,2197], "a": 1 }, + { "px": [792,738], "src": [324,0], "f": 0, "t": 18, "d": [161,2381], "a": 1 }, + { "px": [882,108], "src": [306,36], "f": 0, "t": 57, "d": [160,391], "a": 1 }, + { "px": [162,162], "src": [306,36], "f": 0, "t": 57, "d": [160,522], "a": 1 }, + { "px": [774,756], "src": [306,36], "f": 0, "t": 57, "d": [160,2437], "a": 1 }, + { "px": [432,774], "src": [306,36], "f": 0, "t": 57, "d": [160,2475], "a": 1 }, + { "px": [954,108], "src": [342,36], "f": 0, "t": 59, "d": [159,395], "a": 1 }, + { "px": [234,162], "src": [342,36], "f": 0, "t": 59, "d": [159,526], "a": 1 }, + { "px": [810,756], "src": [342,36], "f": 0, "t": 59, "d": [159,2439], "a": 1 }, + { "px": [576,774], "src": [342,36], "f": 0, "t": 59, "d": [159,2483], "a": 1 }, + { "px": [954,72], "src": [342,0], "f": 0, "t": 19, "d": [158,281], "a": 1 }, + { "px": [234,126], "src": [342,0], "f": 0, "t": 19, "d": [158,412], "a": 1 }, + { "px": [324,162], "src": [342,0], "f": 0, "t": 19, "d": [158,531], "a": 1 }, + { "px": [576,684], "src": [342,0], "f": 0, "t": 19, "d": [158,2198], "a": 1 }, + { "px": [810,738], "src": [342,0], "f": 0, "t": 19, "d": [158,2382], "a": 1 }, + { "px": [882,72], "src": [306,0], "f": 0, "t": 17, "d": [157,277], "a": 1 }, + { "px": [162,126], "src": [306,0], "f": 0, "t": 17, "d": [157,408], "a": 1 }, + { "px": [288,162], "src": [306,0], "f": 0, "t": 17, "d": [157,529], "a": 1 }, + { "px": [432,684], "src": [306,0], "f": 0, "t": 17, "d": [157,2190], "a": 1 }, + { "px": [774,738], "src": [306,0], "f": 0, "t": 17, "d": [157,2380], "a": 1 }, + { "px": [738,342], "src": [324,54], "f": 0, "t": 78, "d": [153,1124], "a": 1 }, + { "px": [756,342], "src": [324,54], "f": 0, "t": 78, "d": [153,1125], "a": 1 }, + { "px": [774,342], "src": [324,54], "f": 0, "t": 78, "d": [153,1126], "a": 1 }, + { "px": [864,450], "src": [324,54], "f": 0, "t": 78, "d": [153,1473], "a": 1 }, + { "px": [882,450], "src": [324,54], "f": 0, "t": 78, "d": [153,1474], "a": 1 }, + { "px": [900,450], "src": [324,54], "f": 0, "t": 78, "d": [153,1475], "a": 1 }, + { "px": [918,450], "src": [324,54], "f": 0, "t": 78, "d": [153,1476], "a": 1 }, + { "px": [792,342], "src": [342,54], "f": 0, "t": 79, "d": [152,1127], "a": 1 }, + { "px": [936,450], "src": [342,54], "f": 0, "t": 79, "d": [152,1477], "a": 1 }, + { "px": [720,342], "src": [306,54], "f": 0, "t": 77, "d": [151,1123], "a": 1 }, + { "px": [846,450], "src": [306,54], "f": 0, "t": 77, "d": [151,1472], "a": 1 }, + { "px": [684,288], "src": [288,0], "f": 0, "t": 16, "d": [150,950], "a": 1 }, + { "px": [846,378], "src": [288,0], "f": 0, "t": 16, "d": [150,1244], "a": 1 }, + { "px": [774,486], "src": [288,0], "f": 0, "t": 16, "d": [150,1582], "a": 1 }, + { "px": [918,180], "src": [306,108], "f": 0, "t": 137, "d": [175,621], "a": 1 }, + { "px": [198,216], "src": [306,108], "f": 0, "t": 137, "d": [175,695], "a": 1 }, + { "px": [306,216], "src": [306,108], "f": 0, "t": 137, "d": [175,701], "a": 1 }, + { "px": [792,810], "src": [306,108], "f": 0, "t": 137, "d": [175,2609], "a": 1 }, + { "px": [504,936], "src": [306,108], "f": 0, "t": 137, "d": [175,2992], "a": 1 }, + { "px": [918,126], "src": [288,72], "f": 0, "t": 96, "d": [166,450], "a": 1 }, + { "px": [918,144], "src": [288,90], "f": 0, "t": 116, "d": [166,507], "a": 1 }, + { "px": [918,162], "src": [288,90], "f": 0, "t": 116, "d": [166,564], "a": 1 }, + { "px": [198,180], "src": [288,72], "f": 0, "t": 96, "d": [166,581], "a": 1 }, + { "px": [198,198], "src": [288,90], "f": 0, "t": 116, "d": [166,638], "a": 1 }, + { "px": [306,198], "src": [288,90], "f": 0, "t": 116, "d": [166,644], "a": 1 }, + { "px": [792,774], "src": [288,90], "f": 0, "t": 116, "d": [166,2495], "a": 1 }, + { "px": [504,792], "src": [288,90], "f": 0, "t": 116, "d": [166,2536], "a": 1 }, + { "px": [792,792], "src": [288,72], "f": 0, "t": 96, "d": [166,2552], "a": 1 }, + { "px": [504,810], "src": [288,72], "f": 0, "t": 96, "d": [166,2593], "a": 1 }, + { "px": [504,828], "src": [288,72], "f": 0, "t": 96, "d": [166,2650], "a": 1 }, + { "px": [504,846], "src": [288,90], "f": 0, "t": 116, "d": [166,2707], "a": 1 }, + { "px": [504,864], "src": [288,72], "f": 0, "t": 96, "d": [166,2764], "a": 1 }, + { "px": [504,882], "src": [288,72], "f": 0, "t": 96, "d": [166,2821], "a": 1 }, + { "px": [504,900], "src": [288,72], "f": 0, "t": 96, "d": [166,2878], "a": 1 }, + { "px": [504,918], "src": [288,72], "f": 0, "t": 96, "d": [166,2935], "a": 1 }, + { "px": [918,108], "src": [306,72], "f": 0, "t": 97, "d": [117,393], "a": 1 }, + { "px": [198,162], "src": [306,72], "f": 0, "t": 97, "d": [117,524], "a": 1 }, + { "px": [306,180], "src": [306,72], "f": 0, "t": 97, "d": [117,587], "a": 1 }, + { "px": [504,774], "src": [306,72], "f": 0, "t": 97, "d": [117,2479], "a": 1 }, + { "px": [306,162], "src": [324,0], "f": 0, "t": 18, "d": [174,530], "a": 1 }, + { "px": [918,90], "src": [324,18], "f": 0, "t": 38, "d": [173,336], "a": 1 }, + { "px": [198,144], "src": [324,18], "f": 0, "t": 38, "d": [173,467], "a": 1 }, + { "px": [504,756], "src": [324,18], "f": 0, "t": 38, "d": [173,2422], "a": 1 }, + { "px": [792,756], "src": [324,18], "f": 0, "t": 38, "d": [173,2438], "a": 1 }, + { "px": [324,180], "src": [342,36], "f": 0, "t": 59, "d": [171,588], "a": 1 }, + { "px": [936,108], "src": [324,36], "f": 0, "t": 58, "d": [170,394], "a": 1 }, + { "px": [216,162], "src": [324,36], "f": 0, "t": 58, "d": [170,525], "a": 1 }, + { "px": [522,774], "src": [324,36], "f": 0, "t": 58, "d": [170,2480], "a": 1 }, + { "px": [288,180], "src": [306,36], "f": 0, "t": 57, "d": [172,586], "a": 1 }, + { "px": [900,108], "src": [324,36], "f": 0, "t": 58, "d": [167,392], "a": 1 }, + { "px": [180,162], "src": [324,36], "f": 0, "t": 58, "d": [167,523], "a": 1 }, + { "px": [486,774], "src": [324,36], "f": 0, "t": 58, "d": [167,2478], "a": 1 } + ], + "seed": 2107805, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [] + }, + { + "__identifier": "Background", + "__type": "Tiles", + "__cWid": 43, + "__cHei": 43, + "__gridSize": 24, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 2, + "__tilesetRelPath": "../pixel_platformer/backgrounds.png", + "iid": "1196c220-d380-11f0-8c50-6362bd330b3b", + "levelId": 0, + "layerDefUid": 180, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 4198490, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [0,0], "src": [0,0], "f": 0, "t": 0, "d": [0], "a": 1 }, + { "px": [24,0], "src": [24,0], "f": 0, "t": 1, "d": [1], "a": 1 }, + { "px": [48,0], "src": [48,0], "f": 0, "t": 2, "d": [2], "a": 1 }, + { "px": [72,0], "src": [72,0], "f": 0, "t": 3, "d": [3], "a": 1 }, + { "px": [96,0], "src": [0,0], "f": 0, "t": 0, "d": [4], "a": 1 }, + { "px": [120,0], "src": [24,0], "f": 0, "t": 1, "d": [5], "a": 1 }, + { "px": [144,0], "src": [48,0], "f": 0, "t": 2, "d": [6], "a": 1 }, + { "px": [168,0], "src": [72,0], "f": 0, "t": 3, "d": [7], "a": 1 }, + { "px": [192,0], "src": [0,0], "f": 0, "t": 0, "d": [8], "a": 1 }, + { "px": [216,0], "src": [24,0], "f": 0, "t": 1, "d": [9], "a": 1 }, + { "px": [240,0], "src": [48,0], "f": 0, "t": 2, "d": [10], "a": 1 }, + { "px": [264,0], "src": [72,0], "f": 0, "t": 3, "d": [11], "a": 1 }, + { "px": [288,0], "src": [0,0], "f": 0, "t": 0, "d": [12], "a": 1 }, + { "px": [312,0], "src": [24,0], "f": 0, "t": 1, "d": [13], "a": 1 }, + { "px": [336,0], "src": [48,0], "f": 0, "t": 2, "d": [14], "a": 1 }, + { "px": [360,0], "src": [72,0], "f": 0, "t": 3, "d": [15], "a": 1 }, + { "px": [384,0], "src": [0,0], "f": 0, "t": 0, "d": [16], "a": 1 }, + { "px": [408,0], "src": [24,0], "f": 0, "t": 1, "d": [17], "a": 1 }, + { "px": [432,0], "src": [48,0], "f": 0, "t": 2, "d": [18], "a": 1 }, + { "px": [456,0], "src": [72,0], "f": 0, "t": 3, "d": [19], "a": 1 }, + { "px": [480,0], "src": [0,0], "f": 0, "t": 0, "d": [20], "a": 1 }, + { "px": [504,0], "src": [24,0], "f": 0, "t": 1, "d": [21], "a": 1 }, + { "px": [528,0], "src": [48,0], "f": 0, "t": 2, "d": [22], "a": 1 }, + { "px": [552,0], "src": [72,0], "f": 0, "t": 3, "d": [23], "a": 1 }, + { "px": [576,0], "src": [0,0], "f": 0, "t": 0, "d": [24], "a": 1 }, + { "px": [600,0], "src": [24,0], "f": 0, "t": 1, "d": [25], "a": 1 }, + { "px": [624,0], "src": [48,0], "f": 0, "t": 2, "d": [26], "a": 1 }, + { "px": [648,0], "src": [72,0], "f": 0, "t": 3, "d": [27], "a": 1 }, + { "px": [672,0], "src": [0,0], "f": 0, "t": 0, "d": [28], "a": 1 }, + { "px": [696,0], "src": [24,0], "f": 0, "t": 1, "d": [29], "a": 1 }, + { "px": [720,0], "src": [48,0], "f": 0, "t": 2, "d": [30], "a": 1 }, + { "px": [744,0], "src": [72,0], "f": 0, "t": 3, "d": [31], "a": 1 }, + { "px": [768,0], "src": [0,0], "f": 0, "t": 0, "d": [32], "a": 1 }, + { "px": [792,0], "src": [24,0], "f": 0, "t": 1, "d": [33], "a": 1 }, + { "px": [816,0], "src": [48,0], "f": 0, "t": 2, "d": [34], "a": 1 }, + { "px": [840,0], "src": [72,0], "f": 0, "t": 3, "d": [35], "a": 1 }, + { "px": [864,0], "src": [0,0], "f": 0, "t": 0, "d": [36], "a": 1 }, + { "px": [888,0], "src": [24,0], "f": 0, "t": 1, "d": [37], "a": 1 }, + { "px": [912,0], "src": [48,0], "f": 0, "t": 2, "d": [38], "a": 1 }, + { "px": [936,0], "src": [72,0], "f": 0, "t": 3, "d": [39], "a": 1 }, + { "px": [960,0], "src": [0,0], "f": 0, "t": 0, "d": [40], "a": 1 }, + { "px": [984,0], "src": [24,0], "f": 0, "t": 1, "d": [41], "a": 1 }, + { "px": [1008,0], "src": [48,0], "f": 0, "t": 2, "d": [42], "a": 1 }, + { "px": [0,24], "src": [0,0], "f": 0, "t": 0, "d": [43], "a": 1 }, + { "px": [24,24], "src": [24,0], "f": 0, "t": 1, "d": [44], "a": 1 }, + { "px": [48,24], "src": [48,0], "f": 0, "t": 2, "d": [45], "a": 1 }, + { "px": [72,24], "src": [72,0], "f": 0, "t": 3, "d": [46], "a": 1 }, + { "px": [96,24], "src": [0,0], "f": 0, "t": 0, "d": [47], "a": 1 }, + { "px": [120,24], "src": [24,0], "f": 0, "t": 1, "d": [48], "a": 1 }, + { "px": [144,24], "src": [48,0], "f": 0, "t": 2, "d": [49], "a": 1 }, + { "px": [168,24], "src": [72,0], "f": 0, "t": 3, "d": [50], "a": 1 }, + { "px": [192,24], "src": [0,0], "f": 0, "t": 0, "d": [51], "a": 1 }, + { "px": [216,24], "src": [24,0], "f": 0, "t": 1, "d": [52], "a": 1 }, + { "px": [240,24], "src": [48,0], "f": 0, "t": 2, "d": [53], "a": 1 }, + { "px": [264,24], "src": [72,0], "f": 0, "t": 3, "d": [54], "a": 1 }, + { "px": [288,24], "src": [0,0], "f": 0, "t": 0, "d": [55], "a": 1 }, + { "px": [312,24], "src": [24,0], "f": 0, "t": 1, "d": [56], "a": 1 }, + { "px": [336,24], "src": [48,0], "f": 0, "t": 2, "d": [57], "a": 1 }, + { "px": [360,24], "src": [72,0], "f": 0, "t": 3, "d": [58], "a": 1 }, + { "px": [384,24], "src": [0,0], "f": 0, "t": 0, "d": [59], "a": 1 }, + { "px": [408,24], "src": [24,0], "f": 0, "t": 1, "d": [60], "a": 1 }, + { "px": [432,24], "src": [48,0], "f": 0, "t": 2, "d": [61], "a": 1 }, + { "px": [456,24], "src": [72,0], "f": 0, "t": 3, "d": [62], "a": 1 }, + { "px": [480,24], "src": [0,0], "f": 0, "t": 0, "d": [63], "a": 1 }, + { "px": [504,24], "src": [24,0], "f": 0, "t": 1, "d": [64], "a": 1 }, + { "px": [528,24], "src": [48,0], "f": 0, "t": 2, "d": [65], "a": 1 }, + { "px": [552,24], "src": [72,0], "f": 0, "t": 3, "d": [66], "a": 1 }, + { "px": [576,24], "src": [0,0], "f": 0, "t": 0, "d": [67], "a": 1 }, + { "px": [600,24], "src": [24,0], "f": 0, "t": 1, "d": [68], "a": 1 }, + { "px": [624,24], "src": [48,0], "f": 0, "t": 2, "d": [69], "a": 1 }, + { "px": [648,24], "src": [72,0], "f": 0, "t": 3, "d": [70], "a": 1 }, + { "px": [672,24], "src": [0,0], "f": 0, "t": 0, "d": [71], "a": 1 }, + { "px": [696,24], "src": [24,0], "f": 0, "t": 1, "d": [72], "a": 1 }, + { "px": [720,24], "src": [48,0], "f": 0, "t": 2, "d": [73], "a": 1 }, + { "px": [744,24], "src": [72,0], "f": 0, "t": 3, "d": [74], "a": 1 }, + { "px": [768,24], "src": [0,0], "f": 0, "t": 0, "d": [75], "a": 1 }, + { "px": [792,24], "src": [24,0], "f": 0, "t": 1, "d": [76], "a": 1 }, + { "px": [816,24], "src": [48,0], "f": 0, "t": 2, "d": [77], "a": 1 }, + { "px": [840,24], "src": [72,0], "f": 0, "t": 3, "d": [78], "a": 1 }, + { "px": [864,24], "src": [0,0], "f": 0, "t": 0, "d": [79], "a": 1 }, + { "px": [888,24], "src": [24,0], "f": 0, "t": 1, "d": [80], "a": 1 }, + { "px": [912,24], "src": [48,0], "f": 0, "t": 2, "d": [81], "a": 1 }, + { "px": [936,24], "src": [72,0], "f": 0, "t": 3, "d": [82], "a": 1 }, + { "px": [960,24], "src": [0,0], "f": 0, "t": 0, "d": [83], "a": 1 }, + { "px": [984,24], "src": [24,0], "f": 0, "t": 1, "d": [84], "a": 1 }, + { "px": [1008,24], "src": [48,0], "f": 0, "t": 2, "d": [85], "a": 1 }, + { "px": [0,48], "src": [0,0], "f": 0, "t": 0, "d": [86], "a": 1 }, + { "px": [24,48], "src": [24,0], "f": 0, "t": 1, "d": [87], "a": 1 }, + { "px": [48,48], "src": [48,0], "f": 0, "t": 2, "d": [88], "a": 1 }, + { "px": [72,48], "src": [72,0], "f": 0, "t": 3, "d": [89], "a": 1 }, + { "px": [96,48], "src": [0,0], "f": 0, "t": 0, "d": [90], "a": 1 }, + { "px": [120,48], "src": [24,0], "f": 0, "t": 1, "d": [91], "a": 1 }, + { "px": [144,48], "src": [48,0], "f": 0, "t": 2, "d": [92], "a": 1 }, + { "px": [168,48], "src": [72,0], "f": 0, "t": 3, "d": [93], "a": 1 }, + { "px": [192,48], "src": [0,0], "f": 0, "t": 0, "d": [94], "a": 1 }, + { "px": [216,48], "src": [24,0], "f": 0, "t": 1, "d": [95], "a": 1 }, + { "px": [240,48], "src": [48,0], "f": 0, "t": 2, "d": [96], "a": 1 }, + { "px": [264,48], "src": [72,0], "f": 0, "t": 3, "d": [97], "a": 1 }, + { "px": [288,48], "src": [0,0], "f": 0, "t": 0, "d": [98], "a": 1 }, + { "px": [312,48], "src": [24,0], "f": 0, "t": 1, "d": [99], "a": 1 }, + { "px": [336,48], "src": [48,0], "f": 0, "t": 2, "d": [100], "a": 1 }, + { "px": [360,48], "src": [72,0], "f": 0, "t": 3, "d": [101], "a": 1 }, + { "px": [384,48], "src": [0,0], "f": 0, "t": 0, "d": [102], "a": 1 }, + { "px": [408,48], "src": [24,0], "f": 0, "t": 1, "d": [103], "a": 1 }, + { "px": [432,48], "src": [48,0], "f": 0, "t": 2, "d": [104], "a": 1 }, + { "px": [456,48], "src": [72,0], "f": 0, "t": 3, "d": [105], "a": 1 }, + { "px": [480,48], "src": [0,0], "f": 0, "t": 0, "d": [106], "a": 1 }, + { "px": [504,48], "src": [24,0], "f": 0, "t": 1, "d": [107], "a": 1 }, + { "px": [528,48], "src": [48,0], "f": 0, "t": 2, "d": [108], "a": 1 }, + { "px": [552,48], "src": [72,0], "f": 0, "t": 3, "d": [109], "a": 1 }, + { "px": [576,48], "src": [0,0], "f": 0, "t": 0, "d": [110], "a": 1 }, + { "px": [600,48], "src": [24,0], "f": 0, "t": 1, "d": [111], "a": 1 }, + { "px": [624,48], "src": [48,0], "f": 0, "t": 2, "d": [112], "a": 1 }, + { "px": [648,48], "src": [72,0], "f": 0, "t": 3, "d": [113], "a": 1 }, + { "px": [672,48], "src": [0,0], "f": 0, "t": 0, "d": [114], "a": 1 }, + { "px": [696,48], "src": [24,0], "f": 0, "t": 1, "d": [115], "a": 1 }, + { "px": [720,48], "src": [48,0], "f": 0, "t": 2, "d": [116], "a": 1 }, + { "px": [744,48], "src": [72,0], "f": 0, "t": 3, "d": [117], "a": 1 }, + { "px": [768,48], "src": [0,0], "f": 0, "t": 0, "d": [118], "a": 1 }, + { "px": [792,48], "src": [24,0], "f": 0, "t": 1, "d": [119], "a": 1 }, + { "px": [816,48], "src": [48,0], "f": 0, "t": 2, "d": [120], "a": 1 }, + { "px": [840,48], "src": [72,0], "f": 0, "t": 3, "d": [121], "a": 1 }, + { "px": [864,48], "src": [0,0], "f": 0, "t": 0, "d": [122], "a": 1 }, + { "px": [888,48], "src": [24,0], "f": 0, "t": 1, "d": [123], "a": 1 }, + { "px": [912,48], "src": [48,0], "f": 0, "t": 2, "d": [124], "a": 1 }, + { "px": [936,48], "src": [72,0], "f": 0, "t": 3, "d": [125], "a": 1 }, + { "px": [960,48], "src": [0,0], "f": 0, "t": 0, "d": [126], "a": 1 }, + { "px": [984,48], "src": [24,0], "f": 0, "t": 1, "d": [127], "a": 1 }, + { "px": [1008,48], "src": [48,0], "f": 0, "t": 2, "d": [128], "a": 1 }, + { "px": [0,72], "src": [0,0], "f": 0, "t": 0, "d": [129], "a": 1 }, + { "px": [24,72], "src": [24,0], "f": 0, "t": 1, "d": [130], "a": 1 }, + { "px": [48,72], "src": [48,0], "f": 0, "t": 2, "d": [131], "a": 1 }, + { "px": [72,72], "src": [72,0], "f": 0, "t": 3, "d": [132], "a": 1 }, + { "px": [96,72], "src": [0,0], "f": 0, "t": 0, "d": [133], "a": 1 }, + { "px": [120,72], "src": [24,0], "f": 0, "t": 1, "d": [134], "a": 1 }, + { "px": [144,72], "src": [48,0], "f": 0, "t": 2, "d": [135], "a": 1 }, + { "px": [168,72], "src": [72,0], "f": 0, "t": 3, "d": [136], "a": 1 }, + { "px": [192,72], "src": [0,0], "f": 0, "t": 0, "d": [137], "a": 1 }, + { "px": [216,72], "src": [24,0], "f": 0, "t": 1, "d": [138], "a": 1 }, + { "px": [240,72], "src": [48,0], "f": 0, "t": 2, "d": [139], "a": 1 }, + { "px": [264,72], "src": [72,0], "f": 0, "t": 3, "d": [140], "a": 1 }, + { "px": [288,72], "src": [0,0], "f": 0, "t": 0, "d": [141], "a": 1 }, + { "px": [312,72], "src": [24,0], "f": 0, "t": 1, "d": [142], "a": 1 }, + { "px": [336,72], "src": [48,0], "f": 0, "t": 2, "d": [143], "a": 1 }, + { "px": [360,72], "src": [72,0], "f": 0, "t": 3, "d": [144], "a": 1 }, + { "px": [384,72], "src": [0,0], "f": 0, "t": 0, "d": [145], "a": 1 }, + { "px": [408,72], "src": [24,0], "f": 0, "t": 1, "d": [146], "a": 1 }, + { "px": [432,72], "src": [48,0], "f": 0, "t": 2, "d": [147], "a": 1 }, + { "px": [456,72], "src": [72,0], "f": 0, "t": 3, "d": [148], "a": 1 }, + { "px": [480,72], "src": [0,0], "f": 0, "t": 0, "d": [149], "a": 1 }, + { "px": [504,72], "src": [24,0], "f": 0, "t": 1, "d": [150], "a": 1 }, + { "px": [528,72], "src": [48,0], "f": 0, "t": 2, "d": [151], "a": 1 }, + { "px": [552,72], "src": [72,0], "f": 0, "t": 3, "d": [152], "a": 1 }, + { "px": [576,72], "src": [0,0], "f": 0, "t": 0, "d": [153], "a": 1 }, + { "px": [600,72], "src": [24,0], "f": 0, "t": 1, "d": [154], "a": 1 }, + { "px": [624,72], "src": [48,0], "f": 0, "t": 2, "d": [155], "a": 1 }, + { "px": [648,72], "src": [72,0], "f": 0, "t": 3, "d": [156], "a": 1 }, + { "px": [672,72], "src": [0,0], "f": 0, "t": 0, "d": [157], "a": 1 }, + { "px": [696,72], "src": [24,0], "f": 0, "t": 1, "d": [158], "a": 1 }, + { "px": [720,72], "src": [48,0], "f": 0, "t": 2, "d": [159], "a": 1 }, + { "px": [744,72], "src": [72,0], "f": 0, "t": 3, "d": [160], "a": 1 }, + { "px": [768,72], "src": [0,0], "f": 0, "t": 0, "d": [161], "a": 1 }, + { "px": [792,72], "src": [24,0], "f": 0, "t": 1, "d": [162], "a": 1 }, + { "px": [816,72], "src": [48,0], "f": 0, "t": 2, "d": [163], "a": 1 }, + { "px": [840,72], "src": [72,0], "f": 0, "t": 3, "d": [164], "a": 1 }, + { "px": [864,72], "src": [0,0], "f": 0, "t": 0, "d": [165], "a": 1 }, + { "px": [888,72], "src": [24,0], "f": 0, "t": 1, "d": [166], "a": 1 }, + { "px": [912,72], "src": [48,0], "f": 0, "t": 2, "d": [167], "a": 1 }, + { "px": [936,72], "src": [72,0], "f": 0, "t": 3, "d": [168], "a": 1 }, + { "px": [960,72], "src": [0,0], "f": 0, "t": 0, "d": [169], "a": 1 }, + { "px": [984,72], "src": [24,0], "f": 0, "t": 1, "d": [170], "a": 1 }, + { "px": [1008,72], "src": [48,0], "f": 0, "t": 2, "d": [171], "a": 1 }, + { "px": [0,96], "src": [0,0], "f": 0, "t": 0, "d": [172], "a": 1 }, + { "px": [24,96], "src": [24,0], "f": 0, "t": 1, "d": [173], "a": 1 }, + { "px": [48,96], "src": [48,0], "f": 0, "t": 2, "d": [174], "a": 1 }, + { "px": [72,96], "src": [72,0], "f": 0, "t": 3, "d": [175], "a": 1 }, + { "px": [96,96], "src": [0,0], "f": 0, "t": 0, "d": [176], "a": 1 }, + { "px": [120,96], "src": [24,0], "f": 0, "t": 1, "d": [177], "a": 1 }, + { "px": [144,96], "src": [48,0], "f": 0, "t": 2, "d": [178], "a": 1 }, + { "px": [168,96], "src": [72,0], "f": 0, "t": 3, "d": [179], "a": 1 }, + { "px": [192,96], "src": [0,0], "f": 0, "t": 0, "d": [180], "a": 1 }, + { "px": [216,96], "src": [24,0], "f": 0, "t": 1, "d": [181], "a": 1 }, + { "px": [240,96], "src": [48,0], "f": 0, "t": 2, "d": [182], "a": 1 }, + { "px": [264,96], "src": [72,0], "f": 0, "t": 3, "d": [183], "a": 1 }, + { "px": [288,96], "src": [0,0], "f": 0, "t": 0, "d": [184], "a": 1 }, + { "px": [312,96], "src": [24,0], "f": 0, "t": 1, "d": [185], "a": 1 }, + { "px": [336,96], "src": [48,0], "f": 0, "t": 2, "d": [186], "a": 1 }, + { "px": [360,96], "src": [72,0], "f": 0, "t": 3, "d": [187], "a": 1 }, + { "px": [384,96], "src": [0,0], "f": 0, "t": 0, "d": [188], "a": 1 }, + { "px": [408,96], "src": [24,0], "f": 0, "t": 1, "d": [189], "a": 1 }, + { "px": [432,96], "src": [48,0], "f": 0, "t": 2, "d": [190], "a": 1 }, + { "px": [456,96], "src": [72,0], "f": 0, "t": 3, "d": [191], "a": 1 }, + { "px": [480,96], "src": [0,0], "f": 0, "t": 0, "d": [192], "a": 1 }, + { "px": [504,96], "src": [24,0], "f": 0, "t": 1, "d": [193], "a": 1 }, + { "px": [528,96], "src": [48,0], "f": 0, "t": 2, "d": [194], "a": 1 }, + { "px": [552,96], "src": [72,0], "f": 0, "t": 3, "d": [195], "a": 1 }, + { "px": [576,96], "src": [0,0], "f": 0, "t": 0, "d": [196], "a": 1 }, + { "px": [600,96], "src": [24,0], "f": 0, "t": 1, "d": [197], "a": 1 }, + { "px": [624,96], "src": [48,0], "f": 0, "t": 2, "d": [198], "a": 1 }, + { "px": [648,96], "src": [72,0], "f": 0, "t": 3, "d": [199], "a": 1 }, + { "px": [672,96], "src": [0,0], "f": 0, "t": 0, "d": [200], "a": 1 }, + { "px": [696,96], "src": [24,0], "f": 0, "t": 1, "d": [201], "a": 1 }, + { "px": [720,96], "src": [48,0], "f": 0, "t": 2, "d": [202], "a": 1 }, + { "px": [744,96], "src": [72,0], "f": 0, "t": 3, "d": [203], "a": 1 }, + { "px": [768,96], "src": [0,0], "f": 0, "t": 0, "d": [204], "a": 1 }, + { "px": [792,96], "src": [24,0], "f": 0, "t": 1, "d": [205], "a": 1 }, + { "px": [816,96], "src": [48,0], "f": 0, "t": 2, "d": [206], "a": 1 }, + { "px": [840,96], "src": [72,0], "f": 0, "t": 3, "d": [207], "a": 1 }, + { "px": [864,96], "src": [0,0], "f": 0, "t": 0, "d": [208], "a": 1 }, + { "px": [888,96], "src": [24,0], "f": 0, "t": 1, "d": [209], "a": 1 }, + { "px": [912,96], "src": [48,0], "f": 0, "t": 2, "d": [210], "a": 1 }, + { "px": [936,96], "src": [72,0], "f": 0, "t": 3, "d": [211], "a": 1 }, + { "px": [960,96], "src": [0,0], "f": 0, "t": 0, "d": [212], "a": 1 }, + { "px": [984,96], "src": [24,0], "f": 0, "t": 1, "d": [213], "a": 1 }, + { "px": [1008,96], "src": [48,0], "f": 0, "t": 2, "d": [214], "a": 1 }, + { "px": [0,120], "src": [0,0], "f": 0, "t": 0, "d": [215], "a": 1 }, + { "px": [24,120], "src": [24,0], "f": 0, "t": 1, "d": [216], "a": 1 }, + { "px": [48,120], "src": [48,0], "f": 0, "t": 2, "d": [217], "a": 1 }, + { "px": [72,120], "src": [72,0], "f": 0, "t": 3, "d": [218], "a": 1 }, + { "px": [96,120], "src": [0,0], "f": 0, "t": 0, "d": [219], "a": 1 }, + { "px": [120,120], "src": [24,0], "f": 0, "t": 1, "d": [220], "a": 1 }, + { "px": [144,120], "src": [48,0], "f": 0, "t": 2, "d": [221], "a": 1 }, + { "px": [168,120], "src": [72,0], "f": 0, "t": 3, "d": [222], "a": 1 }, + { "px": [192,120], "src": [0,0], "f": 0, "t": 0, "d": [223], "a": 1 }, + { "px": [216,120], "src": [24,0], "f": 0, "t": 1, "d": [224], "a": 1 }, + { "px": [240,120], "src": [48,0], "f": 0, "t": 2, "d": [225], "a": 1 }, + { "px": [264,120], "src": [72,0], "f": 0, "t": 3, "d": [226], "a": 1 }, + { "px": [288,120], "src": [0,0], "f": 0, "t": 0, "d": [227], "a": 1 }, + { "px": [312,120], "src": [24,0], "f": 0, "t": 1, "d": [228], "a": 1 }, + { "px": [336,120], "src": [48,0], "f": 0, "t": 2, "d": [229], "a": 1 }, + { "px": [360,120], "src": [72,0], "f": 0, "t": 3, "d": [230], "a": 1 }, + { "px": [384,120], "src": [0,0], "f": 0, "t": 0, "d": [231], "a": 1 }, + { "px": [408,120], "src": [24,0], "f": 0, "t": 1, "d": [232], "a": 1 }, + { "px": [432,120], "src": [48,0], "f": 0, "t": 2, "d": [233], "a": 1 }, + { "px": [456,120], "src": [72,0], "f": 0, "t": 3, "d": [234], "a": 1 }, + { "px": [480,120], "src": [0,0], "f": 0, "t": 0, "d": [235], "a": 1 }, + { "px": [504,120], "src": [24,0], "f": 0, "t": 1, "d": [236], "a": 1 }, + { "px": [528,120], "src": [48,0], "f": 0, "t": 2, "d": [237], "a": 1 }, + { "px": [552,120], "src": [72,0], "f": 0, "t": 3, "d": [238], "a": 1 }, + { "px": [576,120], "src": [0,0], "f": 0, "t": 0, "d": [239], "a": 1 }, + { "px": [600,120], "src": [24,0], "f": 0, "t": 1, "d": [240], "a": 1 }, + { "px": [624,120], "src": [48,0], "f": 0, "t": 2, "d": [241], "a": 1 }, + { "px": [648,120], "src": [72,0], "f": 0, "t": 3, "d": [242], "a": 1 }, + { "px": [672,120], "src": [0,0], "f": 0, "t": 0, "d": [243], "a": 1 }, + { "px": [696,120], "src": [24,0], "f": 0, "t": 1, "d": [244], "a": 1 }, + { "px": [720,120], "src": [48,0], "f": 0, "t": 2, "d": [245], "a": 1 }, + { "px": [744,120], "src": [72,0], "f": 0, "t": 3, "d": [246], "a": 1 }, + { "px": [768,120], "src": [0,0], "f": 0, "t": 0, "d": [247], "a": 1 }, + { "px": [792,120], "src": [24,0], "f": 0, "t": 1, "d": [248], "a": 1 }, + { "px": [816,120], "src": [48,0], "f": 0, "t": 2, "d": [249], "a": 1 }, + { "px": [840,120], "src": [72,0], "f": 0, "t": 3, "d": [250], "a": 1 }, + { "px": [864,120], "src": [0,0], "f": 0, "t": 0, "d": [251], "a": 1 }, + { "px": [888,120], "src": [24,0], "f": 0, "t": 1, "d": [252], "a": 1 }, + { "px": [912,120], "src": [48,0], "f": 0, "t": 2, "d": [253], "a": 1 }, + { "px": [936,120], "src": [72,0], "f": 0, "t": 3, "d": [254], "a": 1 }, + { "px": [960,120], "src": [0,0], "f": 0, "t": 0, "d": [255], "a": 1 }, + { "px": [984,120], "src": [24,0], "f": 0, "t": 1, "d": [256], "a": 1 }, + { "px": [1008,120], "src": [48,0], "f": 0, "t": 2, "d": [257], "a": 1 }, + { "px": [0,144], "src": [0,0], "f": 0, "t": 0, "d": [258], "a": 1 }, + { "px": [24,144], "src": [24,0], "f": 0, "t": 1, "d": [259], "a": 1 }, + { "px": [48,144], "src": [48,0], "f": 0, "t": 2, "d": [260], "a": 1 }, + { "px": [72,144], "src": [72,0], "f": 0, "t": 3, "d": [261], "a": 1 }, + { "px": [96,144], "src": [0,0], "f": 0, "t": 0, "d": [262], "a": 1 }, + { "px": [120,144], "src": [24,0], "f": 0, "t": 1, "d": [263], "a": 1 }, + { "px": [144,144], "src": [48,0], "f": 0, "t": 2, "d": [264], "a": 1 }, + { "px": [168,144], "src": [72,0], "f": 0, "t": 3, "d": [265], "a": 1 }, + { "px": [192,144], "src": [0,0], "f": 0, "t": 0, "d": [266], "a": 1 }, + { "px": [216,144], "src": [24,0], "f": 0, "t": 1, "d": [267], "a": 1 }, + { "px": [240,144], "src": [48,0], "f": 0, "t": 2, "d": [268], "a": 1 }, + { "px": [264,144], "src": [72,0], "f": 0, "t": 3, "d": [269], "a": 1 }, + { "px": [288,144], "src": [0,0], "f": 0, "t": 0, "d": [270], "a": 1 }, + { "px": [312,144], "src": [24,0], "f": 0, "t": 1, "d": [271], "a": 1 }, + { "px": [336,144], "src": [48,0], "f": 0, "t": 2, "d": [272], "a": 1 }, + { "px": [360,144], "src": [72,0], "f": 0, "t": 3, "d": [273], "a": 1 }, + { "px": [384,144], "src": [0,0], "f": 0, "t": 0, "d": [274], "a": 1 }, + { "px": [408,144], "src": [24,0], "f": 0, "t": 1, "d": [275], "a": 1 }, + { "px": [432,144], "src": [48,0], "f": 0, "t": 2, "d": [276], "a": 1 }, + { "px": [456,144], "src": [72,0], "f": 0, "t": 3, "d": [277], "a": 1 }, + { "px": [480,144], "src": [0,0], "f": 0, "t": 0, "d": [278], "a": 1 }, + { "px": [504,144], "src": [24,0], "f": 0, "t": 1, "d": [279], "a": 1 }, + { "px": [528,144], "src": [48,0], "f": 0, "t": 2, "d": [280], "a": 1 }, + { "px": [552,144], "src": [72,0], "f": 0, "t": 3, "d": [281], "a": 1 }, + { "px": [576,144], "src": [0,0], "f": 0, "t": 0, "d": [282], "a": 1 }, + { "px": [600,144], "src": [24,0], "f": 0, "t": 1, "d": [283], "a": 1 }, + { "px": [624,144], "src": [48,0], "f": 0, "t": 2, "d": [284], "a": 1 }, + { "px": [648,144], "src": [72,0], "f": 0, "t": 3, "d": [285], "a": 1 }, + { "px": [672,144], "src": [0,0], "f": 0, "t": 0, "d": [286], "a": 1 }, + { "px": [696,144], "src": [24,0], "f": 0, "t": 1, "d": [287], "a": 1 }, + { "px": [720,144], "src": [48,0], "f": 0, "t": 2, "d": [288], "a": 1 }, + { "px": [744,144], "src": [72,0], "f": 0, "t": 3, "d": [289], "a": 1 }, + { "px": [768,144], "src": [0,0], "f": 0, "t": 0, "d": [290], "a": 1 }, + { "px": [792,144], "src": [24,0], "f": 0, "t": 1, "d": [291], "a": 1 }, + { "px": [816,144], "src": [48,0], "f": 0, "t": 2, "d": [292], "a": 1 }, + { "px": [840,144], "src": [72,0], "f": 0, "t": 3, "d": [293], "a": 1 }, + { "px": [864,144], "src": [0,0], "f": 0, "t": 0, "d": [294], "a": 1 }, + { "px": [888,144], "src": [24,0], "f": 0, "t": 1, "d": [295], "a": 1 }, + { "px": [912,144], "src": [48,0], "f": 0, "t": 2, "d": [296], "a": 1 }, + { "px": [936,144], "src": [72,0], "f": 0, "t": 3, "d": [297], "a": 1 }, + { "px": [960,144], "src": [0,0], "f": 0, "t": 0, "d": [298], "a": 1 }, + { "px": [984,144], "src": [24,0], "f": 0, "t": 1, "d": [299], "a": 1 }, + { "px": [1008,144], "src": [48,0], "f": 0, "t": 2, "d": [300], "a": 1 }, + { "px": [0,168], "src": [0,0], "f": 0, "t": 0, "d": [301], "a": 1 }, + { "px": [24,168], "src": [24,0], "f": 0, "t": 1, "d": [302], "a": 1 }, + { "px": [48,168], "src": [48,0], "f": 0, "t": 2, "d": [303], "a": 1 }, + { "px": [72,168], "src": [72,0], "f": 0, "t": 3, "d": [304], "a": 1 }, + { "px": [96,168], "src": [0,0], "f": 0, "t": 0, "d": [305], "a": 1 }, + { "px": [120,168], "src": [24,0], "f": 0, "t": 1, "d": [306], "a": 1 }, + { "px": [144,168], "src": [48,0], "f": 0, "t": 2, "d": [307], "a": 1 }, + { "px": [168,168], "src": [72,0], "f": 0, "t": 3, "d": [308], "a": 1 }, + { "px": [192,168], "src": [0,0], "f": 0, "t": 0, "d": [309], "a": 1 }, + { "px": [216,168], "src": [24,0], "f": 0, "t": 1, "d": [310], "a": 1 }, + { "px": [240,168], "src": [48,0], "f": 0, "t": 2, "d": [311], "a": 1 }, + { "px": [264,168], "src": [72,0], "f": 0, "t": 3, "d": [312], "a": 1 }, + { "px": [288,168], "src": [0,0], "f": 0, "t": 0, "d": [313], "a": 1 }, + { "px": [312,168], "src": [24,0], "f": 0, "t": 1, "d": [314], "a": 1 }, + { "px": [336,168], "src": [48,0], "f": 0, "t": 2, "d": [315], "a": 1 }, + { "px": [360,168], "src": [72,0], "f": 0, "t": 3, "d": [316], "a": 1 }, + { "px": [384,168], "src": [0,0], "f": 0, "t": 0, "d": [317], "a": 1 }, + { "px": [408,168], "src": [24,0], "f": 0, "t": 1, "d": [318], "a": 1 }, + { "px": [432,168], "src": [48,0], "f": 0, "t": 2, "d": [319], "a": 1 }, + { "px": [456,168], "src": [72,0], "f": 0, "t": 3, "d": [320], "a": 1 }, + { "px": [480,168], "src": [0,0], "f": 0, "t": 0, "d": [321], "a": 1 }, + { "px": [504,168], "src": [24,0], "f": 0, "t": 1, "d": [322], "a": 1 }, + { "px": [528,168], "src": [48,0], "f": 0, "t": 2, "d": [323], "a": 1 }, + { "px": [552,168], "src": [72,0], "f": 0, "t": 3, "d": [324], "a": 1 }, + { "px": [576,168], "src": [0,0], "f": 0, "t": 0, "d": [325], "a": 1 }, + { "px": [600,168], "src": [24,0], "f": 0, "t": 1, "d": [326], "a": 1 }, + { "px": [624,168], "src": [48,0], "f": 0, "t": 2, "d": [327], "a": 1 }, + { "px": [648,168], "src": [72,0], "f": 0, "t": 3, "d": [328], "a": 1 }, + { "px": [672,168], "src": [0,0], "f": 0, "t": 0, "d": [329], "a": 1 }, + { "px": [696,168], "src": [24,0], "f": 0, "t": 1, "d": [330], "a": 1 }, + { "px": [720,168], "src": [48,0], "f": 0, "t": 2, "d": [331], "a": 1 }, + { "px": [744,168], "src": [72,0], "f": 0, "t": 3, "d": [332], "a": 1 }, + { "px": [768,168], "src": [0,0], "f": 0, "t": 0, "d": [333], "a": 1 }, + { "px": [792,168], "src": [24,0], "f": 0, "t": 1, "d": [334], "a": 1 }, + { "px": [816,168], "src": [48,0], "f": 0, "t": 2, "d": [335], "a": 1 }, + { "px": [840,168], "src": [72,0], "f": 0, "t": 3, "d": [336], "a": 1 }, + { "px": [864,168], "src": [0,0], "f": 0, "t": 0, "d": [337], "a": 1 }, + { "px": [888,168], "src": [24,0], "f": 0, "t": 1, "d": [338], "a": 1 }, + { "px": [912,168], "src": [48,0], "f": 0, "t": 2, "d": [339], "a": 1 }, + { "px": [936,168], "src": [72,0], "f": 0, "t": 3, "d": [340], "a": 1 }, + { "px": [960,168], "src": [0,0], "f": 0, "t": 0, "d": [341], "a": 1 }, + { "px": [984,168], "src": [24,0], "f": 0, "t": 1, "d": [342], "a": 1 }, + { "px": [1008,168], "src": [48,0], "f": 0, "t": 2, "d": [343], "a": 1 }, + { "px": [0,192], "src": [0,0], "f": 0, "t": 0, "d": [344], "a": 1 }, + { "px": [24,192], "src": [24,0], "f": 0, "t": 1, "d": [345], "a": 1 }, + { "px": [48,192], "src": [48,0], "f": 0, "t": 2, "d": [346], "a": 1 }, + { "px": [72,192], "src": [72,0], "f": 0, "t": 3, "d": [347], "a": 1 }, + { "px": [96,192], "src": [0,0], "f": 0, "t": 0, "d": [348], "a": 1 }, + { "px": [120,192], "src": [24,0], "f": 0, "t": 1, "d": [349], "a": 1 }, + { "px": [144,192], "src": [48,0], "f": 0, "t": 2, "d": [350], "a": 1 }, + { "px": [168,192], "src": [72,0], "f": 0, "t": 3, "d": [351], "a": 1 }, + { "px": [192,192], "src": [0,0], "f": 0, "t": 0, "d": [352], "a": 1 }, + { "px": [216,192], "src": [24,0], "f": 0, "t": 1, "d": [353], "a": 1 }, + { "px": [240,192], "src": [48,0], "f": 0, "t": 2, "d": [354], "a": 1 }, + { "px": [264,192], "src": [72,0], "f": 0, "t": 3, "d": [355], "a": 1 }, + { "px": [288,192], "src": [0,0], "f": 0, "t": 0, "d": [356], "a": 1 }, + { "px": [312,192], "src": [24,0], "f": 0, "t": 1, "d": [357], "a": 1 }, + { "px": [336,192], "src": [48,0], "f": 0, "t": 2, "d": [358], "a": 1 }, + { "px": [360,192], "src": [72,0], "f": 0, "t": 3, "d": [359], "a": 1 }, + { "px": [384,192], "src": [0,0], "f": 0, "t": 0, "d": [360], "a": 1 }, + { "px": [408,192], "src": [24,0], "f": 0, "t": 1, "d": [361], "a": 1 }, + { "px": [432,192], "src": [48,0], "f": 0, "t": 2, "d": [362], "a": 1 }, + { "px": [456,192], "src": [72,0], "f": 0, "t": 3, "d": [363], "a": 1 }, + { "px": [480,192], "src": [0,0], "f": 0, "t": 0, "d": [364], "a": 1 }, + { "px": [504,192], "src": [24,0], "f": 0, "t": 1, "d": [365], "a": 1 }, + { "px": [528,192], "src": [48,0], "f": 0, "t": 2, "d": [366], "a": 1 }, + { "px": [552,192], "src": [72,0], "f": 0, "t": 3, "d": [367], "a": 1 }, + { "px": [576,192], "src": [0,0], "f": 0, "t": 0, "d": [368], "a": 1 }, + { "px": [600,192], "src": [24,0], "f": 0, "t": 1, "d": [369], "a": 1 }, + { "px": [624,192], "src": [48,0], "f": 0, "t": 2, "d": [370], "a": 1 }, + { "px": [648,192], "src": [72,0], "f": 0, "t": 3, "d": [371], "a": 1 }, + { "px": [672,192], "src": [0,0], "f": 0, "t": 0, "d": [372], "a": 1 }, + { "px": [696,192], "src": [24,0], "f": 0, "t": 1, "d": [373], "a": 1 }, + { "px": [720,192], "src": [48,0], "f": 0, "t": 2, "d": [374], "a": 1 }, + { "px": [744,192], "src": [72,0], "f": 0, "t": 3, "d": [375], "a": 1 }, + { "px": [768,192], "src": [0,0], "f": 0, "t": 0, "d": [376], "a": 1 }, + { "px": [792,192], "src": [24,0], "f": 0, "t": 1, "d": [377], "a": 1 }, + { "px": [816,192], "src": [48,0], "f": 0, "t": 2, "d": [378], "a": 1 }, + { "px": [840,192], "src": [72,0], "f": 0, "t": 3, "d": [379], "a": 1 }, + { "px": [864,192], "src": [0,0], "f": 0, "t": 0, "d": [380], "a": 1 }, + { "px": [888,192], "src": [24,0], "f": 0, "t": 1, "d": [381], "a": 1 }, + { "px": [912,192], "src": [48,0], "f": 0, "t": 2, "d": [382], "a": 1 }, + { "px": [936,192], "src": [72,0], "f": 0, "t": 3, "d": [383], "a": 1 }, + { "px": [960,192], "src": [0,0], "f": 0, "t": 0, "d": [384], "a": 1 }, + { "px": [984,192], "src": [24,0], "f": 0, "t": 1, "d": [385], "a": 1 }, + { "px": [1008,192], "src": [48,0], "f": 0, "t": 2, "d": [386], "a": 1 }, + { "px": [0,216], "src": [0,0], "f": 0, "t": 0, "d": [387], "a": 1 }, + { "px": [24,216], "src": [24,0], "f": 0, "t": 1, "d": [388], "a": 1 }, + { "px": [48,216], "src": [48,0], "f": 0, "t": 2, "d": [389], "a": 1 }, + { "px": [72,216], "src": [72,0], "f": 0, "t": 3, "d": [390], "a": 1 }, + { "px": [96,216], "src": [0,0], "f": 0, "t": 0, "d": [391], "a": 1 }, + { "px": [120,216], "src": [24,0], "f": 0, "t": 1, "d": [392], "a": 1 }, + { "px": [144,216], "src": [48,0], "f": 0, "t": 2, "d": [393], "a": 1 }, + { "px": [168,216], "src": [72,0], "f": 0, "t": 3, "d": [394], "a": 1 }, + { "px": [192,216], "src": [0,0], "f": 0, "t": 0, "d": [395], "a": 1 }, + { "px": [216,216], "src": [24,0], "f": 0, "t": 1, "d": [396], "a": 1 }, + { "px": [240,216], "src": [48,0], "f": 0, "t": 2, "d": [397], "a": 1 }, + { "px": [264,216], "src": [72,0], "f": 0, "t": 3, "d": [398], "a": 1 }, + { "px": [288,216], "src": [0,0], "f": 0, "t": 0, "d": [399], "a": 1 }, + { "px": [312,216], "src": [24,0], "f": 0, "t": 1, "d": [400], "a": 1 }, + { "px": [336,216], "src": [48,0], "f": 0, "t": 2, "d": [401], "a": 1 }, + { "px": [360,216], "src": [72,0], "f": 0, "t": 3, "d": [402], "a": 1 }, + { "px": [384,216], "src": [0,0], "f": 0, "t": 0, "d": [403], "a": 1 }, + { "px": [408,216], "src": [24,0], "f": 0, "t": 1, "d": [404], "a": 1 }, + { "px": [432,216], "src": [48,0], "f": 0, "t": 2, "d": [405], "a": 1 }, + { "px": [456,216], "src": [72,0], "f": 0, "t": 3, "d": [406], "a": 1 }, + { "px": [480,216], "src": [0,0], "f": 0, "t": 0, "d": [407], "a": 1 }, + { "px": [504,216], "src": [24,0], "f": 0, "t": 1, "d": [408], "a": 1 }, + { "px": [528,216], "src": [48,0], "f": 0, "t": 2, "d": [409], "a": 1 }, + { "px": [552,216], "src": [72,0], "f": 0, "t": 3, "d": [410], "a": 1 }, + { "px": [576,216], "src": [0,0], "f": 0, "t": 0, "d": [411], "a": 1 }, + { "px": [600,216], "src": [24,0], "f": 0, "t": 1, "d": [412], "a": 1 }, + { "px": [624,216], "src": [48,0], "f": 0, "t": 2, "d": [413], "a": 1 }, + { "px": [648,216], "src": [72,0], "f": 0, "t": 3, "d": [414], "a": 1 }, + { "px": [672,216], "src": [0,0], "f": 0, "t": 0, "d": [415], "a": 1 }, + { "px": [696,216], "src": [24,0], "f": 0, "t": 1, "d": [416], "a": 1 }, + { "px": [720,216], "src": [48,0], "f": 0, "t": 2, "d": [417], "a": 1 }, + { "px": [744,216], "src": [72,0], "f": 0, "t": 3, "d": [418], "a": 1 }, + { "px": [768,216], "src": [0,0], "f": 0, "t": 0, "d": [419], "a": 1 }, + { "px": [792,216], "src": [24,0], "f": 0, "t": 1, "d": [420], "a": 1 }, + { "px": [816,216], "src": [48,0], "f": 0, "t": 2, "d": [421], "a": 1 }, + { "px": [840,216], "src": [72,0], "f": 0, "t": 3, "d": [422], "a": 1 }, + { "px": [864,216], "src": [0,0], "f": 0, "t": 0, "d": [423], "a": 1 }, + { "px": [888,216], "src": [24,0], "f": 0, "t": 1, "d": [424], "a": 1 }, + { "px": [912,216], "src": [48,0], "f": 0, "t": 2, "d": [425], "a": 1 }, + { "px": [936,216], "src": [72,0], "f": 0, "t": 3, "d": [426], "a": 1 }, + { "px": [960,216], "src": [0,0], "f": 0, "t": 0, "d": [427], "a": 1 }, + { "px": [984,216], "src": [24,0], "f": 0, "t": 1, "d": [428], "a": 1 }, + { "px": [1008,216], "src": [48,0], "f": 0, "t": 2, "d": [429], "a": 1 }, + { "px": [0,240], "src": [0,0], "f": 0, "t": 0, "d": [430], "a": 1 }, + { "px": [24,240], "src": [24,0], "f": 0, "t": 1, "d": [431], "a": 1 }, + { "px": [48,240], "src": [48,0], "f": 0, "t": 2, "d": [432], "a": 1 }, + { "px": [72,240], "src": [72,0], "f": 0, "t": 3, "d": [433], "a": 1 }, + { "px": [96,240], "src": [0,0], "f": 0, "t": 0, "d": [434], "a": 1 }, + { "px": [120,240], "src": [24,0], "f": 0, "t": 1, "d": [435], "a": 1 }, + { "px": [144,240], "src": [48,0], "f": 0, "t": 2, "d": [436], "a": 1 }, + { "px": [168,240], "src": [72,0], "f": 0, "t": 3, "d": [437], "a": 1 }, + { "px": [192,240], "src": [0,0], "f": 0, "t": 0, "d": [438], "a": 1 }, + { "px": [216,240], "src": [24,0], "f": 0, "t": 1, "d": [439], "a": 1 }, + { "px": [240,240], "src": [48,0], "f": 0, "t": 2, "d": [440], "a": 1 }, + { "px": [264,240], "src": [72,0], "f": 0, "t": 3, "d": [441], "a": 1 }, + { "px": [288,240], "src": [0,0], "f": 0, "t": 0, "d": [442], "a": 1 }, + { "px": [312,240], "src": [24,0], "f": 0, "t": 1, "d": [443], "a": 1 }, + { "px": [336,240], "src": [48,0], "f": 0, "t": 2, "d": [444], "a": 1 }, + { "px": [360,240], "src": [72,0], "f": 0, "t": 3, "d": [445], "a": 1 }, + { "px": [384,240], "src": [0,0], "f": 0, "t": 0, "d": [446], "a": 1 }, + { "px": [408,240], "src": [24,0], "f": 0, "t": 1, "d": [447], "a": 1 }, + { "px": [432,240], "src": [48,0], "f": 0, "t": 2, "d": [448], "a": 1 }, + { "px": [456,240], "src": [72,0], "f": 0, "t": 3, "d": [449], "a": 1 }, + { "px": [480,240], "src": [0,0], "f": 0, "t": 0, "d": [450], "a": 1 }, + { "px": [504,240], "src": [24,0], "f": 0, "t": 1, "d": [451], "a": 1 }, + { "px": [528,240], "src": [48,0], "f": 0, "t": 2, "d": [452], "a": 1 }, + { "px": [552,240], "src": [72,0], "f": 0, "t": 3, "d": [453], "a": 1 }, + { "px": [576,240], "src": [0,0], "f": 0, "t": 0, "d": [454], "a": 1 }, + { "px": [600,240], "src": [24,0], "f": 0, "t": 1, "d": [455], "a": 1 }, + { "px": [624,240], "src": [48,0], "f": 0, "t": 2, "d": [456], "a": 1 }, + { "px": [648,240], "src": [72,0], "f": 0, "t": 3, "d": [457], "a": 1 }, + { "px": [672,240], "src": [0,0], "f": 0, "t": 0, "d": [458], "a": 1 }, + { "px": [696,240], "src": [24,0], "f": 0, "t": 1, "d": [459], "a": 1 }, + { "px": [720,240], "src": [48,0], "f": 0, "t": 2, "d": [460], "a": 1 }, + { "px": [744,240], "src": [72,0], "f": 0, "t": 3, "d": [461], "a": 1 }, + { "px": [768,240], "src": [0,0], "f": 0, "t": 0, "d": [462], "a": 1 }, + { "px": [792,240], "src": [24,0], "f": 0, "t": 1, "d": [463], "a": 1 }, + { "px": [816,240], "src": [48,0], "f": 0, "t": 2, "d": [464], "a": 1 }, + { "px": [840,240], "src": [72,0], "f": 0, "t": 3, "d": [465], "a": 1 }, + { "px": [864,240], "src": [0,0], "f": 0, "t": 0, "d": [466], "a": 1 }, + { "px": [888,240], "src": [24,0], "f": 0, "t": 1, "d": [467], "a": 1 }, + { "px": [912,240], "src": [48,0], "f": 0, "t": 2, "d": [468], "a": 1 }, + { "px": [936,240], "src": [72,0], "f": 0, "t": 3, "d": [469], "a": 1 }, + { "px": [960,240], "src": [0,0], "f": 0, "t": 0, "d": [470], "a": 1 }, + { "px": [984,240], "src": [24,0], "f": 0, "t": 1, "d": [471], "a": 1 }, + { "px": [1008,240], "src": [48,0], "f": 0, "t": 2, "d": [472], "a": 1 }, + { "px": [0,264], "src": [0,0], "f": 0, "t": 0, "d": [473], "a": 1 }, + { "px": [24,264], "src": [24,0], "f": 0, "t": 1, "d": [474], "a": 1 }, + { "px": [48,264], "src": [48,0], "f": 0, "t": 2, "d": [475], "a": 1 }, + { "px": [72,264], "src": [72,0], "f": 0, "t": 3, "d": [476], "a": 1 }, + { "px": [96,264], "src": [0,0], "f": 0, "t": 0, "d": [477], "a": 1 }, + { "px": [120,264], "src": [24,0], "f": 0, "t": 1, "d": [478], "a": 1 }, + { "px": [144,264], "src": [48,0], "f": 0, "t": 2, "d": [479], "a": 1 }, + { "px": [168,264], "src": [72,0], "f": 0, "t": 3, "d": [480], "a": 1 }, + { "px": [192,264], "src": [0,0], "f": 0, "t": 0, "d": [481], "a": 1 }, + { "px": [216,264], "src": [24,0], "f": 0, "t": 1, "d": [482], "a": 1 }, + { "px": [240,264], "src": [48,0], "f": 0, "t": 2, "d": [483], "a": 1 }, + { "px": [264,264], "src": [72,0], "f": 0, "t": 3, "d": [484], "a": 1 }, + { "px": [288,264], "src": [0,0], "f": 0, "t": 0, "d": [485], "a": 1 }, + { "px": [312,264], "src": [24,0], "f": 0, "t": 1, "d": [486], "a": 1 }, + { "px": [336,264], "src": [48,0], "f": 0, "t": 2, "d": [487], "a": 1 }, + { "px": [360,264], "src": [72,0], "f": 0, "t": 3, "d": [488], "a": 1 }, + { "px": [384,264], "src": [0,0], "f": 0, "t": 0, "d": [489], "a": 1 }, + { "px": [408,264], "src": [24,0], "f": 0, "t": 1, "d": [490], "a": 1 }, + { "px": [432,264], "src": [48,0], "f": 0, "t": 2, "d": [491], "a": 1 }, + { "px": [456,264], "src": [72,0], "f": 0, "t": 3, "d": [492], "a": 1 }, + { "px": [480,264], "src": [0,0], "f": 0, "t": 0, "d": [493], "a": 1 }, + { "px": [504,264], "src": [24,0], "f": 0, "t": 1, "d": [494], "a": 1 }, + { "px": [528,264], "src": [48,0], "f": 0, "t": 2, "d": [495], "a": 1 }, + { "px": [552,264], "src": [72,0], "f": 0, "t": 3, "d": [496], "a": 1 }, + { "px": [576,264], "src": [0,0], "f": 0, "t": 0, "d": [497], "a": 1 }, + { "px": [600,264], "src": [24,0], "f": 0, "t": 1, "d": [498], "a": 1 }, + { "px": [624,264], "src": [48,0], "f": 0, "t": 2, "d": [499], "a": 1 }, + { "px": [648,264], "src": [72,0], "f": 0, "t": 3, "d": [500], "a": 1 }, + { "px": [672,264], "src": [0,0], "f": 0, "t": 0, "d": [501], "a": 1 }, + { "px": [696,264], "src": [24,0], "f": 0, "t": 1, "d": [502], "a": 1 }, + { "px": [720,264], "src": [48,0], "f": 0, "t": 2, "d": [503], "a": 1 }, + { "px": [744,264], "src": [72,0], "f": 0, "t": 3, "d": [504], "a": 1 }, + { "px": [768,264], "src": [0,0], "f": 0, "t": 0, "d": [505], "a": 1 }, + { "px": [792,264], "src": [24,0], "f": 0, "t": 1, "d": [506], "a": 1 }, + { "px": [816,264], "src": [48,0], "f": 0, "t": 2, "d": [507], "a": 1 }, + { "px": [840,264], "src": [72,0], "f": 0, "t": 3, "d": [508], "a": 1 }, + { "px": [864,264], "src": [0,0], "f": 0, "t": 0, "d": [509], "a": 1 }, + { "px": [888,264], "src": [24,0], "f": 0, "t": 1, "d": [510], "a": 1 }, + { "px": [912,264], "src": [48,0], "f": 0, "t": 2, "d": [511], "a": 1 }, + { "px": [936,264], "src": [72,0], "f": 0, "t": 3, "d": [512], "a": 1 }, + { "px": [960,264], "src": [0,0], "f": 0, "t": 0, "d": [513], "a": 1 }, + { "px": [984,264], "src": [24,0], "f": 0, "t": 1, "d": [514], "a": 1 }, + { "px": [1008,264], "src": [48,0], "f": 0, "t": 2, "d": [515], "a": 1 }, + { "px": [0,288], "src": [0,0], "f": 0, "t": 0, "d": [516], "a": 1 }, + { "px": [24,288], "src": [24,0], "f": 0, "t": 1, "d": [517], "a": 1 }, + { "px": [48,288], "src": [48,0], "f": 0, "t": 2, "d": [518], "a": 1 }, + { "px": [72,288], "src": [72,0], "f": 0, "t": 3, "d": [519], "a": 1 }, + { "px": [96,288], "src": [0,0], "f": 0, "t": 0, "d": [520], "a": 1 }, + { "px": [120,288], "src": [24,0], "f": 0, "t": 1, "d": [521], "a": 1 }, + { "px": [144,288], "src": [48,0], "f": 0, "t": 2, "d": [522], "a": 1 }, + { "px": [168,288], "src": [72,0], "f": 0, "t": 3, "d": [523], "a": 1 }, + { "px": [192,288], "src": [0,0], "f": 0, "t": 0, "d": [524], "a": 1 }, + { "px": [216,288], "src": [24,0], "f": 0, "t": 1, "d": [525], "a": 1 }, + { "px": [240,288], "src": [48,0], "f": 0, "t": 2, "d": [526], "a": 1 }, + { "px": [264,288], "src": [72,0], "f": 0, "t": 3, "d": [527], "a": 1 }, + { "px": [288,288], "src": [0,0], "f": 0, "t": 0, "d": [528], "a": 1 }, + { "px": [312,288], "src": [24,0], "f": 0, "t": 1, "d": [529], "a": 1 }, + { "px": [336,288], "src": [48,0], "f": 0, "t": 2, "d": [530], "a": 1 }, + { "px": [360,288], "src": [72,0], "f": 0, "t": 3, "d": [531], "a": 1 }, + { "px": [384,288], "src": [0,0], "f": 0, "t": 0, "d": [532], "a": 1 }, + { "px": [408,288], "src": [24,0], "f": 0, "t": 1, "d": [533], "a": 1 }, + { "px": [432,288], "src": [48,0], "f": 0, "t": 2, "d": [534], "a": 1 }, + { "px": [456,288], "src": [72,0], "f": 0, "t": 3, "d": [535], "a": 1 }, + { "px": [480,288], "src": [0,0], "f": 0, "t": 0, "d": [536], "a": 1 }, + { "px": [504,288], "src": [24,0], "f": 0, "t": 1, "d": [537], "a": 1 }, + { "px": [528,288], "src": [48,0], "f": 0, "t": 2, "d": [538], "a": 1 }, + { "px": [552,288], "src": [72,0], "f": 0, "t": 3, "d": [539], "a": 1 }, + { "px": [576,288], "src": [0,0], "f": 0, "t": 0, "d": [540], "a": 1 }, + { "px": [600,288], "src": [24,0], "f": 0, "t": 1, "d": [541], "a": 1 }, + { "px": [624,288], "src": [48,0], "f": 0, "t": 2, "d": [542], "a": 1 }, + { "px": [648,288], "src": [72,0], "f": 0, "t": 3, "d": [543], "a": 1 }, + { "px": [672,288], "src": [0,0], "f": 0, "t": 0, "d": [544], "a": 1 }, + { "px": [696,288], "src": [24,0], "f": 0, "t": 1, "d": [545], "a": 1 }, + { "px": [720,288], "src": [48,0], "f": 0, "t": 2, "d": [546], "a": 1 }, + { "px": [744,288], "src": [72,0], "f": 0, "t": 3, "d": [547], "a": 1 }, + { "px": [768,288], "src": [0,0], "f": 0, "t": 0, "d": [548], "a": 1 }, + { "px": [792,288], "src": [24,0], "f": 0, "t": 1, "d": [549], "a": 1 }, + { "px": [816,288], "src": [48,0], "f": 0, "t": 2, "d": [550], "a": 1 }, + { "px": [840,288], "src": [72,0], "f": 0, "t": 3, "d": [551], "a": 1 }, + { "px": [864,288], "src": [0,0], "f": 0, "t": 0, "d": [552], "a": 1 }, + { "px": [888,288], "src": [24,0], "f": 0, "t": 1, "d": [553], "a": 1 }, + { "px": [912,288], "src": [48,0], "f": 0, "t": 2, "d": [554], "a": 1 }, + { "px": [936,288], "src": [72,0], "f": 0, "t": 3, "d": [555], "a": 1 }, + { "px": [960,288], "src": [0,0], "f": 0, "t": 0, "d": [556], "a": 1 }, + { "px": [984,288], "src": [24,0], "f": 0, "t": 1, "d": [557], "a": 1 }, + { "px": [1008,288], "src": [48,0], "f": 0, "t": 2, "d": [558], "a": 1 }, + { "px": [0,312], "src": [0,0], "f": 0, "t": 0, "d": [559], "a": 1 }, + { "px": [24,312], "src": [24,0], "f": 0, "t": 1, "d": [560], "a": 1 }, + { "px": [48,312], "src": [48,0], "f": 0, "t": 2, "d": [561], "a": 1 }, + { "px": [72,312], "src": [72,0], "f": 0, "t": 3, "d": [562], "a": 1 }, + { "px": [96,312], "src": [0,0], "f": 0, "t": 0, "d": [563], "a": 1 }, + { "px": [120,312], "src": [24,0], "f": 0, "t": 1, "d": [564], "a": 1 }, + { "px": [144,312], "src": [48,0], "f": 0, "t": 2, "d": [565], "a": 1 }, + { "px": [168,312], "src": [72,0], "f": 0, "t": 3, "d": [566], "a": 1 }, + { "px": [192,312], "src": [0,0], "f": 0, "t": 0, "d": [567], "a": 1 }, + { "px": [216,312], "src": [24,0], "f": 0, "t": 1, "d": [568], "a": 1 }, + { "px": [240,312], "src": [48,0], "f": 0, "t": 2, "d": [569], "a": 1 }, + { "px": [264,312], "src": [72,0], "f": 0, "t": 3, "d": [570], "a": 1 }, + { "px": [288,312], "src": [0,0], "f": 0, "t": 0, "d": [571], "a": 1 }, + { "px": [312,312], "src": [24,0], "f": 0, "t": 1, "d": [572], "a": 1 }, + { "px": [336,312], "src": [48,0], "f": 0, "t": 2, "d": [573], "a": 1 }, + { "px": [360,312], "src": [72,0], "f": 0, "t": 3, "d": [574], "a": 1 }, + { "px": [384,312], "src": [0,0], "f": 0, "t": 0, "d": [575], "a": 1 }, + { "px": [408,312], "src": [24,0], "f": 0, "t": 1, "d": [576], "a": 1 }, + { "px": [432,312], "src": [48,0], "f": 0, "t": 2, "d": [577], "a": 1 }, + { "px": [456,312], "src": [72,0], "f": 0, "t": 3, "d": [578], "a": 1 }, + { "px": [480,312], "src": [0,0], "f": 0, "t": 0, "d": [579], "a": 1 }, + { "px": [504,312], "src": [24,0], "f": 0, "t": 1, "d": [580], "a": 1 }, + { "px": [528,312], "src": [48,0], "f": 0, "t": 2, "d": [581], "a": 1 }, + { "px": [552,312], "src": [72,0], "f": 0, "t": 3, "d": [582], "a": 1 }, + { "px": [576,312], "src": [0,0], "f": 0, "t": 0, "d": [583], "a": 1 }, + { "px": [600,312], "src": [24,0], "f": 0, "t": 1, "d": [584], "a": 1 }, + { "px": [624,312], "src": [48,0], "f": 0, "t": 2, "d": [585], "a": 1 }, + { "px": [648,312], "src": [72,0], "f": 0, "t": 3, "d": [586], "a": 1 }, + { "px": [672,312], "src": [0,0], "f": 0, "t": 0, "d": [587], "a": 1 }, + { "px": [696,312], "src": [24,0], "f": 0, "t": 1, "d": [588], "a": 1 }, + { "px": [720,312], "src": [48,0], "f": 0, "t": 2, "d": [589], "a": 1 }, + { "px": [744,312], "src": [72,0], "f": 0, "t": 3, "d": [590], "a": 1 }, + { "px": [768,312], "src": [0,0], "f": 0, "t": 0, "d": [591], "a": 1 }, + { "px": [792,312], "src": [24,0], "f": 0, "t": 1, "d": [592], "a": 1 }, + { "px": [816,312], "src": [48,0], "f": 0, "t": 2, "d": [593], "a": 1 }, + { "px": [840,312], "src": [72,0], "f": 0, "t": 3, "d": [594], "a": 1 }, + { "px": [864,312], "src": [0,0], "f": 0, "t": 0, "d": [595], "a": 1 }, + { "px": [888,312], "src": [24,0], "f": 0, "t": 1, "d": [596], "a": 1 }, + { "px": [912,312], "src": [48,0], "f": 0, "t": 2, "d": [597], "a": 1 }, + { "px": [936,312], "src": [72,0], "f": 0, "t": 3, "d": [598], "a": 1 }, + { "px": [960,312], "src": [0,0], "f": 0, "t": 0, "d": [599], "a": 1 }, + { "px": [984,312], "src": [24,0], "f": 0, "t": 1, "d": [600], "a": 1 }, + { "px": [1008,312], "src": [48,0], "f": 0, "t": 2, "d": [601], "a": 1 }, + { "px": [0,336], "src": [0,0], "f": 0, "t": 0, "d": [602], "a": 1 }, + { "px": [24,336], "src": [0,0], "f": 0, "t": 0, "d": [603], "a": 1 }, + { "px": [48,336], "src": [0,0], "f": 0, "t": 0, "d": [604], "a": 1 }, + { "px": [72,336], "src": [0,0], "f": 0, "t": 0, "d": [605], "a": 1 }, + { "px": [96,336], "src": [0,0], "f": 0, "t": 0, "d": [606], "a": 1 }, + { "px": [120,336], "src": [0,0], "f": 0, "t": 0, "d": [607], "a": 1 }, + { "px": [144,336], "src": [0,0], "f": 0, "t": 0, "d": [608], "a": 1 }, + { "px": [168,336], "src": [0,0], "f": 0, "t": 0, "d": [609], "a": 1 }, + { "px": [192,336], "src": [0,0], "f": 0, "t": 0, "d": [610], "a": 1 }, + { "px": [216,336], "src": [0,0], "f": 0, "t": 0, "d": [611], "a": 1 }, + { "px": [240,336], "src": [0,0], "f": 0, "t": 0, "d": [612], "a": 1 }, + { "px": [264,336], "src": [72,0], "f": 0, "t": 3, "d": [613], "a": 1 }, + { "px": [288,336], "src": [0,0], "f": 0, "t": 0, "d": [614], "a": 1 }, + { "px": [312,336], "src": [24,0], "f": 0, "t": 1, "d": [615], "a": 1 }, + { "px": [336,336], "src": [48,0], "f": 0, "t": 2, "d": [616], "a": 1 }, + { "px": [360,336], "src": [72,0], "f": 0, "t": 3, "d": [617], "a": 1 }, + { "px": [384,336], "src": [0,0], "f": 0, "t": 0, "d": [618], "a": 1 }, + { "px": [408,336], "src": [24,0], "f": 0, "t": 1, "d": [619], "a": 1 }, + { "px": [432,336], "src": [48,0], "f": 0, "t": 2, "d": [620], "a": 1 }, + { "px": [456,336], "src": [72,0], "f": 0, "t": 3, "d": [621], "a": 1 }, + { "px": [480,336], "src": [0,0], "f": 0, "t": 0, "d": [622], "a": 1 }, + { "px": [504,336], "src": [24,0], "f": 0, "t": 1, "d": [623], "a": 1 }, + { "px": [528,336], "src": [48,0], "f": 0, "t": 2, "d": [624], "a": 1 }, + { "px": [552,336], "src": [72,0], "f": 0, "t": 3, "d": [625], "a": 1 }, + { "px": [576,336], "src": [0,0], "f": 0, "t": 0, "d": [626], "a": 1 }, + { "px": [600,336], "src": [24,0], "f": 0, "t": 1, "d": [627], "a": 1 }, + { "px": [624,336], "src": [48,0], "f": 0, "t": 2, "d": [628], "a": 1 }, + { "px": [648,336], "src": [72,0], "f": 0, "t": 3, "d": [629], "a": 1 }, + { "px": [672,336], "src": [0,0], "f": 0, "t": 0, "d": [630], "a": 1 }, + { "px": [696,336], "src": [24,0], "f": 0, "t": 1, "d": [631], "a": 1 }, + { "px": [720,336], "src": [48,0], "f": 0, "t": 2, "d": [632], "a": 1 }, + { "px": [744,336], "src": [72,0], "f": 0, "t": 3, "d": [633], "a": 1 }, + { "px": [768,336], "src": [0,0], "f": 0, "t": 0, "d": [634], "a": 1 }, + { "px": [792,336], "src": [24,0], "f": 0, "t": 1, "d": [635], "a": 1 }, + { "px": [816,336], "src": [48,0], "f": 0, "t": 2, "d": [636], "a": 1 }, + { "px": [840,336], "src": [72,0], "f": 0, "t": 3, "d": [637], "a": 1 }, + { "px": [864,336], "src": [0,0], "f": 0, "t": 0, "d": [638], "a": 1 }, + { "px": [888,336], "src": [24,0], "f": 0, "t": 1, "d": [639], "a": 1 }, + { "px": [912,336], "src": [48,0], "f": 0, "t": 2, "d": [640], "a": 1 }, + { "px": [936,336], "src": [72,0], "f": 0, "t": 3, "d": [641], "a": 1 }, + { "px": [960,336], "src": [0,0], "f": 0, "t": 0, "d": [642], "a": 1 }, + { "px": [984,336], "src": [24,0], "f": 0, "t": 1, "d": [643], "a": 1 }, + { "px": [1008,336], "src": [48,0], "f": 0, "t": 2, "d": [644], "a": 1 }, + { "px": [0,360], "src": [0,0], "f": 0, "t": 0, "d": [645], "a": 1 }, + { "px": [24,360], "src": [0,0], "f": 0, "t": 0, "d": [646], "a": 1 }, + { "px": [48,360], "src": [0,0], "f": 0, "t": 0, "d": [647], "a": 1 }, + { "px": [72,360], "src": [0,0], "f": 0, "t": 0, "d": [648], "a": 1 }, + { "px": [96,360], "src": [0,0], "f": 0, "t": 0, "d": [649], "a": 1 }, + { "px": [120,360], "src": [0,0], "f": 0, "t": 0, "d": [650], "a": 1 }, + { "px": [144,360], "src": [0,0], "f": 0, "t": 0, "d": [651], "a": 1 }, + { "px": [168,360], "src": [0,0], "f": 0, "t": 0, "d": [652], "a": 1 }, + { "px": [192,360], "src": [0,0], "f": 0, "t": 0, "d": [653], "a": 1 }, + { "px": [216,360], "src": [0,0], "f": 0, "t": 0, "d": [654], "a": 1 }, + { "px": [240,360], "src": [0,0], "f": 0, "t": 0, "d": [655], "a": 1 }, + { "px": [264,360], "src": [0,0], "f": 0, "t": 0, "d": [656], "a": 1 }, + { "px": [288,360], "src": [0,0], "f": 0, "t": 0, "d": [657], "a": 1 }, + { "px": [312,360], "src": [0,0], "f": 0, "t": 0, "d": [658], "a": 1 }, + { "px": [336,360], "src": [0,0], "f": 0, "t": 0, "d": [659], "a": 1 }, + { "px": [360,360], "src": [0,0], "f": 0, "t": 0, "d": [660], "a": 1 }, + { "px": [384,360], "src": [0,0], "f": 0, "t": 0, "d": [661], "a": 1 }, + { "px": [408,360], "src": [0,0], "f": 0, "t": 0, "d": [662], "a": 1 }, + { "px": [432,360], "src": [0,0], "f": 0, "t": 0, "d": [663], "a": 1 }, + { "px": [456,360], "src": [0,0], "f": 0, "t": 0, "d": [664], "a": 1 }, + { "px": [480,360], "src": [0,0], "f": 0, "t": 0, "d": [665], "a": 1 }, + { "px": [504,360], "src": [0,0], "f": 0, "t": 0, "d": [666], "a": 1 }, + { "px": [528,360], "src": [0,0], "f": 0, "t": 0, "d": [667], "a": 1 }, + { "px": [552,360], "src": [0,0], "f": 0, "t": 0, "d": [668], "a": 1 }, + { "px": [576,360], "src": [0,0], "f": 0, "t": 0, "d": [669], "a": 1 }, + { "px": [600,360], "src": [0,0], "f": 0, "t": 0, "d": [670], "a": 1 }, + { "px": [624,360], "src": [0,0], "f": 0, "t": 0, "d": [671], "a": 1 }, + { "px": [648,360], "src": [0,0], "f": 0, "t": 0, "d": [672], "a": 1 }, + { "px": [672,360], "src": [0,0], "f": 0, "t": 0, "d": [673], "a": 1 }, + { "px": [696,360], "src": [0,0], "f": 0, "t": 0, "d": [674], "a": 1 }, + { "px": [720,360], "src": [0,0], "f": 0, "t": 0, "d": [675], "a": 1 }, + { "px": [744,360], "src": [0,0], "f": 0, "t": 0, "d": [676], "a": 1 }, + { "px": [768,360], "src": [0,0], "f": 0, "t": 0, "d": [677], "a": 1 }, + { "px": [792,360], "src": [0,0], "f": 0, "t": 0, "d": [678], "a": 1 }, + { "px": [816,360], "src": [0,0], "f": 0, "t": 0, "d": [679], "a": 1 }, + { "px": [840,360], "src": [0,0], "f": 0, "t": 0, "d": [680], "a": 1 }, + { "px": [864,360], "src": [0,0], "f": 0, "t": 0, "d": [681], "a": 1 }, + { "px": [888,360], "src": [0,0], "f": 0, "t": 0, "d": [682], "a": 1 }, + { "px": [912,360], "src": [0,0], "f": 0, "t": 0, "d": [683], "a": 1 }, + { "px": [936,360], "src": [0,0], "f": 0, "t": 0, "d": [684], "a": 1 }, + { "px": [960,360], "src": [0,0], "f": 0, "t": 0, "d": [685], "a": 1 }, + { "px": [984,360], "src": [0,0], "f": 0, "t": 0, "d": [686], "a": 1 }, + { "px": [1008,360], "src": [0,0], "f": 0, "t": 0, "d": [687], "a": 1 }, + { "px": [0,384], "src": [0,0], "f": 0, "t": 0, "d": [688], "a": 1 }, + { "px": [24,384], "src": [24,0], "f": 0, "t": 1, "d": [689], "a": 1 }, + { "px": [48,384], "src": [48,0], "f": 0, "t": 2, "d": [690], "a": 1 }, + { "px": [72,384], "src": [72,0], "f": 0, "t": 3, "d": [691], "a": 1 }, + { "px": [96,384], "src": [0,0], "f": 0, "t": 0, "d": [692], "a": 1 }, + { "px": [120,384], "src": [24,0], "f": 0, "t": 1, "d": [693], "a": 1 }, + { "px": [144,384], "src": [48,0], "f": 0, "t": 2, "d": [694], "a": 1 }, + { "px": [168,384], "src": [72,0], "f": 0, "t": 3, "d": [695], "a": 1 }, + { "px": [192,384], "src": [0,0], "f": 0, "t": 0, "d": [696], "a": 1 }, + { "px": [216,384], "src": [24,0], "f": 0, "t": 1, "d": [697], "a": 1 }, + { "px": [240,384], "src": [48,0], "f": 0, "t": 2, "d": [698], "a": 1 }, + { "px": [264,384], "src": [72,0], "f": 0, "t": 3, "d": [699], "a": 1 }, + { "px": [288,384], "src": [0,0], "f": 0, "t": 0, "d": [700], "a": 1 }, + { "px": [312,384], "src": [24,0], "f": 0, "t": 1, "d": [701], "a": 1 }, + { "px": [336,384], "src": [48,0], "f": 0, "t": 2, "d": [702], "a": 1 }, + { "px": [360,384], "src": [72,0], "f": 0, "t": 3, "d": [703], "a": 1 }, + { "px": [384,384], "src": [0,0], "f": 0, "t": 0, "d": [704], "a": 1 }, + { "px": [408,384], "src": [24,0], "f": 0, "t": 1, "d": [705], "a": 1 }, + { "px": [432,384], "src": [48,0], "f": 0, "t": 2, "d": [706], "a": 1 }, + { "px": [456,384], "src": [72,0], "f": 0, "t": 3, "d": [707], "a": 1 }, + { "px": [480,384], "src": [0,0], "f": 0, "t": 0, "d": [708], "a": 1 }, + { "px": [504,384], "src": [24,0], "f": 0, "t": 1, "d": [709], "a": 1 }, + { "px": [528,384], "src": [48,0], "f": 0, "t": 2, "d": [710], "a": 1 }, + { "px": [552,384], "src": [72,0], "f": 0, "t": 3, "d": [711], "a": 1 }, + { "px": [576,384], "src": [0,0], "f": 0, "t": 0, "d": [712], "a": 1 }, + { "px": [600,384], "src": [24,0], "f": 0, "t": 1, "d": [713], "a": 1 }, + { "px": [624,384], "src": [48,0], "f": 0, "t": 2, "d": [714], "a": 1 }, + { "px": [648,384], "src": [72,0], "f": 0, "t": 3, "d": [715], "a": 1 }, + { "px": [672,384], "src": [0,0], "f": 0, "t": 0, "d": [716], "a": 1 }, + { "px": [696,384], "src": [24,0], "f": 0, "t": 1, "d": [717], "a": 1 }, + { "px": [720,384], "src": [48,0], "f": 0, "t": 2, "d": [718], "a": 1 }, + { "px": [744,384], "src": [72,0], "f": 0, "t": 3, "d": [719], "a": 1 }, + { "px": [768,384], "src": [0,0], "f": 0, "t": 0, "d": [720], "a": 1 }, + { "px": [792,384], "src": [24,0], "f": 0, "t": 1, "d": [721], "a": 1 }, + { "px": [816,384], "src": [48,0], "f": 0, "t": 2, "d": [722], "a": 1 }, + { "px": [840,384], "src": [72,0], "f": 0, "t": 3, "d": [723], "a": 1 }, + { "px": [864,384], "src": [0,0], "f": 0, "t": 0, "d": [724], "a": 1 }, + { "px": [888,384], "src": [24,0], "f": 0, "t": 1, "d": [725], "a": 1 }, + { "px": [912,384], "src": [48,0], "f": 0, "t": 2, "d": [726], "a": 1 }, + { "px": [936,384], "src": [72,0], "f": 0, "t": 3, "d": [727], "a": 1 }, + { "px": [960,384], "src": [0,0], "f": 0, "t": 0, "d": [728], "a": 1 }, + { "px": [984,384], "src": [24,0], "f": 0, "t": 1, "d": [729], "a": 1 }, + { "px": [1008,384], "src": [48,0], "f": 0, "t": 2, "d": [730], "a": 1 }, + { "px": [0,408], "src": [0,0], "f": 0, "t": 0, "d": [731], "a": 1 }, + { "px": [24,408], "src": [24,0], "f": 0, "t": 1, "d": [732], "a": 1 }, + { "px": [48,408], "src": [48,0], "f": 0, "t": 2, "d": [733], "a": 1 }, + { "px": [72,408], "src": [72,0], "f": 0, "t": 3, "d": [734], "a": 1 }, + { "px": [96,408], "src": [0,0], "f": 0, "t": 0, "d": [735], "a": 1 }, + { "px": [120,408], "src": [24,0], "f": 0, "t": 1, "d": [736], "a": 1 }, + { "px": [144,408], "src": [48,0], "f": 0, "t": 2, "d": [737], "a": 1 }, + { "px": [168,408], "src": [72,0], "f": 0, "t": 3, "d": [738], "a": 1 }, + { "px": [192,408], "src": [0,0], "f": 0, "t": 0, "d": [739], "a": 1 }, + { "px": [216,408], "src": [24,0], "f": 0, "t": 1, "d": [740], "a": 1 }, + { "px": [240,408], "src": [48,0], "f": 0, "t": 2, "d": [741], "a": 1 }, + { "px": [264,408], "src": [72,0], "f": 0, "t": 3, "d": [742], "a": 1 }, + { "px": [288,408], "src": [0,0], "f": 0, "t": 0, "d": [743], "a": 1 }, + { "px": [312,408], "src": [24,0], "f": 0, "t": 1, "d": [744], "a": 1 }, + { "px": [336,408], "src": [48,0], "f": 0, "t": 2, "d": [745], "a": 1 }, + { "px": [360,408], "src": [72,0], "f": 0, "t": 3, "d": [746], "a": 1 }, + { "px": [384,408], "src": [0,0], "f": 0, "t": 0, "d": [747], "a": 1 }, + { "px": [408,408], "src": [24,0], "f": 0, "t": 1, "d": [748], "a": 1 }, + { "px": [432,408], "src": [48,0], "f": 0, "t": 2, "d": [749], "a": 1 }, + { "px": [456,408], "src": [72,0], "f": 0, "t": 3, "d": [750], "a": 1 }, + { "px": [480,408], "src": [0,0], "f": 0, "t": 0, "d": [751], "a": 1 }, + { "px": [504,408], "src": [24,0], "f": 0, "t": 1, "d": [752], "a": 1 }, + { "px": [528,408], "src": [48,0], "f": 0, "t": 2, "d": [753], "a": 1 }, + { "px": [552,408], "src": [72,0], "f": 0, "t": 3, "d": [754], "a": 1 }, + { "px": [576,408], "src": [0,0], "f": 0, "t": 0, "d": [755], "a": 1 }, + { "px": [600,408], "src": [24,0], "f": 0, "t": 1, "d": [756], "a": 1 }, + { "px": [624,408], "src": [48,0], "f": 0, "t": 2, "d": [757], "a": 1 }, + { "px": [648,408], "src": [72,0], "f": 0, "t": 3, "d": [758], "a": 1 }, + { "px": [672,408], "src": [0,0], "f": 0, "t": 0, "d": [759], "a": 1 }, + { "px": [696,408], "src": [24,0], "f": 0, "t": 1, "d": [760], "a": 1 }, + { "px": [720,408], "src": [48,0], "f": 0, "t": 2, "d": [761], "a": 1 }, + { "px": [744,408], "src": [72,0], "f": 0, "t": 3, "d": [762], "a": 1 }, + { "px": [768,408], "src": [0,0], "f": 0, "t": 0, "d": [763], "a": 1 }, + { "px": [792,408], "src": [24,0], "f": 0, "t": 1, "d": [764], "a": 1 }, + { "px": [816,408], "src": [48,0], "f": 0, "t": 2, "d": [765], "a": 1 }, + { "px": [840,408], "src": [72,0], "f": 0, "t": 3, "d": [766], "a": 1 }, + { "px": [864,408], "src": [0,0], "f": 0, "t": 0, "d": [767], "a": 1 }, + { "px": [888,408], "src": [24,0], "f": 0, "t": 1, "d": [768], "a": 1 }, + { "px": [912,408], "src": [48,0], "f": 0, "t": 2, "d": [769], "a": 1 }, + { "px": [936,408], "src": [72,0], "f": 0, "t": 3, "d": [770], "a": 1 }, + { "px": [960,408], "src": [0,0], "f": 0, "t": 0, "d": [771], "a": 1 }, + { "px": [984,408], "src": [24,0], "f": 0, "t": 1, "d": [772], "a": 1 }, + { "px": [1008,408], "src": [48,0], "f": 0, "t": 2, "d": [773], "a": 1 }, + { "px": [0,432], "src": [0,0], "f": 0, "t": 0, "d": [774], "a": 1 }, + { "px": [24,432], "src": [24,0], "f": 0, "t": 1, "d": [775], "a": 1 }, + { "px": [48,432], "src": [48,0], "f": 0, "t": 2, "d": [776], "a": 1 }, + { "px": [72,432], "src": [72,0], "f": 0, "t": 3, "d": [777], "a": 1 }, + { "px": [96,432], "src": [0,0], "f": 0, "t": 0, "d": [778], "a": 1 }, + { "px": [120,432], "src": [24,0], "f": 0, "t": 1, "d": [779], "a": 1 }, + { "px": [144,432], "src": [48,0], "f": 0, "t": 2, "d": [780], "a": 1 }, + { "px": [168,432], "src": [72,0], "f": 0, "t": 3, "d": [781], "a": 1 }, + { "px": [192,432], "src": [0,0], "f": 0, "t": 0, "d": [782], "a": 1 }, + { "px": [216,432], "src": [24,0], "f": 0, "t": 1, "d": [783], "a": 1 }, + { "px": [240,432], "src": [48,0], "f": 0, "t": 2, "d": [784], "a": 1 }, + { "px": [264,432], "src": [72,0], "f": 0, "t": 3, "d": [785], "a": 1 }, + { "px": [288,432], "src": [0,0], "f": 0, "t": 0, "d": [786], "a": 1 }, + { "px": [312,432], "src": [24,0], "f": 0, "t": 1, "d": [787], "a": 1 }, + { "px": [336,432], "src": [48,0], "f": 0, "t": 2, "d": [788], "a": 1 }, + { "px": [360,432], "src": [72,0], "f": 0, "t": 3, "d": [789], "a": 1 }, + { "px": [384,432], "src": [0,0], "f": 0, "t": 0, "d": [790], "a": 1 }, + { "px": [408,432], "src": [24,0], "f": 0, "t": 1, "d": [791], "a": 1 }, + { "px": [432,432], "src": [48,0], "f": 0, "t": 2, "d": [792], "a": 1 }, + { "px": [456,432], "src": [72,0], "f": 0, "t": 3, "d": [793], "a": 1 }, + { "px": [480,432], "src": [0,0], "f": 0, "t": 0, "d": [794], "a": 1 }, + { "px": [504,432], "src": [24,0], "f": 0, "t": 1, "d": [795], "a": 1 }, + { "px": [528,432], "src": [48,0], "f": 0, "t": 2, "d": [796], "a": 1 }, + { "px": [552,432], "src": [72,0], "f": 0, "t": 3, "d": [797], "a": 1 }, + { "px": [576,432], "src": [0,0], "f": 0, "t": 0, "d": [798], "a": 1 }, + { "px": [600,432], "src": [24,0], "f": 0, "t": 1, "d": [799], "a": 1 }, + { "px": [624,432], "src": [48,0], "f": 0, "t": 2, "d": [800], "a": 1 }, + { "px": [648,432], "src": [72,0], "f": 0, "t": 3, "d": [801], "a": 1 }, + { "px": [672,432], "src": [0,0], "f": 0, "t": 0, "d": [802], "a": 1 }, + { "px": [696,432], "src": [24,0], "f": 0, "t": 1, "d": [803], "a": 1 }, + { "px": [720,432], "src": [48,0], "f": 0, "t": 2, "d": [804], "a": 1 }, + { "px": [744,432], "src": [72,0], "f": 0, "t": 3, "d": [805], "a": 1 }, + { "px": [768,432], "src": [0,0], "f": 0, "t": 0, "d": [806], "a": 1 }, + { "px": [792,432], "src": [24,0], "f": 0, "t": 1, "d": [807], "a": 1 }, + { "px": [816,432], "src": [48,0], "f": 0, "t": 2, "d": [808], "a": 1 }, + { "px": [840,432], "src": [72,0], "f": 0, "t": 3, "d": [809], "a": 1 }, + { "px": [864,432], "src": [0,0], "f": 0, "t": 0, "d": [810], "a": 1 }, + { "px": [888,432], "src": [24,0], "f": 0, "t": 1, "d": [811], "a": 1 }, + { "px": [912,432], "src": [48,0], "f": 0, "t": 2, "d": [812], "a": 1 }, + { "px": [936,432], "src": [72,0], "f": 0, "t": 3, "d": [813], "a": 1 }, + { "px": [960,432], "src": [0,0], "f": 0, "t": 0, "d": [814], "a": 1 }, + { "px": [984,432], "src": [24,0], "f": 0, "t": 1, "d": [815], "a": 1 }, + { "px": [1008,432], "src": [48,0], "f": 0, "t": 2, "d": [816], "a": 1 }, + { "px": [0,456], "src": [0,0], "f": 0, "t": 0, "d": [817], "a": 1 }, + { "px": [24,456], "src": [24,0], "f": 0, "t": 1, "d": [818], "a": 1 }, + { "px": [48,456], "src": [48,0], "f": 0, "t": 2, "d": [819], "a": 1 }, + { "px": [72,456], "src": [72,0], "f": 0, "t": 3, "d": [820], "a": 1 }, + { "px": [96,456], "src": [0,0], "f": 0, "t": 0, "d": [821], "a": 1 }, + { "px": [120,456], "src": [24,0], "f": 0, "t": 1, "d": [822], "a": 1 }, + { "px": [144,456], "src": [48,0], "f": 0, "t": 2, "d": [823], "a": 1 }, + { "px": [168,456], "src": [72,0], "f": 0, "t": 3, "d": [824], "a": 1 }, + { "px": [192,456], "src": [0,0], "f": 0, "t": 0, "d": [825], "a": 1 }, + { "px": [216,456], "src": [24,0], "f": 0, "t": 1, "d": [826], "a": 1 }, + { "px": [240,456], "src": [48,0], "f": 0, "t": 2, "d": [827], "a": 1 }, + { "px": [264,456], "src": [72,0], "f": 0, "t": 3, "d": [828], "a": 1 }, + { "px": [288,456], "src": [0,0], "f": 0, "t": 0, "d": [829], "a": 1 }, + { "px": [312,456], "src": [24,0], "f": 0, "t": 1, "d": [830], "a": 1 }, + { "px": [336,456], "src": [48,0], "f": 0, "t": 2, "d": [831], "a": 1 }, + { "px": [360,456], "src": [72,0], "f": 0, "t": 3, "d": [832], "a": 1 }, + { "px": [384,456], "src": [0,0], "f": 0, "t": 0, "d": [833], "a": 1 }, + { "px": [408,456], "src": [24,0], "f": 0, "t": 1, "d": [834], "a": 1 }, + { "px": [432,456], "src": [48,0], "f": 0, "t": 2, "d": [835], "a": 1 }, + { "px": [456,456], "src": [72,0], "f": 0, "t": 3, "d": [836], "a": 1 }, + { "px": [480,456], "src": [0,0], "f": 0, "t": 0, "d": [837], "a": 1 }, + { "px": [504,456], "src": [24,0], "f": 0, "t": 1, "d": [838], "a": 1 }, + { "px": [528,456], "src": [48,0], "f": 0, "t": 2, "d": [839], "a": 1 }, + { "px": [552,456], "src": [72,0], "f": 0, "t": 3, "d": [840], "a": 1 }, + { "px": [576,456], "src": [0,0], "f": 0, "t": 0, "d": [841], "a": 1 }, + { "px": [600,456], "src": [24,0], "f": 0, "t": 1, "d": [842], "a": 1 }, + { "px": [624,456], "src": [48,0], "f": 0, "t": 2, "d": [843], "a": 1 }, + { "px": [648,456], "src": [72,0], "f": 0, "t": 3, "d": [844], "a": 1 }, + { "px": [672,456], "src": [0,0], "f": 0, "t": 0, "d": [845], "a": 1 }, + { "px": [696,456], "src": [24,0], "f": 0, "t": 1, "d": [846], "a": 1 }, + { "px": [720,456], "src": [48,0], "f": 0, "t": 2, "d": [847], "a": 1 }, + { "px": [744,456], "src": [72,0], "f": 0, "t": 3, "d": [848], "a": 1 }, + { "px": [768,456], "src": [0,0], "f": 0, "t": 0, "d": [849], "a": 1 }, + { "px": [792,456], "src": [24,0], "f": 0, "t": 1, "d": [850], "a": 1 }, + { "px": [816,456], "src": [48,0], "f": 0, "t": 2, "d": [851], "a": 1 }, + { "px": [840,456], "src": [72,0], "f": 0, "t": 3, "d": [852], "a": 1 }, + { "px": [864,456], "src": [0,0], "f": 0, "t": 0, "d": [853], "a": 1 }, + { "px": [888,456], "src": [24,0], "f": 0, "t": 1, "d": [854], "a": 1 }, + { "px": [912,456], "src": [48,0], "f": 0, "t": 2, "d": [855], "a": 1 }, + { "px": [936,456], "src": [72,0], "f": 0, "t": 3, "d": [856], "a": 1 }, + { "px": [960,456], "src": [0,0], "f": 0, "t": 0, "d": [857], "a": 1 }, + { "px": [984,456], "src": [24,0], "f": 0, "t": 1, "d": [858], "a": 1 }, + { "px": [1008,456], "src": [48,0], "f": 0, "t": 2, "d": [859], "a": 1 }, + { "px": [0,480], "src": [0,0], "f": 0, "t": 0, "d": [860], "a": 1 }, + { "px": [24,480], "src": [24,0], "f": 0, "t": 1, "d": [861], "a": 1 }, + { "px": [48,480], "src": [48,0], "f": 0, "t": 2, "d": [862], "a": 1 }, + { "px": [72,480], "src": [72,0], "f": 0, "t": 3, "d": [863], "a": 1 }, + { "px": [96,480], "src": [0,0], "f": 0, "t": 0, "d": [864], "a": 1 }, + { "px": [120,480], "src": [24,0], "f": 0, "t": 1, "d": [865], "a": 1 }, + { "px": [144,480], "src": [48,0], "f": 0, "t": 2, "d": [866], "a": 1 }, + { "px": [168,480], "src": [72,0], "f": 0, "t": 3, "d": [867], "a": 1 }, + { "px": [192,480], "src": [0,0], "f": 0, "t": 0, "d": [868], "a": 1 }, + { "px": [216,480], "src": [24,0], "f": 0, "t": 1, "d": [869], "a": 1 }, + { "px": [240,480], "src": [48,0], "f": 0, "t": 2, "d": [870], "a": 1 }, + { "px": [264,480], "src": [72,0], "f": 0, "t": 3, "d": [871], "a": 1 }, + { "px": [288,480], "src": [0,0], "f": 0, "t": 0, "d": [872], "a": 1 }, + { "px": [312,480], "src": [24,0], "f": 0, "t": 1, "d": [873], "a": 1 }, + { "px": [336,480], "src": [48,0], "f": 0, "t": 2, "d": [874], "a": 1 }, + { "px": [360,480], "src": [72,0], "f": 0, "t": 3, "d": [875], "a": 1 }, + { "px": [384,480], "src": [0,0], "f": 0, "t": 0, "d": [876], "a": 1 }, + { "px": [408,480], "src": [24,0], "f": 0, "t": 1, "d": [877], "a": 1 }, + { "px": [432,480], "src": [48,0], "f": 0, "t": 2, "d": [878], "a": 1 }, + { "px": [456,480], "src": [72,0], "f": 0, "t": 3, "d": [879], "a": 1 }, + { "px": [480,480], "src": [0,0], "f": 0, "t": 0, "d": [880], "a": 1 }, + { "px": [504,480], "src": [24,0], "f": 0, "t": 1, "d": [881], "a": 1 }, + { "px": [528,480], "src": [48,0], "f": 0, "t": 2, "d": [882], "a": 1 }, + { "px": [552,480], "src": [72,0], "f": 0, "t": 3, "d": [883], "a": 1 }, + { "px": [576,480], "src": [0,0], "f": 0, "t": 0, "d": [884], "a": 1 }, + { "px": [600,480], "src": [24,0], "f": 0, "t": 1, "d": [885], "a": 1 }, + { "px": [624,480], "src": [48,0], "f": 0, "t": 2, "d": [886], "a": 1 }, + { "px": [648,480], "src": [72,0], "f": 0, "t": 3, "d": [887], "a": 1 }, + { "px": [672,480], "src": [0,0], "f": 0, "t": 0, "d": [888], "a": 1 }, + { "px": [696,480], "src": [24,0], "f": 0, "t": 1, "d": [889], "a": 1 }, + { "px": [720,480], "src": [48,0], "f": 0, "t": 2, "d": [890], "a": 1 }, + { "px": [744,480], "src": [72,0], "f": 0, "t": 3, "d": [891], "a": 1 }, + { "px": [768,480], "src": [0,0], "f": 0, "t": 0, "d": [892], "a": 1 }, + { "px": [792,480], "src": [24,0], "f": 0, "t": 1, "d": [893], "a": 1 }, + { "px": [816,480], "src": [48,0], "f": 0, "t": 2, "d": [894], "a": 1 }, + { "px": [840,480], "src": [72,0], "f": 0, "t": 3, "d": [895], "a": 1 }, + { "px": [864,480], "src": [0,0], "f": 0, "t": 0, "d": [896], "a": 1 }, + { "px": [888,480], "src": [24,0], "f": 0, "t": 1, "d": [897], "a": 1 }, + { "px": [912,480], "src": [48,0], "f": 0, "t": 2, "d": [898], "a": 1 }, + { "px": [936,480], "src": [72,0], "f": 0, "t": 3, "d": [899], "a": 1 }, + { "px": [960,480], "src": [0,0], "f": 0, "t": 0, "d": [900], "a": 1 }, + { "px": [984,480], "src": [24,0], "f": 0, "t": 1, "d": [901], "a": 1 }, + { "px": [1008,480], "src": [48,0], "f": 0, "t": 2, "d": [902], "a": 1 }, + { "px": [0,504], "src": [0,0], "f": 0, "t": 0, "d": [903], "a": 1 }, + { "px": [24,504], "src": [24,0], "f": 0, "t": 1, "d": [904], "a": 1 }, + { "px": [48,504], "src": [48,0], "f": 0, "t": 2, "d": [905], "a": 1 }, + { "px": [72,504], "src": [72,0], "f": 0, "t": 3, "d": [906], "a": 1 }, + { "px": [96,504], "src": [0,0], "f": 0, "t": 0, "d": [907], "a": 1 }, + { "px": [120,504], "src": [24,0], "f": 0, "t": 1, "d": [908], "a": 1 }, + { "px": [144,504], "src": [48,0], "f": 0, "t": 2, "d": [909], "a": 1 }, + { "px": [168,504], "src": [72,0], "f": 0, "t": 3, "d": [910], "a": 1 }, + { "px": [192,504], "src": [0,0], "f": 0, "t": 0, "d": [911], "a": 1 }, + { "px": [216,504], "src": [24,0], "f": 0, "t": 1, "d": [912], "a": 1 }, + { "px": [240,504], "src": [48,0], "f": 0, "t": 2, "d": [913], "a": 1 }, + { "px": [264,504], "src": [72,0], "f": 0, "t": 3, "d": [914], "a": 1 }, + { "px": [288,504], "src": [0,0], "f": 0, "t": 0, "d": [915], "a": 1 }, + { "px": [312,504], "src": [24,0], "f": 0, "t": 1, "d": [916], "a": 1 }, + { "px": [336,504], "src": [48,0], "f": 0, "t": 2, "d": [917], "a": 1 }, + { "px": [360,504], "src": [72,0], "f": 0, "t": 3, "d": [918], "a": 1 }, + { "px": [384,504], "src": [0,0], "f": 0, "t": 0, "d": [919], "a": 1 }, + { "px": [408,504], "src": [24,0], "f": 0, "t": 1, "d": [920], "a": 1 }, + { "px": [432,504], "src": [48,0], "f": 0, "t": 2, "d": [921], "a": 1 }, + { "px": [456,504], "src": [72,0], "f": 0, "t": 3, "d": [922], "a": 1 }, + { "px": [480,504], "src": [0,0], "f": 0, "t": 0, "d": [923], "a": 1 }, + { "px": [504,504], "src": [24,0], "f": 0, "t": 1, "d": [924], "a": 1 }, + { "px": [528,504], "src": [48,0], "f": 0, "t": 2, "d": [925], "a": 1 }, + { "px": [552,504], "src": [72,0], "f": 0, "t": 3, "d": [926], "a": 1 }, + { "px": [576,504], "src": [0,0], "f": 0, "t": 0, "d": [927], "a": 1 }, + { "px": [600,504], "src": [24,0], "f": 0, "t": 1, "d": [928], "a": 1 }, + { "px": [624,504], "src": [48,0], "f": 0, "t": 2, "d": [929], "a": 1 }, + { "px": [648,504], "src": [72,0], "f": 0, "t": 3, "d": [930], "a": 1 }, + { "px": [672,504], "src": [0,0], "f": 0, "t": 0, "d": [931], "a": 1 }, + { "px": [696,504], "src": [24,0], "f": 0, "t": 1, "d": [932], "a": 1 }, + { "px": [720,504], "src": [48,0], "f": 0, "t": 2, "d": [933], "a": 1 }, + { "px": [744,504], "src": [72,0], "f": 0, "t": 3, "d": [934], "a": 1 }, + { "px": [768,504], "src": [0,0], "f": 0, "t": 0, "d": [935], "a": 1 }, + { "px": [792,504], "src": [24,0], "f": 0, "t": 1, "d": [936], "a": 1 }, + { "px": [816,504], "src": [48,0], "f": 0, "t": 2, "d": [937], "a": 1 }, + { "px": [840,504], "src": [72,0], "f": 0, "t": 3, "d": [938], "a": 1 }, + { "px": [864,504], "src": [0,0], "f": 0, "t": 0, "d": [939], "a": 1 }, + { "px": [888,504], "src": [24,0], "f": 0, "t": 1, "d": [940], "a": 1 }, + { "px": [912,504], "src": [48,0], "f": 0, "t": 2, "d": [941], "a": 1 }, + { "px": [936,504], "src": [72,0], "f": 0, "t": 3, "d": [942], "a": 1 }, + { "px": [960,504], "src": [0,0], "f": 0, "t": 0, "d": [943], "a": 1 }, + { "px": [984,504], "src": [24,0], "f": 0, "t": 1, "d": [944], "a": 1 }, + { "px": [1008,504], "src": [48,0], "f": 0, "t": 2, "d": [945], "a": 1 }, + { "px": [0,528], "src": [0,0], "f": 0, "t": 0, "d": [946], "a": 1 }, + { "px": [24,528], "src": [24,0], "f": 0, "t": 1, "d": [947], "a": 1 }, + { "px": [48,528], "src": [48,0], "f": 0, "t": 2, "d": [948], "a": 1 }, + { "px": [72,528], "src": [72,0], "f": 0, "t": 3, "d": [949], "a": 1 }, + { "px": [96,528], "src": [0,0], "f": 0, "t": 0, "d": [950], "a": 1 }, + { "px": [120,528], "src": [24,0], "f": 0, "t": 1, "d": [951], "a": 1 }, + { "px": [144,528], "src": [48,0], "f": 0, "t": 2, "d": [952], "a": 1 }, + { "px": [168,528], "src": [72,0], "f": 0, "t": 3, "d": [953], "a": 1 }, + { "px": [192,528], "src": [0,0], "f": 0, "t": 0, "d": [954], "a": 1 }, + { "px": [216,528], "src": [24,0], "f": 0, "t": 1, "d": [955], "a": 1 }, + { "px": [240,528], "src": [48,0], "f": 0, "t": 2, "d": [956], "a": 1 }, + { "px": [264,528], "src": [72,0], "f": 0, "t": 3, "d": [957], "a": 1 }, + { "px": [288,528], "src": [0,0], "f": 0, "t": 0, "d": [958], "a": 1 }, + { "px": [312,528], "src": [24,0], "f": 0, "t": 1, "d": [959], "a": 1 }, + { "px": [336,528], "src": [48,0], "f": 0, "t": 2, "d": [960], "a": 1 }, + { "px": [360,528], "src": [72,0], "f": 0, "t": 3, "d": [961], "a": 1 }, + { "px": [384,528], "src": [0,0], "f": 0, "t": 0, "d": [962], "a": 1 }, + { "px": [408,528], "src": [24,0], "f": 0, "t": 1, "d": [963], "a": 1 }, + { "px": [432,528], "src": [48,0], "f": 0, "t": 2, "d": [964], "a": 1 }, + { "px": [456,528], "src": [72,0], "f": 0, "t": 3, "d": [965], "a": 1 }, + { "px": [480,528], "src": [0,0], "f": 0, "t": 0, "d": [966], "a": 1 }, + { "px": [504,528], "src": [24,0], "f": 0, "t": 1, "d": [967], "a": 1 }, + { "px": [528,528], "src": [48,0], "f": 0, "t": 2, "d": [968], "a": 1 }, + { "px": [552,528], "src": [72,0], "f": 0, "t": 3, "d": [969], "a": 1 }, + { "px": [576,528], "src": [0,0], "f": 0, "t": 0, "d": [970], "a": 1 }, + { "px": [600,528], "src": [24,0], "f": 0, "t": 1, "d": [971], "a": 1 }, + { "px": [624,528], "src": [48,0], "f": 0, "t": 2, "d": [972], "a": 1 }, + { "px": [648,528], "src": [72,0], "f": 0, "t": 3, "d": [973], "a": 1 }, + { "px": [672,528], "src": [0,0], "f": 0, "t": 0, "d": [974], "a": 1 }, + { "px": [696,528], "src": [24,0], "f": 0, "t": 1, "d": [975], "a": 1 }, + { "px": [720,528], "src": [48,0], "f": 0, "t": 2, "d": [976], "a": 1 }, + { "px": [744,528], "src": [72,0], "f": 0, "t": 3, "d": [977], "a": 1 }, + { "px": [768,528], "src": [0,0], "f": 0, "t": 0, "d": [978], "a": 1 }, + { "px": [792,528], "src": [24,0], "f": 0, "t": 1, "d": [979], "a": 1 }, + { "px": [816,528], "src": [48,0], "f": 0, "t": 2, "d": [980], "a": 1 }, + { "px": [840,528], "src": [72,0], "f": 0, "t": 3, "d": [981], "a": 1 }, + { "px": [864,528], "src": [0,0], "f": 0, "t": 0, "d": [982], "a": 1 }, + { "px": [888,528], "src": [24,0], "f": 0, "t": 1, "d": [983], "a": 1 }, + { "px": [912,528], "src": [48,0], "f": 0, "t": 2, "d": [984], "a": 1 }, + { "px": [936,528], "src": [72,0], "f": 0, "t": 3, "d": [985], "a": 1 }, + { "px": [960,528], "src": [0,0], "f": 0, "t": 0, "d": [986], "a": 1 }, + { "px": [984,528], "src": [24,0], "f": 0, "t": 1, "d": [987], "a": 1 }, + { "px": [1008,528], "src": [48,0], "f": 0, "t": 2, "d": [988], "a": 1 }, + { "px": [0,552], "src": [0,0], "f": 0, "t": 0, "d": [989], "a": 1 }, + { "px": [24,552], "src": [24,0], "f": 0, "t": 1, "d": [990], "a": 1 }, + { "px": [48,552], "src": [48,0], "f": 0, "t": 2, "d": [991], "a": 1 }, + { "px": [72,552], "src": [72,0], "f": 0, "t": 3, "d": [992], "a": 1 }, + { "px": [96,552], "src": [0,0], "f": 0, "t": 0, "d": [993], "a": 1 }, + { "px": [120,552], "src": [24,0], "f": 0, "t": 1, "d": [994], "a": 1 }, + { "px": [144,552], "src": [48,0], "f": 0, "t": 2, "d": [995], "a": 1 }, + { "px": [168,552], "src": [72,0], "f": 0, "t": 3, "d": [996], "a": 1 }, + { "px": [192,552], "src": [0,0], "f": 0, "t": 0, "d": [997], "a": 1 }, + { "px": [216,552], "src": [24,0], "f": 0, "t": 1, "d": [998], "a": 1 }, + { "px": [240,552], "src": [48,0], "f": 0, "t": 2, "d": [999], "a": 1 }, + { "px": [264,552], "src": [72,0], "f": 0, "t": 3, "d": [1000], "a": 1 }, + { "px": [288,552], "src": [0,0], "f": 0, "t": 0, "d": [1001], "a": 1 }, + { "px": [312,552], "src": [24,0], "f": 0, "t": 1, "d": [1002], "a": 1 }, + { "px": [336,552], "src": [48,0], "f": 0, "t": 2, "d": [1003], "a": 1 }, + { "px": [360,552], "src": [72,0], "f": 0, "t": 3, "d": [1004], "a": 1 }, + { "px": [384,552], "src": [0,0], "f": 0, "t": 0, "d": [1005], "a": 1 }, + { "px": [408,552], "src": [24,0], "f": 0, "t": 1, "d": [1006], "a": 1 }, + { "px": [432,552], "src": [48,0], "f": 0, "t": 2, "d": [1007], "a": 1 }, + { "px": [456,552], "src": [72,0], "f": 0, "t": 3, "d": [1008], "a": 1 }, + { "px": [480,552], "src": [0,0], "f": 0, "t": 0, "d": [1009], "a": 1 }, + { "px": [504,552], "src": [24,0], "f": 0, "t": 1, "d": [1010], "a": 1 }, + { "px": [528,552], "src": [48,0], "f": 0, "t": 2, "d": [1011], "a": 1 }, + { "px": [552,552], "src": [72,0], "f": 0, "t": 3, "d": [1012], "a": 1 }, + { "px": [576,552], "src": [0,0], "f": 0, "t": 0, "d": [1013], "a": 1 }, + { "px": [600,552], "src": [24,0], "f": 0, "t": 1, "d": [1014], "a": 1 }, + { "px": [624,552], "src": [48,0], "f": 0, "t": 2, "d": [1015], "a": 1 }, + { "px": [648,552], "src": [72,0], "f": 0, "t": 3, "d": [1016], "a": 1 }, + { "px": [672,552], "src": [0,0], "f": 0, "t": 0, "d": [1017], "a": 1 }, + { "px": [696,552], "src": [24,0], "f": 0, "t": 1, "d": [1018], "a": 1 }, + { "px": [720,552], "src": [48,0], "f": 0, "t": 2, "d": [1019], "a": 1 }, + { "px": [744,552], "src": [72,0], "f": 0, "t": 3, "d": [1020], "a": 1 }, + { "px": [768,552], "src": [0,0], "f": 0, "t": 0, "d": [1021], "a": 1 }, + { "px": [792,552], "src": [24,0], "f": 0, "t": 1, "d": [1022], "a": 1 }, + { "px": [816,552], "src": [48,0], "f": 0, "t": 2, "d": [1023], "a": 1 }, + { "px": [840,552], "src": [72,0], "f": 0, "t": 3, "d": [1024], "a": 1 }, + { "px": [864,552], "src": [0,0], "f": 0, "t": 0, "d": [1025], "a": 1 }, + { "px": [888,552], "src": [24,0], "f": 0, "t": 1, "d": [1026], "a": 1 }, + { "px": [912,552], "src": [48,0], "f": 0, "t": 2, "d": [1027], "a": 1 }, + { "px": [936,552], "src": [72,0], "f": 0, "t": 3, "d": [1028], "a": 1 }, + { "px": [960,552], "src": [0,0], "f": 0, "t": 0, "d": [1029], "a": 1 }, + { "px": [984,552], "src": [24,0], "f": 0, "t": 1, "d": [1030], "a": 1 }, + { "px": [1008,552], "src": [48,0], "f": 0, "t": 2, "d": [1031], "a": 1 }, + { "px": [0,576], "src": [0,0], "f": 0, "t": 0, "d": [1032], "a": 1 }, + { "px": [24,576], "src": [24,0], "f": 0, "t": 1, "d": [1033], "a": 1 }, + { "px": [48,576], "src": [48,0], "f": 0, "t": 2, "d": [1034], "a": 1 }, + { "px": [72,576], "src": [72,0], "f": 0, "t": 3, "d": [1035], "a": 1 }, + { "px": [96,576], "src": [0,0], "f": 0, "t": 0, "d": [1036], "a": 1 }, + { "px": [120,576], "src": [24,0], "f": 0, "t": 1, "d": [1037], "a": 1 }, + { "px": [144,576], "src": [48,0], "f": 0, "t": 2, "d": [1038], "a": 1 }, + { "px": [168,576], "src": [72,0], "f": 0, "t": 3, "d": [1039], "a": 1 }, + { "px": [192,576], "src": [0,0], "f": 0, "t": 0, "d": [1040], "a": 1 }, + { "px": [216,576], "src": [24,0], "f": 0, "t": 1, "d": [1041], "a": 1 }, + { "px": [240,576], "src": [48,0], "f": 0, "t": 2, "d": [1042], "a": 1 }, + { "px": [264,576], "src": [72,0], "f": 0, "t": 3, "d": [1043], "a": 1 }, + { "px": [288,576], "src": [0,0], "f": 0, "t": 0, "d": [1044], "a": 1 }, + { "px": [312,576], "src": [24,0], "f": 0, "t": 1, "d": [1045], "a": 1 }, + { "px": [336,576], "src": [48,0], "f": 0, "t": 2, "d": [1046], "a": 1 }, + { "px": [360,576], "src": [72,0], "f": 0, "t": 3, "d": [1047], "a": 1 }, + { "px": [384,576], "src": [0,0], "f": 0, "t": 0, "d": [1048], "a": 1 }, + { "px": [408,576], "src": [24,0], "f": 0, "t": 1, "d": [1049], "a": 1 }, + { "px": [432,576], "src": [48,0], "f": 0, "t": 2, "d": [1050], "a": 1 }, + { "px": [456,576], "src": [72,0], "f": 0, "t": 3, "d": [1051], "a": 1 }, + { "px": [480,576], "src": [0,0], "f": 0, "t": 0, "d": [1052], "a": 1 }, + { "px": [504,576], "src": [24,0], "f": 0, "t": 1, "d": [1053], "a": 1 }, + { "px": [528,576], "src": [48,0], "f": 0, "t": 2, "d": [1054], "a": 1 }, + { "px": [552,576], "src": [72,0], "f": 0, "t": 3, "d": [1055], "a": 1 }, + { "px": [576,576], "src": [0,0], "f": 0, "t": 0, "d": [1056], "a": 1 }, + { "px": [600,576], "src": [24,0], "f": 0, "t": 1, "d": [1057], "a": 1 }, + { "px": [624,576], "src": [48,0], "f": 0, "t": 2, "d": [1058], "a": 1 }, + { "px": [648,576], "src": [72,0], "f": 0, "t": 3, "d": [1059], "a": 1 }, + { "px": [672,576], "src": [0,0], "f": 0, "t": 0, "d": [1060], "a": 1 }, + { "px": [696,576], "src": [24,0], "f": 0, "t": 1, "d": [1061], "a": 1 }, + { "px": [720,576], "src": [48,0], "f": 0, "t": 2, "d": [1062], "a": 1 }, + { "px": [744,576], "src": [72,0], "f": 0, "t": 3, "d": [1063], "a": 1 }, + { "px": [768,576], "src": [0,0], "f": 0, "t": 0, "d": [1064], "a": 1 }, + { "px": [792,576], "src": [24,0], "f": 0, "t": 1, "d": [1065], "a": 1 }, + { "px": [816,576], "src": [48,0], "f": 0, "t": 2, "d": [1066], "a": 1 }, + { "px": [840,576], "src": [72,0], "f": 0, "t": 3, "d": [1067], "a": 1 }, + { "px": [864,576], "src": [0,0], "f": 0, "t": 0, "d": [1068], "a": 1 }, + { "px": [888,576], "src": [24,0], "f": 0, "t": 1, "d": [1069], "a": 1 }, + { "px": [912,576], "src": [48,0], "f": 0, "t": 2, "d": [1070], "a": 1 }, + { "px": [936,576], "src": [72,0], "f": 0, "t": 3, "d": [1071], "a": 1 }, + { "px": [960,576], "src": [0,0], "f": 0, "t": 0, "d": [1072], "a": 1 }, + { "px": [984,576], "src": [24,0], "f": 0, "t": 1, "d": [1073], "a": 1 }, + { "px": [1008,576], "src": [48,0], "f": 0, "t": 2, "d": [1074], "a": 1 }, + { "px": [0,600], "src": [0,0], "f": 0, "t": 0, "d": [1075], "a": 1 }, + { "px": [24,600], "src": [24,0], "f": 0, "t": 1, "d": [1076], "a": 1 }, + { "px": [48,600], "src": [48,0], "f": 0, "t": 2, "d": [1077], "a": 1 }, + { "px": [72,600], "src": [72,0], "f": 0, "t": 3, "d": [1078], "a": 1 }, + { "px": [96,600], "src": [0,0], "f": 0, "t": 0, "d": [1079], "a": 1 }, + { "px": [120,600], "src": [24,0], "f": 0, "t": 1, "d": [1080], "a": 1 }, + { "px": [144,600], "src": [48,0], "f": 0, "t": 2, "d": [1081], "a": 1 }, + { "px": [168,600], "src": [72,0], "f": 0, "t": 3, "d": [1082], "a": 1 }, + { "px": [192,600], "src": [0,0], "f": 0, "t": 0, "d": [1083], "a": 1 }, + { "px": [216,600], "src": [24,0], "f": 0, "t": 1, "d": [1084], "a": 1 }, + { "px": [240,600], "src": [48,0], "f": 0, "t": 2, "d": [1085], "a": 1 }, + { "px": [264,600], "src": [72,0], "f": 0, "t": 3, "d": [1086], "a": 1 }, + { "px": [288,600], "src": [0,0], "f": 0, "t": 0, "d": [1087], "a": 1 }, + { "px": [312,600], "src": [24,0], "f": 0, "t": 1, "d": [1088], "a": 1 }, + { "px": [336,600], "src": [48,0], "f": 0, "t": 2, "d": [1089], "a": 1 }, + { "px": [360,600], "src": [72,0], "f": 0, "t": 3, "d": [1090], "a": 1 }, + { "px": [384,600], "src": [0,0], "f": 0, "t": 0, "d": [1091], "a": 1 }, + { "px": [408,600], "src": [24,0], "f": 0, "t": 1, "d": [1092], "a": 1 }, + { "px": [432,600], "src": [48,0], "f": 0, "t": 2, "d": [1093], "a": 1 }, + { "px": [456,600], "src": [72,0], "f": 0, "t": 3, "d": [1094], "a": 1 }, + { "px": [480,600], "src": [0,0], "f": 0, "t": 0, "d": [1095], "a": 1 }, + { "px": [504,600], "src": [24,0], "f": 0, "t": 1, "d": [1096], "a": 1 }, + { "px": [528,600], "src": [48,0], "f": 0, "t": 2, "d": [1097], "a": 1 }, + { "px": [552,600], "src": [72,0], "f": 0, "t": 3, "d": [1098], "a": 1 }, + { "px": [576,600], "src": [0,0], "f": 0, "t": 0, "d": [1099], "a": 1 }, + { "px": [600,600], "src": [24,0], "f": 0, "t": 1, "d": [1100], "a": 1 }, + { "px": [624,600], "src": [48,0], "f": 0, "t": 2, "d": [1101], "a": 1 }, + { "px": [648,600], "src": [72,0], "f": 0, "t": 3, "d": [1102], "a": 1 }, + { "px": [672,600], "src": [0,0], "f": 0, "t": 0, "d": [1103], "a": 1 }, + { "px": [696,600], "src": [24,0], "f": 0, "t": 1, "d": [1104], "a": 1 }, + { "px": [720,600], "src": [48,0], "f": 0, "t": 2, "d": [1105], "a": 1 }, + { "px": [744,600], "src": [72,0], "f": 0, "t": 3, "d": [1106], "a": 1 }, + { "px": [768,600], "src": [0,0], "f": 0, "t": 0, "d": [1107], "a": 1 }, + { "px": [792,600], "src": [24,0], "f": 0, "t": 1, "d": [1108], "a": 1 }, + { "px": [816,600], "src": [48,0], "f": 0, "t": 2, "d": [1109], "a": 1 }, + { "px": [840,600], "src": [72,0], "f": 0, "t": 3, "d": [1110], "a": 1 }, + { "px": [864,600], "src": [0,0], "f": 0, "t": 0, "d": [1111], "a": 1 }, + { "px": [888,600], "src": [24,0], "f": 0, "t": 1, "d": [1112], "a": 1 }, + { "px": [912,600], "src": [48,0], "f": 0, "t": 2, "d": [1113], "a": 1 }, + { "px": [936,600], "src": [72,0], "f": 0, "t": 3, "d": [1114], "a": 1 }, + { "px": [960,600], "src": [0,0], "f": 0, "t": 0, "d": [1115], "a": 1 }, + { "px": [984,600], "src": [24,0], "f": 0, "t": 1, "d": [1116], "a": 1 }, + { "px": [1008,600], "src": [48,0], "f": 0, "t": 2, "d": [1117], "a": 1 }, + { "px": [0,624], "src": [0,0], "f": 0, "t": 0, "d": [1118], "a": 1 }, + { "px": [24,624], "src": [24,0], "f": 0, "t": 1, "d": [1119], "a": 1 }, + { "px": [48,624], "src": [48,0], "f": 0, "t": 2, "d": [1120], "a": 1 }, + { "px": [72,624], "src": [72,0], "f": 0, "t": 3, "d": [1121], "a": 1 }, + { "px": [96,624], "src": [0,0], "f": 0, "t": 0, "d": [1122], "a": 1 }, + { "px": [120,624], "src": [24,0], "f": 0, "t": 1, "d": [1123], "a": 1 }, + { "px": [144,624], "src": [48,0], "f": 0, "t": 2, "d": [1124], "a": 1 }, + { "px": [168,624], "src": [72,0], "f": 0, "t": 3, "d": [1125], "a": 1 }, + { "px": [192,624], "src": [0,0], "f": 0, "t": 0, "d": [1126], "a": 1 }, + { "px": [216,624], "src": [24,0], "f": 0, "t": 1, "d": [1127], "a": 1 }, + { "px": [240,624], "src": [48,0], "f": 0, "t": 2, "d": [1128], "a": 1 }, + { "px": [264,624], "src": [72,0], "f": 0, "t": 3, "d": [1129], "a": 1 }, + { "px": [288,624], "src": [0,0], "f": 0, "t": 0, "d": [1130], "a": 1 }, + { "px": [312,624], "src": [24,0], "f": 0, "t": 1, "d": [1131], "a": 1 }, + { "px": [336,624], "src": [48,0], "f": 0, "t": 2, "d": [1132], "a": 1 }, + { "px": [360,624], "src": [72,0], "f": 0, "t": 3, "d": [1133], "a": 1 }, + { "px": [384,624], "src": [0,0], "f": 0, "t": 0, "d": [1134], "a": 1 }, + { "px": [408,624], "src": [24,0], "f": 0, "t": 1, "d": [1135], "a": 1 }, + { "px": [432,624], "src": [48,0], "f": 0, "t": 2, "d": [1136], "a": 1 }, + { "px": [456,624], "src": [72,0], "f": 0, "t": 3, "d": [1137], "a": 1 }, + { "px": [480,624], "src": [0,0], "f": 0, "t": 0, "d": [1138], "a": 1 }, + { "px": [504,624], "src": [24,0], "f": 0, "t": 1, "d": [1139], "a": 1 }, + { "px": [528,624], "src": [48,0], "f": 0, "t": 2, "d": [1140], "a": 1 }, + { "px": [552,624], "src": [72,0], "f": 0, "t": 3, "d": [1141], "a": 1 }, + { "px": [576,624], "src": [0,0], "f": 0, "t": 0, "d": [1142], "a": 1 }, + { "px": [600,624], "src": [24,0], "f": 0, "t": 1, "d": [1143], "a": 1 }, + { "px": [624,624], "src": [48,0], "f": 0, "t": 2, "d": [1144], "a": 1 }, + { "px": [648,624], "src": [72,0], "f": 0, "t": 3, "d": [1145], "a": 1 }, + { "px": [672,624], "src": [0,0], "f": 0, "t": 0, "d": [1146], "a": 1 }, + { "px": [696,624], "src": [24,0], "f": 0, "t": 1, "d": [1147], "a": 1 }, + { "px": [720,624], "src": [48,0], "f": 0, "t": 2, "d": [1148], "a": 1 }, + { "px": [744,624], "src": [72,0], "f": 0, "t": 3, "d": [1149], "a": 1 }, + { "px": [768,624], "src": [0,0], "f": 0, "t": 0, "d": [1150], "a": 1 }, + { "px": [792,624], "src": [24,0], "f": 0, "t": 1, "d": [1151], "a": 1 }, + { "px": [816,624], "src": [48,0], "f": 0, "t": 2, "d": [1152], "a": 1 }, + { "px": [840,624], "src": [72,0], "f": 0, "t": 3, "d": [1153], "a": 1 }, + { "px": [864,624], "src": [0,0], "f": 0, "t": 0, "d": [1154], "a": 1 }, + { "px": [888,624], "src": [24,0], "f": 0, "t": 1, "d": [1155], "a": 1 }, + { "px": [912,624], "src": [48,0], "f": 0, "t": 2, "d": [1156], "a": 1 }, + { "px": [936,624], "src": [72,0], "f": 0, "t": 3, "d": [1157], "a": 1 }, + { "px": [960,624], "src": [0,0], "f": 0, "t": 0, "d": [1158], "a": 1 }, + { "px": [984,624], "src": [24,0], "f": 0, "t": 1, "d": [1159], "a": 1 }, + { "px": [1008,624], "src": [48,0], "f": 0, "t": 2, "d": [1160], "a": 1 }, + { "px": [0,648], "src": [0,0], "f": 0, "t": 0, "d": [1161], "a": 1 }, + { "px": [24,648], "src": [24,0], "f": 0, "t": 1, "d": [1162], "a": 1 }, + { "px": [48,648], "src": [48,0], "f": 0, "t": 2, "d": [1163], "a": 1 }, + { "px": [72,648], "src": [72,0], "f": 0, "t": 3, "d": [1164], "a": 1 }, + { "px": [96,648], "src": [0,0], "f": 0, "t": 0, "d": [1165], "a": 1 }, + { "px": [120,648], "src": [24,0], "f": 0, "t": 1, "d": [1166], "a": 1 }, + { "px": [144,648], "src": [48,0], "f": 0, "t": 2, "d": [1167], "a": 1 }, + { "px": [168,648], "src": [72,0], "f": 0, "t": 3, "d": [1168], "a": 1 }, + { "px": [192,648], "src": [0,0], "f": 0, "t": 0, "d": [1169], "a": 1 }, + { "px": [216,648], "src": [24,0], "f": 0, "t": 1, "d": [1170], "a": 1 }, + { "px": [240,648], "src": [48,0], "f": 0, "t": 2, "d": [1171], "a": 1 }, + { "px": [264,648], "src": [72,0], "f": 0, "t": 3, "d": [1172], "a": 1 }, + { "px": [288,648], "src": [0,0], "f": 0, "t": 0, "d": [1173], "a": 1 }, + { "px": [312,648], "src": [24,0], "f": 0, "t": 1, "d": [1174], "a": 1 }, + { "px": [336,648], "src": [48,0], "f": 0, "t": 2, "d": [1175], "a": 1 }, + { "px": [360,648], "src": [72,0], "f": 0, "t": 3, "d": [1176], "a": 1 }, + { "px": [384,648], "src": [0,0], "f": 0, "t": 0, "d": [1177], "a": 1 }, + { "px": [408,648], "src": [24,0], "f": 0, "t": 1, "d": [1178], "a": 1 }, + { "px": [432,648], "src": [48,0], "f": 0, "t": 2, "d": [1179], "a": 1 }, + { "px": [456,648], "src": [72,0], "f": 0, "t": 3, "d": [1180], "a": 1 }, + { "px": [480,648], "src": [0,0], "f": 0, "t": 0, "d": [1181], "a": 1 }, + { "px": [504,648], "src": [24,0], "f": 0, "t": 1, "d": [1182], "a": 1 }, + { "px": [528,648], "src": [48,0], "f": 0, "t": 2, "d": [1183], "a": 1 }, + { "px": [552,648], "src": [72,0], "f": 0, "t": 3, "d": [1184], "a": 1 }, + { "px": [576,648], "src": [0,0], "f": 0, "t": 0, "d": [1185], "a": 1 }, + { "px": [600,648], "src": [24,0], "f": 0, "t": 1, "d": [1186], "a": 1 }, + { "px": [624,648], "src": [48,0], "f": 0, "t": 2, "d": [1187], "a": 1 }, + { "px": [648,648], "src": [72,0], "f": 0, "t": 3, "d": [1188], "a": 1 }, + { "px": [672,648], "src": [0,0], "f": 0, "t": 0, "d": [1189], "a": 1 }, + { "px": [696,648], "src": [24,0], "f": 0, "t": 1, "d": [1190], "a": 1 }, + { "px": [720,648], "src": [48,0], "f": 0, "t": 2, "d": [1191], "a": 1 }, + { "px": [744,648], "src": [72,0], "f": 0, "t": 3, "d": [1192], "a": 1 }, + { "px": [768,648], "src": [0,0], "f": 0, "t": 0, "d": [1193], "a": 1 }, + { "px": [792,648], "src": [24,0], "f": 0, "t": 1, "d": [1194], "a": 1 }, + { "px": [816,648], "src": [48,0], "f": 0, "t": 2, "d": [1195], "a": 1 }, + { "px": [840,648], "src": [72,0], "f": 0, "t": 3, "d": [1196], "a": 1 }, + { "px": [864,648], "src": [0,0], "f": 0, "t": 0, "d": [1197], "a": 1 }, + { "px": [888,648], "src": [24,0], "f": 0, "t": 1, "d": [1198], "a": 1 }, + { "px": [912,648], "src": [48,0], "f": 0, "t": 2, "d": [1199], "a": 1 }, + { "px": [936,648], "src": [72,0], "f": 0, "t": 3, "d": [1200], "a": 1 }, + { "px": [960,648], "src": [0,0], "f": 0, "t": 0, "d": [1201], "a": 1 }, + { "px": [984,648], "src": [24,0], "f": 0, "t": 1, "d": [1202], "a": 1 }, + { "px": [1008,648], "src": [48,0], "f": 0, "t": 2, "d": [1203], "a": 1 }, + { "px": [0,672], "src": [0,0], "f": 0, "t": 0, "d": [1204], "a": 1 }, + { "px": [24,672], "src": [24,0], "f": 0, "t": 1, "d": [1205], "a": 1 }, + { "px": [48,672], "src": [48,0], "f": 0, "t": 2, "d": [1206], "a": 1 }, + { "px": [72,672], "src": [72,0], "f": 0, "t": 3, "d": [1207], "a": 1 }, + { "px": [96,672], "src": [0,0], "f": 0, "t": 0, "d": [1208], "a": 1 }, + { "px": [120,672], "src": [24,0], "f": 0, "t": 1, "d": [1209], "a": 1 }, + { "px": [144,672], "src": [48,0], "f": 0, "t": 2, "d": [1210], "a": 1 }, + { "px": [168,672], "src": [72,0], "f": 0, "t": 3, "d": [1211], "a": 1 }, + { "px": [192,672], "src": [0,0], "f": 0, "t": 0, "d": [1212], "a": 1 }, + { "px": [216,672], "src": [24,0], "f": 0, "t": 1, "d": [1213], "a": 1 }, + { "px": [240,672], "src": [48,0], "f": 0, "t": 2, "d": [1214], "a": 1 }, + { "px": [264,672], "src": [72,0], "f": 0, "t": 3, "d": [1215], "a": 1 }, + { "px": [288,672], "src": [0,0], "f": 0, "t": 0, "d": [1216], "a": 1 }, + { "px": [312,672], "src": [24,0], "f": 0, "t": 1, "d": [1217], "a": 1 }, + { "px": [336,672], "src": [48,0], "f": 0, "t": 2, "d": [1218], "a": 1 }, + { "px": [360,672], "src": [72,0], "f": 0, "t": 3, "d": [1219], "a": 1 }, + { "px": [384,672], "src": [0,0], "f": 0, "t": 0, "d": [1220], "a": 1 }, + { "px": [408,672], "src": [24,0], "f": 0, "t": 1, "d": [1221], "a": 1 }, + { "px": [432,672], "src": [48,0], "f": 0, "t": 2, "d": [1222], "a": 1 }, + { "px": [456,672], "src": [72,0], "f": 0, "t": 3, "d": [1223], "a": 1 }, + { "px": [480,672], "src": [0,0], "f": 0, "t": 0, "d": [1224], "a": 1 }, + { "px": [504,672], "src": [24,0], "f": 0, "t": 1, "d": [1225], "a": 1 }, + { "px": [528,672], "src": [48,0], "f": 0, "t": 2, "d": [1226], "a": 1 }, + { "px": [552,672], "src": [72,0], "f": 0, "t": 3, "d": [1227], "a": 1 }, + { "px": [576,672], "src": [0,0], "f": 0, "t": 0, "d": [1228], "a": 1 }, + { "px": [600,672], "src": [24,0], "f": 0, "t": 1, "d": [1229], "a": 1 }, + { "px": [624,672], "src": [48,0], "f": 0, "t": 2, "d": [1230], "a": 1 }, + { "px": [648,672], "src": [72,0], "f": 0, "t": 3, "d": [1231], "a": 1 }, + { "px": [672,672], "src": [0,0], "f": 0, "t": 0, "d": [1232], "a": 1 }, + { "px": [696,672], "src": [24,0], "f": 0, "t": 1, "d": [1233], "a": 1 }, + { "px": [720,672], "src": [48,0], "f": 0, "t": 2, "d": [1234], "a": 1 }, + { "px": [744,672], "src": [72,0], "f": 0, "t": 3, "d": [1235], "a": 1 }, + { "px": [768,672], "src": [0,0], "f": 0, "t": 0, "d": [1236], "a": 1 }, + { "px": [792,672], "src": [24,0], "f": 0, "t": 1, "d": [1237], "a": 1 }, + { "px": [816,672], "src": [48,0], "f": 0, "t": 2, "d": [1238], "a": 1 }, + { "px": [840,672], "src": [72,0], "f": 0, "t": 3, "d": [1239], "a": 1 }, + { "px": [864,672], "src": [0,0], "f": 0, "t": 0, "d": [1240], "a": 1 }, + { "px": [888,672], "src": [24,0], "f": 0, "t": 1, "d": [1241], "a": 1 }, + { "px": [912,672], "src": [48,0], "f": 0, "t": 2, "d": [1242], "a": 1 }, + { "px": [936,672], "src": [72,0], "f": 0, "t": 3, "d": [1243], "a": 1 }, + { "px": [960,672], "src": [0,0], "f": 0, "t": 0, "d": [1244], "a": 1 }, + { "px": [984,672], "src": [24,0], "f": 0, "t": 1, "d": [1245], "a": 1 }, + { "px": [1008,672], "src": [48,0], "f": 0, "t": 2, "d": [1246], "a": 1 }, + { "px": [0,696], "src": [0,0], "f": 0, "t": 0, "d": [1247], "a": 1 }, + { "px": [24,696], "src": [24,0], "f": 0, "t": 1, "d": [1248], "a": 1 }, + { "px": [48,696], "src": [48,0], "f": 0, "t": 2, "d": [1249], "a": 1 }, + { "px": [72,696], "src": [72,0], "f": 0, "t": 3, "d": [1250], "a": 1 }, + { "px": [96,696], "src": [0,0], "f": 0, "t": 0, "d": [1251], "a": 1 }, + { "px": [120,696], "src": [24,0], "f": 0, "t": 1, "d": [1252], "a": 1 }, + { "px": [144,696], "src": [48,0], "f": 0, "t": 2, "d": [1253], "a": 1 }, + { "px": [168,696], "src": [72,0], "f": 0, "t": 3, "d": [1254], "a": 1 }, + { "px": [192,696], "src": [0,0], "f": 0, "t": 0, "d": [1255], "a": 1 }, + { "px": [216,696], "src": [24,0], "f": 0, "t": 1, "d": [1256], "a": 1 }, + { "px": [240,696], "src": [48,0], "f": 0, "t": 2, "d": [1257], "a": 1 }, + { "px": [264,696], "src": [72,0], "f": 0, "t": 3, "d": [1258], "a": 1 }, + { "px": [288,696], "src": [0,0], "f": 0, "t": 0, "d": [1259], "a": 1 }, + { "px": [312,696], "src": [24,0], "f": 0, "t": 1, "d": [1260], "a": 1 }, + { "px": [336,696], "src": [48,0], "f": 0, "t": 2, "d": [1261], "a": 1 }, + { "px": [360,696], "src": [72,0], "f": 0, "t": 3, "d": [1262], "a": 1 }, + { "px": [384,696], "src": [0,0], "f": 0, "t": 0, "d": [1263], "a": 1 }, + { "px": [408,696], "src": [24,0], "f": 0, "t": 1, "d": [1264], "a": 1 }, + { "px": [432,696], "src": [48,0], "f": 0, "t": 2, "d": [1265], "a": 1 }, + { "px": [456,696], "src": [72,0], "f": 0, "t": 3, "d": [1266], "a": 1 }, + { "px": [480,696], "src": [0,0], "f": 0, "t": 0, "d": [1267], "a": 1 }, + { "px": [504,696], "src": [24,0], "f": 0, "t": 1, "d": [1268], "a": 1 }, + { "px": [528,696], "src": [48,0], "f": 0, "t": 2, "d": [1269], "a": 1 }, + { "px": [552,696], "src": [72,0], "f": 0, "t": 3, "d": [1270], "a": 1 }, + { "px": [576,696], "src": [0,0], "f": 0, "t": 0, "d": [1271], "a": 1 }, + { "px": [600,696], "src": [24,0], "f": 0, "t": 1, "d": [1272], "a": 1 }, + { "px": [624,696], "src": [48,0], "f": 0, "t": 2, "d": [1273], "a": 1 }, + { "px": [648,696], "src": [72,0], "f": 0, "t": 3, "d": [1274], "a": 1 }, + { "px": [672,696], "src": [0,0], "f": 0, "t": 0, "d": [1275], "a": 1 }, + { "px": [696,696], "src": [24,0], "f": 0, "t": 1, "d": [1276], "a": 1 }, + { "px": [720,696], "src": [48,0], "f": 0, "t": 2, "d": [1277], "a": 1 }, + { "px": [744,696], "src": [72,0], "f": 0, "t": 3, "d": [1278], "a": 1 }, + { "px": [768,696], "src": [0,0], "f": 0, "t": 0, "d": [1279], "a": 1 }, + { "px": [792,696], "src": [24,0], "f": 0, "t": 1, "d": [1280], "a": 1 }, + { "px": [816,696], "src": [48,0], "f": 0, "t": 2, "d": [1281], "a": 1 }, + { "px": [840,696], "src": [72,0], "f": 0, "t": 3, "d": [1282], "a": 1 }, + { "px": [864,696], "src": [0,0], "f": 0, "t": 0, "d": [1283], "a": 1 }, + { "px": [888,696], "src": [24,0], "f": 0, "t": 1, "d": [1284], "a": 1 }, + { "px": [912,696], "src": [48,0], "f": 0, "t": 2, "d": [1285], "a": 1 }, + { "px": [936,696], "src": [72,0], "f": 0, "t": 3, "d": [1286], "a": 1 }, + { "px": [960,696], "src": [0,0], "f": 0, "t": 0, "d": [1287], "a": 1 }, + { "px": [984,696], "src": [24,0], "f": 0, "t": 1, "d": [1288], "a": 1 }, + { "px": [1008,696], "src": [48,0], "f": 0, "t": 2, "d": [1289], "a": 1 }, + { "px": [0,720], "src": [0,0], "f": 0, "t": 0, "d": [1290], "a": 1 }, + { "px": [24,720], "src": [24,0], "f": 0, "t": 1, "d": [1291], "a": 1 }, + { "px": [48,720], "src": [48,0], "f": 0, "t": 2, "d": [1292], "a": 1 }, + { "px": [72,720], "src": [72,0], "f": 0, "t": 3, "d": [1293], "a": 1 }, + { "px": [96,720], "src": [0,0], "f": 0, "t": 0, "d": [1294], "a": 1 }, + { "px": [120,720], "src": [24,0], "f": 0, "t": 1, "d": [1295], "a": 1 }, + { "px": [144,720], "src": [48,0], "f": 0, "t": 2, "d": [1296], "a": 1 }, + { "px": [168,720], "src": [72,0], "f": 0, "t": 3, "d": [1297], "a": 1 }, + { "px": [192,720], "src": [0,0], "f": 0, "t": 0, "d": [1298], "a": 1 }, + { "px": [216,720], "src": [24,0], "f": 0, "t": 1, "d": [1299], "a": 1 }, + { "px": [240,720], "src": [48,0], "f": 0, "t": 2, "d": [1300], "a": 1 }, + { "px": [264,720], "src": [72,0], "f": 0, "t": 3, "d": [1301], "a": 1 }, + { "px": [288,720], "src": [0,0], "f": 0, "t": 0, "d": [1302], "a": 1 }, + { "px": [312,720], "src": [24,0], "f": 0, "t": 1, "d": [1303], "a": 1 }, + { "px": [336,720], "src": [48,0], "f": 0, "t": 2, "d": [1304], "a": 1 }, + { "px": [360,720], "src": [72,0], "f": 0, "t": 3, "d": [1305], "a": 1 }, + { "px": [384,720], "src": [0,0], "f": 0, "t": 0, "d": [1306], "a": 1 }, + { "px": [408,720], "src": [24,0], "f": 0, "t": 1, "d": [1307], "a": 1 }, + { "px": [432,720], "src": [48,0], "f": 0, "t": 2, "d": [1308], "a": 1 }, + { "px": [456,720], "src": [72,0], "f": 0, "t": 3, "d": [1309], "a": 1 }, + { "px": [480,720], "src": [0,0], "f": 0, "t": 0, "d": [1310], "a": 1 }, + { "px": [504,720], "src": [24,0], "f": 0, "t": 1, "d": [1311], "a": 1 }, + { "px": [528,720], "src": [48,0], "f": 0, "t": 2, "d": [1312], "a": 1 }, + { "px": [552,720], "src": [72,0], "f": 0, "t": 3, "d": [1313], "a": 1 }, + { "px": [576,720], "src": [0,0], "f": 0, "t": 0, "d": [1314], "a": 1 }, + { "px": [600,720], "src": [24,0], "f": 0, "t": 1, "d": [1315], "a": 1 }, + { "px": [624,720], "src": [48,0], "f": 0, "t": 2, "d": [1316], "a": 1 }, + { "px": [648,720], "src": [72,0], "f": 0, "t": 3, "d": [1317], "a": 1 }, + { "px": [672,720], "src": [0,0], "f": 0, "t": 0, "d": [1318], "a": 1 }, + { "px": [696,720], "src": [24,0], "f": 0, "t": 1, "d": [1319], "a": 1 }, + { "px": [720,720], "src": [48,0], "f": 0, "t": 2, "d": [1320], "a": 1 }, + { "px": [744,720], "src": [72,0], "f": 0, "t": 3, "d": [1321], "a": 1 }, + { "px": [768,720], "src": [0,0], "f": 0, "t": 0, "d": [1322], "a": 1 }, + { "px": [792,720], "src": [24,0], "f": 0, "t": 1, "d": [1323], "a": 1 }, + { "px": [816,720], "src": [48,0], "f": 0, "t": 2, "d": [1324], "a": 1 }, + { "px": [840,720], "src": [72,0], "f": 0, "t": 3, "d": [1325], "a": 1 }, + { "px": [864,720], "src": [0,0], "f": 0, "t": 0, "d": [1326], "a": 1 }, + { "px": [888,720], "src": [24,0], "f": 0, "t": 1, "d": [1327], "a": 1 }, + { "px": [912,720], "src": [48,0], "f": 0, "t": 2, "d": [1328], "a": 1 }, + { "px": [936,720], "src": [72,0], "f": 0, "t": 3, "d": [1329], "a": 1 }, + { "px": [960,720], "src": [0,0], "f": 0, "t": 0, "d": [1330], "a": 1 }, + { "px": [984,720], "src": [24,0], "f": 0, "t": 1, "d": [1331], "a": 1 }, + { "px": [1008,720], "src": [48,0], "f": 0, "t": 2, "d": [1332], "a": 1 }, + { "px": [0,744], "src": [0,0], "f": 0, "t": 0, "d": [1333], "a": 1 }, + { "px": [24,744], "src": [24,0], "f": 0, "t": 1, "d": [1334], "a": 1 }, + { "px": [48,744], "src": [48,0], "f": 0, "t": 2, "d": [1335], "a": 1 }, + { "px": [72,744], "src": [72,0], "f": 0, "t": 3, "d": [1336], "a": 1 }, + { "px": [96,744], "src": [0,0], "f": 0, "t": 0, "d": [1337], "a": 1 }, + { "px": [120,744], "src": [24,0], "f": 0, "t": 1, "d": [1338], "a": 1 }, + { "px": [144,744], "src": [48,0], "f": 0, "t": 2, "d": [1339], "a": 1 }, + { "px": [168,744], "src": [72,0], "f": 0, "t": 3, "d": [1340], "a": 1 }, + { "px": [192,744], "src": [0,0], "f": 0, "t": 0, "d": [1341], "a": 1 }, + { "px": [216,744], "src": [24,0], "f": 0, "t": 1, "d": [1342], "a": 1 }, + { "px": [240,744], "src": [48,0], "f": 0, "t": 2, "d": [1343], "a": 1 }, + { "px": [264,744], "src": [72,0], "f": 0, "t": 3, "d": [1344], "a": 1 }, + { "px": [288,744], "src": [0,0], "f": 0, "t": 0, "d": [1345], "a": 1 }, + { "px": [312,744], "src": [24,0], "f": 0, "t": 1, "d": [1346], "a": 1 }, + { "px": [336,744], "src": [48,0], "f": 0, "t": 2, "d": [1347], "a": 1 }, + { "px": [360,744], "src": [72,0], "f": 0, "t": 3, "d": [1348], "a": 1 }, + { "px": [384,744], "src": [0,0], "f": 0, "t": 0, "d": [1349], "a": 1 }, + { "px": [408,744], "src": [24,0], "f": 0, "t": 1, "d": [1350], "a": 1 }, + { "px": [432,744], "src": [48,0], "f": 0, "t": 2, "d": [1351], "a": 1 }, + { "px": [456,744], "src": [72,0], "f": 0, "t": 3, "d": [1352], "a": 1 }, + { "px": [480,744], "src": [0,0], "f": 0, "t": 0, "d": [1353], "a": 1 }, + { "px": [504,744], "src": [24,0], "f": 0, "t": 1, "d": [1354], "a": 1 }, + { "px": [528,744], "src": [48,0], "f": 0, "t": 2, "d": [1355], "a": 1 }, + { "px": [552,744], "src": [72,0], "f": 0, "t": 3, "d": [1356], "a": 1 }, + { "px": [576,744], "src": [0,0], "f": 0, "t": 0, "d": [1357], "a": 1 }, + { "px": [600,744], "src": [24,0], "f": 0, "t": 1, "d": [1358], "a": 1 }, + { "px": [624,744], "src": [48,0], "f": 0, "t": 2, "d": [1359], "a": 1 }, + { "px": [648,744], "src": [72,0], "f": 0, "t": 3, "d": [1360], "a": 1 }, + { "px": [672,744], "src": [0,0], "f": 0, "t": 0, "d": [1361], "a": 1 }, + { "px": [696,744], "src": [24,0], "f": 0, "t": 1, "d": [1362], "a": 1 }, + { "px": [720,744], "src": [48,0], "f": 0, "t": 2, "d": [1363], "a": 1 }, + { "px": [744,744], "src": [72,0], "f": 0, "t": 3, "d": [1364], "a": 1 }, + { "px": [768,744], "src": [0,0], "f": 0, "t": 0, "d": [1365], "a": 1 }, + { "px": [792,744], "src": [24,0], "f": 0, "t": 1, "d": [1366], "a": 1 }, + { "px": [816,744], "src": [48,0], "f": 0, "t": 2, "d": [1367], "a": 1 }, + { "px": [840,744], "src": [72,0], "f": 0, "t": 3, "d": [1368], "a": 1 }, + { "px": [864,744], "src": [0,0], "f": 0, "t": 0, "d": [1369], "a": 1 }, + { "px": [888,744], "src": [24,0], "f": 0, "t": 1, "d": [1370], "a": 1 }, + { "px": [912,744], "src": [48,0], "f": 0, "t": 2, "d": [1371], "a": 1 }, + { "px": [936,744], "src": [72,0], "f": 0, "t": 3, "d": [1372], "a": 1 }, + { "px": [960,744], "src": [0,0], "f": 0, "t": 0, "d": [1373], "a": 1 }, + { "px": [984,744], "src": [24,0], "f": 0, "t": 1, "d": [1374], "a": 1 }, + { "px": [1008,744], "src": [48,0], "f": 0, "t": 2, "d": [1375], "a": 1 }, + { "px": [0,768], "src": [0,0], "f": 0, "t": 0, "d": [1376], "a": 1 }, + { "px": [24,768], "src": [24,0], "f": 0, "t": 1, "d": [1377], "a": 1 }, + { "px": [48,768], "src": [48,0], "f": 0, "t": 2, "d": [1378], "a": 1 }, + { "px": [72,768], "src": [72,0], "f": 0, "t": 3, "d": [1379], "a": 1 }, + { "px": [96,768], "src": [0,0], "f": 0, "t": 0, "d": [1380], "a": 1 }, + { "px": [120,768], "src": [24,0], "f": 0, "t": 1, "d": [1381], "a": 1 }, + { "px": [144,768], "src": [48,0], "f": 0, "t": 2, "d": [1382], "a": 1 }, + { "px": [168,768], "src": [72,0], "f": 0, "t": 3, "d": [1383], "a": 1 }, + { "px": [192,768], "src": [0,0], "f": 0, "t": 0, "d": [1384], "a": 1 }, + { "px": [216,768], "src": [24,0], "f": 0, "t": 1, "d": [1385], "a": 1 }, + { "px": [240,768], "src": [48,0], "f": 0, "t": 2, "d": [1386], "a": 1 }, + { "px": [264,768], "src": [72,0], "f": 0, "t": 3, "d": [1387], "a": 1 }, + { "px": [288,768], "src": [0,0], "f": 0, "t": 0, "d": [1388], "a": 1 }, + { "px": [312,768], "src": [24,0], "f": 0, "t": 1, "d": [1389], "a": 1 }, + { "px": [336,768], "src": [48,0], "f": 0, "t": 2, "d": [1390], "a": 1 }, + { "px": [360,768], "src": [72,0], "f": 0, "t": 3, "d": [1391], "a": 1 }, + { "px": [384,768], "src": [0,0], "f": 0, "t": 0, "d": [1392], "a": 1 }, + { "px": [408,768], "src": [24,0], "f": 0, "t": 1, "d": [1393], "a": 1 }, + { "px": [432,768], "src": [48,0], "f": 0, "t": 2, "d": [1394], "a": 1 }, + { "px": [456,768], "src": [72,0], "f": 0, "t": 3, "d": [1395], "a": 1 }, + { "px": [480,768], "src": [0,0], "f": 0, "t": 0, "d": [1396], "a": 1 }, + { "px": [504,768], "src": [24,0], "f": 0, "t": 1, "d": [1397], "a": 1 }, + { "px": [528,768], "src": [48,0], "f": 0, "t": 2, "d": [1398], "a": 1 }, + { "px": [552,768], "src": [72,0], "f": 0, "t": 3, "d": [1399], "a": 1 }, + { "px": [576,768], "src": [0,0], "f": 0, "t": 0, "d": [1400], "a": 1 }, + { "px": [600,768], "src": [24,0], "f": 0, "t": 1, "d": [1401], "a": 1 }, + { "px": [624,768], "src": [48,0], "f": 0, "t": 2, "d": [1402], "a": 1 }, + { "px": [648,768], "src": [72,0], "f": 0, "t": 3, "d": [1403], "a": 1 }, + { "px": [672,768], "src": [0,0], "f": 0, "t": 0, "d": [1404], "a": 1 }, + { "px": [696,768], "src": [24,0], "f": 0, "t": 1, "d": [1405], "a": 1 }, + { "px": [720,768], "src": [48,0], "f": 0, "t": 2, "d": [1406], "a": 1 }, + { "px": [744,768], "src": [72,0], "f": 0, "t": 3, "d": [1407], "a": 1 }, + { "px": [768,768], "src": [0,0], "f": 0, "t": 0, "d": [1408], "a": 1 }, + { "px": [792,768], "src": [24,0], "f": 0, "t": 1, "d": [1409], "a": 1 }, + { "px": [816,768], "src": [48,0], "f": 0, "t": 2, "d": [1410], "a": 1 }, + { "px": [840,768], "src": [72,0], "f": 0, "t": 3, "d": [1411], "a": 1 }, + { "px": [864,768], "src": [0,0], "f": 0, "t": 0, "d": [1412], "a": 1 }, + { "px": [888,768], "src": [24,0], "f": 0, "t": 1, "d": [1413], "a": 1 }, + { "px": [912,768], "src": [48,0], "f": 0, "t": 2, "d": [1414], "a": 1 }, + { "px": [936,768], "src": [72,0], "f": 0, "t": 3, "d": [1415], "a": 1 }, + { "px": [960,768], "src": [0,0], "f": 0, "t": 0, "d": [1416], "a": 1 }, + { "px": [984,768], "src": [24,0], "f": 0, "t": 1, "d": [1417], "a": 1 }, + { "px": [1008,768], "src": [48,0], "f": 0, "t": 2, "d": [1418], "a": 1 }, + { "px": [0,792], "src": [0,0], "f": 0, "t": 0, "d": [1419], "a": 1 }, + { "px": [24,792], "src": [24,0], "f": 0, "t": 1, "d": [1420], "a": 1 }, + { "px": [48,792], "src": [48,0], "f": 0, "t": 2, "d": [1421], "a": 1 }, + { "px": [72,792], "src": [72,0], "f": 0, "t": 3, "d": [1422], "a": 1 }, + { "px": [96,792], "src": [0,0], "f": 0, "t": 0, "d": [1423], "a": 1 }, + { "px": [120,792], "src": [24,0], "f": 0, "t": 1, "d": [1424], "a": 1 }, + { "px": [144,792], "src": [48,0], "f": 0, "t": 2, "d": [1425], "a": 1 }, + { "px": [168,792], "src": [72,0], "f": 0, "t": 3, "d": [1426], "a": 1 }, + { "px": [192,792], "src": [0,0], "f": 0, "t": 0, "d": [1427], "a": 1 }, + { "px": [216,792], "src": [24,0], "f": 0, "t": 1, "d": [1428], "a": 1 }, + { "px": [240,792], "src": [48,0], "f": 0, "t": 2, "d": [1429], "a": 1 }, + { "px": [264,792], "src": [72,0], "f": 0, "t": 3, "d": [1430], "a": 1 }, + { "px": [288,792], "src": [0,0], "f": 0, "t": 0, "d": [1431], "a": 1 }, + { "px": [312,792], "src": [24,0], "f": 0, "t": 1, "d": [1432], "a": 1 }, + { "px": [336,792], "src": [48,0], "f": 0, "t": 2, "d": [1433], "a": 1 }, + { "px": [360,792], "src": [72,0], "f": 0, "t": 3, "d": [1434], "a": 1 }, + { "px": [384,792], "src": [0,0], "f": 0, "t": 0, "d": [1435], "a": 1 }, + { "px": [408,792], "src": [24,0], "f": 0, "t": 1, "d": [1436], "a": 1 }, + { "px": [432,792], "src": [48,0], "f": 0, "t": 2, "d": [1437], "a": 1 }, + { "px": [456,792], "src": [72,0], "f": 0, "t": 3, "d": [1438], "a": 1 }, + { "px": [480,792], "src": [0,0], "f": 0, "t": 0, "d": [1439], "a": 1 }, + { "px": [504,792], "src": [24,0], "f": 0, "t": 1, "d": [1440], "a": 1 }, + { "px": [528,792], "src": [48,0], "f": 0, "t": 2, "d": [1441], "a": 1 }, + { "px": [552,792], "src": [72,0], "f": 0, "t": 3, "d": [1442], "a": 1 }, + { "px": [576,792], "src": [0,0], "f": 0, "t": 0, "d": [1443], "a": 1 }, + { "px": [600,792], "src": [24,0], "f": 0, "t": 1, "d": [1444], "a": 1 }, + { "px": [624,792], "src": [48,0], "f": 0, "t": 2, "d": [1445], "a": 1 }, + { "px": [648,792], "src": [72,0], "f": 0, "t": 3, "d": [1446], "a": 1 }, + { "px": [672,792], "src": [0,0], "f": 0, "t": 0, "d": [1447], "a": 1 }, + { "px": [696,792], "src": [24,0], "f": 0, "t": 1, "d": [1448], "a": 1 }, + { "px": [720,792], "src": [48,0], "f": 0, "t": 2, "d": [1449], "a": 1 }, + { "px": [744,792], "src": [72,0], "f": 0, "t": 3, "d": [1450], "a": 1 }, + { "px": [768,792], "src": [0,0], "f": 0, "t": 0, "d": [1451], "a": 1 }, + { "px": [792,792], "src": [24,0], "f": 0, "t": 1, "d": [1452], "a": 1 }, + { "px": [816,792], "src": [48,0], "f": 0, "t": 2, "d": [1453], "a": 1 }, + { "px": [840,792], "src": [72,0], "f": 0, "t": 3, "d": [1454], "a": 1 }, + { "px": [864,792], "src": [0,0], "f": 0, "t": 0, "d": [1455], "a": 1 }, + { "px": [888,792], "src": [24,0], "f": 0, "t": 1, "d": [1456], "a": 1 }, + { "px": [912,792], "src": [48,0], "f": 0, "t": 2, "d": [1457], "a": 1 }, + { "px": [936,792], "src": [72,0], "f": 0, "t": 3, "d": [1458], "a": 1 }, + { "px": [960,792], "src": [0,0], "f": 0, "t": 0, "d": [1459], "a": 1 }, + { "px": [984,792], "src": [24,0], "f": 0, "t": 1, "d": [1460], "a": 1 }, + { "px": [1008,792], "src": [48,0], "f": 0, "t": 2, "d": [1461], "a": 1 }, + { "px": [0,816], "src": [0,0], "f": 0, "t": 0, "d": [1462], "a": 1 }, + { "px": [24,816], "src": [24,0], "f": 0, "t": 1, "d": [1463], "a": 1 }, + { "px": [48,816], "src": [48,0], "f": 0, "t": 2, "d": [1464], "a": 1 }, + { "px": [72,816], "src": [72,0], "f": 0, "t": 3, "d": [1465], "a": 1 }, + { "px": [96,816], "src": [0,0], "f": 0, "t": 0, "d": [1466], "a": 1 }, + { "px": [120,816], "src": [24,0], "f": 0, "t": 1, "d": [1467], "a": 1 }, + { "px": [144,816], "src": [48,0], "f": 0, "t": 2, "d": [1468], "a": 1 }, + { "px": [168,816], "src": [72,0], "f": 0, "t": 3, "d": [1469], "a": 1 }, + { "px": [192,816], "src": [0,0], "f": 0, "t": 0, "d": [1470], "a": 1 }, + { "px": [216,816], "src": [24,0], "f": 0, "t": 1, "d": [1471], "a": 1 }, + { "px": [240,816], "src": [48,0], "f": 0, "t": 2, "d": [1472], "a": 1 }, + { "px": [264,816], "src": [72,0], "f": 0, "t": 3, "d": [1473], "a": 1 }, + { "px": [288,816], "src": [0,0], "f": 0, "t": 0, "d": [1474], "a": 1 }, + { "px": [312,816], "src": [24,0], "f": 0, "t": 1, "d": [1475], "a": 1 }, + { "px": [336,816], "src": [48,0], "f": 0, "t": 2, "d": [1476], "a": 1 }, + { "px": [360,816], "src": [72,0], "f": 0, "t": 3, "d": [1477], "a": 1 }, + { "px": [384,816], "src": [0,0], "f": 0, "t": 0, "d": [1478], "a": 1 }, + { "px": [408,816], "src": [24,0], "f": 0, "t": 1, "d": [1479], "a": 1 }, + { "px": [432,816], "src": [48,0], "f": 0, "t": 2, "d": [1480], "a": 1 }, + { "px": [456,816], "src": [72,0], "f": 0, "t": 3, "d": [1481], "a": 1 }, + { "px": [480,816], "src": [0,0], "f": 0, "t": 0, "d": [1482], "a": 1 }, + { "px": [504,816], "src": [24,0], "f": 0, "t": 1, "d": [1483], "a": 1 }, + { "px": [528,816], "src": [48,0], "f": 0, "t": 2, "d": [1484], "a": 1 }, + { "px": [552,816], "src": [72,0], "f": 0, "t": 3, "d": [1485], "a": 1 }, + { "px": [576,816], "src": [0,0], "f": 0, "t": 0, "d": [1486], "a": 1 }, + { "px": [600,816], "src": [24,0], "f": 0, "t": 1, "d": [1487], "a": 1 }, + { "px": [624,816], "src": [48,0], "f": 0, "t": 2, "d": [1488], "a": 1 }, + { "px": [648,816], "src": [72,0], "f": 0, "t": 3, "d": [1489], "a": 1 }, + { "px": [672,816], "src": [0,0], "f": 0, "t": 0, "d": [1490], "a": 1 }, + { "px": [696,816], "src": [24,0], "f": 0, "t": 1, "d": [1491], "a": 1 }, + { "px": [720,816], "src": [48,0], "f": 0, "t": 2, "d": [1492], "a": 1 }, + { "px": [744,816], "src": [72,0], "f": 0, "t": 3, "d": [1493], "a": 1 }, + { "px": [768,816], "src": [0,0], "f": 0, "t": 0, "d": [1494], "a": 1 }, + { "px": [792,816], "src": [24,0], "f": 0, "t": 1, "d": [1495], "a": 1 }, + { "px": [816,816], "src": [48,0], "f": 0, "t": 2, "d": [1496], "a": 1 }, + { "px": [840,816], "src": [72,0], "f": 0, "t": 3, "d": [1497], "a": 1 }, + { "px": [864,816], "src": [0,0], "f": 0, "t": 0, "d": [1498], "a": 1 }, + { "px": [888,816], "src": [24,0], "f": 0, "t": 1, "d": [1499], "a": 1 }, + { "px": [912,816], "src": [48,0], "f": 0, "t": 2, "d": [1500], "a": 1 }, + { "px": [936,816], "src": [72,0], "f": 0, "t": 3, "d": [1501], "a": 1 }, + { "px": [960,816], "src": [0,0], "f": 0, "t": 0, "d": [1502], "a": 1 }, + { "px": [984,816], "src": [24,0], "f": 0, "t": 1, "d": [1503], "a": 1 }, + { "px": [1008,816], "src": [48,0], "f": 0, "t": 2, "d": [1504], "a": 1 }, + { "px": [0,840], "src": [0,24], "f": 0, "t": 8, "d": [1505], "a": 1 }, + { "px": [24,840], "src": [24,24], "f": 0, "t": 9, "d": [1506], "a": 1 }, + { "px": [48,840], "src": [48,24], "f": 0, "t": 10, "d": [1507], "a": 1 }, + { "px": [72,840], "src": [72,24], "f": 0, "t": 11, "d": [1508], "a": 1 }, + { "px": [96,840], "src": [0,24], "f": 0, "t": 8, "d": [1509], "a": 1 }, + { "px": [120,840], "src": [24,24], "f": 0, "t": 9, "d": [1510], "a": 1 }, + { "px": [144,840], "src": [48,24], "f": 0, "t": 10, "d": [1511], "a": 1 }, + { "px": [168,840], "src": [72,24], "f": 0, "t": 11, "d": [1512], "a": 1 }, + { "px": [192,840], "src": [0,24], "f": 0, "t": 8, "d": [1513], "a": 1 }, + { "px": [216,840], "src": [24,24], "f": 0, "t": 9, "d": [1514], "a": 1 }, + { "px": [240,840], "src": [48,24], "f": 0, "t": 10, "d": [1515], "a": 1 }, + { "px": [264,840], "src": [72,24], "f": 0, "t": 11, "d": [1516], "a": 1 }, + { "px": [288,840], "src": [0,24], "f": 0, "t": 8, "d": [1517], "a": 1 }, + { "px": [312,840], "src": [24,24], "f": 0, "t": 9, "d": [1518], "a": 1 }, + { "px": [336,840], "src": [48,24], "f": 0, "t": 10, "d": [1519], "a": 1 }, + { "px": [360,840], "src": [72,24], "f": 0, "t": 11, "d": [1520], "a": 1 }, + { "px": [384,840], "src": [0,24], "f": 0, "t": 8, "d": [1521], "a": 1 }, + { "px": [408,840], "src": [24,24], "f": 0, "t": 9, "d": [1522], "a": 1 }, + { "px": [432,840], "src": [48,24], "f": 0, "t": 10, "d": [1523], "a": 1 }, + { "px": [456,840], "src": [72,24], "f": 0, "t": 11, "d": [1524], "a": 1 }, + { "px": [480,840], "src": [0,24], "f": 0, "t": 8, "d": [1525], "a": 1 }, + { "px": [504,840], "src": [24,24], "f": 0, "t": 9, "d": [1526], "a": 1 }, + { "px": [528,840], "src": [48,24], "f": 0, "t": 10, "d": [1527], "a": 1 }, + { "px": [552,840], "src": [72,24], "f": 0, "t": 11, "d": [1528], "a": 1 }, + { "px": [576,840], "src": [0,24], "f": 0, "t": 8, "d": [1529], "a": 1 }, + { "px": [600,840], "src": [24,24], "f": 0, "t": 9, "d": [1530], "a": 1 }, + { "px": [624,840], "src": [48,24], "f": 0, "t": 10, "d": [1531], "a": 1 }, + { "px": [648,840], "src": [72,24], "f": 0, "t": 11, "d": [1532], "a": 1 }, + { "px": [672,840], "src": [0,24], "f": 0, "t": 8, "d": [1533], "a": 1 }, + { "px": [696,840], "src": [24,24], "f": 0, "t": 9, "d": [1534], "a": 1 }, + { "px": [720,840], "src": [48,24], "f": 0, "t": 10, "d": [1535], "a": 1 }, + { "px": [744,840], "src": [72,24], "f": 0, "t": 11, "d": [1536], "a": 1 }, + { "px": [768,840], "src": [0,24], "f": 0, "t": 8, "d": [1537], "a": 1 }, + { "px": [792,840], "src": [24,24], "f": 0, "t": 9, "d": [1538], "a": 1 }, + { "px": [816,840], "src": [48,24], "f": 0, "t": 10, "d": [1539], "a": 1 }, + { "px": [840,840], "src": [72,24], "f": 0, "t": 11, "d": [1540], "a": 1 }, + { "px": [864,840], "src": [0,24], "f": 0, "t": 8, "d": [1541], "a": 1 }, + { "px": [888,840], "src": [24,24], "f": 0, "t": 9, "d": [1542], "a": 1 }, + { "px": [912,840], "src": [48,24], "f": 0, "t": 10, "d": [1543], "a": 1 }, + { "px": [936,840], "src": [72,24], "f": 0, "t": 11, "d": [1544], "a": 1 }, + { "px": [960,840], "src": [0,24], "f": 0, "t": 8, "d": [1545], "a": 1 }, + { "px": [984,840], "src": [24,24], "f": 0, "t": 9, "d": [1546], "a": 1 }, + { "px": [1008,840], "src": [48,24], "f": 0, "t": 10, "d": [1547], "a": 1 }, + { "px": [0,864], "src": [0,48], "f": 0, "t": 16, "d": [1548], "a": 1 }, + { "px": [24,864], "src": [24,48], "f": 0, "t": 17, "d": [1549], "a": 1 }, + { "px": [48,864], "src": [48,48], "f": 0, "t": 18, "d": [1550], "a": 1 }, + { "px": [72,864], "src": [72,48], "f": 0, "t": 19, "d": [1551], "a": 1 }, + { "px": [96,864], "src": [72,48], "f": 0, "t": 19, "d": [1552], "a": 1 }, + { "px": [120,864], "src": [72,48], "f": 0, "t": 19, "d": [1553], "a": 1 }, + { "px": [144,864], "src": [72,48], "f": 0, "t": 19, "d": [1554], "a": 1 }, + { "px": [168,864], "src": [72,48], "f": 0, "t": 19, "d": [1555], "a": 1 }, + { "px": [192,864], "src": [72,48], "f": 0, "t": 19, "d": [1556], "a": 1 }, + { "px": [216,864], "src": [72,48], "f": 0, "t": 19, "d": [1557], "a": 1 }, + { "px": [240,864], "src": [72,48], "f": 0, "t": 19, "d": [1558], "a": 1 }, + { "px": [264,864], "src": [72,48], "f": 0, "t": 19, "d": [1559], "a": 1 }, + { "px": [288,864], "src": [72,48], "f": 0, "t": 19, "d": [1560], "a": 1 }, + { "px": [312,864], "src": [72,48], "f": 0, "t": 19, "d": [1561], "a": 1 }, + { "px": [336,864], "src": [72,48], "f": 0, "t": 19, "d": [1562], "a": 1 }, + { "px": [360,864], "src": [72,48], "f": 0, "t": 19, "d": [1563], "a": 1 }, + { "px": [384,864], "src": [72,48], "f": 0, "t": 19, "d": [1564], "a": 1 }, + { "px": [408,864], "src": [72,48], "f": 0, "t": 19, "d": [1565], "a": 1 }, + { "px": [432,864], "src": [72,48], "f": 0, "t": 19, "d": [1566], "a": 1 }, + { "px": [456,864], "src": [72,48], "f": 0, "t": 19, "d": [1567], "a": 1 }, + { "px": [480,864], "src": [72,48], "f": 0, "t": 19, "d": [1568], "a": 1 }, + { "px": [504,864], "src": [72,48], "f": 0, "t": 19, "d": [1569], "a": 1 }, + { "px": [528,864], "src": [72,48], "f": 0, "t": 19, "d": [1570], "a": 1 }, + { "px": [552,864], "src": [72,48], "f": 0, "t": 19, "d": [1571], "a": 1 }, + { "px": [576,864], "src": [72,48], "f": 0, "t": 19, "d": [1572], "a": 1 }, + { "px": [600,864], "src": [72,48], "f": 0, "t": 19, "d": [1573], "a": 1 }, + { "px": [624,864], "src": [72,48], "f": 0, "t": 19, "d": [1574], "a": 1 }, + { "px": [648,864], "src": [72,48], "f": 0, "t": 19, "d": [1575], "a": 1 }, + { "px": [672,864], "src": [72,48], "f": 0, "t": 19, "d": [1576], "a": 1 }, + { "px": [696,864], "src": [72,48], "f": 0, "t": 19, "d": [1577], "a": 1 }, + { "px": [720,864], "src": [72,48], "f": 0, "t": 19, "d": [1578], "a": 1 }, + { "px": [744,864], "src": [72,48], "f": 0, "t": 19, "d": [1579], "a": 1 }, + { "px": [768,864], "src": [72,48], "f": 0, "t": 19, "d": [1580], "a": 1 }, + { "px": [792,864], "src": [72,48], "f": 0, "t": 19, "d": [1581], "a": 1 }, + { "px": [816,864], "src": [72,48], "f": 0, "t": 19, "d": [1582], "a": 1 }, + { "px": [840,864], "src": [72,48], "f": 0, "t": 19, "d": [1583], "a": 1 }, + { "px": [864,864], "src": [72,48], "f": 0, "t": 19, "d": [1584], "a": 1 }, + { "px": [888,864], "src": [72,48], "f": 0, "t": 19, "d": [1585], "a": 1 }, + { "px": [912,864], "src": [72,48], "f": 0, "t": 19, "d": [1586], "a": 1 }, + { "px": [936,864], "src": [72,48], "f": 0, "t": 19, "d": [1587], "a": 1 }, + { "px": [960,864], "src": [72,48], "f": 0, "t": 19, "d": [1588], "a": 1 }, + { "px": [984,864], "src": [72,48], "f": 0, "t": 19, "d": [1589], "a": 1 }, + { "px": [1008,864], "src": [72,48], "f": 0, "t": 19, "d": [1590], "a": 1 }, + { "px": [0,888], "src": [0,48], "f": 0, "t": 16, "d": [1591], "a": 1 }, + { "px": [24,888], "src": [24,48], "f": 0, "t": 17, "d": [1592], "a": 1 }, + { "px": [48,888], "src": [48,48], "f": 0, "t": 18, "d": [1593], "a": 1 }, + { "px": [72,888], "src": [72,48], "f": 0, "t": 19, "d": [1594], "a": 1 }, + { "px": [96,888], "src": [72,48], "f": 0, "t": 19, "d": [1595], "a": 1 }, + { "px": [120,888], "src": [72,48], "f": 0, "t": 19, "d": [1596], "a": 1 }, + { "px": [144,888], "src": [72,48], "f": 0, "t": 19, "d": [1597], "a": 1 }, + { "px": [168,888], "src": [72,48], "f": 0, "t": 19, "d": [1598], "a": 1 }, + { "px": [192,888], "src": [72,48], "f": 0, "t": 19, "d": [1599], "a": 1 }, + { "px": [216,888], "src": [72,48], "f": 0, "t": 19, "d": [1600], "a": 1 }, + { "px": [240,888], "src": [72,48], "f": 0, "t": 19, "d": [1601], "a": 1 }, + { "px": [264,888], "src": [72,48], "f": 0, "t": 19, "d": [1602], "a": 1 }, + { "px": [288,888], "src": [72,48], "f": 0, "t": 19, "d": [1603], "a": 1 }, + { "px": [312,888], "src": [72,48], "f": 0, "t": 19, "d": [1604], "a": 1 }, + { "px": [336,888], "src": [72,48], "f": 0, "t": 19, "d": [1605], "a": 1 }, + { "px": [360,888], "src": [72,48], "f": 0, "t": 19, "d": [1606], "a": 1 }, + { "px": [384,888], "src": [0,48], "f": 0, "t": 16, "d": [1607], "a": 1 }, + { "px": [408,888], "src": [0,48], "f": 0, "t": 16, "d": [1608], "a": 1 }, + { "px": [432,888], "src": [24,48], "f": 0, "t": 17, "d": [1609], "a": 1 }, + { "px": [456,888], "src": [48,48], "f": 0, "t": 18, "d": [1610], "a": 1 }, + { "px": [480,888], "src": [72,48], "f": 0, "t": 19, "d": [1611], "a": 1 }, + { "px": [504,888], "src": [72,48], "f": 0, "t": 19, "d": [1612], "a": 1 }, + { "px": [528,888], "src": [72,48], "f": 0, "t": 19, "d": [1613], "a": 1 }, + { "px": [552,888], "src": [72,48], "f": 0, "t": 19, "d": [1614], "a": 1 }, + { "px": [576,888], "src": [72,48], "f": 0, "t": 19, "d": [1615], "a": 1 }, + { "px": [600,888], "src": [72,48], "f": 0, "t": 19, "d": [1616], "a": 1 }, + { "px": [624,888], "src": [0,48], "f": 0, "t": 16, "d": [1617], "a": 1 }, + { "px": [648,888], "src": [0,48], "f": 0, "t": 16, "d": [1618], "a": 1 }, + { "px": [672,888], "src": [0,48], "f": 0, "t": 16, "d": [1619], "a": 1 }, + { "px": [696,888], "src": [0,48], "f": 0, "t": 16, "d": [1620], "a": 1 }, + { "px": [720,888], "src": [0,48], "f": 0, "t": 16, "d": [1621], "a": 1 }, + { "px": [744,888], "src": [0,48], "f": 0, "t": 16, "d": [1622], "a": 1 }, + { "px": [768,888], "src": [0,48], "f": 0, "t": 16, "d": [1623], "a": 1 }, + { "px": [792,888], "src": [0,48], "f": 0, "t": 16, "d": [1624], "a": 1 }, + { "px": [816,888], "src": [0,48], "f": 0, "t": 16, "d": [1625], "a": 1 }, + { "px": [840,888], "src": [0,48], "f": 0, "t": 16, "d": [1626], "a": 1 }, + { "px": [864,888], "src": [0,48], "f": 0, "t": 16, "d": [1627], "a": 1 }, + { "px": [888,888], "src": [24,48], "f": 0, "t": 17, "d": [1628], "a": 1 }, + { "px": [912,888], "src": [48,48], "f": 0, "t": 18, "d": [1629], "a": 1 }, + { "px": [936,888], "src": [0,48], "f": 0, "t": 16, "d": [1630], "a": 1 }, + { "px": [960,888], "src": [24,48], "f": 0, "t": 17, "d": [1631], "a": 1 }, + { "px": [984,888], "src": [48,48], "f": 0, "t": 18, "d": [1632], "a": 1 }, + { "px": [1008,888], "src": [72,48], "f": 0, "t": 19, "d": [1633], "a": 1 }, + { "px": [0,912], "src": [0,48], "f": 0, "t": 16, "d": [1634], "a": 1 }, + { "px": [24,912], "src": [0,48], "f": 0, "t": 16, "d": [1635], "a": 1 }, + { "px": [48,912], "src": [24,48], "f": 0, "t": 17, "d": [1636], "a": 1 }, + { "px": [72,912], "src": [48,48], "f": 0, "t": 18, "d": [1637], "a": 1 }, + { "px": [96,912], "src": [72,48], "f": 0, "t": 19, "d": [1638], "a": 1 }, + { "px": [120,912], "src": [0,48], "f": 0, "t": 16, "d": [1639], "a": 1 }, + { "px": [144,912], "src": [0,48], "f": 0, "t": 16, "d": [1640], "a": 1 }, + { "px": [168,912], "src": [0,48], "f": 0, "t": 16, "d": [1641], "a": 1 }, + { "px": [192,912], "src": [24,48], "f": 0, "t": 17, "d": [1642], "a": 1 }, + { "px": [216,912], "src": [48,48], "f": 0, "t": 18, "d": [1643], "a": 1 }, + { "px": [240,912], "src": [72,48], "f": 0, "t": 19, "d": [1644], "a": 1 }, + { "px": [264,912], "src": [72,48], "f": 0, "t": 19, "d": [1645], "a": 1 }, + { "px": [288,912], "src": [72,48], "f": 0, "t": 19, "d": [1646], "a": 1 }, + { "px": [312,912], "src": [0,48], "f": 0, "t": 16, "d": [1647], "a": 1 }, + { "px": [336,912], "src": [24,48], "f": 0, "t": 17, "d": [1648], "a": 1 }, + { "px": [360,912], "src": [48,48], "f": 0, "t": 18, "d": [1649], "a": 1 }, + { "px": [384,912], "src": [72,48], "f": 0, "t": 19, "d": [1650], "a": 1 }, + { "px": [408,912], "src": [72,48], "f": 0, "t": 19, "d": [1651], "a": 1 }, + { "px": [432,912], "src": [72,48], "f": 0, "t": 19, "d": [1652], "a": 1 }, + { "px": [456,912], "src": [72,48], "f": 0, "t": 19, "d": [1653], "a": 1 }, + { "px": [480,912], "src": [72,48], "f": 0, "t": 19, "d": [1654], "a": 1 }, + { "px": [504,912], "src": [72,48], "f": 0, "t": 19, "d": [1655], "a": 1 }, + { "px": [528,912], "src": [72,48], "f": 0, "t": 19, "d": [1656], "a": 1 }, + { "px": [552,912], "src": [72,48], "f": 0, "t": 19, "d": [1657], "a": 1 }, + { "px": [576,912], "src": [72,48], "f": 0, "t": 19, "d": [1658], "a": 1 }, + { "px": [600,912], "src": [72,48], "f": 0, "t": 19, "d": [1659], "a": 1 }, + { "px": [624,912], "src": [72,48], "f": 0, "t": 19, "d": [1660], "a": 1 }, + { "px": [648,912], "src": [72,48], "f": 0, "t": 19, "d": [1661], "a": 1 }, + { "px": [672,912], "src": [72,48], "f": 0, "t": 19, "d": [1662], "a": 1 }, + { "px": [696,912], "src": [72,48], "f": 0, "t": 19, "d": [1663], "a": 1 }, + { "px": [720,912], "src": [72,48], "f": 0, "t": 19, "d": [1664], "a": 1 }, + { "px": [744,912], "src": [72,48], "f": 0, "t": 19, "d": [1665], "a": 1 }, + { "px": [768,912], "src": [72,48], "f": 0, "t": 19, "d": [1666], "a": 1 }, + { "px": [792,912], "src": [72,48], "f": 0, "t": 19, "d": [1667], "a": 1 }, + { "px": [816,912], "src": [72,48], "f": 0, "t": 19, "d": [1668], "a": 1 }, + { "px": [840,912], "src": [72,48], "f": 0, "t": 19, "d": [1669], "a": 1 }, + { "px": [864,912], "src": [72,48], "f": 0, "t": 19, "d": [1670], "a": 1 }, + { "px": [888,912], "src": [72,48], "f": 0, "t": 19, "d": [1671], "a": 1 }, + { "px": [912,912], "src": [72,48], "f": 0, "t": 19, "d": [1672], "a": 1 }, + { "px": [936,912], "src": [0,48], "f": 0, "t": 16, "d": [1673], "a": 1 }, + { "px": [960,912], "src": [24,48], "f": 0, "t": 17, "d": [1674], "a": 1 }, + { "px": [984,912], "src": [48,48], "f": 0, "t": 18, "d": [1675], "a": 1 }, + { "px": [1008,912], "src": [72,48], "f": 0, "t": 19, "d": [1676], "a": 1 }, + { "px": [0,936], "src": [0,48], "f": 0, "t": 16, "d": [1677], "a": 1 }, + { "px": [24,936], "src": [24,48], "f": 0, "t": 17, "d": [1678], "a": 1 }, + { "px": [48,936], "src": [48,48], "f": 0, "t": 18, "d": [1679], "a": 1 }, + { "px": [72,936], "src": [72,48], "f": 0, "t": 19, "d": [1680], "a": 1 }, + { "px": [96,936], "src": [72,48], "f": 0, "t": 19, "d": [1681], "a": 1 }, + { "px": [120,936], "src": [24,48], "f": 0, "t": 17, "d": [1682], "a": 1 }, + { "px": [144,936], "src": [48,48], "f": 0, "t": 18, "d": [1683], "a": 1 }, + { "px": [168,936], "src": [72,48], "f": 0, "t": 19, "d": [1684], "a": 1 }, + { "px": [192,936], "src": [0,48], "f": 0, "t": 16, "d": [1685], "a": 1 }, + { "px": [216,936], "src": [0,48], "f": 0, "t": 16, "d": [1686], "a": 1 }, + { "px": [240,936], "src": [0,48], "f": 0, "t": 16, "d": [1687], "a": 1 }, + { "px": [264,936], "src": [24,48], "f": 0, "t": 17, "d": [1688], "a": 1 }, + { "px": [288,936], "src": [0,48], "f": 0, "t": 16, "d": [1689], "a": 1 }, + { "px": [312,936], "src": [24,48], "f": 0, "t": 17, "d": [1690], "a": 1 }, + { "px": [336,936], "src": [48,48], "f": 0, "t": 18, "d": [1691], "a": 1 }, + { "px": [360,936], "src": [72,48], "f": 0, "t": 19, "d": [1692], "a": 1 }, + { "px": [384,936], "src": [0,48], "f": 0, "t": 16, "d": [1693], "a": 1 }, + { "px": [408,936], "src": [24,48], "f": 0, "t": 17, "d": [1694], "a": 1 }, + { "px": [432,936], "src": [48,48], "f": 0, "t": 18, "d": [1695], "a": 1 }, + { "px": [456,936], "src": [72,48], "f": 0, "t": 19, "d": [1696], "a": 1 }, + { "px": [480,936], "src": [72,48], "f": 0, "t": 19, "d": [1697], "a": 1 }, + { "px": [504,936], "src": [72,48], "f": 0, "t": 19, "d": [1698], "a": 1 }, + { "px": [528,936], "src": [72,48], "f": 0, "t": 19, "d": [1699], "a": 1 }, + { "px": [552,936], "src": [72,48], "f": 0, "t": 19, "d": [1700], "a": 1 }, + { "px": [576,936], "src": [72,48], "f": 0, "t": 19, "d": [1701], "a": 1 }, + { "px": [600,936], "src": [72,48], "f": 0, "t": 19, "d": [1702], "a": 1 }, + { "px": [624,936], "src": [72,48], "f": 0, "t": 19, "d": [1703], "a": 1 }, + { "px": [648,936], "src": [72,48], "f": 0, "t": 19, "d": [1704], "a": 1 }, + { "px": [672,936], "src": [72,48], "f": 0, "t": 19, "d": [1705], "a": 1 }, + { "px": [696,936], "src": [0,48], "f": 0, "t": 16, "d": [1706], "a": 1 }, + { "px": [720,936], "src": [0,48], "f": 0, "t": 16, "d": [1707], "a": 1 }, + { "px": [744,936], "src": [0,48], "f": 0, "t": 16, "d": [1708], "a": 1 }, + { "px": [768,936], "src": [0,48], "f": 0, "t": 16, "d": [1709], "a": 1 }, + { "px": [792,936], "src": [0,48], "f": 0, "t": 16, "d": [1710], "a": 1 }, + { "px": [816,936], "src": [0,48], "f": 0, "t": 16, "d": [1711], "a": 1 }, + { "px": [840,936], "src": [0,48], "f": 0, "t": 16, "d": [1712], "a": 1 }, + { "px": [864,936], "src": [0,48], "f": 0, "t": 16, "d": [1713], "a": 1 }, + { "px": [888,936], "src": [24,48], "f": 0, "t": 17, "d": [1714], "a": 1 }, + { "px": [912,936], "src": [48,48], "f": 0, "t": 18, "d": [1715], "a": 1 }, + { "px": [936,936], "src": [0,48], "f": 0, "t": 16, "d": [1716], "a": 1 }, + { "px": [960,936], "src": [24,48], "f": 0, "t": 17, "d": [1717], "a": 1 }, + { "px": [984,936], "src": [48,48], "f": 0, "t": 18, "d": [1718], "a": 1 }, + { "px": [1008,936], "src": [72,48], "f": 0, "t": 19, "d": [1719], "a": 1 }, + { "px": [0,960], "src": [0,48], "f": 0, "t": 16, "d": [1720], "a": 1 }, + { "px": [24,960], "src": [24,48], "f": 0, "t": 17, "d": [1721], "a": 1 }, + { "px": [48,960], "src": [48,48], "f": 0, "t": 18, "d": [1722], "a": 1 }, + { "px": [72,960], "src": [72,48], "f": 0, "t": 19, "d": [1723], "a": 1 }, + { "px": [96,960], "src": [0,48], "f": 0, "t": 16, "d": [1724], "a": 1 }, + { "px": [120,960], "src": [0,48], "f": 0, "t": 16, "d": [1725], "a": 1 }, + { "px": [144,960], "src": [0,48], "f": 0, "t": 16, "d": [1726], "a": 1 }, + { "px": [168,960], "src": [24,48], "f": 0, "t": 17, "d": [1727], "a": 1 }, + { "px": [192,960], "src": [48,48], "f": 0, "t": 18, "d": [1728], "a": 1 }, + { "px": [216,960], "src": [72,48], "f": 0, "t": 19, "d": [1729], "a": 1 }, + { "px": [240,960], "src": [72,48], "f": 0, "t": 19, "d": [1730], "a": 1 }, + { "px": [264,960], "src": [72,48], "f": 0, "t": 19, "d": [1731], "a": 1 }, + { "px": [288,960], "src": [72,48], "f": 0, "t": 19, "d": [1732], "a": 1 }, + { "px": [312,960], "src": [72,48], "f": 0, "t": 19, "d": [1733], "a": 1 }, + { "px": [336,960], "src": [72,48], "f": 0, "t": 19, "d": [1734], "a": 1 }, + { "px": [360,960], "src": [72,48], "f": 0, "t": 19, "d": [1735], "a": 1 }, + { "px": [384,960], "src": [72,48], "f": 0, "t": 19, "d": [1736], "a": 1 }, + { "px": [408,960], "src": [72,48], "f": 0, "t": 19, "d": [1737], "a": 1 }, + { "px": [432,960], "src": [72,48], "f": 0, "t": 19, "d": [1738], "a": 1 }, + { "px": [456,960], "src": [72,48], "f": 0, "t": 19, "d": [1739], "a": 1 }, + { "px": [480,960], "src": [72,48], "f": 0, "t": 19, "d": [1740], "a": 1 }, + { "px": [504,960], "src": [72,48], "f": 0, "t": 19, "d": [1741], "a": 1 }, + { "px": [528,960], "src": [72,48], "f": 0, "t": 19, "d": [1742], "a": 1 }, + { "px": [552,960], "src": [72,48], "f": 0, "t": 19, "d": [1743], "a": 1 }, + { "px": [576,960], "src": [0,48], "f": 0, "t": 16, "d": [1744], "a": 1 }, + { "px": [600,960], "src": [24,48], "f": 0, "t": 17, "d": [1745], "a": 1 }, + { "px": [624,960], "src": [0,48], "f": 0, "t": 16, "d": [1746], "a": 1 }, + { "px": [648,960], "src": [24,48], "f": 0, "t": 17, "d": [1747], "a": 1 }, + { "px": [672,960], "src": [48,48], "f": 0, "t": 18, "d": [1748], "a": 1 }, + { "px": [696,960], "src": [72,48], "f": 0, "t": 19, "d": [1749], "a": 1 }, + { "px": [720,960], "src": [72,48], "f": 0, "t": 19, "d": [1750], "a": 1 }, + { "px": [744,960], "src": [72,48], "f": 0, "t": 19, "d": [1751], "a": 1 }, + { "px": [768,960], "src": [72,48], "f": 0, "t": 19, "d": [1752], "a": 1 }, + { "px": [792,960], "src": [72,48], "f": 0, "t": 19, "d": [1753], "a": 1 }, + { "px": [816,960], "src": [72,48], "f": 0, "t": 19, "d": [1754], "a": 1 }, + { "px": [840,960], "src": [72,48], "f": 0, "t": 19, "d": [1755], "a": 1 }, + { "px": [864,960], "src": [72,48], "f": 0, "t": 19, "d": [1756], "a": 1 }, + { "px": [888,960], "src": [72,48], "f": 0, "t": 19, "d": [1757], "a": 1 }, + { "px": [912,960], "src": [72,48], "f": 0, "t": 19, "d": [1758], "a": 1 }, + { "px": [936,960], "src": [0,48], "f": 0, "t": 16, "d": [1759], "a": 1 }, + { "px": [960,960], "src": [24,48], "f": 0, "t": 17, "d": [1760], "a": 1 }, + { "px": [984,960], "src": [48,48], "f": 0, "t": 18, "d": [1761], "a": 1 }, + { "px": [1008,960], "src": [72,48], "f": 0, "t": 19, "d": [1762], "a": 1 }, + { "px": [0,984], "src": [0,48], "f": 0, "t": 16, "d": [1763], "a": 1 }, + { "px": [24,984], "src": [0,48], "f": 0, "t": 16, "d": [1764], "a": 1 }, + { "px": [48,984], "src": [0,48], "f": 0, "t": 16, "d": [1765], "a": 1 }, + { "px": [72,984], "src": [0,48], "f": 0, "t": 16, "d": [1766], "a": 1 }, + { "px": [96,984], "src": [0,48], "f": 0, "t": 16, "d": [1767], "a": 1 }, + { "px": [120,984], "src": [0,48], "f": 0, "t": 16, "d": [1768], "a": 1 }, + { "px": [144,984], "src": [0,48], "f": 0, "t": 16, "d": [1769], "a": 1 }, + { "px": [168,984], "src": [0,48], "f": 0, "t": 16, "d": [1770], "a": 1 }, + { "px": [192,984], "src": [0,48], "f": 0, "t": 16, "d": [1771], "a": 1 }, + { "px": [216,984], "src": [0,48], "f": 0, "t": 16, "d": [1772], "a": 1 }, + { "px": [240,984], "src": [0,48], "f": 0, "t": 16, "d": [1773], "a": 1 }, + { "px": [264,984], "src": [0,48], "f": 0, "t": 16, "d": [1774], "a": 1 }, + { "px": [288,984], "src": [0,48], "f": 0, "t": 16, "d": [1775], "a": 1 }, + { "px": [312,984], "src": [24,48], "f": 0, "t": 17, "d": [1776], "a": 1 }, + { "px": [336,984], "src": [0,48], "f": 0, "t": 16, "d": [1777], "a": 1 }, + { "px": [360,984], "src": [0,48], "f": 0, "t": 16, "d": [1778], "a": 1 }, + { "px": [384,984], "src": [24,48], "f": 0, "t": 17, "d": [1779], "a": 1 }, + { "px": [408,984], "src": [48,48], "f": 0, "t": 18, "d": [1780], "a": 1 }, + { "px": [432,984], "src": [72,48], "f": 0, "t": 19, "d": [1781], "a": 1 }, + { "px": [456,984], "src": [0,48], "f": 0, "t": 16, "d": [1782], "a": 1 }, + { "px": [480,984], "src": [0,48], "f": 0, "t": 16, "d": [1783], "a": 1 }, + { "px": [504,984], "src": [0,48], "f": 0, "t": 16, "d": [1784], "a": 1 }, + { "px": [528,984], "src": [0,48], "f": 0, "t": 16, "d": [1785], "a": 1 }, + { "px": [552,984], "src": [0,48], "f": 0, "t": 16, "d": [1786], "a": 1 }, + { "px": [576,984], "src": [24,48], "f": 0, "t": 17, "d": [1787], "a": 1 }, + { "px": [600,984], "src": [48,48], "f": 0, "t": 18, "d": [1788], "a": 1 }, + { "px": [624,984], "src": [72,48], "f": 0, "t": 19, "d": [1789], "a": 1 }, + { "px": [648,984], "src": [48,48], "f": 0, "t": 18, "d": [1790], "a": 1 }, + { "px": [672,984], "src": [72,48], "f": 0, "t": 19, "d": [1791], "a": 1 }, + { "px": [696,984], "src": [72,48], "f": 0, "t": 19, "d": [1792], "a": 1 }, + { "px": [720,984], "src": [72,48], "f": 0, "t": 19, "d": [1793], "a": 1 }, + { "px": [744,984], "src": [72,48], "f": 0, "t": 19, "d": [1794], "a": 1 }, + { "px": [768,984], "src": [72,48], "f": 0, "t": 19, "d": [1795], "a": 1 }, + { "px": [792,984], "src": [72,48], "f": 0, "t": 19, "d": [1796], "a": 1 }, + { "px": [816,984], "src": [72,48], "f": 0, "t": 19, "d": [1797], "a": 1 }, + { "px": [840,984], "src": [72,48], "f": 0, "t": 19, "d": [1798], "a": 1 }, + { "px": [864,984], "src": [72,48], "f": 0, "t": 19, "d": [1799], "a": 1 }, + { "px": [888,984], "src": [72,48], "f": 0, "t": 19, "d": [1800], "a": 1 }, + { "px": [912,984], "src": [72,48], "f": 0, "t": 19, "d": [1801], "a": 1 }, + { "px": [936,984], "src": [0,48], "f": 0, "t": 16, "d": [1802], "a": 1 }, + { "px": [960,984], "src": [24,48], "f": 0, "t": 17, "d": [1803], "a": 1 }, + { "px": [984,984], "src": [48,48], "f": 0, "t": 18, "d": [1804], "a": 1 }, + { "px": [1008,984], "src": [72,48], "f": 0, "t": 19, "d": [1805], "a": 1 }, + { "px": [0,1008], "src": [0,48], "f": 0, "t": 16, "d": [1806], "a": 1 }, + { "px": [24,1008], "src": [0,48], "f": 0, "t": 16, "d": [1807], "a": 1 }, + { "px": [48,1008], "src": [24,48], "f": 0, "t": 17, "d": [1808], "a": 1 }, + { "px": [72,1008], "src": [48,48], "f": 0, "t": 18, "d": [1809], "a": 1 }, + { "px": [96,1008], "src": [72,48], "f": 0, "t": 19, "d": [1810], "a": 1 }, + { "px": [120,1008], "src": [72,48], "f": 0, "t": 19, "d": [1811], "a": 1 }, + { "px": [144,1008], "src": [72,48], "f": 0, "t": 19, "d": [1812], "a": 1 }, + { "px": [168,1008], "src": [72,48], "f": 0, "t": 19, "d": [1813], "a": 1 }, + { "px": [192,1008], "src": [72,48], "f": 0, "t": 19, "d": [1814], "a": 1 }, + { "px": [216,1008], "src": [72,48], "f": 0, "t": 19, "d": [1815], "a": 1 }, + { "px": [240,1008], "src": [72,48], "f": 0, "t": 19, "d": [1816], "a": 1 }, + { "px": [264,1008], "src": [72,48], "f": 0, "t": 19, "d": [1817], "a": 1 }, + { "px": [288,1008], "src": [72,48], "f": 0, "t": 19, "d": [1818], "a": 1 }, + { "px": [312,1008], "src": [72,48], "f": 0, "t": 19, "d": [1819], "a": 1 }, + { "px": [336,1008], "src": [72,48], "f": 0, "t": 19, "d": [1820], "a": 1 }, + { "px": [360,1008], "src": [72,48], "f": 0, "t": 19, "d": [1821], "a": 1 }, + { "px": [384,1008], "src": [0,48], "f": 0, "t": 16, "d": [1822], "a": 1 }, + { "px": [408,1008], "src": [0,48], "f": 0, "t": 16, "d": [1823], "a": 1 }, + { "px": [432,1008], "src": [0,48], "f": 0, "t": 16, "d": [1824], "a": 1 }, + { "px": [456,1008], "src": [0,48], "f": 0, "t": 16, "d": [1825], "a": 1 }, + { "px": [480,1008], "src": [0,48], "f": 0, "t": 16, "d": [1826], "a": 1 }, + { "px": [504,1008], "src": [0,48], "f": 0, "t": 16, "d": [1827], "a": 1 }, + { "px": [528,1008], "src": [0,48], "f": 0, "t": 16, "d": [1828], "a": 1 }, + { "px": [552,1008], "src": [0,48], "f": 0, "t": 16, "d": [1829], "a": 1 }, + { "px": [576,1008], "src": [0,48], "f": 0, "t": 16, "d": [1830], "a": 1 }, + { "px": [600,1008], "src": [0,48], "f": 0, "t": 16, "d": [1831], "a": 1 }, + { "px": [624,1008], "src": [0,48], "f": 0, "t": 16, "d": [1832], "a": 1 }, + { "px": [648,1008], "src": [0,48], "f": 0, "t": 16, "d": [1833], "a": 1 }, + { "px": [672,1008], "src": [0,48], "f": 0, "t": 16, "d": [1834], "a": 1 }, + { "px": [696,1008], "src": [0,48], "f": 0, "t": 16, "d": [1835], "a": 1 }, + { "px": [720,1008], "src": [0,48], "f": 0, "t": 16, "d": [1836], "a": 1 }, + { "px": [744,1008], "src": [0,48], "f": 0, "t": 16, "d": [1837], "a": 1 }, + { "px": [768,1008], "src": [0,48], "f": 0, "t": 16, "d": [1838], "a": 1 }, + { "px": [792,1008], "src": [0,48], "f": 0, "t": 16, "d": [1839], "a": 1 }, + { "px": [816,1008], "src": [0,48], "f": 0, "t": 16, "d": [1840], "a": 1 }, + { "px": [840,1008], "src": [0,48], "f": 0, "t": 16, "d": [1841], "a": 1 }, + { "px": [864,1008], "src": [0,48], "f": 0, "t": 16, "d": [1842], "a": 1 }, + { "px": [888,1008], "src": [0,48], "f": 0, "t": 16, "d": [1843], "a": 1 }, + { "px": [912,1008], "src": [0,48], "f": 0, "t": 16, "d": [1844], "a": 1 }, + { "px": [936,1008], "src": [0,48], "f": 0, "t": 16, "d": [1845], "a": 1 }, + { "px": [960,1008], "src": [24,48], "f": 0, "t": 17, "d": [1846], "a": 1 }, + { "px": [984,1008], "src": [48,48], "f": 0, "t": 18, "d": [1847], "a": 1 }, + { "px": [1008,1008], "src": [72,48], "f": 0, "t": 19, "d": [1848], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + } + ], + "worlds": [], + "dummyWorldIid": "d73f6090-d380-11f0-87cf-3b8d37e1b2e8" +} \ No newline at end of file diff --git a/assets/levels/fighting.ldtk b/assets/levels/fighting.ldtk new file mode 100644 index 0000000..b369681 --- /dev/null +++ b/assets/levels/fighting.ldtk @@ -0,0 +1,1622 @@ +{ + "__header__": { + "fileType": "LDtk Project JSON", + "app": "LDtk", + "doc": "https://ldtk.io/json", + "schema": "https://ldtk.io/files/JSON_SCHEMA.json", + "appAuthor": "Sebastien 'deepnight' Benard", + "appVersion": "1.5.3", + "url": "https://ldtk.io" + }, + "iid": "a48de660-d380-11f0-a69c-f18cbbf0556b", + "jsonVersion": "1.5.3", + "appBuildId": 473703, + "nextUid": 109, + "identifierStyle": "Capitalize", + "toc": [], + "worldLayout": "Free", + "worldGridWidth": 256, + "worldGridHeight": 256, + "defaultLevelWidth": 256, + "defaultLevelHeight": 256, + "defaultPivotX": 0, + "defaultPivotY": 0, + "defaultGridSize": 16, + "defaultEntityWidth": 16, + "defaultEntityHeight": 16, + "bgColor": "#40465B", + "defaultLevelBgColor": "#696A79", + "minifyJson": false, + "externalLevels": false, + "exportTiled": false, + "simplifiedExport": false, + "imageExportMode": "None", + "exportLevelBg": true, + "pngFilePattern": null, + "backupOnSave": false, + "backupLimit": 10, + "backupRelPath": null, + "levelNamePattern": "Level_%idx", + "tutorialDesc": null, + "customCommands": [], + "flags": [], + "defs": { "layers": [ + { + "__type": "Entities", + "identifier": "Entities", + "type": "Entities", + "uid": 93, + "doc": null, + "uiColor": null, + "gridSize": 16, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 0.6, + "hideInList": false, + "hideFieldsWhenInactive": true, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [], + "intGridValuesGroups": [], + "autoRuleGroups": [], + "autoSourceLayerDefUid": null, + "tilesetDefUid": null, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + }, + { + "__type": "IntGrid", + "identifier": "IntGrid", + "type": "IntGrid", + "uid": 2, + "doc": null, + "uiColor": null, + "gridSize": 16, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 1, + "hideInList": false, + "hideFieldsWhenInactive": false, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [ + { "value": 1, "identifier": "walls", "color": "#C28569", "tile": null, "groupUid": 0 }, + { "value": 2, "identifier": "platforms", "color": "#BE4A2F", "tile": null, "groupUid": 0 } + ], + "intGridValuesGroups": [], + "autoRuleGroups": [ + { + "uid": 88, + "name": "platforms", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 89, + "active": true, + "size": 3, + "tileRectsIds": [[365]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-2,0,-2,2,0,0,-2,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 2, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 7012128, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 90, + "active": true, + "size": 3, + "tileRectsIds": [[369]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-2,0,0,2,-2,0,-2,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 2, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 5815173, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 91, + "active": true, + "size": 3, + "tileRectsIds": [[367]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-2,0,0,2,0,0,-2,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 2, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 8201440, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": true, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + }, + { + "uid": 40, + "name": "walls", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 77, + "active": true, + "size": 3, + "tileRectsIds": [[26]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3759126, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 78, + "active": true, + "size": 3, + "tileRectsIds": [[30]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,-1,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2791386, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 79, + "active": true, + "size": 3, + "tileRectsIds": [[130]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,1,-1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4294934, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 80, + "active": true, + "size": 3, + "tileRectsIds": [[126]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-1,1,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6333830, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 81, + "active": true, + "size": 3, + "tileRectsIds": [[28]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 7873880, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 82, + "active": true, + "size": 3, + "tileRectsIds": [[80]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,1,-1,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4660485, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 83, + "active": true, + "size": 3, + "tileRectsIds": [[128]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,1,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 9006622, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 84, + "active": true, + "size": 3, + "tileRectsIds": [[76]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-1,1,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 1488742, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 85, + "active": true, + "size": 1, + "tileRectsIds": [[78]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6147733, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": true, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + }, + { + "uid": 21, + "name": "plants", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 87, + "active": true, + "size": 3, + "tileRectsIds": [[186]], + "alpha": 1, + "chance": 0.2, + "breakOnMatch": true, + "pattern": [0,0,0,0,0,1,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 765260, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 86, + "active": true, + "size": 3, + "tileRectsIds": [[184]], + "alpha": 1, + "chance": 0.2, + "breakOnMatch": true, + "pattern": [0,0,0,1,0,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6199610, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 22, + "active": true, + "size": 3, + "tileRectsIds": [ [176], [178] ], + "alpha": 1, + "chance": 0.3, + "breakOnMatch": true, + "pattern": [0,0,0,0,0,0,0,1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6681065, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": false, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + } + ], + "autoSourceLayerDefUid": null, + "tilesetDefUid": 1, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + }, + { + "__type": "Tiles", + "identifier": "Background", + "type": "Tiles", + "uid": 108, + "doc": null, + "uiColor": null, + "gridSize": 16, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 1, + "hideInList": false, + "hideFieldsWhenInactive": false, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [], + "intGridValuesGroups": [], + "autoRuleGroups": [], + "autoSourceLayerDefUid": null, + "tilesetDefUid": 107, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + } + ], "entities": [ + { + "identifier": "One_way_platform", + "uid": 92, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 16, + "height": 16, + "resizableX": true, + "resizableY": true, + "minWidth": 16, + "maxWidth": null, + "minHeight": 4, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#BE4A2F", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [] + }, + { + "identifier": "Start", + "uid": 94, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 16, + "height": 16, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#6543D7", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [] + } + ], "tilesets": [ + { + "__cWid": 25, + "__cHei": 23, + "identifier": "Sunnyland", + "uid": 1, + "relPath": "../sunnyland/tileset.png", + "embedAtlas": null, + "pxWid": 400, + "pxHei": 368, + "tileGridSize": 16, + "spacing": 0, + "padding": 0, + "tags": [], + "tagsSourceEnumUid": null, + "enumTags": [], + "customData": [], + "savedSelections": [], + "cachedPixelData": { + "opaqueTiles": "00000000000000000000000000101010100010110110000000000000000000011011011011001010101000100000000000000000000000000010100000000010101010000001010001010000000000000000000000000000000010100000001010100000000000000000000000000000000000000000000010101000000010100100000000000000000000000000000000101010000000000000000000000000000000000000101010100000000000000000010101000001000000000101000010000000000000000010100000010011011100000001010000001001100000000001101100001110110101010000000000000000000000000000010110000111011101000000000011000011101110000000000000000000000000000000000", + "averageColors": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f9850000f9850000f9850000fa65000069557a65f8450000f644f9650000f965f644000049b5c9950000c99549b500000000000000000000000000000000000000000000000000000000f955f7450000f745f9550000f865f7450000f745f86500000000f9550000f6450000f9550000f845695500006955f845000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8550000f85500000000000079a5000079a5000000000000f9550000f8550000f9550000f8457a6569550000000000000000f8550000f855000000000000f7550000f755000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077a5000078b50000f8450000f7450000947400009474000000000000fa650000f9550000fa65000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f9550000f6450000f955000000000000000000000000a955f8450000f845a9550000f85500000000ca65b965000000000000000000000000000000000000000000000000000000000000a9550000a9550000000000000000000000000000000000000000fa650000f9550000fa650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f7450000f8550000f8550000f855000000000000000000000000000000000000000000000000000000000000000000000000f3440000f3450000f534000000000000e9950000f9950000e995000000000000000000000000b855f5340000f534b855000000000000f33400000000000000000000000000000000000000000000000000000000000000000000f7440000f744000000000000000000000000f43500000000f435f4350000f334f436f335000000000000000000000000b955f5340000f534b95500000000000000000000f34500000000f335f3350000000000000000000000000000000000000000f744f3340000f334f7440000000000000000f344f345f3440000f335f3350000f5340000f4350000f33400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa650000f955f9550000000000000000f334f335f3450000f345f335f3340000f7550000000000000000000000000000000000000000f955f9550000000000000000f335f344f3440000f344f344f3350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "__cWid": 24, + "__cHei": 15, + "identifier": "Back", + "uid": 107, + "relPath": "../sunnyland/back.png", + "embedAtlas": null, + "pxWid": 384, + "pxHei": 240, + "tileGridSize": 16, + "spacing": 0, + "padding": 0, + "tags": [], + "tagsSourceEnumUid": null, + "enumTags": [], + "customData": [], + "savedSelections": [], + "cachedPixelData": { + "opaqueTiles": "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", + "averageColors": "f4eff4eff4eff4eff5eff7eff5eff5eff5eff6eff6eff6eff6eff5eff6eff6eff6eff6eff6eff7eff7eff6eff5eff4eff5eff7eff7eff6eff6eff7eff8eff7eff5eff6eff7eff7eff5eff6eff7eff7eff6eff7eff9eff7eff7eff7eff5eff4eff5eff8eff9eff9eff8eff7eff6eff8eff9eff7eff6eff9eff8eff8eff8effceffbeff8eff6eff8eff9eff9eff7eff4eff6eff8eff8eff8eff7eff8eff8eff9eff9eff7eff8eff7eff8effaeffceffceffceffceff9eff8eff7eff8eff6eff4eff5eff8effbeffbeff8eff7effceffceffceffbeff9effaeffbeffceffceffceffceffbeffbeffceffbeffceff9eff4eff8effceffceffceffceffbeffceffceffceffceffceffceffceffdeffceffbeffbeffceffceffceffbeffbeffbeff6effbeffceffceffceffbeffceffceffbeffceffbeffceffceffceffbeffbeffbeffbeffbeffbeffbeffbeffbeffbeffbeff6eef6eef6eef5eef6eef6eef6eef5eef6eef6eef6eef5eef6eef6eef6eef5eef6eef6eef6eef5eef6eef6eef6eef5eef3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3cff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bff3bf" + } + } + ], "enums": [], "externalEnums": [], "levelFields": [] }, + "levels": [ + { + "identifier": "Stage", + "iid": "a48ed0c0-d380-11f0-a69c-6511375700bf", + "uid": 0, + "worldX": 0, + "worldY": 0, + "worldDepth": 0, + "pxWid": 512, + "pxHei": 256, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": null, + "bgPos": null, + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": null, + "externalRelPath": null, + "fieldInstances": [], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 32, + "__cHei": 16, + "__gridSize": 16, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "d12b1320-d380-11f0-a69c-459639b72f2e", + "levelId": 0, + "layerDefUid": 93, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 2696159, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "One_way_platform", + "__grid": [5,8], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#BE4A2F", + "iid": "dc0257e0-d380-11f0-a69c-f3c92a38b57d", + "width": 64, + "height": 4, + "defUid": 92, + "px": [80,128], + "fieldInstances": [], + "__worldX": 80, + "__worldY": 128 + }, + { + "__identifier": "One_way_platform", + "__grid": [13,5], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#BE4A2F", + "iid": "e68cb520-d380-11f0-a69c-a57b52b096e9", + "width": 80, + "height": 4, + "defUid": 92, + "px": [208,80], + "fieldInstances": [], + "__worldX": 208, + "__worldY": 80 + }, + { + "__identifier": "One_way_platform", + "__grid": [22,8], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#BE4A2F", + "iid": "e8d14df0-d380-11f0-a69c-834d5fa3ce5c", + "width": 64, + "height": 4, + "defUid": 92, + "px": [352,128], + "fieldInstances": [], + "__worldX": 352, + "__worldY": 128 + }, + { + "__identifier": "Start", + "__grid": [6,6], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#6543D7", + "iid": "10f18570-d380-11f0-a69c-13ebff49b291", + "width": 16, + "height": 16, + "defUid": 94, + "px": [96,96], + "fieldInstances": [], + "__worldX": 96, + "__worldY": 96 + }, + { + "__identifier": "Start", + "__grid": [24,6], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#6543D7", + "iid": "119343b0-d380-11f0-a69c-5573405ca8e2", + "width": 16, + "height": 16, + "defUid": 94, + "px": [384,96], + "fieldInstances": [], + "__worldX": 384, + "__worldY": 96 + }, + { + "__identifier": "Start", + "__grid": [15,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#6543D7", + "iid": "12817440-d380-11f0-a69c-43651210f778", + "width": 16, + "height": 16, + "defUid": 94, + "px": [240,48], + "fieldInstances": [], + "__worldX": 240, + "__worldY": 48 + }, + { + "__identifier": "Start", + "__grid": [15,10], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#6543D7", + "iid": "133f4600-d380-11f0-a69c-0fe2575c3095", + "width": 16, + "height": 16, + "defUid": 94, + "px": [240,160], + "fieldInstances": [], + "__worldX": 240, + "__worldY": 160 + } + ] + }, + { + "__identifier": "IntGrid", + "__type": "IntGrid", + "__cWid": 32, + "__cHei": 16, + "__gridSize": 16, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../sunnyland/tileset.png", + "iid": "c461a2b0-d380-11f0-a69c-bd8e7588af77", + "levelId": 0, + "layerDefUid": 2, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2, + 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2, + 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0 + ], + "autoLayerTiles": [ + { "px": [128,176], "src": [48,112], "f": 0, "t": 178, "d": [22,360], "a": 1 }, + { "px": [192,176], "src": [48,112], "f": 0, "t": 178, "d": [22,364], "a": 1 }, + { "px": [240,176], "src": [16,112], "f": 0, "t": 176, "d": [22,367], "a": 1 }, + { "px": [288,176], "src": [16,112], "f": 0, "t": 176, "d": [22,370], "a": 1 }, + { "px": [304,176], "src": [16,112], "f": 0, "t": 176, "d": [22,371], "a": 1 }, + { "px": [320,176], "src": [16,112], "f": 0, "t": 176, "d": [22,372], "a": 1 }, + { "px": [368,176], "src": [16,112], "f": 0, "t": 176, "d": [22,375], "a": 1 }, + { "px": [384,224], "src": [144,112], "f": 0, "t": 184, "d": [86,472], "a": 1 }, + { "px": [112,208], "src": [176,112], "f": 0, "t": 186, "d": [87,423], "a": 1 }, + { "px": [112,240], "src": [176,112], "f": 0, "t": 186, "d": [87,487], "a": 1 }, + { "px": [144,208], "src": [48,48], "f": 0, "t": 78, "d": [85,425], "a": 1 }, + { "px": [160,208], "src": [48,48], "f": 0, "t": 78, "d": [85,426], "a": 1 }, + { "px": [176,208], "src": [48,48], "f": 0, "t": 78, "d": [85,427], "a": 1 }, + { "px": [192,208], "src": [48,48], "f": 0, "t": 78, "d": [85,428], "a": 1 }, + { "px": [208,208], "src": [48,48], "f": 0, "t": 78, "d": [85,429], "a": 1 }, + { "px": [224,208], "src": [48,48], "f": 0, "t": 78, "d": [85,430], "a": 1 }, + { "px": [240,208], "src": [48,48], "f": 0, "t": 78, "d": [85,431], "a": 1 }, + { "px": [256,208], "src": [48,48], "f": 0, "t": 78, "d": [85,432], "a": 1 }, + { "px": [272,208], "src": [48,48], "f": 0, "t": 78, "d": [85,433], "a": 1 }, + { "px": [288,208], "src": [48,48], "f": 0, "t": 78, "d": [85,434], "a": 1 }, + { "px": [304,208], "src": [48,48], "f": 0, "t": 78, "d": [85,435], "a": 1 }, + { "px": [320,208], "src": [48,48], "f": 0, "t": 78, "d": [85,436], "a": 1 }, + { "px": [336,208], "src": [48,48], "f": 0, "t": 78, "d": [85,437], "a": 1 }, + { "px": [352,208], "src": [48,48], "f": 0, "t": 78, "d": [85,438], "a": 1 }, + { "px": [144,224], "src": [48,48], "f": 0, "t": 78, "d": [85,457], "a": 1 }, + { "px": [160,224], "src": [48,48], "f": 0, "t": 78, "d": [85,458], "a": 1 }, + { "px": [176,224], "src": [48,48], "f": 0, "t": 78, "d": [85,459], "a": 1 }, + { "px": [192,224], "src": [48,48], "f": 0, "t": 78, "d": [85,460], "a": 1 }, + { "px": [208,224], "src": [48,48], "f": 0, "t": 78, "d": [85,461], "a": 1 }, + { "px": [224,224], "src": [48,48], "f": 0, "t": 78, "d": [85,462], "a": 1 }, + { "px": [240,224], "src": [48,48], "f": 0, "t": 78, "d": [85,463], "a": 1 }, + { "px": [256,224], "src": [48,48], "f": 0, "t": 78, "d": [85,464], "a": 1 }, + { "px": [272,224], "src": [48,48], "f": 0, "t": 78, "d": [85,465], "a": 1 }, + { "px": [288,224], "src": [48,48], "f": 0, "t": 78, "d": [85,466], "a": 1 }, + { "px": [304,224], "src": [48,48], "f": 0, "t": 78, "d": [85,467], "a": 1 }, + { "px": [320,224], "src": [48,48], "f": 0, "t": 78, "d": [85,468], "a": 1 }, + { "px": [336,224], "src": [48,48], "f": 0, "t": 78, "d": [85,469], "a": 1 }, + { "px": [352,224], "src": [48,48], "f": 0, "t": 78, "d": [85,470], "a": 1 }, + { "px": [144,240], "src": [48,48], "f": 0, "t": 78, "d": [85,489], "a": 1 }, + { "px": [160,240], "src": [48,48], "f": 0, "t": 78, "d": [85,490], "a": 1 }, + { "px": [176,240], "src": [48,48], "f": 0, "t": 78, "d": [85,491], "a": 1 }, + { "px": [192,240], "src": [48,48], "f": 0, "t": 78, "d": [85,492], "a": 1 }, + { "px": [208,240], "src": [48,48], "f": 0, "t": 78, "d": [85,493], "a": 1 }, + { "px": [224,240], "src": [48,48], "f": 0, "t": 78, "d": [85,494], "a": 1 }, + { "px": [240,240], "src": [48,48], "f": 0, "t": 78, "d": [85,495], "a": 1 }, + { "px": [256,240], "src": [48,48], "f": 0, "t": 78, "d": [85,496], "a": 1 }, + { "px": [272,240], "src": [48,48], "f": 0, "t": 78, "d": [85,497], "a": 1 }, + { "px": [288,240], "src": [48,48], "f": 0, "t": 78, "d": [85,498], "a": 1 }, + { "px": [304,240], "src": [48,48], "f": 0, "t": 78, "d": [85,499], "a": 1 }, + { "px": [320,240], "src": [48,48], "f": 0, "t": 78, "d": [85,500], "a": 1 }, + { "px": [336,240], "src": [48,48], "f": 0, "t": 78, "d": [85,501], "a": 1 }, + { "px": [352,240], "src": [48,48], "f": 0, "t": 78, "d": [85,502], "a": 1 }, + { "px": [128,208], "src": [16,48], "f": 0, "t": 76, "d": [84,424], "a": 1 }, + { "px": [128,224], "src": [16,48], "f": 0, "t": 76, "d": [84,456], "a": 1 }, + { "px": [128,240], "src": [16,48], "f": 0, "t": 76, "d": [84,488], "a": 1 }, + { "px": [368,208], "src": [80,48], "f": 0, "t": 80, "d": [82,439], "a": 1 }, + { "px": [368,224], "src": [80,48], "f": 0, "t": 80, "d": [82,471], "a": 1 }, + { "px": [368,240], "src": [80,48], "f": 0, "t": 80, "d": [82,503], "a": 1 }, + { "px": [144,192], "src": [48,16], "f": 0, "t": 28, "d": [81,393], "a": 1 }, + { "px": [160,192], "src": [48,16], "f": 0, "t": 28, "d": [81,394], "a": 1 }, + { "px": [176,192], "src": [48,16], "f": 0, "t": 28, "d": [81,395], "a": 1 }, + { "px": [192,192], "src": [48,16], "f": 0, "t": 28, "d": [81,396], "a": 1 }, + { "px": [208,192], "src": [48,16], "f": 0, "t": 28, "d": [81,397], "a": 1 }, + { "px": [224,192], "src": [48,16], "f": 0, "t": 28, "d": [81,398], "a": 1 }, + { "px": [240,192], "src": [48,16], "f": 0, "t": 28, "d": [81,399], "a": 1 }, + { "px": [256,192], "src": [48,16], "f": 0, "t": 28, "d": [81,400], "a": 1 }, + { "px": [272,192], "src": [48,16], "f": 0, "t": 28, "d": [81,401], "a": 1 }, + { "px": [288,192], "src": [48,16], "f": 0, "t": 28, "d": [81,402], "a": 1 }, + { "px": [304,192], "src": [48,16], "f": 0, "t": 28, "d": [81,403], "a": 1 }, + { "px": [320,192], "src": [48,16], "f": 0, "t": 28, "d": [81,404], "a": 1 }, + { "px": [336,192], "src": [48,16], "f": 0, "t": 28, "d": [81,405], "a": 1 }, + { "px": [352,192], "src": [48,16], "f": 0, "t": 28, "d": [81,406], "a": 1 }, + { "px": [368,192], "src": [80,16], "f": 0, "t": 30, "d": [78,407], "a": 1 }, + { "px": [128,192], "src": [16,16], "f": 0, "t": 26, "d": [77,392], "a": 1 }, + { "px": [224,80], "src": [272,224], "f": 0, "t": 367, "d": [91,174], "a": 1 }, + { "px": [240,80], "src": [272,224], "f": 0, "t": 367, "d": [91,175], "a": 1 }, + { "px": [256,80], "src": [272,224], "f": 0, "t": 367, "d": [91,176], "a": 1 }, + { "px": [96,128], "src": [272,224], "f": 0, "t": 367, "d": [91,262], "a": 1 }, + { "px": [112,128], "src": [272,224], "f": 0, "t": 367, "d": [91,263], "a": 1 }, + { "px": [368,128], "src": [272,224], "f": 0, "t": 367, "d": [91,279], "a": 1 }, + { "px": [384,128], "src": [272,224], "f": 0, "t": 367, "d": [91,280], "a": 1 }, + { "px": [272,80], "src": [304,224], "f": 0, "t": 369, "d": [90,177], "a": 1 }, + { "px": [128,128], "src": [304,224], "f": 0, "t": 369, "d": [90,264], "a": 1 }, + { "px": [400,128], "src": [304,224], "f": 0, "t": 369, "d": [90,281], "a": 1 }, + { "px": [208,80], "src": [240,224], "f": 0, "t": 365, "d": [89,173], "a": 1 }, + { "px": [80,128], "src": [240,224], "f": 0, "t": 365, "d": [89,261], "a": 1 }, + { "px": [352,128], "src": [240,224], "f": 0, "t": 365, "d": [89,278], "a": 1 } + ], + "seed": 7598100, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 32, + "__cHei": 16, + "__gridSize": 16, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 107, + "__tilesetRelPath": "../sunnyland/back.png", + "iid": "40fafac0-d380-11f0-a69c-b185e3ad3620", + "levelId": 0, + "layerDefUid": 108, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 8728425, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [0,0], "src": [0,0], "f": 0, "t": 0, "d": [0], "a": 1 }, + { "px": [16,0], "src": [16,0], "f": 0, "t": 1, "d": [1], "a": 1 }, + { "px": [32,0], "src": [32,0], "f": 0, "t": 2, "d": [2], "a": 1 }, + { "px": [48,0], "src": [48,0], "f": 0, "t": 3, "d": [3], "a": 1 }, + { "px": [64,0], "src": [64,0], "f": 0, "t": 4, "d": [4], "a": 1 }, + { "px": [80,0], "src": [80,0], "f": 0, "t": 5, "d": [5], "a": 1 }, + { "px": [96,0], "src": [96,0], "f": 0, "t": 6, "d": [6], "a": 1 }, + { "px": [112,0], "src": [112,0], "f": 0, "t": 7, "d": [7], "a": 1 }, + { "px": [128,0], "src": [128,0], "f": 0, "t": 8, "d": [8], "a": 1 }, + { "px": [144,0], "src": [144,0], "f": 0, "t": 9, "d": [9], "a": 1 }, + { "px": [160,0], "src": [160,0], "f": 0, "t": 10, "d": [10], "a": 1 }, + { "px": [176,0], "src": [176,0], "f": 0, "t": 11, "d": [11], "a": 1 }, + { "px": [192,0], "src": [192,0], "f": 0, "t": 12, "d": [12], "a": 1 }, + { "px": [208,0], "src": [208,0], "f": 0, "t": 13, "d": [13], "a": 1 }, + { "px": [224,0], "src": [224,0], "f": 0, "t": 14, "d": [14], "a": 1 }, + { "px": [240,0], "src": [240,0], "f": 0, "t": 15, "d": [15], "a": 1 }, + { "px": [256,0], "src": [256,0], "f": 0, "t": 16, "d": [16], "a": 1 }, + { "px": [272,0], "src": [272,0], "f": 0, "t": 17, "d": [17], "a": 1 }, + { "px": [288,0], "src": [288,0], "f": 0, "t": 18, "d": [18], "a": 1 }, + { "px": [304,0], "src": [304,0], "f": 0, "t": 19, "d": [19], "a": 1 }, + { "px": [320,0], "src": [320,0], "f": 0, "t": 20, "d": [20], "a": 1 }, + { "px": [336,0], "src": [336,0], "f": 0, "t": 21, "d": [21], "a": 1 }, + { "px": [352,0], "src": [352,0], "f": 0, "t": 22, "d": [22], "a": 1 }, + { "px": [368,0], "src": [368,0], "f": 0, "t": 23, "d": [23], "a": 1 }, + { "px": [384,0], "src": [0,0], "f": 0, "t": 0, "d": [24], "a": 1 }, + { "px": [400,0], "src": [16,0], "f": 0, "t": 1, "d": [25], "a": 1 }, + { "px": [416,0], "src": [32,0], "f": 0, "t": 2, "d": [26], "a": 1 }, + { "px": [432,0], "src": [48,0], "f": 0, "t": 3, "d": [27], "a": 1 }, + { "px": [448,0], "src": [64,0], "f": 0, "t": 4, "d": [28], "a": 1 }, + { "px": [464,0], "src": [80,0], "f": 0, "t": 5, "d": [29], "a": 1 }, + { "px": [480,0], "src": [96,0], "f": 0, "t": 6, "d": [30], "a": 1 }, + { "px": [496,0], "src": [112,0], "f": 0, "t": 7, "d": [31], "a": 1 }, + { "px": [0,16], "src": [0,16], "f": 0, "t": 24, "d": [32], "a": 1 }, + { "px": [16,16], "src": [16,16], "f": 0, "t": 25, "d": [33], "a": 1 }, + { "px": [32,16], "src": [32,16], "f": 0, "t": 26, "d": [34], "a": 1 }, + { "px": [48,16], "src": [48,16], "f": 0, "t": 27, "d": [35], "a": 1 }, + { "px": [64,16], "src": [64,16], "f": 0, "t": 28, "d": [36], "a": 1 }, + { "px": [80,16], "src": [80,16], "f": 0, "t": 29, "d": [37], "a": 1 }, + { "px": [96,16], "src": [96,16], "f": 0, "t": 30, "d": [38], "a": 1 }, + { "px": [112,16], "src": [112,16], "f": 0, "t": 31, "d": [39], "a": 1 }, + { "px": [128,16], "src": [128,16], "f": 0, "t": 32, "d": [40], "a": 1 }, + { "px": [144,16], "src": [144,16], "f": 0, "t": 33, "d": [41], "a": 1 }, + { "px": [160,16], "src": [160,16], "f": 0, "t": 34, "d": [42], "a": 1 }, + { "px": [176,16], "src": [176,16], "f": 0, "t": 35, "d": [43], "a": 1 }, + { "px": [192,16], "src": [192,16], "f": 0, "t": 36, "d": [44], "a": 1 }, + { "px": [208,16], "src": [208,16], "f": 0, "t": 37, "d": [45], "a": 1 }, + { "px": [224,16], "src": [224,16], "f": 0, "t": 38, "d": [46], "a": 1 }, + { "px": [240,16], "src": [240,16], "f": 0, "t": 39, "d": [47], "a": 1 }, + { "px": [256,16], "src": [256,16], "f": 0, "t": 40, "d": [48], "a": 1 }, + { "px": [272,16], "src": [272,16], "f": 0, "t": 41, "d": [49], "a": 1 }, + { "px": [288,16], "src": [288,16], "f": 0, "t": 42, "d": [50], "a": 1 }, + { "px": [304,16], "src": [304,16], "f": 0, "t": 43, "d": [51], "a": 1 }, + { "px": [320,16], "src": [320,16], "f": 0, "t": 44, "d": [52], "a": 1 }, + { "px": [336,16], "src": [336,16], "f": 0, "t": 45, "d": [53], "a": 1 }, + { "px": [352,16], "src": [352,16], "f": 0, "t": 46, "d": [54], "a": 1 }, + { "px": [368,16], "src": [368,16], "f": 0, "t": 47, "d": [55], "a": 1 }, + { "px": [384,16], "src": [0,16], "f": 0, "t": 24, "d": [56], "a": 1 }, + { "px": [400,16], "src": [16,16], "f": 0, "t": 25, "d": [57], "a": 1 }, + { "px": [416,16], "src": [32,16], "f": 0, "t": 26, "d": [58], "a": 1 }, + { "px": [432,16], "src": [48,16], "f": 0, "t": 27, "d": [59], "a": 1 }, + { "px": [448,16], "src": [64,16], "f": 0, "t": 28, "d": [60], "a": 1 }, + { "px": [464,16], "src": [80,16], "f": 0, "t": 29, "d": [61], "a": 1 }, + { "px": [480,16], "src": [96,16], "f": 0, "t": 30, "d": [62], "a": 1 }, + { "px": [496,16], "src": [112,16], "f": 0, "t": 31, "d": [63], "a": 1 }, + { "px": [0,32], "src": [0,32], "f": 0, "t": 48, "d": [64], "a": 1 }, + { "px": [16,32], "src": [16,32], "f": 0, "t": 49, "d": [65], "a": 1 }, + { "px": [32,32], "src": [32,32], "f": 0, "t": 50, "d": [66], "a": 1 }, + { "px": [48,32], "src": [48,32], "f": 0, "t": 51, "d": [67], "a": 1 }, + { "px": [64,32], "src": [64,32], "f": 0, "t": 52, "d": [68], "a": 1 }, + { "px": [80,32], "src": [80,32], "f": 0, "t": 53, "d": [69], "a": 1 }, + { "px": [96,32], "src": [96,32], "f": 0, "t": 54, "d": [70], "a": 1 }, + { "px": [112,32], "src": [112,32], "f": 0, "t": 55, "d": [71], "a": 1 }, + { "px": [128,32], "src": [128,32], "f": 0, "t": 56, "d": [72], "a": 1 }, + { "px": [144,32], "src": [144,32], "f": 0, "t": 57, "d": [73], "a": 1 }, + { "px": [160,32], "src": [160,32], "f": 0, "t": 58, "d": [74], "a": 1 }, + { "px": [176,32], "src": [176,32], "f": 0, "t": 59, "d": [75], "a": 1 }, + { "px": [192,32], "src": [192,32], "f": 0, "t": 60, "d": [76], "a": 1 }, + { "px": [208,32], "src": [208,32], "f": 0, "t": 61, "d": [77], "a": 1 }, + { "px": [224,32], "src": [224,32], "f": 0, "t": 62, "d": [78], "a": 1 }, + { "px": [240,32], "src": [240,32], "f": 0, "t": 63, "d": [79], "a": 1 }, + { "px": [256,32], "src": [256,32], "f": 0, "t": 64, "d": [80], "a": 1 }, + { "px": [272,32], "src": [272,32], "f": 0, "t": 65, "d": [81], "a": 1 }, + { "px": [288,32], "src": [288,32], "f": 0, "t": 66, "d": [82], "a": 1 }, + { "px": [304,32], "src": [304,32], "f": 0, "t": 67, "d": [83], "a": 1 }, + { "px": [320,32], "src": [320,32], "f": 0, "t": 68, "d": [84], "a": 1 }, + { "px": [336,32], "src": [336,32], "f": 0, "t": 69, "d": [85], "a": 1 }, + { "px": [352,32], "src": [352,32], "f": 0, "t": 70, "d": [86], "a": 1 }, + { "px": [368,32], "src": [368,32], "f": 0, "t": 71, "d": [87], "a": 1 }, + { "px": [384,32], "src": [0,32], "f": 0, "t": 48, "d": [88], "a": 1 }, + { "px": [400,32], "src": [16,32], "f": 0, "t": 49, "d": [89], "a": 1 }, + { "px": [416,32], "src": [32,32], "f": 0, "t": 50, "d": [90], "a": 1 }, + { "px": [432,32], "src": [48,32], "f": 0, "t": 51, "d": [91], "a": 1 }, + { "px": [448,32], "src": [64,32], "f": 0, "t": 52, "d": [92], "a": 1 }, + { "px": [464,32], "src": [80,32], "f": 0, "t": 53, "d": [93], "a": 1 }, + { "px": [480,32], "src": [96,32], "f": 0, "t": 54, "d": [94], "a": 1 }, + { "px": [496,32], "src": [112,32], "f": 0, "t": 55, "d": [95], "a": 1 }, + { "px": [0,48], "src": [0,48], "f": 0, "t": 72, "d": [96], "a": 1 }, + { "px": [16,48], "src": [16,48], "f": 0, "t": 73, "d": [97], "a": 1 }, + { "px": [32,48], "src": [32,48], "f": 0, "t": 74, "d": [98], "a": 1 }, + { "px": [48,48], "src": [48,48], "f": 0, "t": 75, "d": [99], "a": 1 }, + { "px": [64,48], "src": [64,48], "f": 0, "t": 76, "d": [100], "a": 1 }, + { "px": [80,48], "src": [80,48], "f": 0, "t": 77, "d": [101], "a": 1 }, + { "px": [96,48], "src": [96,48], "f": 0, "t": 78, "d": [102], "a": 1 }, + { "px": [112,48], "src": [112,48], "f": 0, "t": 79, "d": [103], "a": 1 }, + { "px": [128,48], "src": [128,48], "f": 0, "t": 80, "d": [104], "a": 1 }, + { "px": [144,48], "src": [144,48], "f": 0, "t": 81, "d": [105], "a": 1 }, + { "px": [160,48], "src": [160,48], "f": 0, "t": 82, "d": [106], "a": 1 }, + { "px": [176,48], "src": [176,48], "f": 0, "t": 83, "d": [107], "a": 1 }, + { "px": [192,48], "src": [192,48], "f": 0, "t": 84, "d": [108], "a": 1 }, + { "px": [208,48], "src": [208,48], "f": 0, "t": 85, "d": [109], "a": 1 }, + { "px": [224,48], "src": [224,48], "f": 0, "t": 86, "d": [110], "a": 1 }, + { "px": [240,48], "src": [240,48], "f": 0, "t": 87, "d": [111], "a": 1 }, + { "px": [256,48], "src": [256,48], "f": 0, "t": 88, "d": [112], "a": 1 }, + { "px": [272,48], "src": [272,48], "f": 0, "t": 89, "d": [113], "a": 1 }, + { "px": [288,48], "src": [288,48], "f": 0, "t": 90, "d": [114], "a": 1 }, + { "px": [304,48], "src": [304,48], "f": 0, "t": 91, "d": [115], "a": 1 }, + { "px": [320,48], "src": [320,48], "f": 0, "t": 92, "d": [116], "a": 1 }, + { "px": [336,48], "src": [336,48], "f": 0, "t": 93, "d": [117], "a": 1 }, + { "px": [352,48], "src": [352,48], "f": 0, "t": 94, "d": [118], "a": 1 }, + { "px": [368,48], "src": [368,48], "f": 0, "t": 95, "d": [119], "a": 1 }, + { "px": [384,48], "src": [0,48], "f": 0, "t": 72, "d": [120], "a": 1 }, + { "px": [400,48], "src": [16,48], "f": 0, "t": 73, "d": [121], "a": 1 }, + { "px": [416,48], "src": [32,48], "f": 0, "t": 74, "d": [122], "a": 1 }, + { "px": [432,48], "src": [48,48], "f": 0, "t": 75, "d": [123], "a": 1 }, + { "px": [448,48], "src": [64,48], "f": 0, "t": 76, "d": [124], "a": 1 }, + { "px": [464,48], "src": [80,48], "f": 0, "t": 77, "d": [125], "a": 1 }, + { "px": [480,48], "src": [96,48], "f": 0, "t": 78, "d": [126], "a": 1 }, + { "px": [496,48], "src": [112,48], "f": 0, "t": 79, "d": [127], "a": 1 }, + { "px": [0,64], "src": [0,64], "f": 0, "t": 96, "d": [128], "a": 1 }, + { "px": [16,64], "src": [16,64], "f": 0, "t": 97, "d": [129], "a": 1 }, + { "px": [32,64], "src": [32,64], "f": 0, "t": 98, "d": [130], "a": 1 }, + { "px": [48,64], "src": [48,64], "f": 0, "t": 99, "d": [131], "a": 1 }, + { "px": [64,64], "src": [64,64], "f": 0, "t": 100, "d": [132], "a": 1 }, + { "px": [80,64], "src": [80,64], "f": 0, "t": 101, "d": [133], "a": 1 }, + { "px": [96,64], "src": [96,64], "f": 0, "t": 102, "d": [134], "a": 1 }, + { "px": [112,64], "src": [112,64], "f": 0, "t": 103, "d": [135], "a": 1 }, + { "px": [128,64], "src": [128,64], "f": 0, "t": 104, "d": [136], "a": 1 }, + { "px": [144,64], "src": [144,64], "f": 0, "t": 105, "d": [137], "a": 1 }, + { "px": [160,64], "src": [160,64], "f": 0, "t": 106, "d": [138], "a": 1 }, + { "px": [176,64], "src": [176,64], "f": 0, "t": 107, "d": [139], "a": 1 }, + { "px": [192,64], "src": [192,64], "f": 0, "t": 108, "d": [140], "a": 1 }, + { "px": [208,64], "src": [208,64], "f": 0, "t": 109, "d": [141], "a": 1 }, + { "px": [224,64], "src": [224,64], "f": 0, "t": 110, "d": [142], "a": 1 }, + { "px": [240,64], "src": [240,64], "f": 0, "t": 111, "d": [143], "a": 1 }, + { "px": [256,64], "src": [256,64], "f": 0, "t": 112, "d": [144], "a": 1 }, + { "px": [272,64], "src": [272,64], "f": 0, "t": 113, "d": [145], "a": 1 }, + { "px": [288,64], "src": [288,64], "f": 0, "t": 114, "d": [146], "a": 1 }, + { "px": [304,64], "src": [304,64], "f": 0, "t": 115, "d": [147], "a": 1 }, + { "px": [320,64], "src": [320,64], "f": 0, "t": 116, "d": [148], "a": 1 }, + { "px": [336,64], "src": [336,64], "f": 0, "t": 117, "d": [149], "a": 1 }, + { "px": [352,64], "src": [352,64], "f": 0, "t": 118, "d": [150], "a": 1 }, + { "px": [368,64], "src": [368,64], "f": 0, "t": 119, "d": [151], "a": 1 }, + { "px": [384,64], "src": [0,64], "f": 0, "t": 96, "d": [152], "a": 1 }, + { "px": [400,64], "src": [16,64], "f": 0, "t": 97, "d": [153], "a": 1 }, + { "px": [416,64], "src": [32,64], "f": 0, "t": 98, "d": [154], "a": 1 }, + { "px": [432,64], "src": [48,64], "f": 0, "t": 99, "d": [155], "a": 1 }, + { "px": [448,64], "src": [64,64], "f": 0, "t": 100, "d": [156], "a": 1 }, + { "px": [464,64], "src": [80,64], "f": 0, "t": 101, "d": [157], "a": 1 }, + { "px": [480,64], "src": [96,64], "f": 0, "t": 102, "d": [158], "a": 1 }, + { "px": [496,64], "src": [112,64], "f": 0, "t": 103, "d": [159], "a": 1 }, + { "px": [0,80], "src": [0,80], "f": 0, "t": 120, "d": [160], "a": 1 }, + { "px": [16,80], "src": [16,80], "f": 0, "t": 121, "d": [161], "a": 1 }, + { "px": [32,80], "src": [32,80], "f": 0, "t": 122, "d": [162], "a": 1 }, + { "px": [48,80], "src": [48,80], "f": 0, "t": 123, "d": [163], "a": 1 }, + { "px": [64,80], "src": [64,80], "f": 0, "t": 124, "d": [164], "a": 1 }, + { "px": [80,80], "src": [80,80], "f": 0, "t": 125, "d": [165], "a": 1 }, + { "px": [96,80], "src": [96,80], "f": 0, "t": 126, "d": [166], "a": 1 }, + { "px": [112,80], "src": [112,80], "f": 0, "t": 127, "d": [167], "a": 1 }, + { "px": [128,80], "src": [128,80], "f": 0, "t": 128, "d": [168], "a": 1 }, + { "px": [144,80], "src": [144,80], "f": 0, "t": 129, "d": [169], "a": 1 }, + { "px": [160,80], "src": [160,80], "f": 0, "t": 130, "d": [170], "a": 1 }, + { "px": [176,80], "src": [176,80], "f": 0, "t": 131, "d": [171], "a": 1 }, + { "px": [192,80], "src": [192,80], "f": 0, "t": 132, "d": [172], "a": 1 }, + { "px": [208,80], "src": [208,80], "f": 0, "t": 133, "d": [173], "a": 1 }, + { "px": [224,80], "src": [224,80], "f": 0, "t": 134, "d": [174], "a": 1 }, + { "px": [240,80], "src": [240,80], "f": 0, "t": 135, "d": [175], "a": 1 }, + { "px": [256,80], "src": [256,80], "f": 0, "t": 136, "d": [176], "a": 1 }, + { "px": [272,80], "src": [272,80], "f": 0, "t": 137, "d": [177], "a": 1 }, + { "px": [288,80], "src": [288,80], "f": 0, "t": 138, "d": [178], "a": 1 }, + { "px": [304,80], "src": [304,80], "f": 0, "t": 139, "d": [179], "a": 1 }, + { "px": [320,80], "src": [320,80], "f": 0, "t": 140, "d": [180], "a": 1 }, + { "px": [336,80], "src": [336,80], "f": 0, "t": 141, "d": [181], "a": 1 }, + { "px": [352,80], "src": [352,80], "f": 0, "t": 142, "d": [182], "a": 1 }, + { "px": [368,80], "src": [368,80], "f": 0, "t": 143, "d": [183], "a": 1 }, + { "px": [384,80], "src": [0,80], "f": 0, "t": 120, "d": [184], "a": 1 }, + { "px": [400,80], "src": [16,80], "f": 0, "t": 121, "d": [185], "a": 1 }, + { "px": [416,80], "src": [32,80], "f": 0, "t": 122, "d": [186], "a": 1 }, + { "px": [432,80], "src": [48,80], "f": 0, "t": 123, "d": [187], "a": 1 }, + { "px": [448,80], "src": [64,80], "f": 0, "t": 124, "d": [188], "a": 1 }, + { "px": [464,80], "src": [80,80], "f": 0, "t": 125, "d": [189], "a": 1 }, + { "px": [480,80], "src": [96,80], "f": 0, "t": 126, "d": [190], "a": 1 }, + { "px": [496,80], "src": [112,80], "f": 0, "t": 127, "d": [191], "a": 1 }, + { "px": [0,96], "src": [0,96], "f": 0, "t": 144, "d": [192], "a": 1 }, + { "px": [16,96], "src": [16,96], "f": 0, "t": 145, "d": [193], "a": 1 }, + { "px": [32,96], "src": [32,96], "f": 0, "t": 146, "d": [194], "a": 1 }, + { "px": [48,96], "src": [48,96], "f": 0, "t": 147, "d": [195], "a": 1 }, + { "px": [64,96], "src": [64,96], "f": 0, "t": 148, "d": [196], "a": 1 }, + { "px": [80,96], "src": [80,96], "f": 0, "t": 149, "d": [197], "a": 1 }, + { "px": [96,96], "src": [96,96], "f": 0, "t": 150, "d": [198], "a": 1 }, + { "px": [112,96], "src": [112,96], "f": 0, "t": 151, "d": [199], "a": 1 }, + { "px": [128,96], "src": [128,96], "f": 0, "t": 152, "d": [200], "a": 1 }, + { "px": [144,96], "src": [144,96], "f": 0, "t": 153, "d": [201], "a": 1 }, + { "px": [160,96], "src": [160,96], "f": 0, "t": 154, "d": [202], "a": 1 }, + { "px": [176,96], "src": [176,96], "f": 0, "t": 155, "d": [203], "a": 1 }, + { "px": [192,96], "src": [192,96], "f": 0, "t": 156, "d": [204], "a": 1 }, + { "px": [208,96], "src": [208,96], "f": 0, "t": 157, "d": [205], "a": 1 }, + { "px": [224,96], "src": [224,96], "f": 0, "t": 158, "d": [206], "a": 1 }, + { "px": [240,96], "src": [240,96], "f": 0, "t": 159, "d": [207], "a": 1 }, + { "px": [256,96], "src": [256,96], "f": 0, "t": 160, "d": [208], "a": 1 }, + { "px": [272,96], "src": [272,96], "f": 0, "t": 161, "d": [209], "a": 1 }, + { "px": [288,96], "src": [288,96], "f": 0, "t": 162, "d": [210], "a": 1 }, + { "px": [304,96], "src": [304,96], "f": 0, "t": 163, "d": [211], "a": 1 }, + { "px": [320,96], "src": [320,96], "f": 0, "t": 164, "d": [212], "a": 1 }, + { "px": [336,96], "src": [336,96], "f": 0, "t": 165, "d": [213], "a": 1 }, + { "px": [352,96], "src": [352,96], "f": 0, "t": 166, "d": [214], "a": 1 }, + { "px": [368,96], "src": [368,96], "f": 0, "t": 167, "d": [215], "a": 1 }, + { "px": [384,96], "src": [0,96], "f": 0, "t": 144, "d": [216], "a": 1 }, + { "px": [400,96], "src": [16,96], "f": 0, "t": 145, "d": [217], "a": 1 }, + { "px": [416,96], "src": [32,96], "f": 0, "t": 146, "d": [218], "a": 1 }, + { "px": [432,96], "src": [48,96], "f": 0, "t": 147, "d": [219], "a": 1 }, + { "px": [448,96], "src": [64,96], "f": 0, "t": 148, "d": [220], "a": 1 }, + { "px": [464,96], "src": [80,96], "f": 0, "t": 149, "d": [221], "a": 1 }, + { "px": [480,96], "src": [96,96], "f": 0, "t": 150, "d": [222], "a": 1 }, + { "px": [496,96], "src": [112,96], "f": 0, "t": 151, "d": [223], "a": 1 }, + { "px": [0,112], "src": [0,112], "f": 0, "t": 168, "d": [224], "a": 1 }, + { "px": [16,112], "src": [16,112], "f": 0, "t": 169, "d": [225], "a": 1 }, + { "px": [32,112], "src": [32,112], "f": 0, "t": 170, "d": [226], "a": 1 }, + { "px": [48,112], "src": [48,112], "f": 0, "t": 171, "d": [227], "a": 1 }, + { "px": [64,112], "src": [64,112], "f": 0, "t": 172, "d": [228], "a": 1 }, + { "px": [80,112], "src": [80,112], "f": 0, "t": 173, "d": [229], "a": 1 }, + { "px": [96,112], "src": [96,112], "f": 0, "t": 174, "d": [230], "a": 1 }, + { "px": [112,112], "src": [112,112], "f": 0, "t": 175, "d": [231], "a": 1 }, + { "px": [128,112], "src": [128,112], "f": 0, "t": 176, "d": [232], "a": 1 }, + { "px": [144,112], "src": [144,112], "f": 0, "t": 177, "d": [233], "a": 1 }, + { "px": [160,112], "src": [160,112], "f": 0, "t": 178, "d": [234], "a": 1 }, + { "px": [176,112], "src": [176,112], "f": 0, "t": 179, "d": [235], "a": 1 }, + { "px": [192,112], "src": [192,112], "f": 0, "t": 180, "d": [236], "a": 1 }, + { "px": [208,112], "src": [208,112], "f": 0, "t": 181, "d": [237], "a": 1 }, + { "px": [224,112], "src": [224,112], "f": 0, "t": 182, "d": [238], "a": 1 }, + { "px": [240,112], "src": [240,112], "f": 0, "t": 183, "d": [239], "a": 1 }, + { "px": [256,112], "src": [256,112], "f": 0, "t": 184, "d": [240], "a": 1 }, + { "px": [272,112], "src": [272,112], "f": 0, "t": 185, "d": [241], "a": 1 }, + { "px": [288,112], "src": [288,112], "f": 0, "t": 186, "d": [242], "a": 1 }, + { "px": [304,112], "src": [304,112], "f": 0, "t": 187, "d": [243], "a": 1 }, + { "px": [320,112], "src": [320,112], "f": 0, "t": 188, "d": [244], "a": 1 }, + { "px": [336,112], "src": [336,112], "f": 0, "t": 189, "d": [245], "a": 1 }, + { "px": [352,112], "src": [352,112], "f": 0, "t": 190, "d": [246], "a": 1 }, + { "px": [368,112], "src": [368,112], "f": 0, "t": 191, "d": [247], "a": 1 }, + { "px": [384,112], "src": [0,112], "f": 0, "t": 168, "d": [248], "a": 1 }, + { "px": [400,112], "src": [16,112], "f": 0, "t": 169, "d": [249], "a": 1 }, + { "px": [416,112], "src": [32,112], "f": 0, "t": 170, "d": [250], "a": 1 }, + { "px": [432,112], "src": [48,112], "f": 0, "t": 171, "d": [251], "a": 1 }, + { "px": [448,112], "src": [64,112], "f": 0, "t": 172, "d": [252], "a": 1 }, + { "px": [464,112], "src": [80,112], "f": 0, "t": 173, "d": [253], "a": 1 }, + { "px": [480,112], "src": [96,112], "f": 0, "t": 174, "d": [254], "a": 1 }, + { "px": [496,112], "src": [112,112], "f": 0, "t": 175, "d": [255], "a": 1 }, + { "px": [0,128], "src": [0,128], "f": 0, "t": 192, "d": [256], "a": 1 }, + { "px": [16,128], "src": [16,128], "f": 0, "t": 193, "d": [257], "a": 1 }, + { "px": [32,128], "src": [32,128], "f": 0, "t": 194, "d": [258], "a": 1 }, + { "px": [48,128], "src": [48,128], "f": 0, "t": 195, "d": [259], "a": 1 }, + { "px": [64,128], "src": [64,128], "f": 0, "t": 196, "d": [260], "a": 1 }, + { "px": [80,128], "src": [80,128], "f": 0, "t": 197, "d": [261], "a": 1 }, + { "px": [96,128], "src": [96,128], "f": 0, "t": 198, "d": [262], "a": 1 }, + { "px": [112,128], "src": [112,128], "f": 0, "t": 199, "d": [263], "a": 1 }, + { "px": [128,128], "src": [128,128], "f": 0, "t": 200, "d": [264], "a": 1 }, + { "px": [144,128], "src": [144,128], "f": 0, "t": 201, "d": [265], "a": 1 }, + { "px": [160,128], "src": [160,128], "f": 0, "t": 202, "d": [266], "a": 1 }, + { "px": [176,128], "src": [176,128], "f": 0, "t": 203, "d": [267], "a": 1 }, + { "px": [192,128], "src": [192,128], "f": 0, "t": 204, "d": [268], "a": 1 }, + { "px": [208,128], "src": [208,128], "f": 0, "t": 205, "d": [269], "a": 1 }, + { "px": [224,128], "src": [224,128], "f": 0, "t": 206, "d": [270], "a": 1 }, + { "px": [240,128], "src": [240,128], "f": 0, "t": 207, "d": [271], "a": 1 }, + { "px": [256,128], "src": [256,128], "f": 0, "t": 208, "d": [272], "a": 1 }, + { "px": [272,128], "src": [272,128], "f": 0, "t": 209, "d": [273], "a": 1 }, + { "px": [288,128], "src": [288,128], "f": 0, "t": 210, "d": [274], "a": 1 }, + { "px": [304,128], "src": [304,128], "f": 0, "t": 211, "d": [275], "a": 1 }, + { "px": [320,128], "src": [320,128], "f": 0, "t": 212, "d": [276], "a": 1 }, + { "px": [336,128], "src": [336,128], "f": 0, "t": 213, "d": [277], "a": 1 }, + { "px": [352,128], "src": [352,128], "f": 0, "t": 214, "d": [278], "a": 1 }, + { "px": [368,128], "src": [368,128], "f": 0, "t": 215, "d": [279], "a": 1 }, + { "px": [384,128], "src": [0,128], "f": 0, "t": 192, "d": [280], "a": 1 }, + { "px": [400,128], "src": [16,128], "f": 0, "t": 193, "d": [281], "a": 1 }, + { "px": [416,128], "src": [32,128], "f": 0, "t": 194, "d": [282], "a": 1 }, + { "px": [432,128], "src": [48,128], "f": 0, "t": 195, "d": [283], "a": 1 }, + { "px": [448,128], "src": [64,128], "f": 0, "t": 196, "d": [284], "a": 1 }, + { "px": [464,128], "src": [80,128], "f": 0, "t": 197, "d": [285], "a": 1 }, + { "px": [480,128], "src": [96,128], "f": 0, "t": 198, "d": [286], "a": 1 }, + { "px": [496,128], "src": [112,128], "f": 0, "t": 199, "d": [287], "a": 1 }, + { "px": [0,144], "src": [0,144], "f": 0, "t": 216, "d": [288], "a": 1 }, + { "px": [16,144], "src": [16,144], "f": 0, "t": 217, "d": [289], "a": 1 }, + { "px": [32,144], "src": [32,144], "f": 0, "t": 218, "d": [290], "a": 1 }, + { "px": [48,144], "src": [48,144], "f": 0, "t": 219, "d": [291], "a": 1 }, + { "px": [64,144], "src": [64,144], "f": 0, "t": 220, "d": [292], "a": 1 }, + { "px": [80,144], "src": [80,144], "f": 0, "t": 221, "d": [293], "a": 1 }, + { "px": [96,144], "src": [96,144], "f": 0, "t": 222, "d": [294], "a": 1 }, + { "px": [112,144], "src": [112,144], "f": 0, "t": 223, "d": [295], "a": 1 }, + { "px": [128,144], "src": [128,144], "f": 0, "t": 224, "d": [296], "a": 1 }, + { "px": [144,144], "src": [144,144], "f": 0, "t": 225, "d": [297], "a": 1 }, + { "px": [160,144], "src": [160,144], "f": 0, "t": 226, "d": [298], "a": 1 }, + { "px": [176,144], "src": [176,144], "f": 0, "t": 227, "d": [299], "a": 1 }, + { "px": [192,144], "src": [192,144], "f": 0, "t": 228, "d": [300], "a": 1 }, + { "px": [208,144], "src": [208,144], "f": 0, "t": 229, "d": [301], "a": 1 }, + { "px": [224,144], "src": [224,144], "f": 0, "t": 230, "d": [302], "a": 1 }, + { "px": [240,144], "src": [240,144], "f": 0, "t": 231, "d": [303], "a": 1 }, + { "px": [256,144], "src": [256,144], "f": 0, "t": 232, "d": [304], "a": 1 }, + { "px": [272,144], "src": [272,144], "f": 0, "t": 233, "d": [305], "a": 1 }, + { "px": [288,144], "src": [288,144], "f": 0, "t": 234, "d": [306], "a": 1 }, + { "px": [304,144], "src": [304,144], "f": 0, "t": 235, "d": [307], "a": 1 }, + { "px": [320,144], "src": [320,144], "f": 0, "t": 236, "d": [308], "a": 1 }, + { "px": [336,144], "src": [336,144], "f": 0, "t": 237, "d": [309], "a": 1 }, + { "px": [352,144], "src": [352,144], "f": 0, "t": 238, "d": [310], "a": 1 }, + { "px": [368,144], "src": [368,144], "f": 0, "t": 239, "d": [311], "a": 1 }, + { "px": [384,144], "src": [0,144], "f": 0, "t": 216, "d": [312], "a": 1 }, + { "px": [400,144], "src": [16,144], "f": 0, "t": 217, "d": [313], "a": 1 }, + { "px": [416,144], "src": [32,144], "f": 0, "t": 218, "d": [314], "a": 1 }, + { "px": [432,144], "src": [48,144], "f": 0, "t": 219, "d": [315], "a": 1 }, + { "px": [448,144], "src": [64,144], "f": 0, "t": 220, "d": [316], "a": 1 }, + { "px": [464,144], "src": [80,144], "f": 0, "t": 221, "d": [317], "a": 1 }, + { "px": [480,144], "src": [96,144], "f": 0, "t": 222, "d": [318], "a": 1 }, + { "px": [496,144], "src": [112,144], "f": 0, "t": 223, "d": [319], "a": 1 }, + { "px": [0,160], "src": [0,160], "f": 0, "t": 240, "d": [320], "a": 1 }, + { "px": [16,160], "src": [16,160], "f": 0, "t": 241, "d": [321], "a": 1 }, + { "px": [32,160], "src": [32,160], "f": 0, "t": 242, "d": [322], "a": 1 }, + { "px": [48,160], "src": [48,160], "f": 0, "t": 243, "d": [323], "a": 1 }, + { "px": [64,160], "src": [64,160], "f": 0, "t": 244, "d": [324], "a": 1 }, + { "px": [80,160], "src": [80,160], "f": 0, "t": 245, "d": [325], "a": 1 }, + { "px": [96,160], "src": [96,160], "f": 0, "t": 246, "d": [326], "a": 1 }, + { "px": [112,160], "src": [112,160], "f": 0, "t": 247, "d": [327], "a": 1 }, + { "px": [128,160], "src": [128,160], "f": 0, "t": 248, "d": [328], "a": 1 }, + { "px": [144,160], "src": [144,160], "f": 0, "t": 249, "d": [329], "a": 1 }, + { "px": [160,160], "src": [160,160], "f": 0, "t": 250, "d": [330], "a": 1 }, + { "px": [176,160], "src": [176,160], "f": 0, "t": 251, "d": [331], "a": 1 }, + { "px": [192,160], "src": [192,160], "f": 0, "t": 252, "d": [332], "a": 1 }, + { "px": [208,160], "src": [208,160], "f": 0, "t": 253, "d": [333], "a": 1 }, + { "px": [224,160], "src": [224,160], "f": 0, "t": 254, "d": [334], "a": 1 }, + { "px": [240,160], "src": [240,160], "f": 0, "t": 255, "d": [335], "a": 1 }, + { "px": [256,160], "src": [256,160], "f": 0, "t": 256, "d": [336], "a": 1 }, + { "px": [272,160], "src": [272,160], "f": 0, "t": 257, "d": [337], "a": 1 }, + { "px": [288,160], "src": [288,160], "f": 0, "t": 258, "d": [338], "a": 1 }, + { "px": [304,160], "src": [304,160], "f": 0, "t": 259, "d": [339], "a": 1 }, + { "px": [320,160], "src": [320,160], "f": 0, "t": 260, "d": [340], "a": 1 }, + { "px": [336,160], "src": [336,160], "f": 0, "t": 261, "d": [341], "a": 1 }, + { "px": [352,160], "src": [352,160], "f": 0, "t": 262, "d": [342], "a": 1 }, + { "px": [368,160], "src": [368,160], "f": 0, "t": 263, "d": [343], "a": 1 }, + { "px": [384,160], "src": [0,160], "f": 0, "t": 240, "d": [344], "a": 1 }, + { "px": [400,160], "src": [16,160], "f": 0, "t": 241, "d": [345], "a": 1 }, + { "px": [416,160], "src": [32,160], "f": 0, "t": 242, "d": [346], "a": 1 }, + { "px": [432,160], "src": [48,160], "f": 0, "t": 243, "d": [347], "a": 1 }, + { "px": [448,160], "src": [64,160], "f": 0, "t": 244, "d": [348], "a": 1 }, + { "px": [464,160], "src": [80,160], "f": 0, "t": 245, "d": [349], "a": 1 }, + { "px": [480,160], "src": [96,160], "f": 0, "t": 246, "d": [350], "a": 1 }, + { "px": [496,160], "src": [112,160], "f": 0, "t": 247, "d": [351], "a": 1 }, + { "px": [0,176], "src": [0,176], "f": 0, "t": 264, "d": [352], "a": 1 }, + { "px": [16,176], "src": [16,176], "f": 0, "t": 265, "d": [353], "a": 1 }, + { "px": [32,176], "src": [32,176], "f": 0, "t": 266, "d": [354], "a": 1 }, + { "px": [48,176], "src": [48,176], "f": 0, "t": 267, "d": [355], "a": 1 }, + { "px": [64,176], "src": [64,176], "f": 0, "t": 268, "d": [356], "a": 1 }, + { "px": [80,176], "src": [80,176], "f": 0, "t": 269, "d": [357], "a": 1 }, + { "px": [96,176], "src": [96,176], "f": 0, "t": 270, "d": [358], "a": 1 }, + { "px": [112,176], "src": [112,176], "f": 0, "t": 271, "d": [359], "a": 1 }, + { "px": [128,176], "src": [128,176], "f": 0, "t": 272, "d": [360], "a": 1 }, + { "px": [144,176], "src": [144,176], "f": 0, "t": 273, "d": [361], "a": 1 }, + { "px": [160,176], "src": [160,176], "f": 0, "t": 274, "d": [362], "a": 1 }, + { "px": [176,176], "src": [176,176], "f": 0, "t": 275, "d": [363], "a": 1 }, + { "px": [192,176], "src": [192,176], "f": 0, "t": 276, "d": [364], "a": 1 }, + { "px": [208,176], "src": [208,176], "f": 0, "t": 277, "d": [365], "a": 1 }, + { "px": [224,176], "src": [224,176], "f": 0, "t": 278, "d": [366], "a": 1 }, + { "px": [240,176], "src": [240,176], "f": 0, "t": 279, "d": [367], "a": 1 }, + { "px": [256,176], "src": [256,176], "f": 0, "t": 280, "d": [368], "a": 1 }, + { "px": [272,176], "src": [272,176], "f": 0, "t": 281, "d": [369], "a": 1 }, + { "px": [288,176], "src": [288,176], "f": 0, "t": 282, "d": [370], "a": 1 }, + { "px": [304,176], "src": [304,176], "f": 0, "t": 283, "d": [371], "a": 1 }, + { "px": [320,176], "src": [320,176], "f": 0, "t": 284, "d": [372], "a": 1 }, + { "px": [336,176], "src": [336,176], "f": 0, "t": 285, "d": [373], "a": 1 }, + { "px": [352,176], "src": [352,176], "f": 0, "t": 286, "d": [374], "a": 1 }, + { "px": [368,176], "src": [368,176], "f": 0, "t": 287, "d": [375], "a": 1 }, + { "px": [384,176], "src": [0,176], "f": 0, "t": 264, "d": [376], "a": 1 }, + { "px": [400,176], "src": [16,176], "f": 0, "t": 265, "d": [377], "a": 1 }, + { "px": [416,176], "src": [32,176], "f": 0, "t": 266, "d": [378], "a": 1 }, + { "px": [432,176], "src": [48,176], "f": 0, "t": 267, "d": [379], "a": 1 }, + { "px": [448,176], "src": [64,176], "f": 0, "t": 268, "d": [380], "a": 1 }, + { "px": [464,176], "src": [80,176], "f": 0, "t": 269, "d": [381], "a": 1 }, + { "px": [480,176], "src": [96,176], "f": 0, "t": 270, "d": [382], "a": 1 }, + { "px": [496,176], "src": [112,176], "f": 0, "t": 271, "d": [383], "a": 1 }, + { "px": [0,192], "src": [0,192], "f": 0, "t": 288, "d": [384], "a": 1 }, + { "px": [16,192], "src": [16,192], "f": 0, "t": 289, "d": [385], "a": 1 }, + { "px": [32,192], "src": [32,192], "f": 0, "t": 290, "d": [386], "a": 1 }, + { "px": [48,192], "src": [48,192], "f": 0, "t": 291, "d": [387], "a": 1 }, + { "px": [64,192], "src": [64,192], "f": 0, "t": 292, "d": [388], "a": 1 }, + { "px": [80,192], "src": [80,192], "f": 0, "t": 293, "d": [389], "a": 1 }, + { "px": [96,192], "src": [96,192], "f": 0, "t": 294, "d": [390], "a": 1 }, + { "px": [112,192], "src": [112,192], "f": 0, "t": 295, "d": [391], "a": 1 }, + { "px": [128,192], "src": [128,192], "f": 0, "t": 296, "d": [392], "a": 1 }, + { "px": [144,192], "src": [144,192], "f": 0, "t": 297, "d": [393], "a": 1 }, + { "px": [160,192], "src": [160,192], "f": 0, "t": 298, "d": [394], "a": 1 }, + { "px": [176,192], "src": [176,192], "f": 0, "t": 299, "d": [395], "a": 1 }, + { "px": [192,192], "src": [192,192], "f": 0, "t": 300, "d": [396], "a": 1 }, + { "px": [208,192], "src": [208,192], "f": 0, "t": 301, "d": [397], "a": 1 }, + { "px": [224,192], "src": [224,192], "f": 0, "t": 302, "d": [398], "a": 1 }, + { "px": [240,192], "src": [240,192], "f": 0, "t": 303, "d": [399], "a": 1 }, + { "px": [256,192], "src": [256,192], "f": 0, "t": 304, "d": [400], "a": 1 }, + { "px": [272,192], "src": [272,192], "f": 0, "t": 305, "d": [401], "a": 1 }, + { "px": [288,192], "src": [288,192], "f": 0, "t": 306, "d": [402], "a": 1 }, + { "px": [304,192], "src": [304,192], "f": 0, "t": 307, "d": [403], "a": 1 }, + { "px": [320,192], "src": [320,192], "f": 0, "t": 308, "d": [404], "a": 1 }, + { "px": [336,192], "src": [336,192], "f": 0, "t": 309, "d": [405], "a": 1 }, + { "px": [352,192], "src": [352,192], "f": 0, "t": 310, "d": [406], "a": 1 }, + { "px": [368,192], "src": [368,192], "f": 0, "t": 311, "d": [407], "a": 1 }, + { "px": [384,192], "src": [0,192], "f": 0, "t": 288, "d": [408], "a": 1 }, + { "px": [400,192], "src": [16,192], "f": 0, "t": 289, "d": [409], "a": 1 }, + { "px": [416,192], "src": [32,192], "f": 0, "t": 290, "d": [410], "a": 1 }, + { "px": [432,192], "src": [48,192], "f": 0, "t": 291, "d": [411], "a": 1 }, + { "px": [448,192], "src": [64,192], "f": 0, "t": 292, "d": [412], "a": 1 }, + { "px": [464,192], "src": [80,192], "f": 0, "t": 293, "d": [413], "a": 1 }, + { "px": [480,192], "src": [96,192], "f": 0, "t": 294, "d": [414], "a": 1 }, + { "px": [496,192], "src": [112,192], "f": 0, "t": 295, "d": [415], "a": 1 }, + { "px": [0,208], "src": [0,208], "f": 0, "t": 312, "d": [416], "a": 1 }, + { "px": [16,208], "src": [16,208], "f": 0, "t": 313, "d": [417], "a": 1 }, + { "px": [32,208], "src": [32,208], "f": 0, "t": 314, "d": [418], "a": 1 }, + { "px": [48,208], "src": [48,208], "f": 0, "t": 315, "d": [419], "a": 1 }, + { "px": [64,208], "src": [64,208], "f": 0, "t": 316, "d": [420], "a": 1 }, + { "px": [80,208], "src": [80,208], "f": 0, "t": 317, "d": [421], "a": 1 }, + { "px": [96,208], "src": [96,208], "f": 0, "t": 318, "d": [422], "a": 1 }, + { "px": [112,208], "src": [112,208], "f": 0, "t": 319, "d": [423], "a": 1 }, + { "px": [128,208], "src": [128,208], "f": 0, "t": 320, "d": [424], "a": 1 }, + { "px": [144,208], "src": [144,208], "f": 0, "t": 321, "d": [425], "a": 1 }, + { "px": [160,208], "src": [160,208], "f": 0, "t": 322, "d": [426], "a": 1 }, + { "px": [176,208], "src": [176,208], "f": 0, "t": 323, "d": [427], "a": 1 }, + { "px": [192,208], "src": [192,208], "f": 0, "t": 324, "d": [428], "a": 1 }, + { "px": [208,208], "src": [208,208], "f": 0, "t": 325, "d": [429], "a": 1 }, + { "px": [224,208], "src": [224,208], "f": 0, "t": 326, "d": [430], "a": 1 }, + { "px": [240,208], "src": [240,208], "f": 0, "t": 327, "d": [431], "a": 1 }, + { "px": [256,208], "src": [256,208], "f": 0, "t": 328, "d": [432], "a": 1 }, + { "px": [272,208], "src": [272,208], "f": 0, "t": 329, "d": [433], "a": 1 }, + { "px": [288,208], "src": [288,208], "f": 0, "t": 330, "d": [434], "a": 1 }, + { "px": [304,208], "src": [304,208], "f": 0, "t": 331, "d": [435], "a": 1 }, + { "px": [320,208], "src": [320,208], "f": 0, "t": 332, "d": [436], "a": 1 }, + { "px": [336,208], "src": [336,208], "f": 0, "t": 333, "d": [437], "a": 1 }, + { "px": [352,208], "src": [352,208], "f": 0, "t": 334, "d": [438], "a": 1 }, + { "px": [368,208], "src": [368,208], "f": 0, "t": 335, "d": [439], "a": 1 }, + { "px": [384,208], "src": [0,208], "f": 0, "t": 312, "d": [440], "a": 1 }, + { "px": [400,208], "src": [16,208], "f": 0, "t": 313, "d": [441], "a": 1 }, + { "px": [416,208], "src": [32,208], "f": 0, "t": 314, "d": [442], "a": 1 }, + { "px": [432,208], "src": [48,208], "f": 0, "t": 315, "d": [443], "a": 1 }, + { "px": [448,208], "src": [64,208], "f": 0, "t": 316, "d": [444], "a": 1 }, + { "px": [464,208], "src": [80,208], "f": 0, "t": 317, "d": [445], "a": 1 }, + { "px": [480,208], "src": [96,208], "f": 0, "t": 318, "d": [446], "a": 1 }, + { "px": [496,208], "src": [112,208], "f": 0, "t": 319, "d": [447], "a": 1 }, + { "px": [0,224], "src": [0,224], "f": 0, "t": 336, "d": [448], "a": 1 }, + { "px": [16,224], "src": [16,224], "f": 0, "t": 337, "d": [449], "a": 1 }, + { "px": [32,224], "src": [32,224], "f": 0, "t": 338, "d": [450], "a": 1 }, + { "px": [48,224], "src": [48,224], "f": 0, "t": 339, "d": [451], "a": 1 }, + { "px": [64,224], "src": [64,224], "f": 0, "t": 340, "d": [452], "a": 1 }, + { "px": [80,224], "src": [80,224], "f": 0, "t": 341, "d": [453], "a": 1 }, + { "px": [96,224], "src": [96,224], "f": 0, "t": 342, "d": [454], "a": 1 }, + { "px": [112,224], "src": [112,224], "f": 0, "t": 343, "d": [455], "a": 1 }, + { "px": [128,224], "src": [128,224], "f": 0, "t": 344, "d": [456], "a": 1 }, + { "px": [144,224], "src": [144,224], "f": 0, "t": 345, "d": [457], "a": 1 }, + { "px": [160,224], "src": [160,224], "f": 0, "t": 346, "d": [458], "a": 1 }, + { "px": [176,224], "src": [176,224], "f": 0, "t": 347, "d": [459], "a": 1 }, + { "px": [192,224], "src": [192,224], "f": 0, "t": 348, "d": [460], "a": 1 }, + { "px": [208,224], "src": [208,224], "f": 0, "t": 349, "d": [461], "a": 1 }, + { "px": [224,224], "src": [224,224], "f": 0, "t": 350, "d": [462], "a": 1 }, + { "px": [240,224], "src": [240,224], "f": 0, "t": 351, "d": [463], "a": 1 }, + { "px": [256,224], "src": [256,224], "f": 0, "t": 352, "d": [464], "a": 1 }, + { "px": [272,224], "src": [272,224], "f": 0, "t": 353, "d": [465], "a": 1 }, + { "px": [288,224], "src": [288,224], "f": 0, "t": 354, "d": [466], "a": 1 }, + { "px": [304,224], "src": [304,224], "f": 0, "t": 355, "d": [467], "a": 1 }, + { "px": [320,224], "src": [320,224], "f": 0, "t": 356, "d": [468], "a": 1 }, + { "px": [336,224], "src": [336,224], "f": 0, "t": 357, "d": [469], "a": 1 }, + { "px": [352,224], "src": [352,224], "f": 0, "t": 358, "d": [470], "a": 1 }, + { "px": [368,224], "src": [368,224], "f": 0, "t": 359, "d": [471], "a": 1 }, + { "px": [384,224], "src": [0,224], "f": 0, "t": 336, "d": [472], "a": 1 }, + { "px": [400,224], "src": [16,224], "f": 0, "t": 337, "d": [473], "a": 1 }, + { "px": [416,224], "src": [32,224], "f": 0, "t": 338, "d": [474], "a": 1 }, + { "px": [432,224], "src": [48,224], "f": 0, "t": 339, "d": [475], "a": 1 }, + { "px": [448,224], "src": [64,224], "f": 0, "t": 340, "d": [476], "a": 1 }, + { "px": [464,224], "src": [80,224], "f": 0, "t": 341, "d": [477], "a": 1 }, + { "px": [480,224], "src": [96,224], "f": 0, "t": 342, "d": [478], "a": 1 }, + { "px": [496,224], "src": [112,224], "f": 0, "t": 343, "d": [479], "a": 1 }, + { "px": [0,240], "src": [0,224], "f": 0, "t": 336, "d": [480], "a": 1 }, + { "px": [16,240], "src": [16,224], "f": 0, "t": 337, "d": [481], "a": 1 }, + { "px": [32,240], "src": [32,224], "f": 0, "t": 338, "d": [482], "a": 1 }, + { "px": [48,240], "src": [48,224], "f": 0, "t": 339, "d": [483], "a": 1 }, + { "px": [64,240], "src": [64,224], "f": 0, "t": 340, "d": [484], "a": 1 }, + { "px": [80,240], "src": [80,224], "f": 0, "t": 341, "d": [485], "a": 1 }, + { "px": [96,240], "src": [96,224], "f": 0, "t": 342, "d": [486], "a": 1 }, + { "px": [112,240], "src": [112,224], "f": 0, "t": 343, "d": [487], "a": 1 }, + { "px": [128,240], "src": [128,224], "f": 0, "t": 344, "d": [488], "a": 1 }, + { "px": [144,240], "src": [144,224], "f": 0, "t": 345, "d": [489], "a": 1 }, + { "px": [160,240], "src": [160,224], "f": 0, "t": 346, "d": [490], "a": 1 }, + { "px": [176,240], "src": [176,224], "f": 0, "t": 347, "d": [491], "a": 1 }, + { "px": [192,240], "src": [192,224], "f": 0, "t": 348, "d": [492], "a": 1 }, + { "px": [208,240], "src": [208,224], "f": 0, "t": 349, "d": [493], "a": 1 }, + { "px": [224,240], "src": [224,224], "f": 0, "t": 350, "d": [494], "a": 1 }, + { "px": [240,240], "src": [240,224], "f": 0, "t": 351, "d": [495], "a": 1 }, + { "px": [256,240], "src": [256,224], "f": 0, "t": 352, "d": [496], "a": 1 }, + { "px": [272,240], "src": [272,224], "f": 0, "t": 353, "d": [497], "a": 1 }, + { "px": [288,240], "src": [288,224], "f": 0, "t": 354, "d": [498], "a": 1 }, + { "px": [304,240], "src": [304,224], "f": 0, "t": 355, "d": [499], "a": 1 }, + { "px": [320,240], "src": [320,224], "f": 0, "t": 356, "d": [500], "a": 1 }, + { "px": [336,240], "src": [336,224], "f": 0, "t": 357, "d": [501], "a": 1 }, + { "px": [352,240], "src": [352,224], "f": 0, "t": 358, "d": [502], "a": 1 }, + { "px": [368,240], "src": [368,224], "f": 0, "t": 359, "d": [503], "a": 1 }, + { "px": [384,240], "src": [0,224], "f": 0, "t": 336, "d": [504], "a": 1 }, + { "px": [400,240], "src": [16,224], "f": 0, "t": 337, "d": [505], "a": 1 }, + { "px": [416,240], "src": [32,224], "f": 0, "t": 338, "d": [506], "a": 1 }, + { "px": [432,240], "src": [48,224], "f": 0, "t": 339, "d": [507], "a": 1 }, + { "px": [448,240], "src": [64,224], "f": 0, "t": 340, "d": [508], "a": 1 }, + { "px": [464,240], "src": [80,224], "f": 0, "t": 341, "d": [509], "a": 1 }, + { "px": [480,240], "src": [96,224], "f": 0, "t": 342, "d": [510], "a": 1 }, + { "px": [496,240], "src": [112,224], "f": 0, "t": 343, "d": [511], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + } + ], + "worlds": [], + "dummyWorldIid": "a48e5b90-d380-11f0-a69c-55e16c4c7713" +} \ No newline at end of file diff --git a/assets/levels/top_down.ldtk b/assets/levels/top_down.ldtk new file mode 100644 index 0000000..0ea98bf --- /dev/null +++ b/assets/levels/top_down.ldtk @@ -0,0 +1,2651 @@ +{ + "__header__": { + "fileType": "LDtk Project JSON", + "app": "LDtk", + "doc": "https://ldtk.io/json", + "schema": "https://ldtk.io/files/JSON_SCHEMA.json", + "appAuthor": "Sebastien 'deepnight' Benard", + "appVersion": "1.5.3", + "url": "https://ldtk.io" + }, + "iid": "2451b2d0-d380-11f0-9ae1-7f8ef9aafb88", + "jsonVersion": "1.5.3", + "appBuildId": 473703, + "nextUid": 79, + "identifierStyle": "Capitalize", + "toc": [], + "worldLayout": "Free", + "worldGridWidth": 256, + "worldGridHeight": 256, + "defaultLevelWidth": 256, + "defaultLevelHeight": 256, + "defaultPivotX": 0, + "defaultPivotY": 0, + "defaultGridSize": 16, + "defaultEntityWidth": 16, + "defaultEntityHeight": 16, + "bgColor": "#40465B", + "defaultLevelBgColor": "#696A79", + "minifyJson": false, + "externalLevels": false, + "exportTiled": false, + "simplifiedExport": false, + "imageExportMode": "None", + "exportLevelBg": true, + "pngFilePattern": null, + "backupOnSave": false, + "backupLimit": 10, + "backupRelPath": null, + "levelNamePattern": "Level_%idx", + "tutorialDesc": null, + "customCommands": [], + "flags": [], + "defs": { "layers": [ + { + "__type": "Entities", + "identifier": "Entities", + "type": "Entities", + "uid": 77, + "doc": null, + "uiColor": null, + "gridSize": 64, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 0.6, + "hideInList": false, + "hideFieldsWhenInactive": true, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [], + "intGridValuesGroups": [], + "autoRuleGroups": [], + "autoSourceLayerDefUid": null, + "tilesetDefUid": null, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + }, + { + "__type": "Tiles", + "identifier": "Foreground", + "type": "Tiles", + "uid": 61, + "doc": null, + "uiColor": null, + "gridSize": 64, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 1, + "hideInList": false, + "hideFieldsWhenInactive": false, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [], + "intGridValuesGroups": [], + "autoRuleGroups": [], + "autoSourceLayerDefUid": null, + "tilesetDefUid": 1, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + }, + { + "__type": "IntGrid", + "identifier": "IntGrid", + "type": "IntGrid", + "uid": 2, + "doc": null, + "uiColor": null, + "gridSize": 64, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 1, + "hideInList": false, + "hideFieldsWhenInactive": false, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [ + { "value": 1, "identifier": "walls", "color": "#B86F50", "tile": null, "groupUid": 0 }, + { "value": 3, "identifier": "obstacles", "color": "#A22633", "tile": null, "groupUid": 0 }, + { "value": 2, "identifier": "grass", "color": "#63C74D", "tile": null, "groupUid": 0 }, + { "value": 4, "identifier": "tile", "color": "#3A4466", "tile": null, "groupUid": 0 } + ], + "intGridValuesGroups": [], + "autoRuleGroups": [ + { + "uid": 69, + "name": "obstacles", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 75, + "active": true, + "size": 3, + "tileRectsIds": [ [0], [1], [2], [3] ], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,2,0,0,3,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 791835, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 74, + "active": true, + "size": 3, + "tileRectsIds": [[10]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,3,0,0,4,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6879243, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 73, + "active": true, + "size": 3, + "tileRectsIds": [[10]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,4,0,0,3,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 5479555, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 71, + "active": true, + "size": 3, + "tileRectsIds": [[10]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,3,4,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 8857465, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 70, + "active": true, + "size": 3, + "tileRectsIds": [[10]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,4,3,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4405542, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": false, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + }, + { + "uid": 66, + "name": "tile", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 67, + "active": true, + "size": 1, + "tileRectsIds": [[10]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [4], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 1675224, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": false, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + }, + { + "uid": 62, + "name": "grass", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 63, + "active": true, + "size": 1, + "tileRectsIds": [ [0], [1], [2], [3] ], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [2], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 8915025, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": false, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + }, + { + "uid": 3, + "name": "walls", + "color": null, + "icon": null, + "active": true, + "isOptional": false, + "rules": [ + { + "uid": 31, + "active": true, + "size": 3, + "tileRectsIds": [[204]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,-1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 7774931, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 32, + "active": true, + "size": 3, + "tileRectsIds": [[178]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [-1,1,-1,1,1,1,-1,1,-1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 9893420, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 33, + "active": true, + "size": 3, + "tileRectsIds": [[117]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,1,0,1,-1], + "flipX": true, + "flipY": true, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4908586, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 34, + "active": true, + "size": 3, + "tileRectsIds": [[258]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [-1,1,1,1,1,1,1,1,-1], + "flipX": true, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4749804, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 35, + "active": true, + "size": 3, + "tileRectsIds": [[227]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,1,-1,-1,1,1,0,1,1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 233522, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 36, + "active": true, + "size": 3, + "tileRectsIds": [[229]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,1,1,1,-1,1,1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 7354597, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 37, + "active": true, + "size": 3, + "tileRectsIds": [[225]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [-1,1,-1,1,1,1,-1,1,1], + "flipX": true, + "flipY": true, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6862161, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 38, + "active": true, + "size": 3, + "tileRectsIds": [[228]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [-1,1,0,1,1,-1,1,1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4839941, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 39, + "active": true, + "size": 3, + "tileRectsIds": [[230]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,1,1,1,1,1,-1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4662796, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 40, + "active": true, + "size": 3, + "tileRectsIds": [[257]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [1,1,-1,1,1,1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 1840180, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 41, + "active": true, + "size": 3, + "tileRectsIds": [[255]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [1,1,0,1,1,-1,-1,1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 1641611, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 42, + "active": true, + "size": 3, + "tileRectsIds": [[254]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,1,1,-1,1,1,0,1,-1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6451097, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 43, + "active": true, + "size": 3, + "tileRectsIds": [[256]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [-1,1,1,1,1,1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 9176901, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 44, + "active": true, + "size": 3, + "tileRectsIds": [[121]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [-1,1,-1,1,1,1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 9846746, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 45, + "active": true, + "size": 3, + "tileRectsIds": [[147]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,1,-1,-1,1,1,0,1,-1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2534625, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 46, + "active": true, + "size": 3, + "tileRectsIds": [[120]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,1,1,1,-1,1,-1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4742475, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 47, + "active": true, + "size": 3, + "tileRectsIds": [[148]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [-1,1,0,1,1,-1,-1,1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 9160564, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 48, + "active": true, + "size": 3, + "tileRectsIds": [[201]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [-1,1,1,1,1,1,-1,1,1], + "flipX": true, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 8571935, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 49, + "active": true, + "size": 3, + "tileRectsIds": [[173]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [1,1,1,1,1,1,-1,1,-1], + "flipX": false, + "flipY": true, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 9554225, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 50, + "active": true, + "size": 3, + "tileRectsIds": [[150]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 3700162, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 51, + "active": true, + "size": 3, + "tileRectsIds": [[122]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,-1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 5775500, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 52, + "active": true, + "size": 3, + "tileRectsIds": [[119]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4962963, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 53, + "active": true, + "size": 3, + "tileRectsIds": [[149]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,-1,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 9922820, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 54, + "active": true, + "size": 3, + "tileRectsIds": [[123]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-1,1,-1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2544830, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 55, + "active": true, + "size": 3, + "tileRectsIds": [[146]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-1,1,-1,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4037627, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 56, + "active": true, + "size": 3, + "tileRectsIds": [[124]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,0,0,0,0], + "flipX": true, + "flipY": true, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 1124818, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 57, + "active": true, + "size": 3, + "tileRectsIds": [[202]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,0,0,0,0], + "flipX": false, + "flipY": true, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 8849226, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 58, + "active": true, + "size": 3, + "tileRectsIds": [[175]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-1,1,0,0,0,0], + "flipX": true, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 6643923, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 59, + "active": true, + "size": 3, + "tileRectsIds": [[171]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,1,1,0,1,-1], + "flipX": true, + "flipY": true, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 2745302, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 60, + "active": true, + "size": 1, + "tileRectsIds": [[177]], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": 1, + "invalidated": false, + "perlinActive": false, + "perlinSeed": 4687117, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], + "usesWizard": true, + "requiredBiomeValues": [], + "biomeRequirementMode": 0 + } + ], + "autoSourceLayerDefUid": null, + "tilesetDefUid": 1, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + } + ], "entities": [ + { + "identifier": "Start", + "uid": 76, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 64, + "height": 64, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#2F48BE", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0.5, + "pivotY": 0.5, + "fieldDefs": [] + }, + { + "identifier": "Spawn", + "uid": 78, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 64, + "height": 64, + "resizableX": true, + "resizableY": true, + "minWidth": 64, + "maxWidth": null, + "minHeight": 64, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#E43B44", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0.5, + "pivotY": 0.5, + "fieldDefs": [] + } + ], "tilesets": [ + { + "__cWid": 27, + "__cHei": 20, + "identifier": "Tilemap", + "uid": 1, + "relPath": "../zombie_shooter/tilemap.png", + "embedAtlas": null, + "pxWid": 1728, + "pxHei": 1280, + "tileGridSize": 64, + "spacing": 0, + "padding": 0, + "tags": [], + "tagsSourceEnumUid": null, + "enumTags": [], + "customData": [], + "savedSelections": [], + "cachedPixelData": { + "opaqueTiles": "111111111111111111110000000111111111111111111110000000111111111111111111110000000111111111111111111110000000111111111111111111000000000111111111111111111000000000111111110111111110000000000111111100111111100000000000111111100111111100000000000111111100111111100000000000111111111111111111000000000111111111111111111000000000111111110111111110111111000111111100111111100111111010111111100111111100111111000111111100111111100111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "averageColors": "f2a6f2a6f2a6f2a6fb74fb74f9bbf9bbf9bbf9bbf9bbfeeefc74fc74fd74fd74f2a6f2a6f28bf28b4995499549954c734c734c730000f654f654f654f544f544f664f664f666f666f666f555f555f666f666fb84fb84fb84fb84fb84fb84c695d6a5d6a5cd72dd72dd720000f654f654f654f544f544f664f664f666f666f666f555f555f666f666fd74fd74fd74fd74fd74fd74e4a5f3a6f3a6ed62fd62fd620000f554f554f554f554f444f444f554f555f555f555f555f444f444f555fc96fc96fc96fc96fc96fc96eacafacafacaedb9fdb9fdb90000f854f854f854f754f754f954f954f854f854f864f864f864f864f864f974f974f864f86410001000ba745a74b58a5edb5edb44a60000f854f854f854f754f754f954f954f854f854f864f864f864f864f864f974f974f864f86410001000ba745a74b5a57bde7bde1a740000f544f544f544f544f754f754f444f654aa53f554f554f654f654f754f754f444f754aa7483b783b7c3b68d748d84cd741aaa1aaa0000f544f544f544f544f754f754fa53ca536b63f554f554f654f654f754f754fa74ca746b7483b683b643a68d748d7433a53ddd4ddd0000f654f654f754f754f754f754f5447a537a53f654f654f764f764f764f764f6547a747a7433b63c7438aa28aa38aa15951baa3c748555f654f654f754f754f754f754f5447a537a53f654f654f764f764f764f764f6547a747a7438aa18aa2acd4b742a743b853b853bcc8deef9bbf9bbf9bbf9bbf9bbf9bbf9bbf9bbf9bbf788f788f788f677f677f799f799f788f7883c611c611acd59983a99fcb9fc97fabafcdcf9bbf9bbf9bbf9bbf9bbf9bbf9bbf9bbf9bbf788f788f788f677f677f799f799f788f7883c6138aa3a8878656555fdeefdeefdedfaaaf9bbf9bbf9bbf9bbf9bbf9bbf9bbf9bba9bbf555f555f556f556f677f677f444f666a8aafd95fd94fd95f7b9f6b8f7b9eb84fb84eb84f9bbf9bbf9bbf9bbf9bbf9bbf9bbc9bb69bbf555f555f556f556f677f677f8aac89a69aafd84fe83fd84f6b8f5b7f6b8fb84fb84fb84f9bbf9bbf9bbf9bbf9bbf9bbf9bb79bb79bbf566f566f677f677f677f677f55678aa78aafd73fe61fe83f5b7f2a6f5b7eb84fb84eb84f9bbf9bbf9bbf9bbf9bbf9bbf9bb79bb79bbf566f566f677f677f677f677f55678aa78aafd84fe83fd84f6b8f5b7f6b8ecb9ecb9ecb95bde5bde5bde5bde7dee7dee7a747a747a747a744b744b744b744b74a295c295a2958295727a6a74eb84eb84eb84db847b84000000005bde5bde4bde4bde7dee7dee7a747a747a747a744b744b744b744b74dc73dc73dc73ac737c734b847ca87ca97ca88c97ab84000000004bde4bde7dee7dee7dee6dee79bb79bb79bb79bb49bb49bb49bb49bb9655a555965596558765ab849b849b849b849b84ac73000000004bde4bde7dee7dee7dee6dee79bb79bb79bb79bb49bb49bb49bb49bb8b846b846c846b84377737776b868ca886664666dcb900000000" + } + } + ], "enums": [], "externalEnums": [], "levelFields": [] }, + "levels": [ + { + "identifier": "Level", + "iid": "2452eb50-d380-11f0-9ae1-d7a25c5a0db0", + "uid": 0, + "worldX": 0, + "worldY": 0, + "worldDepth": 0, + "pxWid": 2560, + "pxHei": 1440, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": null, + "bgPos": null, + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": null, + "externalRelPath": null, + "fieldInstances": [], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 40, + "__cHei": 23, + "__gridSize": 64, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "18a082a0-d380-11f0-9ae1-03f5d4b03633", + "levelId": 0, + "layerDefUid": 77, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 2737745, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "Start", + "__grid": [2,20], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": null, + "__smartColor": "#2F48BE", + "iid": "312e8560-d380-11f0-9ae1-a1382736c5df", + "width": 64, + "height": 64, + "defUid": 76, + "px": [160,1312], + "fieldInstances": [], + "__worldX": 160, + "__worldY": 1312 + }, + { + "__identifier": "Start", + "__grid": [13,18], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": null, + "__smartColor": "#2F48BE", + "iid": "34ffd8b0-d380-11f0-9ae1-35d6329f3b27", + "width": 64, + "height": 64, + "defUid": 76, + "px": [864,1184], + "fieldInstances": [], + "__worldX": 864, + "__worldY": 1184 + }, + { + "__identifier": "Start", + "__grid": [25,20], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": null, + "__smartColor": "#2F48BE", + "iid": "35c79580-d380-11f0-9ae1-17680d06aecf", + "width": 64, + "height": 64, + "defUid": 76, + "px": [1632,1312], + "fieldInstances": [], + "__worldX": 1632, + "__worldY": 1312 + }, + { + "__identifier": "Start", + "__grid": [33,18], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": null, + "__smartColor": "#2F48BE", + "iid": "36d86940-d380-11f0-9ae1-5725e8e8d983", + "width": 64, + "height": 64, + "defUid": 76, + "px": [2144,1184], + "fieldInstances": [], + "__worldX": 2144, + "__worldY": 1184 + }, + { + "__identifier": "Spawn", + "__grid": [17,1], + "__pivot": [0.5,0.5], + "__tags": [], + "__tile": null, + "__smartColor": "#E43B44", + "iid": "03544b20-d380-11f0-9ae1-a375bc6f6eb9", + "width": 1664, + "height": 64, + "defUid": 78, + "px": [1120,96], + "fieldInstances": [], + "__worldX": 1120, + "__worldY": 96 + } + ] + }, + { + "__identifier": "Foreground", + "__type": "Tiles", + "__cWid": 40, + "__cHei": 23, + "__gridSize": 64, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../zombie_shooter/tilemap.png", + "iid": "7e07a4f0-d380-11f0-9ae1-c1407425fd82", + "levelId": 0, + "layerDefUid": 61, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 3361326, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [192,128], "src": [1216,704], "f": 0, "t": 316, "d": [83], "a": 1 }, + { "px": [960,128], "src": [1280,320], "f": 0, "t": 155, "d": [95], "a": 1 }, + { "px": [1856,128], "src": [1472,384], "f": 0, "t": 185, "d": [109], "a": 1 }, + { "px": [448,384], "src": [1280,256], "f": 0, "t": 128, "d": [247], "a": 1 }, + { "px": [512,384], "src": [1280,256], "f": 0, "t": 128, "d": [248], "a": 1 }, + { "px": [64,448], "src": [1472,384], "f": 0, "t": 185, "d": [281], "a": 1 }, + { "px": [1728,512], "src": [1280,320], "f": 0, "t": 155, "d": [347], "a": 1 }, + { "px": [2304,640], "src": [1472,384], "f": 0, "t": 185, "d": [436], "a": 1 }, + { "px": [768,704], "src": [1344,384], "f": 0, "t": 183, "d": [452], "a": 1 }, + { "px": [832,704], "src": [1408,384], "f": 0, "t": 184, "d": [453], "a": 1 }, + { "px": [768,768], "src": [1344,448], "f": 0, "t": 210, "d": [492], "a": 1 }, + { "px": [832,768], "src": [1408,448], "f": 0, "t": 211, "d": [493], "a": 1 }, + { "px": [1408,768], "src": [1216,704], "f": 0, "t": 316, "d": [502], "a": 1 }, + { "px": [64,1088], "src": [1472,512], "f": 0, "t": 239, "d": [681], "a": 1 }, + { "px": [576,1088], "src": [1472,512], "f": 0, "t": 239, "d": [689], "a": 1 }, + { "px": [64,1152], "src": [1408,1216], "f": 0, "t": 535, "d": [721], "a": 1 }, + { "px": [384,1216], "src": [896,1088], "f": 0, "t": 473, "d": [766], "a": 1 }, + { "px": [448,1216], "src": [960,1088], "f": 0, "t": 474, "d": [767], "a": 1 }, + { "px": [512,1216], "src": [1024,1088], "f": 0, "t": 475, "d": [768], "a": 1 }, + { "px": [1088,1216], "src": [1472,64], "f": 0, "t": 50, "d": [777], "a": 1 }, + { "px": [1344,1216], "src": [1280,64], "f": 0, "t": 47, "d": [781], "a": 1 }, + { "px": [2432,1216], "src": [1472,512], "f": 0, "t": 239, "d": [798], "a": 1 }, + { "px": [256,1280], "src": [1536,64], "f": 0, "t": 51, "d": [804], "a": 1 }, + { "px": [320,1280], "src": [1600,64], "f": 0, "t": 52, "d": [805], "a": 1 }, + { "px": [1088,1280], "src": [1472,128], "f": 0, "t": 77, "d": [817], "a": 1 }, + { "px": [1344,1280], "src": [1280,128], "f": 0, "t": 74, "d": [821], "a": 1 }, + { "px": [1856,1280], "src": [1216,1152], "f": 0, "t": 505, "d": [829], "a": 1 }, + { "px": [256,1344], "src": [1536,192], "f": 0, "t": 105, "d": [844], "a": 1 }, + { "px": [320,1344], "src": [1600,192], "f": 0, "t": 106, "d": [845], "a": 1 }, + { "px": [1088,1344], "src": [1472,192], "f": 0, "t": 104, "d": [857], "a": 1 }, + { "px": [1344,1344], "src": [1280,192], "f": 0, "t": 101, "d": [861], "a": 1 }, + { "px": [1856,1344], "src": [960,1216], "f": 0, "t": 528, "d": [869], "a": 1 } + ], + "entityInstances": [] + }, + { + "__identifier": "IntGrid", + "__type": "IntGrid", + "__cWid": 40, + "__cHei": 23, + "__gridSize": 64, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../zombie_shooter/tilemap.png", + "iid": "49e5c130-d380-11f0-9ae1-4121d35fc153", + "levelId": 0, + "layerDefUid": 2, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,1,1,1,1,1,2,2,3,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2, + 2,2,3,3,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1, + 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2, + 2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,1,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1, + 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,3,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,3,3,3,4, + 4,4,4,4,4,4,4,3,1,1,1,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,3, + 3,1,1,1,4,4,4,4,4,4,4,4,3,1,1,1,3,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,1, + 1,4,4,4,3,3,1,4,1,4,4,4,4,4,4,4,4,3,1,1,1,3,4,4,4,4,4,4,4,3,4,4,4,4,4, + 4,4,4,4,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1 + ], + "autoLayerTiles": [ + { "px": [2368,0], "src": [960,384], "f": 0, "t": 177, "d": [60,37], "a": 1 }, + { "px": [2432,0], "src": [960,384], "f": 0, "t": 177, "d": [60,38], "a": 1 }, + { "px": [2496,0], "src": [960,384], "f": 0, "t": 177, "d": [60,39], "a": 1 }, + { "px": [2368,64], "src": [960,384], "f": 0, "t": 177, "d": [60,77], "a": 1 }, + { "px": [2432,64], "src": [960,384], "f": 0, "t": 177, "d": [60,78], "a": 1 }, + { "px": [2496,64], "src": [960,384], "f": 0, "t": 177, "d": [60,79], "a": 1 }, + { "px": [2368,128], "src": [960,384], "f": 0, "t": 177, "d": [60,117], "a": 1 }, + { "px": [2432,128], "src": [960,384], "f": 0, "t": 177, "d": [60,118], "a": 1 }, + { "px": [2496,128], "src": [960,384], "f": 0, "t": 177, "d": [60,119], "a": 1 }, + { "px": [2368,192], "src": [960,384], "f": 0, "t": 177, "d": [60,157], "a": 1 }, + { "px": [2432,192], "src": [960,384], "f": 0, "t": 177, "d": [60,158], "a": 1 }, + { "px": [2496,192], "src": [960,384], "f": 0, "t": 177, "d": [60,159], "a": 1 }, + { "px": [1216,320], "src": [960,384], "f": 0, "t": 177, "d": [60,219], "a": 1 }, + { "px": [1152,384], "src": [960,384], "f": 0, "t": 177, "d": [60,258], "a": 1 }, + { "px": [1216,384], "src": [960,384], "f": 0, "t": 177, "d": [60,259], "a": 1 }, + { "px": [1280,384], "src": [960,384], "f": 0, "t": 177, "d": [60,260], "a": 1 }, + { "px": [2368,1088], "src": [960,384], "f": 0, "t": 177, "d": [60,717], "a": 1 }, + { "px": [2432,1088], "src": [960,384], "f": 0, "t": 177, "d": [60,718], "a": 1 }, + { "px": [2496,1088], "src": [960,384], "f": 0, "t": 177, "d": [60,719], "a": 1 }, + { "px": [1216,1280], "src": [960,384], "f": 0, "t": 177, "d": [60,819], "a": 1 }, + { "px": [1216,1344], "src": [960,384], "f": 0, "t": 177, "d": [60,859], "a": 1 }, + { "px": [1216,1408], "src": [960,384], "f": 0, "t": 177, "d": [60,899], "a": 1 }, + { "px": [0,0], "src": [576,384], "f": 0, "t": 171, "d": [59,0], "a": 1 }, + { "px": [2304,0], "src": [576,384], "f": 1, "t": 171, "d": [59,36], "a": 1 }, + { "px": [2304,192], "src": [576,384], "f": 3, "t": 171, "d": [59,156], "a": 1 }, + { "px": [2496,256], "src": [576,384], "f": 1, "t": 171, "d": [59,199], "a": 1 }, + { "px": [1152,320], "src": [576,384], "f": 3, "t": 171, "d": [59,218], "a": 1 }, + { "px": [1280,320], "src": [576,384], "f": 2, "t": 171, "d": [59,220], "a": 1 }, + { "px": [2496,1024], "src": [576,384], "f": 3, "t": 171, "d": [59,679], "a": 1 }, + { "px": [2496,1152], "src": [576,384], "f": 1, "t": 171, "d": [59,759], "a": 1 }, + { "px": [0,1408], "src": [576,384], "f": 2, "t": 171, "d": [59,880], "a": 1 }, + { "px": [1152,1408], "src": [576,384], "f": 3, "t": 171, "d": [59,898], "a": 1 }, + { "px": [1280,1408], "src": [576,384], "f": 2, "t": 171, "d": [59,900], "a": 1 }, + { "px": [2496,1408], "src": [576,384], "f": 3, "t": 171, "d": [59,919], "a": 1 }, + { "px": [0,64], "src": [832,384], "f": 1, "t": 175, "d": [58,40], "a": 1 }, + { "px": [2304,64], "src": [832,384], "f": 0, "t": 175, "d": [58,76], "a": 1 }, + { "px": [0,128], "src": [832,384], "f": 1, "t": 175, "d": [58,80], "a": 1 }, + { "px": [2304,128], "src": [832,384], "f": 0, "t": 175, "d": [58,116], "a": 1 }, + { "px": [0,192], "src": [832,384], "f": 1, "t": 175, "d": [58,120], "a": 1 }, + { "px": [0,256], "src": [832,384], "f": 1, "t": 175, "d": [58,160], "a": 1 }, + { "px": [0,320], "src": [832,384], "f": 1, "t": 175, "d": [58,200], "a": 1 }, + { "px": [2496,320], "src": [832,384], "f": 0, "t": 175, "d": [58,239], "a": 1 }, + { "px": [0,384], "src": [832,384], "f": 1, "t": 175, "d": [58,240], "a": 1 }, + { "px": [1088,384], "src": [832,384], "f": 0, "t": 175, "d": [58,257], "a": 1 }, + { "px": [1344,384], "src": [832,384], "f": 1, "t": 175, "d": [58,261], "a": 1 }, + { "px": [2496,384], "src": [832,384], "f": 0, "t": 175, "d": [58,279], "a": 1 }, + { "px": [0,448], "src": [832,384], "f": 1, "t": 175, "d": [58,280], "a": 1 }, + { "px": [2496,448], "src": [832,384], "f": 0, "t": 175, "d": [58,319], "a": 1 }, + { "px": [0,512], "src": [832,384], "f": 1, "t": 175, "d": [58,320], "a": 1 }, + { "px": [2496,512], "src": [832,384], "f": 0, "t": 175, "d": [58,359], "a": 1 }, + { "px": [0,576], "src": [832,384], "f": 1, "t": 175, "d": [58,360], "a": 1 }, + { "px": [2496,576], "src": [832,384], "f": 0, "t": 175, "d": [58,399], "a": 1 }, + { "px": [0,640], "src": [832,384], "f": 1, "t": 175, "d": [58,400], "a": 1 }, + { "px": [2496,640], "src": [832,384], "f": 0, "t": 175, "d": [58,439], "a": 1 }, + { "px": [0,704], "src": [832,384], "f": 1, "t": 175, "d": [58,440], "a": 1 }, + { "px": [2496,704], "src": [832,384], "f": 0, "t": 175, "d": [58,479], "a": 1 }, + { "px": [0,768], "src": [832,384], "f": 1, "t": 175, "d": [58,480], "a": 1 }, + { "px": [2496,768], "src": [832,384], "f": 0, "t": 175, "d": [58,519], "a": 1 }, + { "px": [0,832], "src": [832,384], "f": 1, "t": 175, "d": [58,520], "a": 1 }, + { "px": [2496,832], "src": [832,384], "f": 0, "t": 175, "d": [58,559], "a": 1 }, + { "px": [0,896], "src": [832,384], "f": 1, "t": 175, "d": [58,560], "a": 1 }, + { "px": [2496,896], "src": [832,384], "f": 0, "t": 175, "d": [58,599], "a": 1 }, + { "px": [0,960], "src": [832,384], "f": 1, "t": 175, "d": [58,600], "a": 1 }, + { "px": [2496,960], "src": [832,384], "f": 0, "t": 175, "d": [58,639], "a": 1 }, + { "px": [0,1088], "src": [832,384], "f": 1, "t": 175, "d": [58,680], "a": 1 }, + { "px": [2304,1088], "src": [832,384], "f": 0, "t": 175, "d": [58,716], "a": 1 }, + { "px": [0,1152], "src": [832,384], "f": 1, "t": 175, "d": [58,720], "a": 1 }, + { "px": [0,1216], "src": [832,384], "f": 1, "t": 175, "d": [58,760], "a": 1 }, + { "px": [2496,1216], "src": [832,384], "f": 0, "t": 175, "d": [58,799], "a": 1 }, + { "px": [0,1280], "src": [832,384], "f": 1, "t": 175, "d": [58,800], "a": 1 }, + { "px": [1152,1280], "src": [832,384], "f": 0, "t": 175, "d": [58,818], "a": 1 }, + { "px": [1280,1280], "src": [832,384], "f": 1, "t": 175, "d": [58,820], "a": 1 }, + { "px": [2496,1280], "src": [832,384], "f": 0, "t": 175, "d": [58,839], "a": 1 }, + { "px": [0,1344], "src": [832,384], "f": 1, "t": 175, "d": [58,840], "a": 1 }, + { "px": [1152,1344], "src": [832,384], "f": 0, "t": 175, "d": [58,858], "a": 1 }, + { "px": [1280,1344], "src": [832,384], "f": 1, "t": 175, "d": [58,860], "a": 1 }, + { "px": [2496,1344], "src": [832,384], "f": 0, "t": 175, "d": [58,879], "a": 1 }, + { "px": [64,0], "src": [832,448], "f": 2, "t": 202, "d": [57,1], "a": 1 }, + { "px": [128,0], "src": [832,448], "f": 2, "t": 202, "d": [57,2], "a": 1 }, + { "px": [192,0], "src": [832,448], "f": 2, "t": 202, "d": [57,3], "a": 1 }, + { "px": [256,0], "src": [832,448], "f": 2, "t": 202, "d": [57,4], "a": 1 }, + { "px": [320,0], "src": [832,448], "f": 2, "t": 202, "d": [57,5], "a": 1 }, + { "px": [384,0], "src": [832,448], "f": 2, "t": 202, "d": [57,6], "a": 1 }, + { "px": [448,0], "src": [832,448], "f": 2, "t": 202, "d": [57,7], "a": 1 }, + { "px": [512,0], "src": [832,448], "f": 2, "t": 202, "d": [57,8], "a": 1 }, + { "px": [576,0], "src": [832,448], "f": 2, "t": 202, "d": [57,9], "a": 1 }, + { "px": [640,0], "src": [832,448], "f": 2, "t": 202, "d": [57,10], "a": 1 }, + { "px": [704,0], "src": [832,448], "f": 2, "t": 202, "d": [57,11], "a": 1 }, + { "px": [768,0], "src": [832,448], "f": 2, "t": 202, "d": [57,12], "a": 1 }, + { "px": [832,0], "src": [832,448], "f": 2, "t": 202, "d": [57,13], "a": 1 }, + { "px": [896,0], "src": [832,448], "f": 2, "t": 202, "d": [57,14], "a": 1 }, + { "px": [960,0], "src": [832,448], "f": 2, "t": 202, "d": [57,15], "a": 1 }, + { "px": [1024,0], "src": [832,448], "f": 2, "t": 202, "d": [57,16], "a": 1 }, + { "px": [1088,0], "src": [832,448], "f": 2, "t": 202, "d": [57,17], "a": 1 }, + { "px": [1152,0], "src": [832,448], "f": 2, "t": 202, "d": [57,18], "a": 1 }, + { "px": [1216,0], "src": [832,448], "f": 2, "t": 202, "d": [57,19], "a": 1 }, + { "px": [1280,0], "src": [832,448], "f": 2, "t": 202, "d": [57,20], "a": 1 }, + { "px": [1344,0], "src": [832,448], "f": 2, "t": 202, "d": [57,21], "a": 1 }, + { "px": [1408,0], "src": [832,448], "f": 2, "t": 202, "d": [57,22], "a": 1 }, + { "px": [1472,0], "src": [832,448], "f": 2, "t": 202, "d": [57,23], "a": 1 }, + { "px": [1536,0], "src": [832,448], "f": 2, "t": 202, "d": [57,24], "a": 1 }, + { "px": [1600,0], "src": [832,448], "f": 2, "t": 202, "d": [57,25], "a": 1 }, + { "px": [1664,0], "src": [832,448], "f": 2, "t": 202, "d": [57,26], "a": 1 }, + { "px": [1728,0], "src": [832,448], "f": 2, "t": 202, "d": [57,27], "a": 1 }, + { "px": [1792,0], "src": [832,448], "f": 2, "t": 202, "d": [57,28], "a": 1 }, + { "px": [1856,0], "src": [832,448], "f": 2, "t": 202, "d": [57,29], "a": 1 }, + { "px": [1920,0], "src": [832,448], "f": 2, "t": 202, "d": [57,30], "a": 1 }, + { "px": [1984,0], "src": [832,448], "f": 2, "t": 202, "d": [57,31], "a": 1 }, + { "px": [2048,0], "src": [832,448], "f": 2, "t": 202, "d": [57,32], "a": 1 }, + { "px": [2112,0], "src": [832,448], "f": 2, "t": 202, "d": [57,33], "a": 1 }, + { "px": [2176,0], "src": [832,448], "f": 2, "t": 202, "d": [57,34], "a": 1 }, + { "px": [2240,0], "src": [832,448], "f": 2, "t": 202, "d": [57,35], "a": 1 }, + { "px": [2240,192], "src": [832,448], "f": 0, "t": 202, "d": [57,155], "a": 1 }, + { "px": [1216,256], "src": [832,448], "f": 0, "t": 202, "d": [57,179], "a": 1 }, + { "px": [2240,256], "src": [832,448], "f": 2, "t": 202, "d": [57,195], "a": 1 }, + { "px": [2304,256], "src": [832,448], "f": 2, "t": 202, "d": [57,196], "a": 1 }, + { "px": [2368,256], "src": [832,448], "f": 2, "t": 202, "d": [57,197], "a": 1 }, + { "px": [2432,256], "src": [832,448], "f": 2, "t": 202, "d": [57,198], "a": 1 }, + { "px": [1152,448], "src": [832,448], "f": 2, "t": 202, "d": [57,298], "a": 1 }, + { "px": [1216,448], "src": [832,448], "f": 2, "t": 202, "d": [57,299], "a": 1 }, + { "px": [1280,448], "src": [832,448], "f": 2, "t": 202, "d": [57,300], "a": 1 }, + { "px": [2368,1024], "src": [832,448], "f": 0, "t": 202, "d": [57,677], "a": 1 }, + { "px": [2432,1024], "src": [832,448], "f": 0, "t": 202, "d": [57,678], "a": 1 }, + { "px": [2368,1152], "src": [832,448], "f": 2, "t": 202, "d": [57,757], "a": 1 }, + { "px": [2432,1152], "src": [832,448], "f": 2, "t": 202, "d": [57,758], "a": 1 }, + { "px": [1216,1216], "src": [832,448], "f": 0, "t": 202, "d": [57,779], "a": 1 }, + { "px": [64,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,881], "a": 1 }, + { "px": [128,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,882], "a": 1 }, + { "px": [192,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,883], "a": 1 }, + { "px": [256,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,884], "a": 1 }, + { "px": [320,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,885], "a": 1 }, + { "px": [576,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,889], "a": 1 }, + { "px": [640,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,890], "a": 1 }, + { "px": [704,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,891], "a": 1 }, + { "px": [768,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,892], "a": 1 }, + { "px": [832,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,893], "a": 1 }, + { "px": [896,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,894], "a": 1 }, + { "px": [960,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,895], "a": 1 }, + { "px": [1024,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,896], "a": 1 }, + { "px": [1088,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,897], "a": 1 }, + { "px": [1344,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,901], "a": 1 }, + { "px": [1408,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,902], "a": 1 }, + { "px": [1472,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,903], "a": 1 }, + { "px": [1536,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,904], "a": 1 }, + { "px": [1600,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,905], "a": 1 }, + { "px": [1664,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,906], "a": 1 }, + { "px": [1728,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,907], "a": 1 }, + { "px": [1792,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,908], "a": 1 }, + { "px": [1856,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,909], "a": 1 }, + { "px": [1920,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,910], "a": 1 }, + { "px": [1984,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,911], "a": 1 }, + { "px": [2048,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,912], "a": 1 }, + { "px": [2112,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,913], "a": 1 }, + { "px": [2176,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,914], "a": 1 }, + { "px": [2240,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,915], "a": 1 }, + { "px": [2304,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,916], "a": 1 }, + { "px": [2368,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,917], "a": 1 }, + { "px": [2432,1408], "src": [832,448], "f": 0, "t": 202, "d": [57,918], "a": 1 }, + { "px": [2176,192], "src": [1024,256], "f": 0, "t": 124, "d": [56,154], "a": 1 }, + { "px": [1152,256], "src": [1024,256], "f": 0, "t": 124, "d": [56,178], "a": 1 }, + { "px": [1280,256], "src": [1024,256], "f": 1, "t": 124, "d": [56,180], "a": 1 }, + { "px": [2176,256], "src": [1024,256], "f": 2, "t": 124, "d": [56,194], "a": 1 }, + { "px": [1088,320], "src": [1024,256], "f": 0, "t": 124, "d": [56,217], "a": 1 }, + { "px": [1344,320], "src": [1024,256], "f": 1, "t": 124, "d": [56,221], "a": 1 }, + { "px": [1088,448], "src": [1024,256], "f": 2, "t": 124, "d": [56,297], "a": 1 }, + { "px": [1344,448], "src": [1024,256], "f": 3, "t": 124, "d": [56,301], "a": 1 }, + { "px": [2304,1152], "src": [1024,256], "f": 2, "t": 124, "d": [56,756], "a": 1 }, + { "px": [1152,1216], "src": [1024,256], "f": 0, "t": 124, "d": [56,778], "a": 1 }, + { "px": [1280,1216], "src": [1024,256], "f": 1, "t": 124, "d": [56,780], "a": 1 }, + { "px": [384,1344], "src": [704,320], "f": 0, "t": 146, "d": [55,846], "a": 1 }, + { "px": [512,1344], "src": [704,320], "f": 0, "t": 146, "d": [55,848], "a": 1 }, + { "px": [64,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,641], "a": 1 }, + { "px": [128,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,642], "a": 1 }, + { "px": [192,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,643], "a": 1 }, + { "px": [640,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,650], "a": 1 }, + { "px": [704,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,651], "a": 1 }, + { "px": [768,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,652], "a": 1 }, + { "px": [832,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,653], "a": 1 }, + { "px": [896,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,654], "a": 1 }, + { "px": [960,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,655], "a": 1 }, + { "px": [1024,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,656], "a": 1 }, + { "px": [1088,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,657], "a": 1 }, + { "px": [1152,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,658], "a": 1 }, + { "px": [1216,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,659], "a": 1 }, + { "px": [1280,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,660], "a": 1 }, + { "px": [1344,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,661], "a": 1 }, + { "px": [1408,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,662], "a": 1 }, + { "px": [1472,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,663], "a": 1 }, + { "px": [1536,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,664], "a": 1 }, + { "px": [1600,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,665], "a": 1 }, + { "px": [1664,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,666], "a": 1 }, + { "px": [1728,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,667], "a": 1 }, + { "px": [1792,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,668], "a": 1 }, + { "px": [1856,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,669], "a": 1 }, + { "px": [2176,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,674], "a": 1 }, + { "px": [2240,1024], "src": [704,256], "f": 0, "t": 119, "d": [52,675], "a": 1 }, + { "px": [448,1280], "src": [704,256], "f": 0, "t": 119, "d": [52,807], "a": 1 }, + { "px": [1664,768], "src": [896,256], "f": 0, "t": 122, "d": [51,506], "a": 1 }, + { "px": [256,1024], "src": [896,256], "f": 0, "t": 122, "d": [51,644], "a": 1 }, + { "px": [1920,1024], "src": [896,256], "f": 0, "t": 122, "d": [51,670], "a": 1 }, + { "px": [1600,768], "src": [960,320], "f": 0, "t": 150, "d": [50,505], "a": 1 }, + { "px": [576,1024], "src": [960,320], "f": 0, "t": 150, "d": [50,649], "a": 1 }, + { "px": [2112,1024], "src": [960,320], "f": 0, "t": 150, "d": [50,673], "a": 1 }, + { "px": [0,1024], "src": [768,448], "f": 1, "t": 201, "d": [48,640], "a": 1 }, + { "px": [384,1408], "src": [768,512], "f": 0, "t": 228, "d": [38,886], "a": 1 }, + { "px": [2304,1024], "src": [832,512], "f": 0, "t": 229, "d": [36,676], "a": 1 }, + { "px": [512,1408], "src": [704,512], "f": 0, "t": 227, "d": [35,888], "a": 1 }, + { "px": [384,1280], "src": [576,256], "f": 0, "t": 117, "d": [33,806], "a": 1 }, + { "px": [512,1280], "src": [576,256], "f": 1, "t": 117, "d": [33,808], "a": 1 }, + { "px": [1984,576], "src": [960,448], "f": 0, "t": 204, "d": [31,391], "a": 1 }, + { "px": [512,704], "src": [960,448], "f": 0, "t": 204, "d": [31,448], "a": 1 }, + { "px": [64,64], "src": [192,0], "f": 0, "t": 3, "d": [63,41], "a": 1 }, + { "px": [128,64], "src": [64,0], "f": 0, "t": 1, "d": [63,42], "a": 1 }, + { "px": [192,64], "src": [128,0], "f": 0, "t": 2, "d": [63,43], "a": 1 }, + { "px": [256,64], "src": [192,0], "f": 0, "t": 3, "d": [63,44], "a": 1 }, + { "px": [320,64], "src": [64,0], "f": 0, "t": 1, "d": [63,45], "a": 1 }, + { "px": [384,64], "src": [0,0], "f": 0, "t": 0, "d": [63,46], "a": 1 }, + { "px": [448,64], "src": [0,0], "f": 0, "t": 0, "d": [63,47], "a": 1 }, + { "px": [512,64], "src": [128,0], "f": 0, "t": 2, "d": [63,48], "a": 1 }, + { "px": [576,64], "src": [64,0], "f": 0, "t": 1, "d": [63,49], "a": 1 }, + { "px": [640,64], "src": [128,0], "f": 0, "t": 2, "d": [63,50], "a": 1 }, + { "px": [704,64], "src": [192,0], "f": 0, "t": 3, "d": [63,51], "a": 1 }, + { "px": [768,64], "src": [128,0], "f": 0, "t": 2, "d": [63,52], "a": 1 }, + { "px": [832,64], "src": [128,0], "f": 0, "t": 2, "d": [63,53], "a": 1 }, + { "px": [896,64], "src": [64,0], "f": 0, "t": 1, "d": [63,54], "a": 1 }, + { "px": [960,64], "src": [192,0], "f": 0, "t": 3, "d": [63,55], "a": 1 }, + { "px": [1024,64], "src": [192,0], "f": 0, "t": 3, "d": [63,56], "a": 1 }, + { "px": [1088,64], "src": [64,0], "f": 0, "t": 1, "d": [63,57], "a": 1 }, + { "px": [1152,64], "src": [64,0], "f": 0, "t": 1, "d": [63,58], "a": 1 }, + { "px": [1216,64], "src": [0,0], "f": 0, "t": 0, "d": [63,59], "a": 1 }, + { "px": [1280,64], "src": [128,0], "f": 0, "t": 2, "d": [63,60], "a": 1 }, + { "px": [1344,64], "src": [64,0], "f": 0, "t": 1, "d": [63,61], "a": 1 }, + { "px": [1408,64], "src": [64,0], "f": 0, "t": 1, "d": [63,62], "a": 1 }, + { "px": [1472,64], "src": [192,0], "f": 0, "t": 3, "d": [63,63], "a": 1 }, + { "px": [1536,64], "src": [64,0], "f": 0, "t": 1, "d": [63,64], "a": 1 }, + { "px": [1600,64], "src": [192,0], "f": 0, "t": 3, "d": [63,65], "a": 1 }, + { "px": [1664,64], "src": [192,0], "f": 0, "t": 3, "d": [63,66], "a": 1 }, + { "px": [1728,64], "src": [0,0], "f": 0, "t": 0, "d": [63,67], "a": 1 }, + { "px": [1792,64], "src": [0,0], "f": 0, "t": 0, "d": [63,68], "a": 1 }, + { "px": [1856,64], "src": [0,0], "f": 0, "t": 0, "d": [63,69], "a": 1 }, + { "px": [1920,64], "src": [64,0], "f": 0, "t": 1, "d": [63,70], "a": 1 }, + { "px": [1984,64], "src": [64,0], "f": 0, "t": 1, "d": [63,71], "a": 1 }, + { "px": [2048,64], "src": [128,0], "f": 0, "t": 2, "d": [63,72], "a": 1 }, + { "px": [2112,64], "src": [128,0], "f": 0, "t": 2, "d": [63,73], "a": 1 }, + { "px": [2176,64], "src": [0,0], "f": 0, "t": 0, "d": [63,74], "a": 1 }, + { "px": [2240,64], "src": [128,0], "f": 0, "t": 2, "d": [63,75], "a": 1 }, + { "px": [64,128], "src": [128,0], "f": 0, "t": 2, "d": [63,81], "a": 1 }, + { "px": [128,128], "src": [64,0], "f": 0, "t": 1, "d": [63,82], "a": 1 }, + { "px": [256,128], "src": [128,0], "f": 0, "t": 2, "d": [63,84], "a": 1 }, + { "px": [320,128], "src": [0,0], "f": 0, "t": 0, "d": [63,85], "a": 1 }, + { "px": [384,128], "src": [64,0], "f": 0, "t": 1, "d": [63,86], "a": 1 }, + { "px": [448,128], "src": [0,0], "f": 0, "t": 0, "d": [63,87], "a": 1 }, + { "px": [512,128], "src": [128,0], "f": 0, "t": 2, "d": [63,88], "a": 1 }, + { "px": [576,128], "src": [192,0], "f": 0, "t": 3, "d": [63,89], "a": 1 }, + { "px": [640,128], "src": [64,0], "f": 0, "t": 1, "d": [63,90], "a": 1 }, + { "px": [704,128], "src": [64,0], "f": 0, "t": 1, "d": [63,91], "a": 1 }, + { "px": [768,128], "src": [128,0], "f": 0, "t": 2, "d": [63,92], "a": 1 }, + { "px": [832,128], "src": [64,0], "f": 0, "t": 1, "d": [63,93], "a": 1 }, + { "px": [896,128], "src": [0,0], "f": 0, "t": 0, "d": [63,94], "a": 1 }, + { "px": [1024,128], "src": [192,0], "f": 0, "t": 3, "d": [63,96], "a": 1 }, + { "px": [1088,128], "src": [192,0], "f": 0, "t": 3, "d": [63,97], "a": 1 }, + { "px": [1152,128], "src": [192,0], "f": 0, "t": 3, "d": [63,98], "a": 1 }, + { "px": [1216,128], "src": [192,0], "f": 0, "t": 3, "d": [63,99], "a": 1 }, + { "px": [1280,128], "src": [128,0], "f": 0, "t": 2, "d": [63,100], "a": 1 }, + { "px": [1344,128], "src": [0,0], "f": 0, "t": 0, "d": [63,101], "a": 1 }, + { "px": [1408,128], "src": [0,0], "f": 0, "t": 0, "d": [63,102], "a": 1 }, + { "px": [1472,128], "src": [0,0], "f": 0, "t": 0, "d": [63,103], "a": 1 }, + { "px": [1536,128], "src": [64,0], "f": 0, "t": 1, "d": [63,104], "a": 1 }, + { "px": [1600,128], "src": [192,0], "f": 0, "t": 3, "d": [63,105], "a": 1 }, + { "px": [1664,128], "src": [64,0], "f": 0, "t": 1, "d": [63,106], "a": 1 }, + { "px": [1728,128], "src": [64,0], "f": 0, "t": 1, "d": [63,107], "a": 1 }, + { "px": [1792,128], "src": [64,0], "f": 0, "t": 1, "d": [63,108], "a": 1 }, + { "px": [1856,128], "src": [64,0], "f": 0, "t": 1, "d": [63,109], "a": 1 }, + { "px": [1920,128], "src": [64,0], "f": 0, "t": 1, "d": [63,110], "a": 1 }, + { "px": [1984,128], "src": [0,0], "f": 0, "t": 0, "d": [63,111], "a": 1 }, + { "px": [2048,128], "src": [192,0], "f": 0, "t": 3, "d": [63,112], "a": 1 }, + { "px": [2112,128], "src": [192,0], "f": 0, "t": 3, "d": [63,113], "a": 1 }, + { "px": [2176,128], "src": [64,0], "f": 0, "t": 1, "d": [63,114], "a": 1 }, + { "px": [2240,128], "src": [192,0], "f": 0, "t": 3, "d": [63,115], "a": 1 }, + { "px": [64,192], "src": [0,0], "f": 0, "t": 0, "d": [63,121], "a": 1 }, + { "px": [128,192], "src": [64,0], "f": 0, "t": 1, "d": [63,122], "a": 1 }, + { "px": [192,192], "src": [64,0], "f": 0, "t": 1, "d": [63,123], "a": 1 }, + { "px": [256,192], "src": [192,0], "f": 0, "t": 3, "d": [63,124], "a": 1 }, + { "px": [320,192], "src": [64,0], "f": 0, "t": 1, "d": [63,125], "a": 1 }, + { "px": [384,192], "src": [0,0], "f": 0, "t": 0, "d": [63,126], "a": 1 }, + { "px": [448,192], "src": [0,0], "f": 0, "t": 0, "d": [63,127], "a": 1 }, + { "px": [512,192], "src": [64,0], "f": 0, "t": 1, "d": [63,128], "a": 1 }, + { "px": [576,192], "src": [128,0], "f": 0, "t": 2, "d": [63,129], "a": 1 }, + { "px": [640,192], "src": [64,0], "f": 0, "t": 1, "d": [63,130], "a": 1 }, + { "px": [704,192], "src": [192,0], "f": 0, "t": 3, "d": [63,131], "a": 1 }, + { "px": [768,192], "src": [64,0], "f": 0, "t": 1, "d": [63,132], "a": 1 }, + { "px": [832,192], "src": [192,0], "f": 0, "t": 3, "d": [63,133], "a": 1 }, + { "px": [896,192], "src": [128,0], "f": 0, "t": 2, "d": [63,134], "a": 1 }, + { "px": [960,192], "src": [64,0], "f": 0, "t": 1, "d": [63,135], "a": 1 }, + { "px": [1024,192], "src": [128,0], "f": 0, "t": 2, "d": [63,136], "a": 1 }, + { "px": [1088,192], "src": [0,0], "f": 0, "t": 0, "d": [63,137], "a": 1 }, + { "px": [1152,192], "src": [64,0], "f": 0, "t": 1, "d": [63,138], "a": 1 }, + { "px": [1216,192], "src": [0,0], "f": 0, "t": 0, "d": [63,139], "a": 1 }, + { "px": [1280,192], "src": [64,0], "f": 0, "t": 1, "d": [63,140], "a": 1 }, + { "px": [1344,192], "src": [192,0], "f": 0, "t": 3, "d": [63,141], "a": 1 }, + { "px": [1408,192], "src": [128,0], "f": 0, "t": 2, "d": [63,142], "a": 1 }, + { "px": [1472,192], "src": [0,0], "f": 0, "t": 0, "d": [63,143], "a": 1 }, + { "px": [1536,192], "src": [192,0], "f": 0, "t": 3, "d": [63,144], "a": 1 }, + { "px": [1600,192], "src": [128,0], "f": 0, "t": 2, "d": [63,145], "a": 1 }, + { "px": [1664,192], "src": [192,0], "f": 0, "t": 3, "d": [63,146], "a": 1 }, + { "px": [1728,192], "src": [0,0], "f": 0, "t": 0, "d": [63,147], "a": 1 }, + { "px": [1792,192], "src": [0,0], "f": 0, "t": 0, "d": [63,148], "a": 1 }, + { "px": [1856,192], "src": [64,0], "f": 0, "t": 1, "d": [63,149], "a": 1 }, + { "px": [1920,192], "src": [0,0], "f": 0, "t": 0, "d": [63,150], "a": 1 }, + { "px": [1984,192], "src": [0,0], "f": 0, "t": 0, "d": [63,151], "a": 1 }, + { "px": [2048,192], "src": [64,0], "f": 0, "t": 1, "d": [63,152], "a": 1 }, + { "px": [2112,192], "src": [0,0], "f": 0, "t": 0, "d": [63,153], "a": 1 }, + { "px": [64,256], "src": [0,0], "f": 0, "t": 0, "d": [63,161], "a": 1 }, + { "px": [128,256], "src": [192,0], "f": 0, "t": 3, "d": [63,162], "a": 1 }, + { "px": [192,256], "src": [0,0], "f": 0, "t": 0, "d": [63,163], "a": 1 }, + { "px": [256,256], "src": [192,0], "f": 0, "t": 3, "d": [63,164], "a": 1 }, + { "px": [320,256], "src": [0,0], "f": 0, "t": 0, "d": [63,165], "a": 1 }, + { "px": [384,256], "src": [128,0], "f": 0, "t": 2, "d": [63,166], "a": 1 }, + { "px": [448,256], "src": [192,0], "f": 0, "t": 3, "d": [63,167], "a": 1 }, + { "px": [512,256], "src": [192,0], "f": 0, "t": 3, "d": [63,168], "a": 1 }, + { "px": [576,256], "src": [192,0], "f": 0, "t": 3, "d": [63,169], "a": 1 }, + { "px": [640,256], "src": [192,0], "f": 0, "t": 3, "d": [63,170], "a": 1 }, + { "px": [704,256], "src": [64,0], "f": 0, "t": 1, "d": [63,171], "a": 1 }, + { "px": [768,256], "src": [128,0], "f": 0, "t": 2, "d": [63,172], "a": 1 }, + { "px": [832,256], "src": [192,0], "f": 0, "t": 3, "d": [63,173], "a": 1 }, + { "px": [896,256], "src": [64,0], "f": 0, "t": 1, "d": [63,174], "a": 1 }, + { "px": [960,256], "src": [64,0], "f": 0, "t": 1, "d": [63,175], "a": 1 }, + { "px": [1024,256], "src": [0,0], "f": 0, "t": 0, "d": [63,176], "a": 1 }, + { "px": [1088,256], "src": [128,0], "f": 0, "t": 2, "d": [63,177], "a": 1 }, + { "px": [1344,256], "src": [64,0], "f": 0, "t": 1, "d": [63,181], "a": 1 }, + { "px": [1408,256], "src": [128,0], "f": 0, "t": 2, "d": [63,182], "a": 1 }, + { "px": [1472,256], "src": [128,0], "f": 0, "t": 2, "d": [63,183], "a": 1 }, + { "px": [1536,256], "src": [128,0], "f": 0, "t": 2, "d": [63,184], "a": 1 }, + { "px": [1600,256], "src": [192,0], "f": 0, "t": 3, "d": [63,185], "a": 1 }, + { "px": [1664,256], "src": [128,0], "f": 0, "t": 2, "d": [63,186], "a": 1 }, + { "px": [1728,256], "src": [0,0], "f": 0, "t": 0, "d": [63,187], "a": 1 }, + { "px": [1792,256], "src": [128,0], "f": 0, "t": 2, "d": [63,188], "a": 1 }, + { "px": [1856,256], "src": [192,0], "f": 0, "t": 3, "d": [63,189], "a": 1 }, + { "px": [1920,256], "src": [64,0], "f": 0, "t": 1, "d": [63,190], "a": 1 }, + { "px": [1984,256], "src": [192,0], "f": 0, "t": 3, "d": [63,191], "a": 1 }, + { "px": [2048,256], "src": [128,0], "f": 0, "t": 2, "d": [63,192], "a": 1 }, + { "px": [2112,256], "src": [64,0], "f": 0, "t": 1, "d": [63,193], "a": 1 }, + { "px": [64,320], "src": [192,0], "f": 0, "t": 3, "d": [63,201], "a": 1 }, + { "px": [128,320], "src": [128,0], "f": 0, "t": 2, "d": [63,202], "a": 1 }, + { "px": [192,320], "src": [128,0], "f": 0, "t": 2, "d": [63,203], "a": 1 }, + { "px": [256,320], "src": [0,0], "f": 0, "t": 0, "d": [63,204], "a": 1 }, + { "px": [320,320], "src": [0,0], "f": 0, "t": 0, "d": [63,205], "a": 1 }, + { "px": [384,320], "src": [128,0], "f": 0, "t": 2, "d": [63,206], "a": 1 }, + { "px": [448,320], "src": [192,0], "f": 0, "t": 3, "d": [63,207], "a": 1 }, + { "px": [512,320], "src": [0,0], "f": 0, "t": 0, "d": [63,208], "a": 1 }, + { "px": [576,320], "src": [128,0], "f": 0, "t": 2, "d": [63,209], "a": 1 }, + { "px": [640,320], "src": [128,0], "f": 0, "t": 2, "d": [63,210], "a": 1 }, + { "px": [704,320], "src": [0,0], "f": 0, "t": 0, "d": [63,211], "a": 1 }, + { "px": [768,320], "src": [64,0], "f": 0, "t": 1, "d": [63,212], "a": 1 }, + { "px": [832,320], "src": [128,0], "f": 0, "t": 2, "d": [63,213], "a": 1 }, + { "px": [896,320], "src": [128,0], "f": 0, "t": 2, "d": [63,214], "a": 1 }, + { "px": [960,320], "src": [64,0], "f": 0, "t": 1, "d": [63,215], "a": 1 }, + { "px": [1024,320], "src": [192,0], "f": 0, "t": 3, "d": [63,216], "a": 1 }, + { "px": [1408,320], "src": [128,0], "f": 0, "t": 2, "d": [63,222], "a": 1 }, + { "px": [1472,320], "src": [0,0], "f": 0, "t": 0, "d": [63,223], "a": 1 }, + { "px": [1536,320], "src": [0,0], "f": 0, "t": 0, "d": [63,224], "a": 1 }, + { "px": [1600,320], "src": [128,0], "f": 0, "t": 2, "d": [63,225], "a": 1 }, + { "px": [1664,320], "src": [64,0], "f": 0, "t": 1, "d": [63,226], "a": 1 }, + { "px": [1728,320], "src": [64,0], "f": 0, "t": 1, "d": [63,227], "a": 1 }, + { "px": [1792,320], "src": [0,0], "f": 0, "t": 0, "d": [63,228], "a": 1 }, + { "px": [1856,320], "src": [0,0], "f": 0, "t": 0, "d": [63,229], "a": 1 }, + { "px": [1920,320], "src": [0,0], "f": 0, "t": 0, "d": [63,230], "a": 1 }, + { "px": [1984,320], "src": [64,0], "f": 0, "t": 1, "d": [63,231], "a": 1 }, + { "px": [2048,320], "src": [64,0], "f": 0, "t": 1, "d": [63,232], "a": 1 }, + { "px": [2112,320], "src": [64,0], "f": 0, "t": 1, "d": [63,233], "a": 1 }, + { "px": [2176,320], "src": [128,0], "f": 0, "t": 2, "d": [63,234], "a": 1 }, + { "px": [2240,320], "src": [0,0], "f": 0, "t": 0, "d": [63,235], "a": 1 }, + { "px": [2304,320], "src": [64,0], "f": 0, "t": 1, "d": [63,236], "a": 1 }, + { "px": [2368,320], "src": [64,0], "f": 0, "t": 1, "d": [63,237], "a": 1 }, + { "px": [2432,320], "src": [0,0], "f": 0, "t": 0, "d": [63,238], "a": 1 }, + { "px": [64,384], "src": [192,0], "f": 0, "t": 3, "d": [63,241], "a": 1 }, + { "px": [128,384], "src": [0,0], "f": 0, "t": 0, "d": [63,242], "a": 1 }, + { "px": [192,384], "src": [192,0], "f": 0, "t": 3, "d": [63,243], "a": 1 }, + { "px": [256,384], "src": [0,0], "f": 0, "t": 0, "d": [63,244], "a": 1 }, + { "px": [320,384], "src": [192,0], "f": 0, "t": 3, "d": [63,245], "a": 1 }, + { "px": [384,384], "src": [64,0], "f": 0, "t": 1, "d": [63,246], "a": 1 }, + { "px": [576,384], "src": [64,0], "f": 0, "t": 1, "d": [63,249], "a": 1 }, + { "px": [640,384], "src": [128,0], "f": 0, "t": 2, "d": [63,250], "a": 1 }, + { "px": [704,384], "src": [192,0], "f": 0, "t": 3, "d": [63,251], "a": 1 }, + { "px": [768,384], "src": [64,0], "f": 0, "t": 1, "d": [63,252], "a": 1 }, + { "px": [832,384], "src": [192,0], "f": 0, "t": 3, "d": [63,253], "a": 1 }, + { "px": [896,384], "src": [0,0], "f": 0, "t": 0, "d": [63,254], "a": 1 }, + { "px": [960,384], "src": [64,0], "f": 0, "t": 1, "d": [63,255], "a": 1 }, + { "px": [1024,384], "src": [128,0], "f": 0, "t": 2, "d": [63,256], "a": 1 }, + { "px": [1408,384], "src": [192,0], "f": 0, "t": 3, "d": [63,262], "a": 1 }, + { "px": [1472,384], "src": [64,0], "f": 0, "t": 1, "d": [63,263], "a": 1 }, + { "px": [1536,384], "src": [128,0], "f": 0, "t": 2, "d": [63,264], "a": 1 }, + { "px": [1600,384], "src": [64,0], "f": 0, "t": 1, "d": [63,265], "a": 1 }, + { "px": [1664,384], "src": [128,0], "f": 0, "t": 2, "d": [63,266], "a": 1 }, + { "px": [1728,384], "src": [64,0], "f": 0, "t": 1, "d": [63,267], "a": 1 }, + { "px": [1792,384], "src": [0,0], "f": 0, "t": 0, "d": [63,268], "a": 1 }, + { "px": [1856,384], "src": [192,0], "f": 0, "t": 3, "d": [63,269], "a": 1 }, + { "px": [1920,384], "src": [0,0], "f": 0, "t": 0, "d": [63,270], "a": 1 }, + { "px": [1984,384], "src": [192,0], "f": 0, "t": 3, "d": [63,271], "a": 1 }, + { "px": [2048,384], "src": [0,0], "f": 0, "t": 0, "d": [63,272], "a": 1 }, + { "px": [2112,384], "src": [192,0], "f": 0, "t": 3, "d": [63,273], "a": 1 }, + { "px": [2176,384], "src": [192,0], "f": 0, "t": 3, "d": [63,274], "a": 1 }, + { "px": [2240,384], "src": [0,0], "f": 0, "t": 0, "d": [63,275], "a": 1 }, + { "px": [2304,384], "src": [64,0], "f": 0, "t": 1, "d": [63,276], "a": 1 }, + { "px": [2368,384], "src": [0,0], "f": 0, "t": 0, "d": [63,277], "a": 1 }, + { "px": [2432,384], "src": [0,0], "f": 0, "t": 0, "d": [63,278], "a": 1 }, + { "px": [64,448], "src": [192,0], "f": 0, "t": 3, "d": [63,281], "a": 1 }, + { "px": [128,448], "src": [0,0], "f": 0, "t": 0, "d": [63,282], "a": 1 }, + { "px": [192,448], "src": [0,0], "f": 0, "t": 0, "d": [63,283], "a": 1 }, + { "px": [256,448], "src": [192,0], "f": 0, "t": 3, "d": [63,284], "a": 1 }, + { "px": [320,448], "src": [0,0], "f": 0, "t": 0, "d": [63,285], "a": 1 }, + { "px": [384,448], "src": [64,0], "f": 0, "t": 1, "d": [63,286], "a": 1 }, + { "px": [448,448], "src": [192,0], "f": 0, "t": 3, "d": [63,287], "a": 1 }, + { "px": [512,448], "src": [192,0], "f": 0, "t": 3, "d": [63,288], "a": 1 }, + { "px": [576,448], "src": [128,0], "f": 0, "t": 2, "d": [63,289], "a": 1 }, + { "px": [640,448], "src": [128,0], "f": 0, "t": 2, "d": [63,290], "a": 1 }, + { "px": [704,448], "src": [64,0], "f": 0, "t": 1, "d": [63,291], "a": 1 }, + { "px": [768,448], "src": [192,0], "f": 0, "t": 3, "d": [63,292], "a": 1 }, + { "px": [832,448], "src": [128,0], "f": 0, "t": 2, "d": [63,293], "a": 1 }, + { "px": [896,448], "src": [64,0], "f": 0, "t": 1, "d": [63,294], "a": 1 }, + { "px": [960,448], "src": [192,0], "f": 0, "t": 3, "d": [63,295], "a": 1 }, + { "px": [1024,448], "src": [0,0], "f": 0, "t": 0, "d": [63,296], "a": 1 }, + { "px": [1408,448], "src": [64,0], "f": 0, "t": 1, "d": [63,302], "a": 1 }, + { "px": [1472,448], "src": [128,0], "f": 0, "t": 2, "d": [63,303], "a": 1 }, + { "px": [1536,448], "src": [192,0], "f": 0, "t": 3, "d": [63,304], "a": 1 }, + { "px": [1600,448], "src": [0,0], "f": 0, "t": 0, "d": [63,305], "a": 1 }, + { "px": [1664,448], "src": [192,0], "f": 0, "t": 3, "d": [63,306], "a": 1 }, + { "px": [1728,448], "src": [192,0], "f": 0, "t": 3, "d": [63,307], "a": 1 }, + { "px": [1792,448], "src": [192,0], "f": 0, "t": 3, "d": [63,308], "a": 1 }, + { "px": [1856,448], "src": [192,0], "f": 0, "t": 3, "d": [63,309], "a": 1 }, + { "px": [1920,448], "src": [128,0], "f": 0, "t": 2, "d": [63,310], "a": 1 }, + { "px": [1984,448], "src": [64,0], "f": 0, "t": 1, "d": [63,311], "a": 1 }, + { "px": [2048,448], "src": [128,0], "f": 0, "t": 2, "d": [63,312], "a": 1 }, + { "px": [2112,448], "src": [0,0], "f": 0, "t": 0, "d": [63,313], "a": 1 }, + { "px": [2176,448], "src": [128,0], "f": 0, "t": 2, "d": [63,314], "a": 1 }, + { "px": [2240,448], "src": [128,0], "f": 0, "t": 2, "d": [63,315], "a": 1 }, + { "px": [2304,448], "src": [192,0], "f": 0, "t": 3, "d": [63,316], "a": 1 }, + { "px": [2368,448], "src": [64,0], "f": 0, "t": 1, "d": [63,317], "a": 1 }, + { "px": [2432,448], "src": [192,0], "f": 0, "t": 3, "d": [63,318], "a": 1 }, + { "px": [64,512], "src": [192,0], "f": 0, "t": 3, "d": [63,321], "a": 1 }, + { "px": [128,512], "src": [64,0], "f": 0, "t": 1, "d": [63,322], "a": 1 }, + { "px": [192,512], "src": [128,0], "f": 0, "t": 2, "d": [63,323], "a": 1 }, + { "px": [256,512], "src": [128,0], "f": 0, "t": 2, "d": [63,324], "a": 1 }, + { "px": [320,512], "src": [0,0], "f": 0, "t": 0, "d": [63,325], "a": 1 }, + { "px": [384,512], "src": [192,0], "f": 0, "t": 3, "d": [63,326], "a": 1 }, + { "px": [448,512], "src": [0,0], "f": 0, "t": 0, "d": [63,327], "a": 1 }, + { "px": [512,512], "src": [192,0], "f": 0, "t": 3, "d": [63,328], "a": 1 }, + { "px": [576,512], "src": [128,0], "f": 0, "t": 2, "d": [63,329], "a": 1 }, + { "px": [640,512], "src": [0,0], "f": 0, "t": 0, "d": [63,330], "a": 1 }, + { "px": [704,512], "src": [0,0], "f": 0, "t": 0, "d": [63,331], "a": 1 }, + { "px": [768,512], "src": [64,0], "f": 0, "t": 1, "d": [63,332], "a": 1 }, + { "px": [832,512], "src": [64,0], "f": 0, "t": 1, "d": [63,333], "a": 1 }, + { "px": [896,512], "src": [192,0], "f": 0, "t": 3, "d": [63,334], "a": 1 }, + { "px": [960,512], "src": [128,0], "f": 0, "t": 2, "d": [63,335], "a": 1 }, + { "px": [1024,512], "src": [64,0], "f": 0, "t": 1, "d": [63,336], "a": 1 }, + { "px": [1088,512], "src": [128,0], "f": 0, "t": 2, "d": [63,337], "a": 1 }, + { "px": [1152,512], "src": [0,0], "f": 0, "t": 0, "d": [63,338], "a": 1 }, + { "px": [1216,512], "src": [0,0], "f": 0, "t": 0, "d": [63,339], "a": 1 }, + { "px": [1280,512], "src": [0,0], "f": 0, "t": 0, "d": [63,340], "a": 1 }, + { "px": [1344,512], "src": [64,0], "f": 0, "t": 1, "d": [63,341], "a": 1 }, + { "px": [1408,512], "src": [128,0], "f": 0, "t": 2, "d": [63,342], "a": 1 }, + { "px": [1472,512], "src": [192,0], "f": 0, "t": 3, "d": [63,343], "a": 1 }, + { "px": [1536,512], "src": [192,0], "f": 0, "t": 3, "d": [63,344], "a": 1 }, + { "px": [1600,512], "src": [0,0], "f": 0, "t": 0, "d": [63,345], "a": 1 }, + { "px": [1664,512], "src": [0,0], "f": 0, "t": 0, "d": [63,346], "a": 1 }, + { "px": [1792,512], "src": [64,0], "f": 0, "t": 1, "d": [63,348], "a": 1 }, + { "px": [1856,512], "src": [128,0], "f": 0, "t": 2, "d": [63,349], "a": 1 }, + { "px": [1920,512], "src": [0,0], "f": 0, "t": 0, "d": [63,350], "a": 1 }, + { "px": [1984,512], "src": [0,0], "f": 0, "t": 0, "d": [63,351], "a": 1 }, + { "px": [2048,512], "src": [64,0], "f": 0, "t": 1, "d": [63,352], "a": 1 }, + { "px": [2112,512], "src": [192,0], "f": 0, "t": 3, "d": [63,353], "a": 1 }, + { "px": [2176,512], "src": [0,0], "f": 0, "t": 0, "d": [63,354], "a": 1 }, + { "px": [2240,512], "src": [64,0], "f": 0, "t": 1, "d": [63,355], "a": 1 }, + { "px": [2304,512], "src": [128,0], "f": 0, "t": 2, "d": [63,356], "a": 1 }, + { "px": [2368,512], "src": [64,0], "f": 0, "t": 1, "d": [63,357], "a": 1 }, + { "px": [2432,512], "src": [64,0], "f": 0, "t": 1, "d": [63,358], "a": 1 }, + { "px": [64,576], "src": [64,0], "f": 0, "t": 1, "d": [63,361], "a": 1 }, + { "px": [128,576], "src": [0,0], "f": 0, "t": 0, "d": [63,362], "a": 1 }, + { "px": [192,576], "src": [192,0], "f": 0, "t": 3, "d": [63,363], "a": 1 }, + { "px": [256,576], "src": [0,0], "f": 0, "t": 0, "d": [63,364], "a": 1 }, + { "px": [320,576], "src": [128,0], "f": 0, "t": 2, "d": [63,365], "a": 1 }, + { "px": [384,576], "src": [0,0], "f": 0, "t": 0, "d": [63,366], "a": 1 }, + { "px": [448,576], "src": [192,0], "f": 0, "t": 3, "d": [63,367], "a": 1 }, + { "px": [512,576], "src": [128,0], "f": 0, "t": 2, "d": [63,368], "a": 1 }, + { "px": [576,576], "src": [192,0], "f": 0, "t": 3, "d": [63,369], "a": 1 }, + { "px": [640,576], "src": [64,0], "f": 0, "t": 1, "d": [63,370], "a": 1 }, + { "px": [704,576], "src": [0,0], "f": 0, "t": 0, "d": [63,371], "a": 1 }, + { "px": [768,576], "src": [0,0], "f": 0, "t": 0, "d": [63,372], "a": 1 }, + { "px": [832,576], "src": [128,0], "f": 0, "t": 2, "d": [63,373], "a": 1 }, + { "px": [896,576], "src": [0,0], "f": 0, "t": 0, "d": [63,374], "a": 1 }, + { "px": [960,576], "src": [192,0], "f": 0, "t": 3, "d": [63,375], "a": 1 }, + { "px": [1024,576], "src": [64,0], "f": 0, "t": 1, "d": [63,376], "a": 1 }, + { "px": [1088,576], "src": [192,0], "f": 0, "t": 3, "d": [63,377], "a": 1 }, + { "px": [1152,576], "src": [192,0], "f": 0, "t": 3, "d": [63,378], "a": 1 }, + { "px": [1216,576], "src": [0,0], "f": 0, "t": 0, "d": [63,379], "a": 1 }, + { "px": [1280,576], "src": [0,0], "f": 0, "t": 0, "d": [63,380], "a": 1 }, + { "px": [1344,576], "src": [0,0], "f": 0, "t": 0, "d": [63,381], "a": 1 }, + { "px": [1408,576], "src": [128,0], "f": 0, "t": 2, "d": [63,382], "a": 1 }, + { "px": [1472,576], "src": [128,0], "f": 0, "t": 2, "d": [63,383], "a": 1 }, + { "px": [1536,576], "src": [0,0], "f": 0, "t": 0, "d": [63,384], "a": 1 }, + { "px": [1600,576], "src": [0,0], "f": 0, "t": 0, "d": [63,385], "a": 1 }, + { "px": [1664,576], "src": [192,0], "f": 0, "t": 3, "d": [63,386], "a": 1 }, + { "px": [1728,576], "src": [64,0], "f": 0, "t": 1, "d": [63,387], "a": 1 }, + { "px": [1792,576], "src": [0,0], "f": 0, "t": 0, "d": [63,388], "a": 1 }, + { "px": [1856,576], "src": [64,0], "f": 0, "t": 1, "d": [63,389], "a": 1 }, + { "px": [1920,576], "src": [128,0], "f": 0, "t": 2, "d": [63,390], "a": 1 }, + { "px": [2048,576], "src": [0,0], "f": 0, "t": 0, "d": [63,392], "a": 1 }, + { "px": [2112,576], "src": [128,0], "f": 0, "t": 2, "d": [63,393], "a": 1 }, + { "px": [2176,576], "src": [64,0], "f": 0, "t": 1, "d": [63,394], "a": 1 }, + { "px": [2240,576], "src": [0,0], "f": 0, "t": 0, "d": [63,395], "a": 1 }, + { "px": [2304,576], "src": [128,0], "f": 0, "t": 2, "d": [63,396], "a": 1 }, + { "px": [2368,576], "src": [192,0], "f": 0, "t": 3, "d": [63,397], "a": 1 }, + { "px": [2432,576], "src": [0,0], "f": 0, "t": 0, "d": [63,398], "a": 1 }, + { "px": [64,640], "src": [64,0], "f": 0, "t": 1, "d": [63,401], "a": 1 }, + { "px": [128,640], "src": [64,0], "f": 0, "t": 1, "d": [63,402], "a": 1 }, + { "px": [192,640], "src": [0,0], "f": 0, "t": 0, "d": [63,403], "a": 1 }, + { "px": [256,640], "src": [0,0], "f": 0, "t": 0, "d": [63,404], "a": 1 }, + { "px": [320,640], "src": [64,0], "f": 0, "t": 1, "d": [63,405], "a": 1 }, + { "px": [384,640], "src": [192,0], "f": 0, "t": 3, "d": [63,406], "a": 1 }, + { "px": [448,640], "src": [128,0], "f": 0, "t": 2, "d": [63,407], "a": 1 }, + { "px": [512,640], "src": [64,0], "f": 0, "t": 1, "d": [63,408], "a": 1 }, + { "px": [576,640], "src": [192,0], "f": 0, "t": 3, "d": [63,409], "a": 1 }, + { "px": [640,640], "src": [64,0], "f": 0, "t": 1, "d": [63,410], "a": 1 }, + { "px": [704,640], "src": [128,0], "f": 0, "t": 2, "d": [63,411], "a": 1 }, + { "px": [768,640], "src": [64,0], "f": 0, "t": 1, "d": [63,412], "a": 1 }, + { "px": [832,640], "src": [0,0], "f": 0, "t": 0, "d": [63,413], "a": 1 }, + { "px": [896,640], "src": [0,0], "f": 0, "t": 0, "d": [63,414], "a": 1 }, + { "px": [960,640], "src": [192,0], "f": 0, "t": 3, "d": [63,415], "a": 1 }, + { "px": [1024,640], "src": [0,0], "f": 0, "t": 0, "d": [63,416], "a": 1 }, + { "px": [1088,640], "src": [0,0], "f": 0, "t": 0, "d": [63,417], "a": 1 }, + { "px": [1152,640], "src": [128,0], "f": 0, "t": 2, "d": [63,418], "a": 1 }, + { "px": [1216,640], "src": [0,0], "f": 0, "t": 0, "d": [63,419], "a": 1 }, + { "px": [1280,640], "src": [192,0], "f": 0, "t": 3, "d": [63,420], "a": 1 }, + { "px": [1344,640], "src": [64,0], "f": 0, "t": 1, "d": [63,421], "a": 1 }, + { "px": [1408,640], "src": [0,0], "f": 0, "t": 0, "d": [63,422], "a": 1 }, + { "px": [1472,640], "src": [128,0], "f": 0, "t": 2, "d": [63,423], "a": 1 }, + { "px": [1536,640], "src": [64,0], "f": 0, "t": 1, "d": [63,424], "a": 1 }, + { "px": [1600,640], "src": [64,0], "f": 0, "t": 1, "d": [63,425], "a": 1 }, + { "px": [1664,640], "src": [0,0], "f": 0, "t": 0, "d": [63,426], "a": 1 }, + { "px": [1728,640], "src": [128,0], "f": 0, "t": 2, "d": [63,427], "a": 1 }, + { "px": [1792,640], "src": [0,0], "f": 0, "t": 0, "d": [63,428], "a": 1 }, + { "px": [1856,640], "src": [192,0], "f": 0, "t": 3, "d": [63,429], "a": 1 }, + { "px": [1920,640], "src": [128,0], "f": 0, "t": 2, "d": [63,430], "a": 1 }, + { "px": [1984,640], "src": [0,0], "f": 0, "t": 0, "d": [63,431], "a": 1 }, + { "px": [2048,640], "src": [192,0], "f": 0, "t": 3, "d": [63,432], "a": 1 }, + { "px": [2112,640], "src": [192,0], "f": 0, "t": 3, "d": [63,433], "a": 1 }, + { "px": [2176,640], "src": [192,0], "f": 0, "t": 3, "d": [63,434], "a": 1 }, + { "px": [2240,640], "src": [128,0], "f": 0, "t": 2, "d": [63,435], "a": 1 }, + { "px": [2304,640], "src": [64,0], "f": 0, "t": 1, "d": [63,436], "a": 1 }, + { "px": [2368,640], "src": [0,0], "f": 0, "t": 0, "d": [63,437], "a": 1 }, + { "px": [2432,640], "src": [0,0], "f": 0, "t": 0, "d": [63,438], "a": 1 }, + { "px": [64,704], "src": [0,0], "f": 0, "t": 0, "d": [63,441], "a": 1 }, + { "px": [128,704], "src": [64,0], "f": 0, "t": 1, "d": [63,442], "a": 1 }, + { "px": [192,704], "src": [128,0], "f": 0, "t": 2, "d": [63,443], "a": 1 }, + { "px": [256,704], "src": [0,0], "f": 0, "t": 0, "d": [63,444], "a": 1 }, + { "px": [320,704], "src": [64,0], "f": 0, "t": 1, "d": [63,445], "a": 1 }, + { "px": [384,704], "src": [0,0], "f": 0, "t": 0, "d": [63,446], "a": 1 }, + { "px": [448,704], "src": [192,0], "f": 0, "t": 3, "d": [63,447], "a": 1 }, + { "px": [576,704], "src": [64,0], "f": 0, "t": 1, "d": [63,449], "a": 1 }, + { "px": [640,704], "src": [0,0], "f": 0, "t": 0, "d": [63,450], "a": 1 }, + { "px": [704,704], "src": [192,0], "f": 0, "t": 3, "d": [63,451], "a": 1 }, + { "px": [768,704], "src": [128,0], "f": 0, "t": 2, "d": [63,452], "a": 1 }, + { "px": [832,704], "src": [64,0], "f": 0, "t": 1, "d": [63,453], "a": 1 }, + { "px": [896,704], "src": [128,0], "f": 0, "t": 2, "d": [63,454], "a": 1 }, + { "px": [960,704], "src": [64,0], "f": 0, "t": 1, "d": [63,455], "a": 1 }, + { "px": [1024,704], "src": [192,0], "f": 0, "t": 3, "d": [63,456], "a": 1 }, + { "px": [1088,704], "src": [128,0], "f": 0, "t": 2, "d": [63,457], "a": 1 }, + { "px": [1152,704], "src": [64,0], "f": 0, "t": 1, "d": [63,458], "a": 1 }, + { "px": [1216,704], "src": [64,0], "f": 0, "t": 1, "d": [63,459], "a": 1 }, + { "px": [1280,704], "src": [0,0], "f": 0, "t": 0, "d": [63,460], "a": 1 }, + { "px": [1344,704], "src": [192,0], "f": 0, "t": 3, "d": [63,461], "a": 1 }, + { "px": [1408,704], "src": [192,0], "f": 0, "t": 3, "d": [63,462], "a": 1 }, + { "px": [1472,704], "src": [192,0], "f": 0, "t": 3, "d": [63,463], "a": 1 }, + { "px": [1536,704], "src": [0,0], "f": 0, "t": 0, "d": [63,464], "a": 1 }, + { "px": [1600,704], "src": [192,0], "f": 0, "t": 3, "d": [63,465], "a": 1 }, + { "px": [1664,704], "src": [64,0], "f": 0, "t": 1, "d": [63,466], "a": 1 }, + { "px": [1728,704], "src": [192,0], "f": 0, "t": 3, "d": [63,467], "a": 1 }, + { "px": [1792,704], "src": [128,0], "f": 0, "t": 2, "d": [63,468], "a": 1 }, + { "px": [1856,704], "src": [128,0], "f": 0, "t": 2, "d": [63,469], "a": 1 }, + { "px": [1920,704], "src": [0,0], "f": 0, "t": 0, "d": [63,470], "a": 1 }, + { "px": [1984,704], "src": [64,0], "f": 0, "t": 1, "d": [63,471], "a": 1 }, + { "px": [2048,704], "src": [192,0], "f": 0, "t": 3, "d": [63,472], "a": 1 }, + { "px": [2112,704], "src": [192,0], "f": 0, "t": 3, "d": [63,473], "a": 1 }, + { "px": [2176,704], "src": [64,0], "f": 0, "t": 1, "d": [63,474], "a": 1 }, + { "px": [2240,704], "src": [192,0], "f": 0, "t": 3, "d": [63,475], "a": 1 }, + { "px": [2304,704], "src": [64,0], "f": 0, "t": 1, "d": [63,476], "a": 1 }, + { "px": [2368,704], "src": [128,0], "f": 0, "t": 2, "d": [63,477], "a": 1 }, + { "px": [2432,704], "src": [64,0], "f": 0, "t": 1, "d": [63,478], "a": 1 }, + { "px": [64,768], "src": [0,0], "f": 0, "t": 0, "d": [63,481], "a": 1 }, + { "px": [128,768], "src": [0,0], "f": 0, "t": 0, "d": [63,482], "a": 1 }, + { "px": [192,768], "src": [64,0], "f": 0, "t": 1, "d": [63,483], "a": 1 }, + { "px": [256,768], "src": [0,0], "f": 0, "t": 0, "d": [63,484], "a": 1 }, + { "px": [320,768], "src": [192,0], "f": 0, "t": 3, "d": [63,485], "a": 1 }, + { "px": [384,768], "src": [128,0], "f": 0, "t": 2, "d": [63,486], "a": 1 }, + { "px": [448,768], "src": [128,0], "f": 0, "t": 2, "d": [63,487], "a": 1 }, + { "px": [512,768], "src": [64,0], "f": 0, "t": 1, "d": [63,488], "a": 1 }, + { "px": [576,768], "src": [0,0], "f": 0, "t": 0, "d": [63,489], "a": 1 }, + { "px": [640,768], "src": [128,0], "f": 0, "t": 2, "d": [63,490], "a": 1 }, + { "px": [704,768], "src": [0,0], "f": 0, "t": 0, "d": [63,491], "a": 1 }, + { "px": [768,768], "src": [192,0], "f": 0, "t": 3, "d": [63,492], "a": 1 }, + { "px": [832,768], "src": [64,0], "f": 0, "t": 1, "d": [63,493], "a": 1 }, + { "px": [896,768], "src": [64,0], "f": 0, "t": 1, "d": [63,494], "a": 1 }, + { "px": [960,768], "src": [128,0], "f": 0, "t": 2, "d": [63,495], "a": 1 }, + { "px": [1024,768], "src": [0,0], "f": 0, "t": 0, "d": [63,496], "a": 1 }, + { "px": [1088,768], "src": [128,0], "f": 0, "t": 2, "d": [63,497], "a": 1 }, + { "px": [1152,768], "src": [128,0], "f": 0, "t": 2, "d": [63,498], "a": 1 }, + { "px": [1216,768], "src": [192,0], "f": 0, "t": 3, "d": [63,499], "a": 1 }, + { "px": [1280,768], "src": [0,0], "f": 0, "t": 0, "d": [63,500], "a": 1 }, + { "px": [1344,768], "src": [128,0], "f": 0, "t": 2, "d": [63,501], "a": 1 }, + { "px": [1472,768], "src": [192,0], "f": 0, "t": 3, "d": [63,503], "a": 1 }, + { "px": [1536,768], "src": [192,0], "f": 0, "t": 3, "d": [63,504], "a": 1 }, + { "px": [1728,768], "src": [0,0], "f": 0, "t": 0, "d": [63,507], "a": 1 }, + { "px": [1792,768], "src": [0,0], "f": 0, "t": 0, "d": [63,508], "a": 1 }, + { "px": [1856,768], "src": [64,0], "f": 0, "t": 1, "d": [63,509], "a": 1 }, + { "px": [1920,768], "src": [0,0], "f": 0, "t": 0, "d": [63,510], "a": 1 }, + { "px": [1984,768], "src": [0,0], "f": 0, "t": 0, "d": [63,511], "a": 1 }, + { "px": [2048,768], "src": [0,0], "f": 0, "t": 0, "d": [63,512], "a": 1 }, + { "px": [2112,768], "src": [128,0], "f": 0, "t": 2, "d": [63,513], "a": 1 }, + { "px": [2176,768], "src": [192,0], "f": 0, "t": 3, "d": [63,514], "a": 1 }, + { "px": [2240,768], "src": [64,0], "f": 0, "t": 1, "d": [63,515], "a": 1 }, + { "px": [2304,768], "src": [0,0], "f": 0, "t": 0, "d": [63,516], "a": 1 }, + { "px": [2368,768], "src": [192,0], "f": 0, "t": 3, "d": [63,517], "a": 1 }, + { "px": [2432,768], "src": [0,0], "f": 0, "t": 0, "d": [63,518], "a": 1 }, + { "px": [64,832], "src": [64,0], "f": 0, "t": 1, "d": [63,521], "a": 1 }, + { "px": [128,832], "src": [128,0], "f": 0, "t": 2, "d": [63,522], "a": 1 }, + { "px": [192,832], "src": [0,0], "f": 0, "t": 0, "d": [63,523], "a": 1 }, + { "px": [256,832], "src": [128,0], "f": 0, "t": 2, "d": [63,524], "a": 1 }, + { "px": [320,832], "src": [0,0], "f": 0, "t": 0, "d": [63,525], "a": 1 }, + { "px": [384,832], "src": [192,0], "f": 0, "t": 3, "d": [63,526], "a": 1 }, + { "px": [448,832], "src": [0,0], "f": 0, "t": 0, "d": [63,527], "a": 1 }, + { "px": [512,832], "src": [0,0], "f": 0, "t": 0, "d": [63,528], "a": 1 }, + { "px": [576,832], "src": [192,0], "f": 0, "t": 3, "d": [63,529], "a": 1 }, + { "px": [640,832], "src": [192,0], "f": 0, "t": 3, "d": [63,530], "a": 1 }, + { "px": [704,832], "src": [192,0], "f": 0, "t": 3, "d": [63,531], "a": 1 }, + { "px": [768,832], "src": [0,0], "f": 0, "t": 0, "d": [63,532], "a": 1 }, + { "px": [832,832], "src": [192,0], "f": 0, "t": 3, "d": [63,533], "a": 1 }, + { "px": [896,832], "src": [0,0], "f": 0, "t": 0, "d": [63,534], "a": 1 }, + { "px": [960,832], "src": [192,0], "f": 0, "t": 3, "d": [63,535], "a": 1 }, + { "px": [1024,832], "src": [128,0], "f": 0, "t": 2, "d": [63,536], "a": 1 }, + { "px": [1088,832], "src": [0,0], "f": 0, "t": 0, "d": [63,537], "a": 1 }, + { "px": [1152,832], "src": [128,0], "f": 0, "t": 2, "d": [63,538], "a": 1 }, + { "px": [1216,832], "src": [64,0], "f": 0, "t": 1, "d": [63,539], "a": 1 }, + { "px": [1280,832], "src": [0,0], "f": 0, "t": 0, "d": [63,540], "a": 1 }, + { "px": [1344,832], "src": [64,0], "f": 0, "t": 1, "d": [63,541], "a": 1 }, + { "px": [1408,832], "src": [64,0], "f": 0, "t": 1, "d": [63,542], "a": 1 }, + { "px": [1472,832], "src": [128,0], "f": 0, "t": 2, "d": [63,543], "a": 1 }, + { "px": [1536,832], "src": [64,0], "f": 0, "t": 1, "d": [63,544], "a": 1 }, + { "px": [1600,832], "src": [192,0], "f": 0, "t": 3, "d": [63,545], "a": 1 }, + { "px": [1664,832], "src": [64,0], "f": 0, "t": 1, "d": [63,546], "a": 1 }, + { "px": [1728,832], "src": [0,0], "f": 0, "t": 0, "d": [63,547], "a": 1 }, + { "px": [1792,832], "src": [64,0], "f": 0, "t": 1, "d": [63,548], "a": 1 }, + { "px": [1856,832], "src": [192,0], "f": 0, "t": 3, "d": [63,549], "a": 1 }, + { "px": [1920,832], "src": [128,0], "f": 0, "t": 2, "d": [63,550], "a": 1 }, + { "px": [1984,832], "src": [0,0], "f": 0, "t": 0, "d": [63,551], "a": 1 }, + { "px": [2048,832], "src": [0,0], "f": 0, "t": 0, "d": [63,552], "a": 1 }, + { "px": [2112,832], "src": [192,0], "f": 0, "t": 3, "d": [63,553], "a": 1 }, + { "px": [2176,832], "src": [128,0], "f": 0, "t": 2, "d": [63,554], "a": 1 }, + { "px": [2240,832], "src": [128,0], "f": 0, "t": 2, "d": [63,555], "a": 1 }, + { "px": [2304,832], "src": [128,0], "f": 0, "t": 2, "d": [63,556], "a": 1 }, + { "px": [2368,832], "src": [64,0], "f": 0, "t": 1, "d": [63,557], "a": 1 }, + { "px": [2432,832], "src": [192,0], "f": 0, "t": 3, "d": [63,558], "a": 1 }, + { "px": [64,896], "src": [0,0], "f": 0, "t": 0, "d": [63,561], "a": 1 }, + { "px": [128,896], "src": [128,0], "f": 0, "t": 2, "d": [63,562], "a": 1 }, + { "px": [192,896], "src": [64,0], "f": 0, "t": 1, "d": [63,563], "a": 1 }, + { "px": [256,896], "src": [128,0], "f": 0, "t": 2, "d": [63,564], "a": 1 }, + { "px": [320,896], "src": [64,0], "f": 0, "t": 1, "d": [63,565], "a": 1 }, + { "px": [384,896], "src": [64,0], "f": 0, "t": 1, "d": [63,566], "a": 1 }, + { "px": [448,896], "src": [64,0], "f": 0, "t": 1, "d": [63,567], "a": 1 }, + { "px": [512,896], "src": [192,0], "f": 0, "t": 3, "d": [63,568], "a": 1 }, + { "px": [576,896], "src": [192,0], "f": 0, "t": 3, "d": [63,569], "a": 1 }, + { "px": [640,896], "src": [0,0], "f": 0, "t": 0, "d": [63,570], "a": 1 }, + { "px": [704,896], "src": [192,0], "f": 0, "t": 3, "d": [63,571], "a": 1 }, + { "px": [768,896], "src": [192,0], "f": 0, "t": 3, "d": [63,572], "a": 1 }, + { "px": [832,896], "src": [192,0], "f": 0, "t": 3, "d": [63,573], "a": 1 }, + { "px": [896,896], "src": [128,0], "f": 0, "t": 2, "d": [63,574], "a": 1 }, + { "px": [960,896], "src": [0,0], "f": 0, "t": 0, "d": [63,575], "a": 1 }, + { "px": [1024,896], "src": [128,0], "f": 0, "t": 2, "d": [63,576], "a": 1 }, + { "px": [1088,896], "src": [192,0], "f": 0, "t": 3, "d": [63,577], "a": 1 }, + { "px": [1152,896], "src": [0,0], "f": 0, "t": 0, "d": [63,578], "a": 1 }, + { "px": [1216,896], "src": [192,0], "f": 0, "t": 3, "d": [63,579], "a": 1 }, + { "px": [1280,896], "src": [192,0], "f": 0, "t": 3, "d": [63,580], "a": 1 }, + { "px": [1344,896], "src": [0,0], "f": 0, "t": 0, "d": [63,581], "a": 1 }, + { "px": [1408,896], "src": [128,0], "f": 0, "t": 2, "d": [63,582], "a": 1 }, + { "px": [1472,896], "src": [192,0], "f": 0, "t": 3, "d": [63,583], "a": 1 }, + { "px": [1536,896], "src": [192,0], "f": 0, "t": 3, "d": [63,584], "a": 1 }, + { "px": [1600,896], "src": [64,0], "f": 0, "t": 1, "d": [63,585], "a": 1 }, + { "px": [1664,896], "src": [128,0], "f": 0, "t": 2, "d": [63,586], "a": 1 }, + { "px": [1728,896], "src": [128,0], "f": 0, "t": 2, "d": [63,587], "a": 1 }, + { "px": [1792,896], "src": [192,0], "f": 0, "t": 3, "d": [63,588], "a": 1 }, + { "px": [1856,896], "src": [0,0], "f": 0, "t": 0, "d": [63,589], "a": 1 }, + { "px": [1920,896], "src": [192,0], "f": 0, "t": 3, "d": [63,590], "a": 1 }, + { "px": [1984,896], "src": [64,0], "f": 0, "t": 1, "d": [63,591], "a": 1 }, + { "px": [2048,896], "src": [64,0], "f": 0, "t": 1, "d": [63,592], "a": 1 }, + { "px": [2112,896], "src": [192,0], "f": 0, "t": 3, "d": [63,593], "a": 1 }, + { "px": [2176,896], "src": [0,0], "f": 0, "t": 0, "d": [63,594], "a": 1 }, + { "px": [2240,896], "src": [0,0], "f": 0, "t": 0, "d": [63,595], "a": 1 }, + { "px": [2304,896], "src": [192,0], "f": 0, "t": 3, "d": [63,596], "a": 1 }, + { "px": [2368,896], "src": [128,0], "f": 0, "t": 2, "d": [63,597], "a": 1 }, + { "px": [2432,896], "src": [64,0], "f": 0, "t": 1, "d": [63,598], "a": 1 }, + { "px": [64,960], "src": [192,0], "f": 0, "t": 3, "d": [63,601], "a": 1 }, + { "px": [128,960], "src": [0,0], "f": 0, "t": 0, "d": [63,602], "a": 1 }, + { "px": [192,960], "src": [0,0], "f": 0, "t": 0, "d": [63,603], "a": 1 }, + { "px": [256,960], "src": [64,0], "f": 0, "t": 1, "d": [63,604], "a": 1 }, + { "px": [320,960], "src": [192,0], "f": 0, "t": 3, "d": [63,605], "a": 1 }, + { "px": [384,960], "src": [0,0], "f": 0, "t": 0, "d": [63,606], "a": 1 }, + { "px": [448,960], "src": [0,0], "f": 0, "t": 0, "d": [63,607], "a": 1 }, + { "px": [512,960], "src": [128,0], "f": 0, "t": 2, "d": [63,608], "a": 1 }, + { "px": [576,960], "src": [128,0], "f": 0, "t": 2, "d": [63,609], "a": 1 }, + { "px": [640,960], "src": [192,0], "f": 0, "t": 3, "d": [63,610], "a": 1 }, + { "px": [704,960], "src": [192,0], "f": 0, "t": 3, "d": [63,611], "a": 1 }, + { "px": [768,960], "src": [0,0], "f": 0, "t": 0, "d": [63,612], "a": 1 }, + { "px": [832,960], "src": [0,0], "f": 0, "t": 0, "d": [63,613], "a": 1 }, + { "px": [896,960], "src": [192,0], "f": 0, "t": 3, "d": [63,614], "a": 1 }, + { "px": [960,960], "src": [0,0], "f": 0, "t": 0, "d": [63,615], "a": 1 }, + { "px": [1024,960], "src": [192,0], "f": 0, "t": 3, "d": [63,616], "a": 1 }, + { "px": [1088,960], "src": [64,0], "f": 0, "t": 1, "d": [63,617], "a": 1 }, + { "px": [1152,960], "src": [128,0], "f": 0, "t": 2, "d": [63,618], "a": 1 }, + { "px": [1216,960], "src": [64,0], "f": 0, "t": 1, "d": [63,619], "a": 1 }, + { "px": [1280,960], "src": [0,0], "f": 0, "t": 0, "d": [63,620], "a": 1 }, + { "px": [1344,960], "src": [64,0], "f": 0, "t": 1, "d": [63,621], "a": 1 }, + { "px": [1408,960], "src": [128,0], "f": 0, "t": 2, "d": [63,622], "a": 1 }, + { "px": [1472,960], "src": [192,0], "f": 0, "t": 3, "d": [63,623], "a": 1 }, + { "px": [1536,960], "src": [64,0], "f": 0, "t": 1, "d": [63,624], "a": 1 }, + { "px": [1600,960], "src": [64,0], "f": 0, "t": 1, "d": [63,625], "a": 1 }, + { "px": [1664,960], "src": [128,0], "f": 0, "t": 2, "d": [63,626], "a": 1 }, + { "px": [1728,960], "src": [128,0], "f": 0, "t": 2, "d": [63,627], "a": 1 }, + { "px": [1792,960], "src": [0,0], "f": 0, "t": 0, "d": [63,628], "a": 1 }, + { "px": [1856,960], "src": [192,0], "f": 0, "t": 3, "d": [63,629], "a": 1 }, + { "px": [1920,960], "src": [64,0], "f": 0, "t": 1, "d": [63,630], "a": 1 }, + { "px": [1984,960], "src": [0,0], "f": 0, "t": 0, "d": [63,631], "a": 1 }, + { "px": [2048,960], "src": [0,0], "f": 0, "t": 0, "d": [63,632], "a": 1 }, + { "px": [2112,960], "src": [64,0], "f": 0, "t": 1, "d": [63,633], "a": 1 }, + { "px": [2176,960], "src": [192,0], "f": 0, "t": 3, "d": [63,634], "a": 1 }, + { "px": [2240,960], "src": [0,0], "f": 0, "t": 0, "d": [63,635], "a": 1 }, + { "px": [2304,960], "src": [64,0], "f": 0, "t": 1, "d": [63,636], "a": 1 }, + { "px": [2368,960], "src": [128,0], "f": 0, "t": 2, "d": [63,637], "a": 1 }, + { "px": [2432,960], "src": [64,0], "f": 0, "t": 1, "d": [63,638], "a": 1 }, + { "px": [320,1024], "src": [128,0], "f": 0, "t": 2, "d": [63,645], "a": 1 }, + { "px": [384,1024], "src": [128,0], "f": 0, "t": 2, "d": [63,646], "a": 1 }, + { "px": [448,1024], "src": [64,0], "f": 0, "t": 1, "d": [63,647], "a": 1 }, + { "px": [512,1024], "src": [128,0], "f": 0, "t": 2, "d": [63,648], "a": 1 }, + { "px": [1984,1024], "src": [64,0], "f": 0, "t": 1, "d": [63,671], "a": 1 }, + { "px": [2048,1024], "src": [128,0], "f": 0, "t": 2, "d": [63,672], "a": 1 }, + { "px": [64,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,681], "a": 1 }, + { "px": [128,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,682], "a": 1 }, + { "px": [192,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,683], "a": 1 }, + { "px": [256,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,684], "a": 1 }, + { "px": [320,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,685], "a": 1 }, + { "px": [384,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,686], "a": 1 }, + { "px": [448,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,687], "a": 1 }, + { "px": [512,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,688], "a": 1 }, + { "px": [576,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,689], "a": 1 }, + { "px": [640,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,690], "a": 1 }, + { "px": [704,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,691], "a": 1 }, + { "px": [768,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,692], "a": 1 }, + { "px": [832,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,693], "a": 1 }, + { "px": [896,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,694], "a": 1 }, + { "px": [960,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,695], "a": 1 }, + { "px": [1024,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,696], "a": 1 }, + { "px": [1088,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,697], "a": 1 }, + { "px": [1152,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,698], "a": 1 }, + { "px": [1216,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,699], "a": 1 }, + { "px": [1280,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,700], "a": 1 }, + { "px": [1344,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,701], "a": 1 }, + { "px": [1408,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,702], "a": 1 }, + { "px": [1472,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,703], "a": 1 }, + { "px": [1536,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,704], "a": 1 }, + { "px": [1600,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,705], "a": 1 }, + { "px": [1664,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,706], "a": 1 }, + { "px": [1728,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,707], "a": 1 }, + { "px": [1792,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,708], "a": 1 }, + { "px": [1856,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,709], "a": 1 }, + { "px": [1920,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,710], "a": 1 }, + { "px": [1984,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,711], "a": 1 }, + { "px": [2048,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,712], "a": 1 }, + { "px": [2112,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,713], "a": 1 }, + { "px": [2176,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,714], "a": 1 }, + { "px": [2240,1088], "src": [640,0], "f": 0, "t": 10, "d": [67,715], "a": 1 }, + { "px": [128,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,722], "a": 1 }, + { "px": [192,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,723], "a": 1 }, + { "px": [256,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,724], "a": 1 }, + { "px": [320,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,725], "a": 1 }, + { "px": [384,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,726], "a": 1 }, + { "px": [448,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,727], "a": 1 }, + { "px": [512,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,728], "a": 1 }, + { "px": [576,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,729], "a": 1 }, + { "px": [640,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,730], "a": 1 }, + { "px": [704,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,731], "a": 1 }, + { "px": [768,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,732], "a": 1 }, + { "px": [832,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,733], "a": 1 }, + { "px": [896,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,734], "a": 1 }, + { "px": [960,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,735], "a": 1 }, + { "px": [1024,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,736], "a": 1 }, + { "px": [1088,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,737], "a": 1 }, + { "px": [1152,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,738], "a": 1 }, + { "px": [1216,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,739], "a": 1 }, + { "px": [1280,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,740], "a": 1 }, + { "px": [1344,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,741], "a": 1 }, + { "px": [1408,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,742], "a": 1 }, + { "px": [1472,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,743], "a": 1 }, + { "px": [1536,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,744], "a": 1 }, + { "px": [1600,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,745], "a": 1 }, + { "px": [1664,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,746], "a": 1 }, + { "px": [1728,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,747], "a": 1 }, + { "px": [1792,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,748], "a": 1 }, + { "px": [1856,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,749], "a": 1 }, + { "px": [1920,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,750], "a": 1 }, + { "px": [1984,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,751], "a": 1 }, + { "px": [2048,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,752], "a": 1 }, + { "px": [2112,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,753], "a": 1 }, + { "px": [2176,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,754], "a": 1 }, + { "px": [2240,1152], "src": [640,0], "f": 0, "t": 10, "d": [67,755], "a": 1 }, + { "px": [64,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,761], "a": 1 }, + { "px": [128,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,762], "a": 1 }, + { "px": [192,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,763], "a": 1 }, + { "px": [256,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,764], "a": 1 }, + { "px": [320,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,765], "a": 1 }, + { "px": [576,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,769], "a": 1 }, + { "px": [640,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,770], "a": 1 }, + { "px": [704,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,771], "a": 1 }, + { "px": [768,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,772], "a": 1 }, + { "px": [832,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,773], "a": 1 }, + { "px": [896,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,774], "a": 1 }, + { "px": [960,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,775], "a": 1 }, + { "px": [1024,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,776], "a": 1 }, + { "px": [1408,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,782], "a": 1 }, + { "px": [1472,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,783], "a": 1 }, + { "px": [1536,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,784], "a": 1 }, + { "px": [1600,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,785], "a": 1 }, + { "px": [1664,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,786], "a": 1 }, + { "px": [1728,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,787], "a": 1 }, + { "px": [1792,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,788], "a": 1 }, + { "px": [1856,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,789], "a": 1 }, + { "px": [1920,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,790], "a": 1 }, + { "px": [1984,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,791], "a": 1 }, + { "px": [2048,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,792], "a": 1 }, + { "px": [2112,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,793], "a": 1 }, + { "px": [2176,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,794], "a": 1 }, + { "px": [2240,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,795], "a": 1 }, + { "px": [2304,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,796], "a": 1 }, + { "px": [2368,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,797], "a": 1 }, + { "px": [2432,1216], "src": [640,0], "f": 0, "t": 10, "d": [67,798], "a": 1 }, + { "px": [64,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,801], "a": 1 }, + { "px": [128,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,802], "a": 1 }, + { "px": [192,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,803], "a": 1 }, + { "px": [576,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,809], "a": 1 }, + { "px": [640,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,810], "a": 1 }, + { "px": [704,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,811], "a": 1 }, + { "px": [768,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,812], "a": 1 }, + { "px": [832,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,813], "a": 1 }, + { "px": [896,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,814], "a": 1 }, + { "px": [960,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,815], "a": 1 }, + { "px": [1024,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,816], "a": 1 }, + { "px": [1408,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,822], "a": 1 }, + { "px": [1472,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,823], "a": 1 }, + { "px": [1536,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,824], "a": 1 }, + { "px": [1600,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,825], "a": 1 }, + { "px": [1664,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,826], "a": 1 }, + { "px": [1728,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,827], "a": 1 }, + { "px": [1792,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,828], "a": 1 }, + { "px": [1920,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,830], "a": 1 }, + { "px": [1984,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,831], "a": 1 }, + { "px": [2048,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,832], "a": 1 }, + { "px": [2112,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,833], "a": 1 }, + { "px": [2176,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,834], "a": 1 }, + { "px": [2240,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,835], "a": 1 }, + { "px": [2304,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,836], "a": 1 }, + { "px": [2368,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,837], "a": 1 }, + { "px": [2432,1280], "src": [640,0], "f": 0, "t": 10, "d": [67,838], "a": 1 }, + { "px": [64,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,841], "a": 1 }, + { "px": [128,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,842], "a": 1 }, + { "px": [192,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,843], "a": 1 }, + { "px": [448,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,847], "a": 1 }, + { "px": [576,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,849], "a": 1 }, + { "px": [640,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,850], "a": 1 }, + { "px": [704,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,851], "a": 1 }, + { "px": [768,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,852], "a": 1 }, + { "px": [832,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,853], "a": 1 }, + { "px": [896,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,854], "a": 1 }, + { "px": [960,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,855], "a": 1 }, + { "px": [1024,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,856], "a": 1 }, + { "px": [1408,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,862], "a": 1 }, + { "px": [1472,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,863], "a": 1 }, + { "px": [1536,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,864], "a": 1 }, + { "px": [1600,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,865], "a": 1 }, + { "px": [1664,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,866], "a": 1 }, + { "px": [1728,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,867], "a": 1 }, + { "px": [1792,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,868], "a": 1 }, + { "px": [1920,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,870], "a": 1 }, + { "px": [1984,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,871], "a": 1 }, + { "px": [2048,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,872], "a": 1 }, + { "px": [2112,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,873], "a": 1 }, + { "px": [2176,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,874], "a": 1 }, + { "px": [2240,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,875], "a": 1 }, + { "px": [2304,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,876], "a": 1 }, + { "px": [2368,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,877], "a": 1 }, + { "px": [2432,1344], "src": [640,0], "f": 0, "t": 10, "d": [67,878], "a": 1 }, + { "px": [448,1408], "src": [640,0], "f": 0, "t": 10, "d": [67,887], "a": 1 }, + { "px": [1088,1280], "src": [640,0], "f": 0, "t": 10, "d": [70,817], "a": 1 }, + { "px": [256,1344], "src": [640,0], "f": 0, "t": 10, "d": [70,844], "a": 1 }, + { "px": [1088,1344], "src": [640,0], "f": 0, "t": 10, "d": [70,857], "a": 1 }, + { "px": [1344,1280], "src": [640,0], "f": 0, "t": 10, "d": [71,821], "a": 1 }, + { "px": [1344,1344], "src": [640,0], "f": 0, "t": 10, "d": [71,861], "a": 1 }, + { "px": [1856,1344], "src": [640,0], "f": 0, "t": 10, "d": [71,869], "a": 1 }, + { "px": [384,1216], "src": [640,0], "f": 0, "t": 10, "d": [73,766], "a": 1 }, + { "px": [448,1216], "src": [640,0], "f": 0, "t": 10, "d": [73,767], "a": 1 }, + { "px": [512,1216], "src": [640,0], "f": 0, "t": 10, "d": [73,768], "a": 1 }, + { "px": [1088,1216], "src": [640,0], "f": 0, "t": 10, "d": [73,777], "a": 1 }, + { "px": [1344,1216], "src": [640,0], "f": 0, "t": 10, "d": [73,781], "a": 1 }, + { "px": [256,1280], "src": [640,0], "f": 0, "t": 10, "d": [73,804], "a": 1 }, + { "px": [320,1280], "src": [640,0], "f": 0, "t": 10, "d": [73,805], "a": 1 }, + { "px": [1856,1280], "src": [640,0], "f": 0, "t": 10, "d": [73,829], "a": 1 }, + { "px": [64,1152], "src": [640,0], "f": 0, "t": 10, "d": [74,721], "a": 1 }, + { "px": [192,128], "src": [192,0], "f": 0, "t": 3, "d": [75,83], "a": 1 }, + { "px": [960,128], "src": [0,0], "f": 0, "t": 0, "d": [75,95], "a": 1 }, + { "px": [448,384], "src": [64,0], "f": 0, "t": 1, "d": [75,247], "a": 1 }, + { "px": [512,384], "src": [0,0], "f": 0, "t": 0, "d": [75,248], "a": 1 }, + { "px": [1728,512], "src": [64,0], "f": 0, "t": 1, "d": [75,347], "a": 1 }, + { "px": [1408,768], "src": [192,0], "f": 0, "t": 3, "d": [75,502], "a": 1 } + ], + "seed": 9289703, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [] + } + ], + "__neighbours": [] + } + ], + "worlds": [], + "dummyWorldIid": "24522800-d380-11f0-9ae1-a31d61a14ed0" +} \ No newline at end of file diff --git a/assets/pixel_platformer/backgrounds.png b/assets/pixel_platformer/backgrounds.png new file mode 100644 index 0000000..821ddfc Binary files /dev/null and b/assets/pixel_platformer/backgrounds.png differ diff --git a/assets/pixel_platformer/characters.png b/assets/pixel_platformer/characters.png new file mode 100644 index 0000000..ae1f329 Binary files /dev/null and b/assets/pixel_platformer/characters.png differ diff --git a/assets/pixel_platformer/characters/blue_1.png b/assets/pixel_platformer/characters/blue_1.png new file mode 100644 index 0000000..1acdd37 Binary files /dev/null and b/assets/pixel_platformer/characters/blue_1.png differ diff --git a/assets/pixel_platformer/characters/blue_2.png b/assets/pixel_platformer/characters/blue_2.png new file mode 100644 index 0000000..691f497 Binary files /dev/null and b/assets/pixel_platformer/characters/blue_2.png differ diff --git a/assets/pixel_platformer/characters/green_1.png b/assets/pixel_platformer/characters/green_1.png new file mode 100644 index 0000000..c6d7d7f Binary files /dev/null and b/assets/pixel_platformer/characters/green_1.png differ diff --git a/assets/pixel_platformer/characters/green_2.png b/assets/pixel_platformer/characters/green_2.png new file mode 100644 index 0000000..a6c81e0 Binary files /dev/null and b/assets/pixel_platformer/characters/green_2.png differ diff --git a/assets/pixel_platformer/characters/pink_1.png b/assets/pixel_platformer/characters/pink_1.png new file mode 100644 index 0000000..99d7f63 Binary files /dev/null and b/assets/pixel_platformer/characters/pink_1.png differ diff --git a/assets/pixel_platformer/characters/pink_2.png b/assets/pixel_platformer/characters/pink_2.png new file mode 100644 index 0000000..5c95202 Binary files /dev/null and b/assets/pixel_platformer/characters/pink_2.png differ diff --git a/assets/pixel_platformer/characters/yellow_1.png b/assets/pixel_platformer/characters/yellow_1.png new file mode 100644 index 0000000..6b177a0 Binary files /dev/null and b/assets/pixel_platformer/characters/yellow_1.png differ diff --git a/assets/pixel_platformer/characters/yellow_2.png b/assets/pixel_platformer/characters/yellow_2.png new file mode 100644 index 0000000..607b9a8 Binary files /dev/null and b/assets/pixel_platformer/characters/yellow_2.png differ diff --git a/assets/pixel_platformer/enemies/bat_1.png b/assets/pixel_platformer/enemies/bat_1.png new file mode 100644 index 0000000..8c8e276 Binary files /dev/null and b/assets/pixel_platformer/enemies/bat_1.png differ diff --git a/assets/pixel_platformer/enemies/bat_2.png b/assets/pixel_platformer/enemies/bat_2.png new file mode 100644 index 0000000..d4ac52d Binary files /dev/null and b/assets/pixel_platformer/enemies/bat_2.png differ diff --git a/assets/pixel_platformer/enemies/bat_3.png b/assets/pixel_platformer/enemies/bat_3.png new file mode 100644 index 0000000..7372c35 Binary files /dev/null and b/assets/pixel_platformer/enemies/bat_3.png differ diff --git a/assets/pixel_platformer/enemies/block_head_1.png b/assets/pixel_platformer/enemies/block_head_1.png new file mode 100644 index 0000000..33182eb Binary files /dev/null and b/assets/pixel_platformer/enemies/block_head_1.png differ diff --git a/assets/pixel_platformer/enemies/block_head_2.png b/assets/pixel_platformer/enemies/block_head_2.png new file mode 100644 index 0000000..a57c0ce Binary files /dev/null and b/assets/pixel_platformer/enemies/block_head_2.png differ diff --git a/assets/pixel_platformer/enemies/drill_head_1.png b/assets/pixel_platformer/enemies/drill_head_1.png new file mode 100644 index 0000000..81a5921 Binary files /dev/null and b/assets/pixel_platformer/enemies/drill_head_1.png differ diff --git a/assets/pixel_platformer/enemies/drill_head_2.png b/assets/pixel_platformer/enemies/drill_head_2.png new file mode 100644 index 0000000..37357d6 Binary files /dev/null and b/assets/pixel_platformer/enemies/drill_head_2.png differ diff --git a/assets/pixel_platformer/items/coin_1.png b/assets/pixel_platformer/items/coin_1.png new file mode 100644 index 0000000..25b9044 Binary files /dev/null and b/assets/pixel_platformer/items/coin_1.png differ diff --git a/assets/pixel_platformer/items/coin_2.png b/assets/pixel_platformer/items/coin_2.png new file mode 100644 index 0000000..d563c89 Binary files /dev/null and b/assets/pixel_platformer/items/coin_2.png differ diff --git a/assets/pixel_platformer/tilemap.png b/assets/pixel_platformer/tilemap.png new file mode 100644 index 0000000..901a785 Binary files /dev/null and b/assets/pixel_platformer/tilemap.png differ diff --git a/assets/sounds/coin.wav b/assets/sounds/coin.wav new file mode 100644 index 0000000..bd4835d Binary files /dev/null and b/assets/sounds/coin.wav differ diff --git a/assets/sounds/die.wav b/assets/sounds/die.wav new file mode 100644 index 0000000..0ead6b5 Binary files /dev/null and b/assets/sounds/die.wav differ diff --git a/assets/sounds/hit.wav b/assets/sounds/hit.wav new file mode 100644 index 0000000..85531dd Binary files /dev/null and b/assets/sounds/hit.wav differ diff --git a/assets/sounds/jump.wav b/assets/sounds/jump.wav new file mode 100644 index 0000000..25c80bf Binary files /dev/null and b/assets/sounds/jump.wav differ diff --git a/assets/sounds/shoot.wav b/assets/sounds/shoot.wav new file mode 100644 index 0000000..d3a4b9c Binary files /dev/null and b/assets/sounds/shoot.wav differ diff --git a/assets/sunnyland/back.png b/assets/sunnyland/back.png new file mode 100644 index 0000000..5b9bfd8 Binary files /dev/null and b/assets/sunnyland/back.png differ diff --git a/assets/sunnyland/bunny/idle-1.png b/assets/sunnyland/bunny/idle-1.png new file mode 100644 index 0000000..82b4865 Binary files /dev/null and b/assets/sunnyland/bunny/idle-1.png differ diff --git a/assets/sunnyland/bunny/idle-2.png b/assets/sunnyland/bunny/idle-2.png new file mode 100644 index 0000000..ac2b6e8 Binary files /dev/null and b/assets/sunnyland/bunny/idle-2.png differ diff --git a/assets/sunnyland/bunny/idle-3.png b/assets/sunnyland/bunny/idle-3.png new file mode 100644 index 0000000..cea7dc0 Binary files /dev/null and b/assets/sunnyland/bunny/idle-3.png differ diff --git a/assets/sunnyland/bunny/idle-4.png b/assets/sunnyland/bunny/idle-4.png new file mode 100644 index 0000000..c37607c Binary files /dev/null and b/assets/sunnyland/bunny/idle-4.png differ diff --git a/assets/sunnyland/bunny/jump-1.png b/assets/sunnyland/bunny/jump-1.png new file mode 100644 index 0000000..ae99485 Binary files /dev/null and b/assets/sunnyland/bunny/jump-1.png differ diff --git a/assets/sunnyland/bunny/jump-2.png b/assets/sunnyland/bunny/jump-2.png new file mode 100644 index 0000000..32f9df4 Binary files /dev/null and b/assets/sunnyland/bunny/jump-2.png differ diff --git a/assets/sunnyland/bunny/run-1.png b/assets/sunnyland/bunny/run-1.png new file mode 100644 index 0000000..4403711 Binary files /dev/null and b/assets/sunnyland/bunny/run-1.png differ diff --git a/assets/sunnyland/bunny/run-2.png b/assets/sunnyland/bunny/run-2.png new file mode 100644 index 0000000..7a1dedd Binary files /dev/null and b/assets/sunnyland/bunny/run-2.png differ diff --git a/assets/sunnyland/bunny/run-3.png b/assets/sunnyland/bunny/run-3.png new file mode 100644 index 0000000..6ae103b Binary files /dev/null and b/assets/sunnyland/bunny/run-3.png differ diff --git a/assets/sunnyland/bunny/run-4.png b/assets/sunnyland/bunny/run-4.png new file mode 100644 index 0000000..1e93aa0 Binary files /dev/null and b/assets/sunnyland/bunny/run-4.png differ diff --git a/assets/sunnyland/bunny/run-5.png b/assets/sunnyland/bunny/run-5.png new file mode 100644 index 0000000..9029c9e Binary files /dev/null and b/assets/sunnyland/bunny/run-5.png differ diff --git a/assets/sunnyland/bunny/run-6.png b/assets/sunnyland/bunny/run-6.png new file mode 100644 index 0000000..e174da1 Binary files /dev/null and b/assets/sunnyland/bunny/run-6.png differ diff --git a/assets/sunnyland/fireball/fireball-1.png b/assets/sunnyland/fireball/fireball-1.png new file mode 100644 index 0000000..c93702d Binary files /dev/null and b/assets/sunnyland/fireball/fireball-1.png differ diff --git a/assets/sunnyland/fireball/fireball-2.png b/assets/sunnyland/fireball/fireball-2.png new file mode 100644 index 0000000..be316b9 Binary files /dev/null and b/assets/sunnyland/fireball/fireball-2.png differ diff --git a/assets/sunnyland/fireball/fireball-3.png b/assets/sunnyland/fireball/fireball-3.png new file mode 100644 index 0000000..ab8f39d Binary files /dev/null and b/assets/sunnyland/fireball/fireball-3.png differ diff --git a/assets/sunnyland/fireball/fireball-4.png b/assets/sunnyland/fireball/fireball-4.png new file mode 100644 index 0000000..7907a66 Binary files /dev/null and b/assets/sunnyland/fireball/fireball-4.png differ diff --git a/assets/sunnyland/fireball/fireball-5.png b/assets/sunnyland/fireball/fireball-5.png new file mode 100644 index 0000000..535eb65 Binary files /dev/null and b/assets/sunnyland/fireball/fireball-5.png differ diff --git a/assets/sunnyland/fireball/fireball-hit-1.png b/assets/sunnyland/fireball/fireball-hit-1.png new file mode 100644 index 0000000..b0277e5 Binary files /dev/null and b/assets/sunnyland/fireball/fireball-hit-1.png differ diff --git a/assets/sunnyland/fireball/fireball-hit-2.png b/assets/sunnyland/fireball/fireball-hit-2.png new file mode 100644 index 0000000..4f521e8 Binary files /dev/null and b/assets/sunnyland/fireball/fireball-hit-2.png differ diff --git a/assets/sunnyland/fireball/fireball-hit-3.png b/assets/sunnyland/fireball/fireball-hit-3.png new file mode 100644 index 0000000..ee3843d Binary files /dev/null and b/assets/sunnyland/fireball/fireball-hit-3.png differ diff --git a/assets/sunnyland/fireball/fireball-hit-4.png b/assets/sunnyland/fireball/fireball-hit-4.png new file mode 100644 index 0000000..16e58a8 Binary files /dev/null and b/assets/sunnyland/fireball/fireball-hit-4.png differ diff --git a/assets/sunnyland/fireball/fireball-hit-5.png b/assets/sunnyland/fireball/fireball-hit-5.png new file mode 100644 index 0000000..20fc216 Binary files /dev/null and b/assets/sunnyland/fireball/fireball-hit-5.png differ diff --git a/assets/sunnyland/fireball/fireball-hit-6.png b/assets/sunnyland/fireball/fireball-hit-6.png new file mode 100644 index 0000000..055b4f5 Binary files /dev/null and b/assets/sunnyland/fireball/fireball-hit-6.png differ diff --git a/assets/sunnyland/fox/hurt-1.png b/assets/sunnyland/fox/hurt-1.png new file mode 100644 index 0000000..2d944ab Binary files /dev/null and b/assets/sunnyland/fox/hurt-1.png differ diff --git a/assets/sunnyland/fox/hurt-2.png b/assets/sunnyland/fox/hurt-2.png new file mode 100644 index 0000000..18e8bca Binary files /dev/null and b/assets/sunnyland/fox/hurt-2.png differ diff --git a/assets/sunnyland/fox/idle-1.png b/assets/sunnyland/fox/idle-1.png new file mode 100644 index 0000000..7a3210b Binary files /dev/null and b/assets/sunnyland/fox/idle-1.png differ diff --git a/assets/sunnyland/fox/idle-2.png b/assets/sunnyland/fox/idle-2.png new file mode 100644 index 0000000..c6e0212 Binary files /dev/null and b/assets/sunnyland/fox/idle-2.png differ diff --git a/assets/sunnyland/fox/idle-3.png b/assets/sunnyland/fox/idle-3.png new file mode 100644 index 0000000..f1c0f44 Binary files /dev/null and b/assets/sunnyland/fox/idle-3.png differ diff --git a/assets/sunnyland/fox/idle-4.png b/assets/sunnyland/fox/idle-4.png new file mode 100644 index 0000000..8bde279 Binary files /dev/null and b/assets/sunnyland/fox/idle-4.png differ diff --git a/assets/sunnyland/fox/jump-1.png b/assets/sunnyland/fox/jump-1.png new file mode 100644 index 0000000..036b46e Binary files /dev/null and b/assets/sunnyland/fox/jump-1.png differ diff --git a/assets/sunnyland/fox/jump-2.png b/assets/sunnyland/fox/jump-2.png new file mode 100644 index 0000000..de416ae Binary files /dev/null and b/assets/sunnyland/fox/jump-2.png differ diff --git a/assets/sunnyland/fox/roll-1.png b/assets/sunnyland/fox/roll-1.png new file mode 100644 index 0000000..76a41a8 Binary files /dev/null and b/assets/sunnyland/fox/roll-1.png differ diff --git a/assets/sunnyland/fox/roll-2.png b/assets/sunnyland/fox/roll-2.png new file mode 100644 index 0000000..08d7d75 Binary files /dev/null and b/assets/sunnyland/fox/roll-2.png differ diff --git a/assets/sunnyland/fox/roll-3.png b/assets/sunnyland/fox/roll-3.png new file mode 100644 index 0000000..add166b Binary files /dev/null and b/assets/sunnyland/fox/roll-3.png differ diff --git a/assets/sunnyland/fox/roll-4.png b/assets/sunnyland/fox/roll-4.png new file mode 100644 index 0000000..58ff431 Binary files /dev/null and b/assets/sunnyland/fox/roll-4.png differ diff --git a/assets/sunnyland/fox/run-1.png b/assets/sunnyland/fox/run-1.png new file mode 100644 index 0000000..ff5d2dd Binary files /dev/null and b/assets/sunnyland/fox/run-1.png differ diff --git a/assets/sunnyland/fox/run-2.png b/assets/sunnyland/fox/run-2.png new file mode 100644 index 0000000..b428145 Binary files /dev/null and b/assets/sunnyland/fox/run-2.png differ diff --git a/assets/sunnyland/fox/run-3.png b/assets/sunnyland/fox/run-3.png new file mode 100644 index 0000000..987b8f1 Binary files /dev/null and b/assets/sunnyland/fox/run-3.png differ diff --git a/assets/sunnyland/fox/run-4.png b/assets/sunnyland/fox/run-4.png new file mode 100644 index 0000000..a4e6f14 Binary files /dev/null and b/assets/sunnyland/fox/run-4.png differ diff --git a/assets/sunnyland/fox/run-5.png b/assets/sunnyland/fox/run-5.png new file mode 100644 index 0000000..2b915ee Binary files /dev/null and b/assets/sunnyland/fox/run-5.png differ diff --git a/assets/sunnyland/fox/run-6.png b/assets/sunnyland/fox/run-6.png new file mode 100644 index 0000000..762e1cf Binary files /dev/null and b/assets/sunnyland/fox/run-6.png differ diff --git a/assets/sunnyland/imp/hurt-1.png b/assets/sunnyland/imp/hurt-1.png new file mode 100644 index 0000000..a251789 Binary files /dev/null and b/assets/sunnyland/imp/hurt-1.png differ diff --git a/assets/sunnyland/imp/hurt-2.png b/assets/sunnyland/imp/hurt-2.png new file mode 100644 index 0000000..84ed54d Binary files /dev/null and b/assets/sunnyland/imp/hurt-2.png differ diff --git a/assets/sunnyland/imp/idle-1.png b/assets/sunnyland/imp/idle-1.png new file mode 100644 index 0000000..5f12fbb Binary files /dev/null and b/assets/sunnyland/imp/idle-1.png differ diff --git a/assets/sunnyland/imp/idle-2.png b/assets/sunnyland/imp/idle-2.png new file mode 100644 index 0000000..92b03da Binary files /dev/null and b/assets/sunnyland/imp/idle-2.png differ diff --git a/assets/sunnyland/imp/idle-3.png b/assets/sunnyland/imp/idle-3.png new file mode 100644 index 0000000..b220c04 Binary files /dev/null and b/assets/sunnyland/imp/idle-3.png differ diff --git a/assets/sunnyland/imp/idle-4.png b/assets/sunnyland/imp/idle-4.png new file mode 100644 index 0000000..c8992ee Binary files /dev/null and b/assets/sunnyland/imp/idle-4.png differ diff --git a/assets/sunnyland/imp/jump-1.png b/assets/sunnyland/imp/jump-1.png new file mode 100644 index 0000000..45c6a56 Binary files /dev/null and b/assets/sunnyland/imp/jump-1.png differ diff --git a/assets/sunnyland/imp/jump-2.png b/assets/sunnyland/imp/jump-2.png new file mode 100644 index 0000000..bd40e86 Binary files /dev/null and b/assets/sunnyland/imp/jump-2.png differ diff --git a/assets/sunnyland/imp/jump-3.png b/assets/sunnyland/imp/jump-3.png new file mode 100644 index 0000000..9a59b1b Binary files /dev/null and b/assets/sunnyland/imp/jump-3.png differ diff --git a/assets/sunnyland/imp/jump-4.png b/assets/sunnyland/imp/jump-4.png new file mode 100644 index 0000000..99371a8 Binary files /dev/null and b/assets/sunnyland/imp/jump-4.png differ diff --git a/assets/sunnyland/imp/jump-5.png b/assets/sunnyland/imp/jump-5.png new file mode 100644 index 0000000..fadeb70 Binary files /dev/null and b/assets/sunnyland/imp/jump-5.png differ diff --git a/assets/sunnyland/imp/run-1.png b/assets/sunnyland/imp/run-1.png new file mode 100644 index 0000000..d4aef63 Binary files /dev/null and b/assets/sunnyland/imp/run-1.png differ diff --git a/assets/sunnyland/imp/run-2.png b/assets/sunnyland/imp/run-2.png new file mode 100644 index 0000000..6e8f2a7 Binary files /dev/null and b/assets/sunnyland/imp/run-2.png differ diff --git a/assets/sunnyland/imp/run-3.png b/assets/sunnyland/imp/run-3.png new file mode 100644 index 0000000..ff53781 Binary files /dev/null and b/assets/sunnyland/imp/run-3.png differ diff --git a/assets/sunnyland/imp/run-4.png b/assets/sunnyland/imp/run-4.png new file mode 100644 index 0000000..60491b8 Binary files /dev/null and b/assets/sunnyland/imp/run-4.png differ diff --git a/assets/sunnyland/imp/run-5.png b/assets/sunnyland/imp/run-5.png new file mode 100644 index 0000000..cc69e28 Binary files /dev/null and b/assets/sunnyland/imp/run-5.png differ diff --git a/assets/sunnyland/imp/run-6.png b/assets/sunnyland/imp/run-6.png new file mode 100644 index 0000000..204ece9 Binary files /dev/null and b/assets/sunnyland/imp/run-6.png differ diff --git a/assets/sunnyland/imp/run-7.png b/assets/sunnyland/imp/run-7.png new file mode 100644 index 0000000..18373d6 Binary files /dev/null and b/assets/sunnyland/imp/run-7.png differ diff --git a/assets/sunnyland/imp/run-8.png b/assets/sunnyland/imp/run-8.png new file mode 100644 index 0000000..43fd6f3 Binary files /dev/null and b/assets/sunnyland/imp/run-8.png differ diff --git a/assets/sunnyland/imp/shot-1.png b/assets/sunnyland/imp/shot-1.png new file mode 100644 index 0000000..f1a76ee Binary files /dev/null and b/assets/sunnyland/imp/shot-1.png differ diff --git a/assets/sunnyland/imp/shot-2.png b/assets/sunnyland/imp/shot-2.png new file mode 100644 index 0000000..6396b0c Binary files /dev/null and b/assets/sunnyland/imp/shot-2.png differ diff --git a/assets/sunnyland/imp/shot-3.png b/assets/sunnyland/imp/shot-3.png new file mode 100644 index 0000000..07ccd00 Binary files /dev/null and b/assets/sunnyland/imp/shot-3.png differ diff --git a/assets/sunnyland/imp/shot-4.png b/assets/sunnyland/imp/shot-4.png new file mode 100644 index 0000000..97dc8f6 Binary files /dev/null and b/assets/sunnyland/imp/shot-4.png differ diff --git a/assets/sunnyland/middle.png b/assets/sunnyland/middle.png new file mode 100644 index 0000000..3e74b1d Binary files /dev/null and b/assets/sunnyland/middle.png differ diff --git a/assets/sunnyland/squirrel/hurt-1.png b/assets/sunnyland/squirrel/hurt-1.png new file mode 100644 index 0000000..df3e183 Binary files /dev/null and b/assets/sunnyland/squirrel/hurt-1.png differ diff --git a/assets/sunnyland/squirrel/hurt-2.png b/assets/sunnyland/squirrel/hurt-2.png new file mode 100644 index 0000000..f822d3f Binary files /dev/null and b/assets/sunnyland/squirrel/hurt-2.png differ diff --git a/assets/sunnyland/squirrel/idle-1.png b/assets/sunnyland/squirrel/idle-1.png new file mode 100644 index 0000000..8e8a8f1 Binary files /dev/null and b/assets/sunnyland/squirrel/idle-1.png differ diff --git a/assets/sunnyland/squirrel/idle-2.png b/assets/sunnyland/squirrel/idle-2.png new file mode 100644 index 0000000..3642a29 Binary files /dev/null and b/assets/sunnyland/squirrel/idle-2.png differ diff --git a/assets/sunnyland/squirrel/idle-3.png b/assets/sunnyland/squirrel/idle-3.png new file mode 100644 index 0000000..4c2bad7 Binary files /dev/null and b/assets/sunnyland/squirrel/idle-3.png differ diff --git a/assets/sunnyland/squirrel/idle-4.png b/assets/sunnyland/squirrel/idle-4.png new file mode 100644 index 0000000..2520d21 Binary files /dev/null and b/assets/sunnyland/squirrel/idle-4.png differ diff --git a/assets/sunnyland/squirrel/idle-5.png b/assets/sunnyland/squirrel/idle-5.png new file mode 100644 index 0000000..65b76ed Binary files /dev/null and b/assets/sunnyland/squirrel/idle-5.png differ diff --git a/assets/sunnyland/squirrel/idle-6.png b/assets/sunnyland/squirrel/idle-6.png new file mode 100644 index 0000000..bbfe049 Binary files /dev/null and b/assets/sunnyland/squirrel/idle-6.png differ diff --git a/assets/sunnyland/squirrel/idle-7.png b/assets/sunnyland/squirrel/idle-7.png new file mode 100644 index 0000000..87064de Binary files /dev/null and b/assets/sunnyland/squirrel/idle-7.png differ diff --git a/assets/sunnyland/squirrel/idle-8.png b/assets/sunnyland/squirrel/idle-8.png new file mode 100644 index 0000000..3b47b77 Binary files /dev/null and b/assets/sunnyland/squirrel/idle-8.png differ diff --git a/assets/sunnyland/squirrel/jump-1.png b/assets/sunnyland/squirrel/jump-1.png new file mode 100644 index 0000000..857c598 Binary files /dev/null and b/assets/sunnyland/squirrel/jump-1.png differ diff --git a/assets/sunnyland/squirrel/jump-2.png b/assets/sunnyland/squirrel/jump-2.png new file mode 100644 index 0000000..d757774 Binary files /dev/null and b/assets/sunnyland/squirrel/jump-2.png differ diff --git a/assets/sunnyland/squirrel/jump-3.png b/assets/sunnyland/squirrel/jump-3.png new file mode 100644 index 0000000..20b939c Binary files /dev/null and b/assets/sunnyland/squirrel/jump-3.png differ diff --git a/assets/sunnyland/squirrel/jump-4.png b/assets/sunnyland/squirrel/jump-4.png new file mode 100644 index 0000000..3746d0a Binary files /dev/null and b/assets/sunnyland/squirrel/jump-4.png differ diff --git a/assets/sunnyland/squirrel/run-1.png b/assets/sunnyland/squirrel/run-1.png new file mode 100644 index 0000000..4222411 Binary files /dev/null and b/assets/sunnyland/squirrel/run-1.png differ diff --git a/assets/sunnyland/squirrel/run-2.png b/assets/sunnyland/squirrel/run-2.png new file mode 100644 index 0000000..a2604fc Binary files /dev/null and b/assets/sunnyland/squirrel/run-2.png differ diff --git a/assets/sunnyland/squirrel/run-3.png b/assets/sunnyland/squirrel/run-3.png new file mode 100644 index 0000000..4595640 Binary files /dev/null and b/assets/sunnyland/squirrel/run-3.png differ diff --git a/assets/sunnyland/squirrel/run-4.png b/assets/sunnyland/squirrel/run-4.png new file mode 100644 index 0000000..2455a81 Binary files /dev/null and b/assets/sunnyland/squirrel/run-4.png differ diff --git a/assets/sunnyland/squirrel/run-5.png b/assets/sunnyland/squirrel/run-5.png new file mode 100644 index 0000000..1a965e2 Binary files /dev/null and b/assets/sunnyland/squirrel/run-5.png differ diff --git a/assets/sunnyland/squirrel/run-6.png b/assets/sunnyland/squirrel/run-6.png new file mode 100644 index 0000000..1702cad Binary files /dev/null and b/assets/sunnyland/squirrel/run-6.png differ diff --git a/assets/sunnyland/tileset.png b/assets/sunnyland/tileset.png new file mode 100644 index 0000000..f44abc3 Binary files /dev/null and b/assets/sunnyland/tileset.png differ diff --git a/assets/zombie_shooter/bullet.png b/assets/zombie_shooter/bullet.png new file mode 100644 index 0000000..fd38525 Binary files /dev/null and b/assets/zombie_shooter/bullet.png differ diff --git a/assets/zombie_shooter/light.png b/assets/zombie_shooter/light.png new file mode 100644 index 0000000..c40411b Binary files /dev/null and b/assets/zombie_shooter/light.png differ diff --git a/assets/zombie_shooter/player_1.png b/assets/zombie_shooter/player_1.png new file mode 100644 index 0000000..3cebeb7 Binary files /dev/null and b/assets/zombie_shooter/player_1.png differ diff --git a/assets/zombie_shooter/player_2.png b/assets/zombie_shooter/player_2.png new file mode 100644 index 0000000..9c966d3 Binary files /dev/null and b/assets/zombie_shooter/player_2.png differ diff --git a/assets/zombie_shooter/player_3.png b/assets/zombie_shooter/player_3.png new file mode 100644 index 0000000..11d3e71 Binary files /dev/null and b/assets/zombie_shooter/player_3.png differ diff --git a/assets/zombie_shooter/player_4.png b/assets/zombie_shooter/player_4.png new file mode 100644 index 0000000..2e00169 Binary files /dev/null and b/assets/zombie_shooter/player_4.png differ diff --git a/assets/zombie_shooter/tilemap.png b/assets/zombie_shooter/tilemap.png new file mode 100644 index 0000000..53a8dda Binary files /dev/null and b/assets/zombie_shooter/tilemap.png differ diff --git a/assets/zombie_shooter/zombie.png b/assets/zombie_shooter/zombie.png new file mode 100644 index 0000000..79eca07 Binary files /dev/null and b/assets/zombie_shooter/zombie.png differ diff --git a/src/engine/framework.h b/src/engine/framework.h new file mode 100644 index 0000000..d04289f --- /dev/null +++ b/src/engine/framework.h @@ -0,0 +1,729 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#include + +// Forward declarations. +class GameObject; +class Scene; +class Game; + +/** + * The base class for all game object components. + * Components are added to game objects to provide functionality. + */ +class Component +{ +public: + GameObject* owner = nullptr; + + Component() = default; + virtual ~Component() = default; + + /** + * Lifecycle function called when the component is initialized. + */ + virtual void init() {} + + /** + * Lifecycle function called every frame to update the component. + * + * @param delta_time The time elapsed since the last frame. + */ + virtual void update(float delta_time) {} + + /** + * Lifecycle function called every frame to draw the component. + * Called within Raylib BeginDrawing()/EndDrawing() block. + */ + virtual void draw() {} +}; + +/** + * The base class for all game objects. + * Game objects are the main entities in the game world. + */ +class GameObject +{ +public: + Scene* scene = nullptr; + std::unordered_map> components; + std::unordered_set tags; + bool is_active = true; + + GameObject() = default; + virtual ~GameObject() = default; + + /** + * Lifecycle function called when the game object is initialized. + */ + virtual void init() {} + + /** + * Lifecycle function called every frame to update the game object. + * @param delta_time The time elapsed since the last frame. + */ + virtual void update(float delta_time) {} + + /** + * Lifecycle function called every frame to draw the game object. + * Called within Raylib BeginDrawing()/EndDrawing() block. + */ + virtual void draw() {} + + /** + * Initialize the game object and its components. + */ + virtual void init_object() + { + init(); + for (auto& component : components) + { + component.second->init(); + } + } + + /** + * Update the game object and its components. + * + * @param delta_time The time elapsed since the last frame. + */ + virtual void update_object(float delta_time) + { + if (!is_active) + { + return; + } + update(delta_time); + for (auto& component : components) + { + component.second->update(delta_time); + } + } + + /** + * Draw the game object and its components. + */ + virtual void draw_object() + { + if (!is_active) + { + return; + } + draw(); + for (auto& component : components) + { + component.second->draw(); + } + } + + /** + * Add a component to the game object. + * + * @param component The component to add. + */ + template + void add_component(std::unique_ptr component) + { + static_assert(std::is_base_of::value, "T must derive from Component"); + component->owner = this; + auto [it, inserted] = components.emplace(std::type_index(typeid(T)), std::move(component)); + if (!inserted) + { + TraceLog(LOG_ERROR, "Duplicate component added: %s", typeid(T).name()); + } + } + + /** + * Add a component to the game object. + * + * @param args The arguments to forward to the component constructor. + * @return A pointer to the added component. + */ + template + T* add_component(TArgs&&... args) + { + static_assert(std::is_base_of::value, "T must derive from Component"); + auto new_component = std::make_unique(std::forward(args)...); + T* component_ptr = new_component.get(); + add_component(std::move(new_component)); + return component_ptr; + } + + /** + * Get a component of the specified type. + * + * @return A pointer to the component, or nullptr if not found. + */ + template + T* get_component() + { + auto it = components.find(std::type_index(typeid(T))); + if (it != components.end()) + { + auto component = it->second.get(); + return static_cast(component); + } + return nullptr; + } + + /** + * Add a tag to the game object. + * + * @param tag The tag to add. + */ + void add_tag(const std::string& tag) + { + tags.insert(tag); + } + + /** + * Remove a tag from the game object. + * + * @param tag The tag to remove. + */ + void remove_tag(const std::string& tag) + { + tags.erase(tag); + } + + /** + * Check if the game object has the specified tag. + * + * @param tag The tag to check. + * @return True if the game object has the tag, false otherwise. + */ + bool has_tag(const std::string& tag) const + { + return tags.find(tag) != tags.end(); + } +}; + +/** + * The base class for all services. + * Services provide Scene level functionality and are accessible by all game objects in the scene. + */ +class Service +{ +public: + Scene* scene = nullptr; + bool is_init = false; + bool is_visible = true; + + Service() = default; + virtual ~Service() = default; + + /** + * Lifecycle function called when the service is initialized. + */ + virtual void init() {} + + /** + * Lifecycle function called every frame to update the service. + * + * @param delta_time The time elapsed since the last frame. + */ + virtual void update(float delta_time) {} + + /** + * Lifecycle function called every frame to draw the service. + */ + virtual void draw() {} + + /** + * Initialize the service. + */ + virtual void init_service() + { + if (is_init) + { + return; + } + init(); + is_init = true; + } + + /** + * Lifecycle function called every frame to draw the service. + * Called within Raylib BeginDrawing()/EndDrawing() block. + */ + virtual void draw_service() + { + if (is_visible) + { + draw(); + } + } +}; + +/** + * The base class for all managers. + * Managers provide global functionality and are accessible by all scenes and game objects. + */ +class Manager +{ +public: + bool is_init = false; + + Manager() = default; + virtual ~Manager() = default; + + /** + * Lifecycle function called when the manager is initialized. + */ + virtual void init() {} + + /** + * Initialize the manager. + */ + virtual void init_manager() final + { + if (is_init) + { + return; + } + init(); + is_init = true; + } +}; + +/** + * The base class for all scenes. + * Scenes contain game objects and services, and manage the lifecycle for each. + */ +class Scene +{ +public: + std::vector> game_objects; + std::vector>> services; + Game* game = nullptr; + bool is_init = false; + + Scene() = default; + virtual ~Scene() = default; + + /** + * Lifecycle function called to initialize services. + * This happens before the scene's init() function so that services are ready for game objects. + */ + virtual void init_services() {} + + /** + * Lifecycle function called when the scene is initialized. + */ + virtual void init() {} + + /** + * Lifecycle function called every frame to update the scene. + * @param delta_time The time elapsed since the last frame. + */ + virtual void update(float delta_time) {} + + /** + * Lifecycle function called every frame to draw the scene. + * Called within Raylib BeginDrawing()/EndDrawing() block. + */ + virtual void draw() {} + + /** + * Initialize the scene, its services, and its game objects. + * Can be overriden for custom initialization sequences. + */ + virtual void init_scene() + { + if (is_init) + { + return; + } + init_services(); + + for (auto& service : services) + { + std::get<1>(service)->init_service(); + } + + init(); + + for (auto& game_object : game_objects) + { + game_object->init_object(); + } + is_init = true; + } + + /** + * Update the scene, its services, and its game objects. + * Can be overriden for custom update sequences. + * + * @param delta_time The time elapsed since the last frame. + */ + virtual void update_scene(float delta_time) + { + update(delta_time); + + for (auto& service : services) + { + std::get<1>(service)->update(delta_time); + } + for (auto& game_object : game_objects) + { + game_object->update_object(delta_time); + } + } + + /** + * Draw the scene, its services, and its game objects. + * Can be overriden for custom draw sequences, especially when using cameras. + */ + virtual void draw_scene() + { + draw(); + + for (auto& service : services) + { + std::get<1>(service)->draw(); + } + for (auto& game_object : game_objects) + { + game_object->draw_object(); + } + } + + /** + * Lifecycle function called when the scene is transitioned to. + */ + virtual void on_enter() {} + + /** + * Lifecycle function called when the scene is transitioned away from. + */ + virtual void on_exit() {} + + /** + * Add a game object to the scene. + * + * @param game_object The game object to add. + */ + void add_game_object(std::shared_ptr game_object) + { + game_object->scene = this; + game_objects.push_back(game_object); + } + + /** + * Create a game object and add it to the scene. + * + * @param args The arguments to forward to the game object constructor. + * @return A pointer to the added game object. + */ + template + std::shared_ptr add_game_object(TArgs&&... args) + { + static_assert(std::is_base_of::value, "T must derive from GameObject"); + auto new_object = std::make_shared(std::forward(args)...); + add_game_object(new_object); + return new_object; + } + + /** + * Add a service to the scene. + * + * @param service The service to add. + */ + template + void add_service(std::unique_ptr service) + { + static_assert(std::is_base_of::value, "T must derive from Service"); + service->scene = this; + // Check if service of this type already exists. + for (auto& svc : services) + { + if (std::get<0>(svc) == std::type_index(typeid(T))) + { + TraceLog(LOG_ERROR, "Duplicate service added: %s", typeid(T).name()); + return; + } + } + services.emplace_back(std::type_index(typeid(T)), std::move(service)); + } + + /** + * Create a service and add it to the scene. + * + * @param args The arguments to forward to the service constructor. + * @return A pointer to the added service. + */ + template + T* add_service(TArgs&&... args) + { + static_assert(std::is_base_of::value, "T must derive from Service"); + auto new_service = std::make_unique(std::forward(args)...); + T* service_ptr = new_service.get(); + add_service(std::move(new_service)); + return service_ptr; + } + + /** + * Get a service of the specified type. + * + * @return A pointer to the service. + */ + template + T* get_service() + { + for (auto& service : services) + { + if (std::get<0>(service) == std::type_index(typeid(T))) + { + auto svc = std::get<1>(service).get(); + if (!svc->is_init) + { + TraceLog(LOG_ERROR, "Service not initialized: %s", typeid(T).name()); + } + return static_cast(svc); + } + } + TraceLog(LOG_FATAL, "Service of requested type not found in scene: %s", typeid(T).name()); + return nullptr; + } + + /** + * Get all game objects with the specified tag. + * + * @param tag The tag to search for. + * @return A vector of pointers to the game objects with the specified tag. + */ + std::vector get_game_objects_with_tag(const std::string& tag) + { + std::vector tagged_objects; + for (auto& game_object : game_objects) + { + if (game_object->has_tag(tag)) + { + tagged_objects.push_back(game_object.get()); + } + } + return tagged_objects; + } +}; + +/** + * The main game class. + * Manages scenes and global managers. + */ +class Game +{ +public: + std::unordered_map> managers; + std::unordered_map> scenes; + std::vector scene_order; + Scene* current_scene = nullptr; + Scene* next_scene = nullptr; + + Game() = default; + ~Game() = default; + + /** + * Initialize all managers. + */ + void init() + { + for (auto& manager : managers) + { + manager.second->init_manager(); + } + } + + /** + * Update the current scene. + * + * @param delta_time The time elapsed since the last frame. + */ + void update(float delta_time) + { + if (current_scene) + { + // Scene is only initialized if it wasn't already. + current_scene->init_scene(); + current_scene->update_scene(delta_time); + + BeginDrawing(); + ClearBackground(RAYWHITE); + + current_scene->draw_scene(); + + EndDrawing(); + } + + // Switch scenes if needed. + if (next_scene) + { + if (current_scene) + { + current_scene->on_exit(); + } + current_scene = next_scene; + current_scene->on_enter(); + next_scene = nullptr; + } + } + + /** + * Add a manager to the game. + * + * @param manager The manager to add. + */ + template + void add_manager(std::unique_ptr manager) + { + static_assert(std::is_base_of::value, "T must derive from Manager"); + auto [it, inserted] = managers.emplace(std::type_index(typeid(T)), std::move(manager)); + if (!inserted) + { + TraceLog(LOG_ERROR, "Duplicate manager added: %s", typeid(T).name()); + } + } + + /** + * Create a manager and add it to the game. + * + * @param args The arguments to forward to the manager constructor. + * @return A pointer to the added manager. + */ + template + T* add_manager(TArgs&&... args) + { + static_assert(std::is_base_of::value, "T must derive from Manager"); + auto new_manager = std::make_unique(std::forward(args)...); + T* manager_ptr = new_manager.get(); + add_manager(std::move(new_manager)); + return manager_ptr; + } + + /** + * Get a manager of the specified type. + * + * @return A pointer to the manager. + */ + template + T* get_manager() + { + auto it = managers.find(std::type_index(typeid(T))); + if (it != managers.end()) + { + auto manager = it->second.get(); + if (!manager->is_init) + { + TraceLog(LOG_ERROR, "Manager not initialized: %s", typeid(T).name()); + } + return static_cast(manager); + } + TraceLog(LOG_FATAL, "Manager of requested type not found: %s", typeid(T).name()); + return nullptr; + } + + /** + * Add a scene to the game. + * + * @param name The name to give the scene. + * @param scene The scene to add. + */ + void add_scene(std::string name, std::unique_ptr scene) + { + scenes[name] = std::move(scene); + scenes[name]->game = this; + scene_order.push_back(name); + if (!current_scene) + { + current_scene = scenes[name].get(); + } + } + + /** + * Create a scene and add it to the game. + * + * @param name The name to give the scene. + * @param args The arguments to forward to the scene constructor. + * @return A pointer to the added scene. + */ + template + T* add_scene(std::string name, TArgs&&... args) + { + static_assert(std::is_base_of::value, "T must derive from Scene"); + auto new_scene = std::make_unique(std::forward(args)...); + T* scene_ptr = new_scene.get(); + add_scene(name, std::move(new_scene)); + if (!current_scene) + { + current_scene = scene_ptr; + } + return scene_ptr; + } + + /** + * Transition to the specified scene by name. + * The transition occurs at the end of the current update cycle. + * + * @param name The name of the scene to transition to. + * @return A pointer to the next scene. + */ + Scene* go_to_scene(const std::string& name) + { + auto it = scenes.find(name); + if (it != scenes.end()) + { + next_scene = it->second.get(); + } + else + { + TraceLog(LOG_ERROR, "Scene not found: %s", name.c_str()); + } + return next_scene; + } + + /** + * Transition to the next scene in the scene order. + * Loops back to the first scene if at the end. + * + * @return A pointer to the next scene. + */ + Scene* go_to_scene_next() + { + // Find the next scene. + if (current_scene) + { + auto it = scenes.begin(); + while (it != scenes.end()) + { + if (it->second.get() == current_scene) + { + break; + } + ++it; + } + if (it != scenes.end()) + { + std::string name = it->first; + auto order_it = std::find(scene_order.begin(), scene_order.end(), name); + if (order_it != scene_order.end() && std::next(order_it) != scene_order.end()) + { + std::string next_name = *(std::next(order_it)); + next_scene = scenes[next_name].get(); + } + else + { + // Loop back to the first scene. + next_scene = scenes[scene_order[0]].get(); + } + } + } + return next_scene; + } +}; diff --git a/src/engine/math_extensions.h b/src/engine/math_extensions.h new file mode 100644 index 0000000..01c1997 --- /dev/null +++ b/src/engine/math_extensions.h @@ -0,0 +1,95 @@ +#pragma once + +#include +#include + +/// Unary add one vector to another +inline void operator+=(Vector2& a, Vector2 b) +{ + a.x += b.x; + a.y += b.y; +} + +/// Unary subtract one vector from another +inline void operator-=(Vector2& a, Vector2 b) +{ + a.x -= b.x; + a.y -= b.y; +} + +/// Unary multiply a vector by a scalar +inline void operator*=(Vector2& a, float b) +{ + a.x *= b; + a.y *= b; +} + +/// Unary negate a vector +inline Vector2 operator-(Vector2 a) +{ + return {-a.x, -a.y}; +} + +/// Binary vector addition +inline Vector2 operator+(Vector2 a, Vector2 b) +{ + return {a.x + b.x, a.y + b.y}; +} + +/// Binary vector subtraction +inline Vector2 operator-(Vector2 a, Vector2 b) +{ + return {a.x - b.x, a.y - b.y}; +} + +/// Binary scalar and vector multiplication +inline Vector2 operator*(float a, Vector2 b) +{ + return {a * b.x, a * b.y}; +} + +/// Binary scalar and vector multiplication +inline Vector2 operator*(Vector2 a, float b) +{ + return {a.x * b, a.y * b}; +} + +/// Binary scalar and vector division +inline Vector2 operator/(Vector2 a, float b) +{ + return {a.x / b, a.y / b}; +} + +inline Vector2 Vector2Normalize(Vector2 v) +{ + float length = sqrtf(v.x * v.x + v.y * v.y); + if (length != 0.0f) + { + return {v.x / length, v.y / length}; + } + return {0.0f, 0.0f}; +} + +/// Binary vector equality +inline bool operator==(Vector2 a, Vector2 b) +{ + return a.x == b.x && a.y == b.y; +} + +/// Binary vector inequality +inline bool operator!=(Vector2 a, Vector2 b) +{ + return a.x != b.x || a.y != b.y; +} + +/// Body equality. +inline bool operator==(b2BodyId a, b2BodyId b) +{ + return B2_ID_EQUALS(a, b); +} + +/// Body less than. +inline bool operator<(b2BodyId a, b2BodyId b) +{ + return a.index1 < b.index1; +} diff --git a/src/engine/physics_debug.h b/src/engine/physics_debug.h new file mode 100644 index 0000000..3c7f754 --- /dev/null +++ b/src/engine/physics_debug.h @@ -0,0 +1,373 @@ +#pragma once + +#include +#include + +#include +#include + +/** + * The debug draw context for rendering Box2D debug information. + */ +struct DebugDrawCtx +{ + float meters_to_pixels = 30.0f; + float line_thickness = 1.0f; +}; + +/** + * Convert a b2HexColor to a Raylib Color. + * + * @param c The b2HexColor to convert. + * @param a The alpha value. + * @return The converted Color. + */ +static Color ToRaylibColor(b2HexColor c, float a = 1.0f) +{ + unsigned int v = (unsigned int)c; + unsigned char r = (v >> 16) & 0xFF; + unsigned char g = (v >> 8) & 0xFF; + unsigned char b = (v >> 0) & 0xFF; + a = std::fmax(0.0f, std::fmin(1.0f, a)) * 255.0f; + unsigned char alpha = static_cast(a); + return Color{r, g, b, alpha}; +} + +/** + * Draw a line segment. + * + * @param p1 The start point. + * @param p2 The end point. + * @param color The color of the line. + * @param context The debug draw context. + */ +static void DrawSegment(const b2Vec2 p1, const b2Vec2 p2, b2HexColor color, void* context) +{ + auto* ctx = (DebugDrawCtx*)context; + Vector2 a{p1.x * ctx->meters_to_pixels, p1.y * ctx->meters_to_pixels}; + Vector2 b{p2.x * ctx->meters_to_pixels, p2.y * ctx->meters_to_pixels}; + DrawLineEx(a, b, ctx->line_thickness, ToRaylibColor(color)); +} + +/** + * Draw a polygon outline. + * + * @param v The vertices of the polygon. + * @param count The number of vertices. + * @param color The color of the polygon. + * @param context The debug draw context. + */ +static void DrawPolygon(const b2Vec2* v, int count, b2HexColor color, void* context) +{ + auto* ctx = (DebugDrawCtx*)context; + Color c = ToRaylibColor(color); + + for (int i = 0; i < count; ++i) + { + b2Vec2 p0 = v[i]; + b2Vec2 p1 = v[(i + 1) % count]; + DrawLineEx({p0.x * ctx->meters_to_pixels, p0.y * ctx->meters_to_pixels}, + {p1.x * ctx->meters_to_pixels, p1.y * ctx->meters_to_pixels}, + ctx->line_thickness, + c); + } +} + +/** + * Draw a filled polygon. + * + * @param xf The transform of the polygon. + * @param v The vertices of the polygon. + * @param count The number of vertices. + * @param radius The radius for edge rounding (not used). + * @param color The color of the polygon. + * @param context The debug draw context. + */ +static void DrawSolidPolygon(b2Transform xf, const b2Vec2* v, int count, float radius, b2HexColor color, void* context) +{ + (void)radius; + auto* ctx = (DebugDrawCtx*)context; + + // Fill color with some alpha so you can see overlap. + Color fill = ToRaylibColor(color, 0.8f); + Color line = ToRaylibColor(color); + + // Transform to pixels. + std::vector pts; + pts.reserve((size_t)count); + + Vector2 center{0, 0}; + for (int i = 0; i < count; ++i) + { + b2Vec2 wp = b2TransformPoint(xf, v[i]); + Vector2 p{wp.x * ctx->meters_to_pixels, wp.y * ctx->meters_to_pixels}; + pts.push_back(p); + center.x += p.x; + center.y += p.y; + } + center.x /= count; + center.y /= count; + + for (int i = 0; i < count - 1; i++) + { + DrawTriangle(pts[i], center, pts[i + 1], fill); + } + DrawTriangle(pts[count - 1], center, pts[0], fill); + + // Outline + for (int i = 0; i < count; ++i) + { + const Vector2& a = pts[i]; + const Vector2& b = pts[(i + 1) % count]; + DrawLineEx(a, b, ctx->line_thickness, line); + } +} + +/** + * Draw a circle outline. + * + * @param center The center of the circle. + * @param radius The radius of the circle. + * @param color The color of the circle. + * @param context The debug draw context. + */ +static void DrawCircleOutline(b2Vec2 center, float radius, b2HexColor color, void* context) +{ + auto* ctx = (DebugDrawCtx*)context; + DrawCircleLines((int)(center.x * ctx->meters_to_pixels), + (int)(center.y * ctx->meters_to_pixels), + radius * ctx->meters_to_pixels, + ToRaylibColor(color)); +} + +/** + * Draw a filled circle. + * + * @param xf The transform of the circle. + * @param radius The radius of the circle. + * @param color The color of the circle. + * @param context The debug draw context. + */ +static void DrawSolidCircle(b2Transform xf, float radius, b2HexColor color, void* context) +{ + Color fill = ToRaylibColor(color, 0.8f); + Color line = ToRaylibColor(color); + + auto* ctx = (DebugDrawCtx*)context; + b2Vec2 center = xf.p; + DrawCircle((int)(center.x * ctx->meters_to_pixels), + (int)(center.y * ctx->meters_to_pixels), + radius * ctx->meters_to_pixels, + fill); + + b2Vec2 line_end = b2TransformPoint(xf, {radius, 0}); + DrawLineEx({center.x * ctx->meters_to_pixels, center.y * ctx->meters_to_pixels}, + {line_end.x * ctx->meters_to_pixels, line_end.y * ctx->meters_to_pixels}, + ctx->line_thickness, + line); +} + +/** + * Compute the length of a vector. + * + * @param v The vector. + * @return The length of the vector. + */ +static float Len(Vector2 v) +{ + return std::sqrt(v.x * v.x + v.y * v.y); +} + +/** + * Normalize a vector. + * + * @param v The vector. + * @return The normalized vector. + */ +static Vector2 Normalize(Vector2 v) +{ + float l = Len(v); + if (l <= 1e-6f) + return Vector2{0, 0}; + return Vector2{v.x / l, v.y / l}; +} + +/** + * Compute the perpendicular vector. + * + * @param v The vector. + * @return The perpendicular vector. + */ +static Vector2 Perp(Vector2 v) +{ + return Vector2{-v.y, v.x}; +} + +/** + * Draw a filled capsule. + * + * @param p1 The first endpoint. + * @param p2 The second endpoint. + * @param radius_m The radius of the capsule. + * @param color The color of the capsule. + * @param context The debug draw context. + */ +static void DrawSolidCapsule(b2Vec2 p1, b2Vec2 p2, float radius_m, b2HexColor color, void* context) +{ + auto* ctx = (DebugDrawCtx*)context; + + Color fill = ToRaylibColor(color, 0.8f); + Color line = ToRaylibColor(color); + + Vector2 a = {p1.x * ctx->meters_to_pixels, p1.y * ctx->meters_to_pixels}; + Vector2 b = {p2.x * ctx->meters_to_pixels, p2.y * ctx->meters_to_pixels}; + + float r = radius_m * ctx->meters_to_pixels; + + Vector2 ab = Vector2{b.x - a.x, b.y - a.y}; + + Vector2 dir = Normalize(ab); + Vector2 n = Perp(dir); + Vector2 off = Vector2{n.x * r, n.y * r}; + + // Rectangle corners that connect the tangent points of end circles + Vector2 aL = Vector2{a.x + off.x, a.y + off.y}; + Vector2 aR = Vector2{a.x - off.x, a.y - off.y}; + Vector2 bL = Vector2{b.x + off.x, b.y + off.y}; + Vector2 bR = Vector2{b.x - off.x, b.y - off.y}; + + // ---- Fill ---- + // Middle quad as two triangles + DrawTriangle(aL, bL, bR, fill); + DrawTriangle(aL, bR, aR, fill); + + // End caps as circles + DrawCircleV(a, r, fill); + DrawCircleV(b, r, fill); + + // ---- Outline ---- + // Side lines + DrawLineEx(aL, bL, ctx->line_thickness, line); + DrawLineEx(aR, bR, ctx->line_thickness, line); + + // Circle outlines (approx) + DrawCircleLines((int)a.x, (int)a.y, r, line); + DrawCircleLines((int)b.x, (int)b.y, r, line); + + // Optional: draw axis line (helps debug orientation) + DrawLineEx(a, b, ctx->line_thickness, line); +} + +/** + * Draw a point. + * + * @param p The position of the point. + * @param size The size of the point. + * @param color The color of the point. + * @param context The debug draw context. + */ +static void DrawPoint(b2Vec2 p, float size, b2HexColor color, void* context) +{ + auto* ctx = (DebugDrawCtx*)context; + DrawCircleV({p.x * ctx->meters_to_pixels, p.y * ctx->meters_to_pixels}, size, ToRaylibColor(color)); +} + +/** + * Draw a transform. + * + * @param xf The transform to draw. + * @param context The debug draw context. + */ +static void DrawTransform(b2Transform xf, void* context) +{ + auto* ctx = (DebugDrawCtx*)context; + + // Draw axes: x axis in red, y axis in green + b2Vec2 p = xf.p; + b2Vec2 xAxis = b2RotateVector(xf.q, b2Vec2{1, 0}); + b2Vec2 yAxis = b2RotateVector(xf.q, b2Vec2{0, 1}); + + float L = 0.5f; // meters + DrawLineEx({p.x * ctx->meters_to_pixels, p.y * ctx->meters_to_pixels}, + {(p.x + L * xAxis.x) * ctx->meters_to_pixels, (p.y + L * xAxis.y) * ctx->meters_to_pixels}, + ctx->line_thickness, + RED); + DrawLineEx({p.x * ctx->meters_to_pixels, p.y * ctx->meters_to_pixels}, + {(p.x + L * yAxis.x) * ctx->meters_to_pixels, (p.y + L * yAxis.y) * ctx->meters_to_pixels}, + ctx->line_thickness, + GREEN); +} + +/** + * Draw a string. + * + * @param p The position to draw the string. + * @param s The string to draw. + * @param color The color of the string. + * @param context The debug draw context. + */ +static void DrawString(b2Vec2 p, const char* s, b2HexColor color, void* context) +{ + auto* ctx = (DebugDrawCtx*)context; + DrawText(s, (int)(p.x * ctx->meters_to_pixels), (int)(p.y * ctx->meters_to_pixels), 10, ToRaylibColor(color)); +} + +/** + * The physics debug renderer. + */ +class PhysicsDebugRenderer +{ +public: + DebugDrawCtx ctx; + b2DebugDraw dd{}; + + /** + * Initialize the debug renderer. + * + * @param meters_to_pixels The scale factor from meters to pixels. + * @param line_thickness The thickness of lines. + */ + void init(float meters_to_pixels = 30.0f, float line_thickness = 1.0f) + { + ctx.meters_to_pixels = meters_to_pixels; + ctx.line_thickness = line_thickness; + + // Callbacks + dd.DrawPolygonFcn = &DrawPolygon; + dd.DrawSolidPolygonFcn = &DrawSolidPolygon; + dd.DrawCircleFcn = &DrawCircleOutline; + dd.DrawSolidCircleFcn = &DrawSolidCircle; + dd.DrawSolidCapsuleFcn = &DrawSolidCapsule; + dd.DrawSegmentFcn = &DrawSegment; + dd.DrawTransformFcn = &DrawTransform; + dd.DrawPointFcn = &DrawPoint; + dd.DrawStringFcn = &DrawString; + + // Options + dd.useDrawingBounds = false; + dd.drawShapes = true; + dd.drawJoints = false; + dd.drawBounds = false; + dd.drawMass = false; + dd.drawBodyNames = false; + dd.drawContacts = false; + dd.drawGraphColors = false; + dd.drawContactNormals = true; + dd.drawContactImpulses = false; + dd.drawContactFeatures = true; + dd.drawFrictionImpulses = false; + dd.drawIslands = true; + + dd.context = &ctx; + } + + /** + * Draw the debug information for the given world. + * + * @param world The Box2D world. + */ + void draw_debug(b2WorldId world) + { + b2World_Draw(world, &dd); + } +}; diff --git a/src/engine/prefabs/components.h b/src/engine/prefabs/components.h new file mode 100644 index 0000000..ff44f81 --- /dev/null +++ b/src/engine/prefabs/components.h @@ -0,0 +1,1392 @@ +#pragma once + +#include "engine/framework.h" +#include "engine/prefabs/managers.h" +#include "engine/prefabs/services.h" +#include "engine/raycasts.h" + +/** + * For when you want a GameObject to have multiple of the same component. + */ +template +class MultiComponent : public Component +{ +public: + std::unordered_map> components; + + MultiComponent() {} + + /** + * Initialize all components. + */ + void init() override + { + for (auto& component : components) + { + component.second->init(); + } + } + + /** + * Update all components. + * + * @param delta_time The time elapsed since the last frame. + */ + void update(float delta_time) override + { + for (auto& component : components) + { + component.second->update(delta_time); + } + } + + /** + * Draw all components. + */ + void draw() override + { + for (auto& component : components) + { + component.second->draw(); + } + } + + /** + * Add a component to the MultiComponent. + * + * @param name The name to give the component. + * @param component The component to add. + */ + void add_component(std::string name, std::unique_ptr component) + { + static_assert(std::is_base_of::value, "T must derive from Component"); + components[name] = std::move(component); + components[name]->owner = owner; + } + + /** + * Create a component and add it to the MultiComponent. + * + * @param name The name to give the component. + * @param args The arguments to forward to the component constructor. + * @return A pointer to the added component. + */ + template + T* add_component(std::string name, TArgs&&... args) + { + static_assert(std::is_base_of::value, "T must derive from Component"); + auto new_component = std::make_unique(std::forward(args)...); + T* component_ptr = new_component.get(); + add_component(name, std::move(new_component)); + return component_ptr; + } + + /** + * Get a component by name. + * + * @param name The name of the component. + * @return A pointer to the component. + */ + T* get_component(std::string name) + { + return components[name].get(); + } +}; + +/** + * A component for rendering text. + * Depends on FontManager. + */ +class TextComponent : public Component +{ +public: + FontManager* font_manager; + std::string text; + std::string font_name; + int font_size = 20; + Color color = WHITE; + Vector2 position = {0, 0}; + float rotation = 0.0f; + + /** + * Constructor for TextComponent. + * + * @param text The text to display. + * @param font_name The name of the font to use. + * @param font_size The size of the font. + * @param color The color of the text. + */ + TextComponent(std::string text, std::string font_name = "default", int font_size = 20, Color color = WHITE) : + text(text), + font_name(font_name), + font_size(font_size), + color(color) + { + } + + /** + * Initialize the text component. + */ + void init() override + { + font_manager = owner->scene->game->get_manager(); + } + + /** + * Draw the text. + */ + void draw() override + { + DrawTextEx(font_manager->get_font(font_name), + text.c_str(), + position, + static_cast(font_size), + 1.0f, + color); + } + + /** + * Set the text to display. + * + * @param text The text to display. + */ + void set_text(const std::string& text) + { + this->text = text; + } + + /** + * Set the color of the text. + * + * @param color The color to set. + */ + void set_color(Color color) + { + this->color = color; + } + + /** + * Set the font size. + * + * @param font_size The font size to set. + */ + void set_font_size(int font_size) + { + this->font_size = font_size; + } + + /** + * Set the font by name. + * + * @param font_name The name of the font to set. + */ + void set_font(const std::string& font_name) + { + this->font_name = font_name; + } + + /** + * Set the position of the text. + * + * @param position The position to set. + */ + void set_position(Vector2 position) + { + this->position = position; + } + + /** + * Set the rotation of the text. + * + * @param rotation The rotation to set. + */ + void set_rotation(float rotation) + { + this->rotation = rotation; + } +}; + +/** + * A component for playing sounds. + * Depends on SoundService. + */ +class SoundComponent : public Component +{ +public: + std::string filename; + Sound sound; + float volume = 1.0f; + float pitch = 1.0f; + float pan = 0.5f; + + /** + * Constructor for SoundComponent. + * + * @param filename The filename of the sound to load. + * @param volume The initial volume of the sound. + * @param pitch The initial pitch of the sound. + */ + SoundComponent(std::string filename, float volume = 1.0f, float pitch = 1.0f, float pan = 0.5f) : + filename(filename), + volume(volume), + pitch(pitch), + pan(pan) + { + } + + /** + * Initialize the sound component. + */ + void init() override + { + auto sound_service = owner->scene->get_service(); + sound = sound_service->get_sound(filename); + } + + /** + * Play the sound. + */ + void play() + { + PlaySound(sound); + } + + /** + * Stop the sound. + */ + void stop() + { + StopSound(sound); + } + + /** + * Set the volume of the sound. + * + * @param volume The volume to set. + */ + void set_volume(float volume) + { + this->volume = volume; + SetSoundVolume(sound, volume); + } + + /** + * Set the pitch of the sound. + * + * @param pitch The pitch to set. + */ + void set_pitch(float pitch) + { + this->pitch = pitch; + SetSoundPitch(sound, pitch); + } + + /** + * Set the pan of the sound. + * + * @param pan The pan to set, between 0.0 (left) and 1.0 (right). + */ + void set_pan(float pan) + { + this->pan = pan; + SetSoundPan(sound, pan); + } + + /** + * Check if the sound is currently playing. + * + * @return True if the sound is playing, false otherwise. + */ + bool is_playing() + { + return IsSoundPlaying(sound); + } +}; + +/** + * A component for a Box2D physics body. + * Depends on PhysicsService. + */ +class BodyComponent : public Component +{ +public: + b2BodyId id = b2_nullBodyId; + std::function build; + PhysicsService* physics; + + BodyComponent() {} + + /** + * Constructor for BodyComponent with existing body ID. + * + * @param id The Box2D body ID. + */ + BodyComponent(b2BodyId id) : id(id) {} + + /** + * Specify a lambda for creating the physics body which will be called during init. + * It is the user's responsibility to assign the body id to id in this function. + * + * @param build A user provided function for creating a physics body. + */ + BodyComponent(std::function build = {}) : build(std::move(build)) {} + + ~BodyComponent() + { + if (b2Body_IsValid(id)) + { + b2DestroyBody(id); + } + } + + /** + * Initialize the body component. + */ + void init() override + { + physics = owner->scene->get_service(); + if (build) + { + build(*this); + } + } + + /** + * Enable the body in the physics simulation. + */ + void enable() + { + b2Body_Enable(id); + } + + /** + * Disable the body in the physics simulation. + */ + void disable() + { + b2Body_Disable(id); + } + + /** + * Get the position of the body in meters. + */ + b2Vec2 get_position_meters() const + { + return b2Body_GetPosition(id); + } + + /** + * Get the position of the body in pixels. + */ + Vector2 get_position_pixels() const + { + return physics->convert_to_pixels(get_position_meters()); + } + + /** + * Set the position of the body in meters. + * + * @param meters The position in meters. + */ + void set_position(b2Vec2 meters) + { + b2Rot rotation = b2Body_GetRotation(id); + b2Body_SetTransform(id, meters, rotation); + } + + /** + * Set the position of the body in pixels. + * + * @param pixels The position in pixels. + */ + void set_position(Vector2 pixels) + { + set_position(physics->convert_to_meters(pixels)); + } + + /** + * Set the rotation of the body in degrees. + * + * @param degrees The rotation in degrees. + */ + void set_rotation(float degrees) + { + b2Vec2 position = b2Body_GetPosition(id); + b2Rot rotation = b2MakeRot(degrees * DEG2RAD); + b2Body_SetTransform(id, position, rotation); + } + + /** + * Get the velocity of the body in meters per second. + * + * @return The velocity in meters per second. + */ + b2Vec2 get_velocity_meters() const + { + return b2Body_GetLinearVelocity(id); + } + + /** + * Get the velocity of the body in pixels per second. + * + * @return The velocity in pixels per second. + */ + Vector2 get_velocity_pixels() const + { + return physics->convert_to_pixels(get_velocity_meters()); + } + + /** + * Set the velocity of the body in meters per second. + * + * @param meters_per_second The velocity in meters per second. + */ + void set_velocity(b2Vec2 meters_per_second) + { + b2Body_SetLinearVelocity(id, meters_per_second); + } + + /** + * Set the velocity of the body in pixels per second. + * + * @param pixels_per_second The velocity in pixels per second. + */ + void set_velocity(Vector2 pixels_per_second) + { + set_velocity(physics->convert_to_meters(pixels_per_second)); + } + + /** + * Get the rotation of the body in degrees. + * + * @return The rotation in degrees. + */ + float get_rotation() const + { + auto rot = b2Body_GetRotation(id); + return b2Rot_GetAngle(rot) * RAD2DEG; + } + + /** + * Get a list of all bodies colliding with this one. + * https://box2d.org/documentation/md_simulation.html#autotoc_md94 + * + * @return A list of b2BodyIds that are touching this one. Combine with User Data to get your objects. + */ + std::vector get_contacts() + { + // Choose 10 as an arbitrary max number of contacts on the body. + constexpr int capacity = 10; + b2ContactData contact_data[capacity]; + + int count = b2Body_GetContactData(id, contact_data, capacity); + std::vector contacts; + for (int i = 0; i < count; i++) + { + auto contact = contact_data[i]; + auto body_a = b2Shape_GetBody(contact.shapeIdA); + auto body_b = b2Shape_GetBody(contact.shapeIdB); + auto body = body_a == id ? body_b : body_a; + contacts.push_back(body); + } + + // Remove duplicate bodies. + std::sort(contacts.begin(), contacts.end()); + contacts.erase(std::unique(contacts.begin(), contacts.end()), contacts.end()); + return contacts; + } + + /** + * Get a list of all bodies overlapping with sensors in this body. + * The shape definitions must have isSensor and enableSensorEvents set. + * https://box2d.org/documentation/md_simulation.html#autotoc_md81 + * + * @return A list of b2BodyIds that are overlapping the sensor shapes in this body. Combine with User Data to get + * your objects. + */ + std::vector get_sensor_overlaps() + { + // Choose 10 as an arbitrary max number of shapes on the body. + constexpr int shape_capacity = 10; + b2ShapeId shapes[shape_capacity]; + int shape_count = b2Body_GetShapes(id, shapes, shape_capacity); + + std::vector contacts; + for (int i = 0; i < shape_count; i++) + { + auto shape = shapes[i]; + if (b2Shape_IsSensor(shape)) + { + // Choose 10 as an arbitrary max number of contacts on the sensor shape. + constexpr int shape_capacity = 10; + b2ShapeId shapes[shape_capacity]; + int shape_count = b2Shape_GetSensorOverlaps(shape, shapes, shape_capacity); + + for (int j = 0; j < shape_count; j++) + { + auto shape = shapes[j]; + auto body = b2Shape_GetBody(shape); + // Check if body is already in contacts to avoid duplicates. + if (std::find(contacts.begin(), contacts.end(), body) == contacts.end()) + { + contacts.push_back(body); + } + } + } + } + + // Remove duplicate bodies. + std::sort(contacts.begin(), contacts.end()); + contacts.erase(std::unique(contacts.begin(), contacts.end()), contacts.end()); + return contacts; + } +}; + +/** + * A component for rendering a sprite. + * Depends on TextureService. + */ +class SpriteComponent : public Component +{ +public: + std::string filename; + BodyComponent* body = nullptr; + + Texture2D sprite; + Vector2 position = {0, 0}; + float rotation = 0.0f; + float scale = 1.0f; + Color tint = WHITE; + bool is_active = true; + + /** + * Constructor for SpriteComponent. + * + * @param filename The filename of the texture to load. + */ + SpriteComponent(std::string filename) : filename(filename) {} + + /** + * Constructor for SpriteComponent with optional BodyComponent to follow. + * + * @param body The BodyComponent to follow for position and rotation. + * @param filename The filename of the texture to load. + */ + SpriteComponent(std::string filename, BodyComponent* body) : filename(filename), body(body) {} + + /** + * Initialize the sprite component. + */ + void init() override + { + auto texture_service = owner->scene->get_service(); + sprite = texture_service->get_texture(filename); + } + + /** + * Draw the sprite. + */ + void draw() override + { + if (!is_active) + { + return; + } + + if (body) + { + position = body->get_position_pixels(); + rotation = body->get_rotation(); + } + + Rectangle source = {0, 0, (float)sprite.width, (float)sprite.height}; + Rectangle dest = {position.x, position.y, (float)sprite.width * scale, (float)sprite.height * scale}; + Vector2 origin = {sprite.width / 2.0f * scale, sprite.height / 2.0f * scale}; + + DrawTexturePro(sprite, source, dest, origin, rotation, tint); + } + + /** + * Set the position of the sprite. + * + * @param position The position to set. + */ + void set_position(Vector2 position) + { + this->position = position; + } + + /** + * Set the rotation of the sprite. + * + * @param rotation The rotation to set in degrees. + */ + void set_rotation(float rotation) + { + this->rotation = rotation; + } + + /** + * Set the scale of the sprite. + * + * @param scale The scale to set. + */ + void set_scale(float scale) + { + this->scale = scale; + } + + /** + * Set the tint color of the sprite. + * + * @param tint The tint color to set. + */ + void set_tint(Color tint) + { + this->tint = tint; + } + + /** + * Set whether the sprite is active or not. + * The sprite will not be drawn if inactive. + * + * @param active True to make the sprite active, false to deactivate it. + */ + void set_active(bool active) + { + is_active = active; + } +}; + +/** + * A class for handling frame-based animations. + * Depends on TextureService. + */ +class Animation +{ +public: + std::vector frames; + float fps = 15.0f; + float frame_timer = 0.0f; + bool loop = true; + + int current_frame = 0; + bool playing = true; + bool is_active = true; + + /** + * Constructor for Animation. + * + * @param frames The frames of the animation as Texture2D objects. + * @param fps The frames per second of the animation. + * @param loop Whether the animation should loop or not. + */ + Animation(const std::vector& frames, float fps = 15.0f, bool loop = true) : + frames(frames), + fps(fps), + frame_timer(1.0f / fps), + loop(loop) + { + } + + /** + * Constructor for Animation that loads frames from filenames. + * + * @param texture_service The TextureService to load textures from. + * @param filenames The filenames of the frames of the animation. + * @param fps The frames per second of the animation. + * @param loop Whether the animation should loop or not. + */ + Animation(TextureService* texture_service, + const std::vector& filenames, + float fps = 15.0f, + bool loop = true) : + fps(fps), + frame_timer(1.0f / fps), + loop(loop) + { + for (const auto& filename : filenames) + { + frames.push_back(texture_service->get_texture(filename)); + } + } + + /** + * Update the animation. + * + * @param delta_time The time elapsed since the last frame. + */ + void update(float delta_time) + { + if (frames.empty()) + { + return; + } + if (!playing || !is_active) + { + return; + } + + frame_timer -= delta_time; + if (frame_timer <= 0.0f) + { + frame_timer = 1.0f / fps; + current_frame++; + } + + if (current_frame > frames.size() - 1) + { + if (loop) + current_frame = 0; + else + { + current_frame = (int)frames.size() - 1; + } + } + } + + /** + * Draw the animation. + * + * @param position The position to draw the animation at. + * @param rotation The rotation of the animation in degrees. + * @param tint The tint color to apply to the animation. + */ + void draw(Vector2 position, float rotation = 0.0f, Color tint = WHITE) + { + if (!is_active) + { + return; + } + + auto sprite = frames[current_frame]; + DrawTexturePro(sprite, + {0.0f, 0.0f, static_cast(sprite.width), static_cast(sprite.height)}, + {position.x, position.y, static_cast(sprite.width), static_cast(sprite.height)}, + {static_cast(sprite.width) / 2.0f, static_cast(sprite.height) / 2.0f}, + rotation, + tint); + } + + /** + * Draw the animation with a specific origin. + * + * @param position The position to draw the animation at. + * @param origin The origin point for rotation and scaling. + * @param rotation The rotation of the animation in degrees. + * @param scale The scale of the animation. + * @param flip_x Whether to flip the animation horizontally. + * @param flip_y Whether to flip the animation vertically. + * @param tint The tint color to apply to the animation. + */ + void draw(Vector2 position, + Vector2 origin, + float rotation = 0.0f, + float scale = 1.0f, + bool flip_x = false, + bool flip_y = false, + Color tint = WHITE) + { + if (!is_active) + { + return; + } + + auto sprite = frames[current_frame]; + DrawTexturePro(sprite, + {0.0f, + 0.0f, + static_cast(sprite.width) * (flip_x ? -1.0f : 1.0f), + static_cast(sprite.height) * (flip_y ? -1.0f : 1.0f)}, + {position.x, + position.y, + static_cast(sprite.width) * scale, + static_cast(sprite.height) * scale}, + origin * scale, + rotation, + tint); + } + + /** + * Play the animation. + */ + void play() + { + playing = true; + } + + /** + * Pause the animation. + */ + void pause() + { + playing = false; + } + + /** + * Stop the animation and reset to the first frame. + */ + void stop() + { + playing = false; + frame_timer = 1.0f / fps; + current_frame = 0; + } +}; + +/** + * A component for controlling animations. + * Depends on TextureService. + */ +class AnimationController : public Component +{ +public: + std::unordered_map> animations; + Animation* current_animation = nullptr; + Vector2 position = {0.0f, 0.0f}; + float rotation = 0.0f; + Vector2 origin = {0.0f, 0.0f}; + float scale = 1.0f; + bool flip_x = false; + bool flip_y = false; + BodyComponent* body = nullptr; + + AnimationController() = default; + + /** + * Constructor for AnimationController that follows a BodyComponent. + * + * @param body The BodyComponent to follow for position and rotation. + */ + AnimationController(BodyComponent* body) : body(body) {} + + /** + * Update the animation controller. + * + * @param delta_time The time elapsed since the last frame. + */ + void update(float delta_time) override + { + if (current_animation) + { + current_animation->update(delta_time); + } + } + + /** + * Draw the current animation. + */ + void draw() override + { + if (body) + { + position = body->get_position_pixels(); + rotation = body->get_rotation(); + } + + if (current_animation) + { + current_animation->draw(position, origin, rotation, scale, flip_x, flip_y); + } + } + + /** + * Add an existing animation to the controller. + * + * @param name The name to give the animation. + * @param animation The animation to add. + */ + void add_animation(const std::string& name, std::unique_ptr animation) + { + animations[name] = std::move(animation); + if (!current_animation) + { + current_animation = animations[name].get(); + auto sprite = current_animation->frames[current_animation->current_frame]; + origin = {sprite.width / 2.0f, sprite.height / 2.0f}; + } + } + + /** + * Create an animation and add it to the controller. + * + * @param name The name to give the animation. + * @param args The arguments to forward to the Animation constructor. + * @return A pointer to the added animation. + */ + template + Animation* add_animation(const std::string& name, TArgs&&... args) + { + auto texture_service = owner->scene->get_service(); + auto new_animation = std::make_unique(texture_service, std::forward(args)...); + Animation* animation_ptr = new_animation.get(); + add_animation(name, std::move(new_animation)); + return animation_ptr; + } + + /** + * Get an animation by name. + * + * @param name The name of the animation. + * @return A pointer to the animation. + */ + Animation* get_animation(const std::string& name) + { + return animations[name].get(); + } + + /** + * Play the current animation. + */ + void play() + { + if (current_animation) + { + current_animation->play(); + } + } + + /** + * Play an animation by name. + * + * @param name The name of the animation to play. + */ + void play(const std::string& name) + { + auto it = animations.find(name); + if (it != animations.end()) + { + current_animation = it->second.get(); + current_animation->play(); + auto sprite = current_animation->frames[current_animation->current_frame]; + } + } + + /** + * Pause the current animation. + */ + void pause() + { + if (current_animation) + { + current_animation->pause(); + } + } + + /** + * Set whether the current animation is playing or paused. + * + * @param play True to play the animation, false to pause it. + */ + void set_play(bool play) + { + if (current_animation) + { + if (play) + { + current_animation->play(); + } + else + { + current_animation->pause(); + } + } + } + + /** + * Stop the current animation. + */ + void stop() + { + if (current_animation) + { + current_animation->stop(); + } + } + + /** + * Set the position of the animation. + * + * @param pos The position to set. + */ + void set_position(Vector2 pos) + { + position = pos; + } + + /** + * Set the rotation of the animation. + * + * @param rot The rotation to set in degrees. + */ + void set_rotation(float rot) + { + rotation = rot; + } + + /** + * Set the origin of the animation. + * + * @param orig The origin to set. + */ + void set_origin(Vector2 orig) + { + origin = orig; + } + + /** + * Set the scale of the animation. + * + * @param s The scale to set. + */ + void set_scale(float s) + { + scale = s; + } + + /** + * Set whether to flip the animation horizontally. + * + * @param fx True to flip horizontally, false otherwise. + */ + void set_flip_x(bool fx) + { + flip_x = fx; + } + + /** + * Set whether to flip the animation vertically. + * + * @param fy True to flip vertically, false otherwise. + */ + void set_flip_y(bool fy) + { + flip_y = fy; + } +}; + +/** + * Parameters for PlatformerMovementComponent. + */ +struct PlatformerMovementParams +{ + float width = 24.0f; // pixels + float height = 40.0f; // pixels + + // Movement + float max_speed = 220.0f; // pixels / second + float accel = 2000.0f; // pixels / second / second + float decel = 2500.0f; // pixels / second / second + + // Gravity / jump + float gravity = 1400.0f; // pixels / second / second + float jump_speed = 520.0f; // pixels / second + float fall_speed = 1200.0f; // pixels / second + float jump_cutoff_multiplier = 0.45f; // jump multiplier when the jump button is released early + + // Forgiveness + float coyote_time = 0.08f; // seconds + float jump_buffer = 0.10f; // seconds +}; + +/** + * A component for 2D platformer movement. + * Depends on PhysicsService and BodyComponent. + */ +class PlatformerMovementComponent : public Component +{ +public: + PlatformerMovementParams p; + PhysicsService* physics; + BodyComponent* body; + + bool grounded = false; + bool on_wall_left = false; + bool on_wall_right = false; + float coyote_timer = 0.0f; + float jump_buffer_timer = 0.0f; + + float move_x = 0; + bool jump_pressed = false; + bool jump_held = false; + + /** + * Constructor for PlatformerMovementComponent. + * + * @param p The movement parameters. + */ + PlatformerMovementComponent(PlatformerMovementParams p) : p(p) {} + + /** + * Initialize the movement component. + */ + void init() override + { + physics = owner->scene->get_service(); + body = owner->get_component(); + } + + /** + * Update the movement component. + * + * @param delta_time The time elapsed since the last frame. + */ + void update(float delta_time) override + { + if (!b2Body_IsValid(body->id)) + { + return; + } + + coyote_timer = std::max(0.0f, coyote_timer - delta_time); + jump_buffer_timer = std::max(0.0f, jump_buffer_timer - delta_time); + + if (jump_pressed) + { + jump_buffer_timer = p.jump_buffer; + } + + // Grounded check + grounded = false; + on_wall_left = false; + on_wall_right = false; + + // Convert probe distances to meters + float ray_length = physics->convert_to_meters(4.0f); + + float half_width = physics->convert_to_meters(p.width) / 2.0f; + float half_height = physics->convert_to_meters(p.height) / 2.0f; + + // Ground: cast down from two points near the feet (left/right) + auto pos = body->get_position_meters(); + b2Vec2 ground_left_start = {pos.x - half_width, pos.y + half_height}; + b2Vec2 ground_right_start = {pos.x + half_width, pos.y + half_height}; + b2Vec2 ground_translation = {0, ray_length}; + const b2WorldId world = physics->world; + + RayHit left_ground_hit = raycast_closest(world, body->id, ground_left_start, ground_translation); + RayHit right_ground_hit = raycast_closest(world, body->id, ground_right_start, ground_translation); + grounded = left_ground_hit.hit || right_ground_hit.hit; + + // Walls: cast left/right at mid-body height + b2Vec2 mid = {pos.x, pos.y}; + b2Vec2 wall_left_start = {pos.x - half_width, mid.y}; + b2Vec2 wall_left_translation = {-ray_length, 0}; + b2Vec2 wall_right_start = {pos.x + half_width, mid.y}; + b2Vec2 wall_right_translation = {ray_length, 0}; + + RayHit left_wall_hit = raycast_closest(world, body->id, wall_left_start, wall_left_translation); + RayHit right_wall_hit = raycast_closest(world, body->id, wall_right_start, wall_right_translation); + + on_wall_left = left_wall_hit.hit; + on_wall_right = right_wall_hit.hit; + if (grounded) + { + coyote_timer = p.coyote_time; + } + + float target_vx = move_x * p.max_speed; + + auto v = body->get_velocity_pixels(); + + if (std::fabs(target_vx) > 0.001f) + { + float a = p.accel; + v.x = move_towards(v.x, target_vx, a * delta_time); + } + else + { + float a = p.decel; + v.x = move_towards(v.x, 0.0f, a * delta_time); + } + + // Gravity (custom) + v.y += p.gravity * delta_time; + v.y = std::max(-p.fall_speed, std::min(p.fall_speed, v.y)); + + // Jump + const bool can_jump = (grounded || coyote_timer > 0.0f); + if (jump_buffer_timer > 0.0f && can_jump) + { + v.y = -p.jump_speed; + jump_buffer_timer = 0.0f; + coyote_timer = 0.0f; + grounded = false; + } + + // Variable jump height: cut upward velocity when jump released + if (!jump_held && v.y < 0.0f) + { + v.y *= p.jump_cutoff_multiplier; + } + + // Write velocity back + body->set_velocity(v); + } + + /** + * Calculates a value moved towards a target by a maximum delta. + * + * @param current The current value. + * @param target The target value. + * @param max_delta The maximum change that can be applied. + * @return The new value after moving towards the target. + */ + static float move_towards(float current, float target, float max_delta) + { + float delta = target - current; + if (std::fabs(delta) <= max_delta) + return target; + return current + (delta > 0 ? max_delta : -max_delta); + } + + /** + * Set the input for movement. + * + * @param horizontal_speed The horizontal speed input (-1.0 to 1.0). + * @param jump_pressed Whether the jump button was pressed this frame. + * @param jump_held Whether the jump button is currently held down. + */ + void set_input(float horizontal_speed, bool jump_pressed, bool jump_held) + { + move_x = horizontal_speed; + this->jump_pressed = jump_pressed; + this->jump_held = jump_held; + } +}; + +struct TopDownMovementParams +{ + float max_speed = 300.0f; // max speed in px/s + float accel = 1200.0f; // accel when holding input + float friction = 1200.0f; // decel when no input + float deadzone = 0.1f; // input deadzone +}; + +/** + * A component for 2D top-down movement. + * Depends on PhysicsService and BodyComponent. + * + * Movement is controlled by setting a 2D input vector (move_x, move_y), + * and this component accelerates/decelerates the body towards a target + * velocity using simple acceleration + friction. + */ +class TopDownMovementComponent : public Component +{ +public: + TopDownMovementParams p; + PhysicsService* physics = nullptr; + BodyComponent* body = nullptr; + + // Raw input in [-1, 1] range for each axis. + float move_x = 0.0f; + float move_y = 0.0f; + + // Store last facing direction for aiming/animation. + float facing_dir = 0.0f; + + TopDownMovementComponent(TopDownMovementParams p) : p(p) {} + + void init() override + { + physics = owner->scene->get_service(); + body = owner->get_component(); + } + + void update(float delta_time) override + { + if (!b2Body_IsValid(body->id)) + { + return; + } + + // Current velocity in pixels/sec (assuming your BodyComponent uses this). + Vector2 v = body->get_velocity_pixels(); + + // Build desired movement input vector. + Vector2 input = {move_x, move_y}; + float input_len_sq = input.x * input.x + input.y * input.y; + + Vector2 desired_vel = {0.0f, 0.0f}; + + // Deadzone. + if (input_len_sq > p.deadzone * p.deadzone) + { + desired_vel.x = input.x * p.max_speed; + desired_vel.y = input.y * p.max_speed; + + // Update facing direction. + facing_dir = atan2f(input.y, input.x) * RAD2DEG; + + // Accelerate towards desired velocity. + v = move_towards_vec(v, desired_vel, p.accel * delta_time); + } + else + { + // No input: apply friction to slow down. + v = apply_friction(v, p.friction * delta_time); + } + + // Clamp to max speed just in case. + float speed_sq = v.x * v.x + v.y * v.y; + float max_speed_sq = p.max_speed * p.max_speed; + if (speed_sq > max_speed_sq) + { + float speed = std::sqrt(speed_sq); + float scale = p.max_speed / speed; + v.x *= scale; + v.y *= scale; + } + + body->set_velocity(v); + } + + /** + * Move a velocity vector towards a target vector by at most max_delta length. + */ + static Vector2 move_towards_vec(const Vector2& current, const Vector2& target, float max_delta) + { + Vector2 delta = {target.x - current.x, target.y - current.y}; + float len = std::sqrt(delta.x * delta.x + delta.y * delta.y); + if (len <= max_delta || len < 1e-5f) + { + return target; + } + float scale = max_delta / len; + return Vector2{current.x + delta.x * scale, current.y + delta.y * scale}; + } + + /** + * Apply friction to a velocity vector (reduce its magnitude). + * `friction_delta` is how much speed we remove this frame. + */ + static Vector2 apply_friction(const Vector2& v, float friction_delta) + { + float speed = std::sqrt(v.x * v.x + v.y * v.y); + if (speed < 1e-5f) + { + return Vector2{0.0f, 0.0f}; + } + + float new_speed = speed - friction_delta; + if (new_speed <= 0.0f) + { + return Vector2{0.0f, 0.0f}; + } + + float scale = new_speed / speed; + return Vector2{v.x * scale, v.y * scale}; + } + + /** + * Set the input for movement. + * + * @param horizontal Horizontal input (-1.0 to 1.0). + * @param vertical Vertical input (-1.0 to 1.0). + */ + void set_input(float horizontal, float vertical) + { + move_x = horizontal; + move_y = vertical; + } +}; diff --git a/src/engine/prefabs/game_objects.h b/src/engine/prefabs/game_objects.h new file mode 100644 index 0000000..776ce16 --- /dev/null +++ b/src/engine/prefabs/game_objects.h @@ -0,0 +1,619 @@ +#pragma once + +#include "engine/framework.h" +#include "engine/prefabs/components.h" +#include "engine/prefabs/services.h" + +/** + * A simple static box. + */ +class StaticBox : public GameObject +{ +public: + b2BodyId body = b2_nullBodyId; + float x, y, width, height; + bool is_visible = true; + + /** + * Constructor for StaticBox. + * + * @param x The center x position in pixels. + * @param y The center y position in pixels. + * @param width The width of the box in pixels. + * @param height The height of the box in pixels. + */ + StaticBox(float x, float y, float width, float height) : x(x), y(y), width(width), height(height) {} + + /** + * Constructor for StaticBox that takes Vector2s. + * + * @param position The center of the box in pixels. + * @param size The size of the box in pixels. + */ + StaticBox(Vector2 position, Vector2 size) : x(position.x), y(position.y), width(size.x), height(size.y) {} + + /** + * Initialize the StaticBox. + */ + void init() override + { + auto physics = scene->get_service(); + const float pixels_to_meters = physics->pixels_to_meters; + auto world = physics->world; + + b2BodyDef body_def = b2DefaultBodyDef(); + body_def.type = b2_staticBody; + body_def.position = b2Vec2{x * pixels_to_meters, y * pixels_to_meters}; + body = b2CreateBody(world, &body_def); + + b2Polygon body_polygon = b2MakeBox(width / 2.0f * pixels_to_meters, height / 2.0f * pixels_to_meters); + b2ShapeDef box_shape_def = b2DefaultShapeDef(); + b2CreatePolygonShape(body, &box_shape_def, &body_polygon); + + add_component(body); + } + + /** + * Draw the StaticBox as a blue rectangle. + */ + void draw() override + { + if (is_visible) + { + DrawRectangle((int)(x - width / 2.0f), (int)(y - height / 2.0f), (int)width, (int)height, BLUE); + } + } +}; + +/** + * A simple dynamic rigid body box. + */ +class DynamicBox : public GameObject +{ +public: + b2BodyId body = b2_nullBodyId; + float x, y, width, height, rot_deg; + PhysicsService* physics; + + /** + * Constructor for DynamicBox. + * + * @param x The center x position in pixels. + * @param y The center y position in pixels. + * @param width The width of the box in pixels. + * @param height The height of the box in pixels. + * @param rotation The angle of the box in degrees. + */ + DynamicBox(float x, float y, float width, float height, float rotation = 0) : + x(x), + y(y), + width(width), + height(height), + rot_deg(rotation) + { + } + + /** + * Constructor for DynamicBox that takes Vector2s. + * + * @param position The center of the box in pixels. + * @param size The size of the box in pixels. + * @param rotation The angle of the box in degrees. + */ + DynamicBox(Vector2 position, Vector2 size, float rotation = 0) : + x(position.x), + y(position.y), + width(size.x), + height(size.y), + rot_deg(rotation) + { + } + + /** + * Initialize the DynamicBody. + */ + void init() override + { + physics = scene->get_service(); + const float pixels_to_meters = physics->pixels_to_meters; + auto world = physics->world; + + b2BodyDef body_def = b2DefaultBodyDef(); + body_def.type = b2_dynamicBody; + body_def.position = b2Vec2{x * pixels_to_meters, y * pixels_to_meters}; + body_def.rotation = b2MakeRot(rot_deg * DEG2RAD); + body = b2CreateBody(world, &body_def); + + b2Polygon body_polygon = b2MakeBox(width / 2.0f * pixels_to_meters, height / 2.0f * pixels_to_meters); + b2ShapeDef box_shape_def = b2DefaultShapeDef(); + b2SurfaceMaterial body_material = b2DefaultSurfaceMaterial(); + body_material.friction = 0.3f; + box_shape_def.density = 1.0f; + box_shape_def.material = body_material; + b2CreatePolygonShape(body, &box_shape_def, &body_polygon); + + auto body_component = add_component(body); + add_component("assets/character_green_idle.png", body_component); + } + + /** + * Draw the DynamicBody as a red rectangle. + */ + void draw() override + { + float meters_to_pixels = physics->meters_to_pixels; + b2Vec2 pos = b2Body_GetPosition(body); + b2Rot rot = b2Body_GetRotation(body); + float angle = b2Rot_GetAngle(rot) * RAD2DEG; + + DrawRectanglePro({physics->convert_to_pixels(pos.x), physics->convert_to_pixels(pos.y), width, height}, + {width / 2.0f, height / 2.0f}, + angle, + RED); + } +}; + +/** + * A 2D camera that controls the view of the scene. + */ +class CameraObject : public GameObject +{ +public: + Camera2D camera; + + // The target position to follow, in pixels. + Vector2 target = {0, 0}; + + // The size of the screen. + Vector2 size = {0, 0}; + + // The size of the level in pixels. The camera will clamp to this size. + Vector2 level_size = {0, 0}; + + // Tracking speed in pixels per second. + Vector2 follow_speed = {1000, 1000}; + + // Deadzone bounds in pixels relative to the center. + float offset_left = 150.0f; + float offset_right = 150.0f; + float offset_top = 100.0f; + float offset_bottom = 100.0f; + + /** + * Constructor for CameraObject. + * + * @param size The size of the camera view. + * @param level_size The size of the level. + * @param follow_speed The speed at which the camera follows the target. + * @param offset_left The left deadzone offset in pixels. + * @param offset_right The right deadzone offset in pixels. + * @param offset_top The top deadzone offset in pixels. + * @param offset_bottom The bottom deadzone offset in pixels. + */ + CameraObject(Vector2 size, + Vector2 level_size = {0, 0}, + Vector2 follow_speed = {1000, 1000}, + float offset_left = 70, + float offset_right = 70, + float offset_top = 40, + float offset_bottom = 40) : + size(size), + level_size(level_size), + follow_speed(follow_speed), + offset_left(offset_left), + offset_right(offset_right), + offset_top(offset_top), + offset_bottom(offset_bottom) + { + } + + /** + * Initialize the camera. + */ + void init() override + { + camera.zoom = 1.0f; + camera.offset = {size.x / 2.0f, size.y / 2.0f}; + camera.rotation = 0.0f; + + camera.target = target; + } + + /** + * Update the camera position based on the target and deadzone. + * + * @param delta_time The delta time since the last frame. + */ + void update(float delta_time) override + { + // Desired camera.target after applying deadzone. + Vector2 desired = camera.target; + + // Convert deadzone from SCREEN pixels to WORLD pixels (depends on zoom). + // Because camera.target is in world units. + float inv_zoom = (camera.zoom != 0.0f) ? (1.0f / camera.zoom) : 1.0f; + + float dz_left_w = offset_left * inv_zoom; + float dz_right_w = offset_right * inv_zoom; + float dz_top_w = offset_top * inv_zoom; + float dz_bottom_w = offset_bottom * inv_zoom; + + // Compute target displacement from current camera center (world-space). + float dx = target.x - camera.target.x; + float dy = target.y - camera.target.y; + + // If target is outside deadzone, shift desired camera center just enough to bring it back. + if (dx < -dz_left_w) + { + desired.x = target.x + dz_left_w; + } + else if (dx > dz_right_w) + { + desired.x = target.x - dz_right_w; + } + + if (dy < -dz_top_w) + { + desired.y = target.y + dz_top_w; + } + else if (dy > dz_bottom_w) + { + desired.y = target.y - dz_bottom_w; + } + + // Apply tracking speed per axis. + if (follow_speed.x < 0) + { + camera.target.x = desired.x; + } + else + { + camera.target.x = move_towards(camera.target.x, desired.x, follow_speed.x * delta_time); + } + + if (follow_speed.y < 0) + { + camera.target.y = desired.y; + } + else + { + camera.target.y = move_towards(camera.target.y, desired.y, follow_speed.y * delta_time); + } + + Vector2 half_view = {size.x / 2.0f * inv_zoom, size.y / 2.0f * inv_zoom}; + if (level_size.x > size.x) + { + camera.target.x = std::max(half_view.x, std::min(level_size.x - half_view.x, camera.target.x)); + } + if (level_size.y > size.y) + { + camera.target.y = std::max(half_view.y, std::min(level_size.y - half_view.y, camera.target.y)); + } + } + + /** + * Calculate a value moved towards a target by a maximum delta. + * + * @param current The current value. + * @param target The target value. + * @param max_delta The maximum change that can be applied. + * @return The new value after moving towards the target. + */ + float move_towards(float current, float target, float max_delta) + { + float d = target - current; + if (d > max_delta) + return current + max_delta; + if (d < -max_delta) + return current - max_delta; + return target; + } + + /** + * Set the target position for the camera to follow. + * + * @param target The target position in pixels. + */ + void set_target(Vector2 target) + { + this->target = target; + } + + /** + * Set the zoom level of the camera. + * + * @param zoom The zoom level. + */ + void set_zoom(float zoom) + { + camera.zoom = zoom; + } + + /** + * Set the rotation angle of the camera. + * + * @param angle The rotation angle in degrees. + */ + void set_rotation(float angle) + { + camera.rotation = angle; + } + + /** + * Begin drawing with the camera. + * The rest of the Scene should be drawn between draw_begin() and draw_end(). + */ + void draw_begin() + { + BeginMode2D(camera); + } + + /** + * End drawing with the camera. + */ + void draw_end() + { + EndMode2D(); + } + + /** + * Draw the camera's deadzone for debugging. + * + * @param c The color to draw the deadzone rectangle. + */ + void draw_debug(Color c = {0, 255, 0, 120}) const + { + float inv_zoom = (camera.zoom != 0.0f) ? (1.0f / camera.zoom) : 1.0f; + float dz_left_w = offset_left * inv_zoom; + float dz_right_w = offset_right * inv_zoom; + float dz_top_w = offset_top * inv_zoom; + float dz_bottom_w = offset_bottom * inv_zoom; + + Rectangle r; + r.x = camera.target.x - dz_left_w; + r.y = camera.target.y - dz_top_w; + r.width = dz_left_w + dz_right_w; + r.height = dz_top_w + dz_bottom_w; + + DrawRectangleLinesEx(r, 2.0f * inv_zoom, c); + } + + /** + * Convert screen coordinates to world coordinates. + * + * @param point The screen coordinates. + * @return The corresponding world coordinates. + */ + Vector2 screen_to_world(Vector2 point) + { + return GetScreenToWorld2D(point, camera); + } +}; + +/** + * A split-screen camera that renders to a texture. + */ +class SplitCamera : public CameraObject +{ +public: + RenderTexture2D renderer; + + /** + * Constructor for SplitCamera. + * + * @param size The size of the camera view. + * @param level_size The size of the level. + * @param follow_speed The speed at which the camera follows the target. + * @param offset_left The left deadzone offset in pixels. + * @param offset_right The right deadzone offset in pixels. + * @param offset_top The top deadzone offset in pixels. + * @param offset_bottom The bottom deadzone offset in pixels. + */ + SplitCamera(Vector2 size, + Vector2 level_size = {0, 0}, + Vector2 follow_speed = {1000, 1000}, + float offset_left = 70, + float offset_right = 70, + float offset_top = 40, + float offset_bottom = 40) : + CameraObject(size, level_size, follow_speed, offset_left, offset_right, offset_top, offset_bottom) + { + } + + ~SplitCamera() + { + UnloadRenderTexture(renderer); + } + + /** + * Initialize the SplitCamera. + */ + void init() override + { + renderer = LoadRenderTexture((int)size.x, (int)size.y); + CameraObject::init(); + } + + /** + * Begin drawing to the camera's texture. + * The rest of the Scene should be drawn between draw_begin() and draw_end(). + */ + void draw_begin() + { + BeginTextureMode(renderer); + ClearBackground(WHITE); + BeginMode2D(camera); + } + + /** + * End drawing to the camera's texture. + */ + void draw_end() + { + EndMode2D(); + EndTextureMode(); + } + + /** + * Draw the camera's texture at the specified position. + * + * @param x The x position to draw the texture. + * @param y The y position to draw the texture. + */ + void draw_texture(float x, float y) + { + DrawTextureRec(renderer.texture, + {0, 0, static_cast(renderer.texture.width), static_cast(-renderer.texture.height)}, + {x, y}, + WHITE); + } + + void draw_texture_pro(float x, float y, float width, float height) + { + DrawTexturePro(renderer.texture, + {0, 0, static_cast(renderer.texture.width), static_cast(-renderer.texture.height)}, + {x, y, width, height}, + {0, 0}, + 0.0f, + WHITE); + } + + /** + * Convert screen coordinates to world coordinates relative to a draw position. + * + * @param draw_position The position where the texture is drawn. + * @param point The screen coordinates. + * @return The corresponding world coordinates. + */ + Vector2 screen_to_world(Vector2 draw_position, Vector2 point) + { + auto local_point = point - draw_position; + return GetScreenToWorld2D(local_point, camera); + } +}; + +/** + * Parameters for the PlatformerCharacter game object. + */ +struct CharacterParams +{ + // Geometry in pixels + float width = 24.0f; + float height = 40.0f; + + // Initial position in pixels + Vector2 position; + + // Surface behavior + float friction = 0.0f; + float restitution = 0.0f; + float density = 1.0f; +}; + +/** + * A simple platformer character with movement and animation. + */ +class PlatformerCharacter : public GameObject +{ +public: + CharacterParams p; + PhysicsService* physics; + BodyComponent* body; + PlatformerMovementComponent* movement; + + bool grounded = false; + bool on_wall_left = false; + bool on_wall_right = false; + float coyote_timer = 0.0f; + float jump_buffer_timer = 0.0f; + int gamepad = 0; + + /** + * Constructor for PlatformerCharacter. + * + * @param p The parameters for the character. + */ + PlatformerCharacter(CharacterParams p, int gamepad = 0) : p(p), gamepad(gamepad) {} + + /** + * Initialize the PlatformerCharacter. + */ + void init() override + { + physics = scene->get_service(); + + body = add_component( + [=](BodyComponent& b) + { + b2BodyDef body_def = b2DefaultBodyDef(); + body_def.type = b2_dynamicBody; + body_def.fixedRotation = true; + // body_def.isBullet = true; + body_def.linearDamping = 0.0f; + body_def.angularDamping = 0.0f; + body_def.position = physics->convert_to_meters(p.position); + body_def.userData = this; + b.id = b2CreateBody(physics->world, &body_def); + + b2SurfaceMaterial body_material = b2DefaultSurfaceMaterial(); + body_material.friction = p.friction; + body_material.restitution = p.restitution; + + b2ShapeDef box_shape_def = b2DefaultShapeDef(); + box_shape_def.density = p.density; + box_shape_def.material = body_material; + + // Needed to presolve one-way behavior. + box_shape_def.enablePreSolveEvents = true; + + b2Polygon body_polygon = b2MakeRoundedBox(physics->convert_to_meters(p.width / 2.0f), + physics->convert_to_meters(p.height / 2.0f), + physics->convert_to_meters(0.25)); + b2CreatePolygonShape(b.id, &box_shape_def, &body_polygon); + }); + + PlatformerMovementParams mp; + mp.width = p.width; + mp.height = p.height; + movement = add_component(mp); + } + + /** + * Update the PlatformerCharacter. + */ + void update(float delta_time) override + { + float deadzone = 0.1f; + + const bool jump_pressed = + IsKeyPressed(KEY_W) || IsGamepadButtonPressed(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_DOWN); + const bool jump_held = IsKeyDown(KEY_W) || IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_DOWN); + + float move_x = 0.0f; + move_x = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_X); + if (fabsf(move_x) < deadzone) + { + move_x = 0.0f; + } + if (IsKeyDown(KEY_D) || IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) + { + move_x = 1.0f; + } + else if (IsKeyDown(KEY_A) || IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) + { + move_x = -1.0f; + } + + movement->set_input(move_x, jump_pressed, jump_held); + } + + /** + * Draw the PlatformerCharacter as a rectangle. + */ + void draw() override + { + Color color = movement->grounded ? GREEN : BLUE; + auto pos = body->get_position_pixels(); + DrawRectanglePro({pos.x, pos.y, p.width, p.height}, {p.width / 2.0f, p.height / 2.0f}, 0.0f, color); + } +}; diff --git a/src/engine/prefabs/includes.h b/src/engine/prefabs/includes.h new file mode 100644 index 0000000..0bfd025 --- /dev/null +++ b/src/engine/prefabs/includes.h @@ -0,0 +1,6 @@ +#pragma once + +#include "engine/prefabs/components.h" +#include "engine/prefabs/game_objects.h" +#include "engine/prefabs/managers.h" +#include "engine/prefabs/services.h" diff --git a/src/engine/prefabs/managers.h b/src/engine/prefabs/managers.h new file mode 100644 index 0000000..ae92645 --- /dev/null +++ b/src/engine/prefabs/managers.h @@ -0,0 +1,217 @@ +#pragma once + +#include "engine/framework.h" + +/** + * For when you want multiple of the same manager. + */ +template +class MultiManager : public Manager +{ +public: + std::unordered_map> managers; + + MultiManager() = default; + + /** + * Initialize all managers. + */ + void init() override + { + for (auto& manager : managers) + { + manager.second->init_manager(); + } + Manager::init(); + } + + /** + * Add a manager to the MultiManager. + * + * @param name The name to give the manager. + * @param manager The manager to add. + */ + void add_manager(std::string name, std::unique_ptr manager) + { + static_assert(std::is_base_of::value, "T must derive from Manager"); + managers[name] = std::move(manager); + } + + /** + * Create a manager and add it to the MultiManager. + * + * @param name The name to give the manager. + * @param args The arguments to forward to the manager constructor. + * @return A pointer to the added manager. + */ + template + T* add_manager(std::string name, TArgs&&... args) + { + static_assert(std::is_base_of::value, "T must derive from Manager"); + auto new_manager = std::make_unique(std::forward(args)...); + T* manager_ptr = new_manager.get(); + add_manager(name, std::move(new_manager)); + return manager_ptr; + } + + /** + * Get a manager by name. + * + * @param name The name of the manager. + * @return A pointer to the manager. + */ + T* get_manager(std::string name) + { + return managers[name].get(); + } +}; + +/** + * Manager for handling fonts so they are not loaded multiple times. + */ +class FontManager : public Manager +{ +public: + std::unordered_map fonts; + + /** + * Constructor for FontManager. + * Loads the default font. + */ + FontManager() + { + fonts["default"] = GetFontDefault(); + } + + ~FontManager() + { + for (auto& pair : fonts) + { + UnloadFont(pair.second); + } + } + + /** + * Load a font from a file. + * + * @param name The name to associate with the font. + * @param filename The filename of the font to load. + * @param size The font size to save the font texture as. + * + * @return A reference to the loaded font. + */ + Font& load_font(const std::string& name, const std::string& filename, int size = 32) + { + if (fonts.find(name) != fonts.end()) + { + return fonts[name]; + } + + Font font = LoadFontEx(filename.c_str(), size, nullptr, 0); + fonts[name] = font; + return fonts[name]; + } + + /** + * Get a font by name. + * + * @param name The name of the font. + * @return A reference to the font. + */ + Font& get_font(const std::string& name) + { + return fonts[name]; + } + + /** + * Set the texture filter for a font. + * + * @param name The name of the font. + * @param filter The filter to set. + */ + void set_texture_filter(const std::string& name, int filter) + { + if (fonts.find(name) != fonts.end()) + { + SetTextureFilter(fonts[name].texture, filter); + } + } +}; + +/** + * Manager for handling the application window. + */ +class WindowManager : public Manager +{ +public: + int width = 1280; + int height = 720; + std::string title = "My Game"; + int target_fps = 60; + + WindowManager(int w, int h, const std::string& t, int fps = 60) : width(w), height(h), title(t), target_fps(fps) {} + + /** + * Initialize the window. + */ + void init() override + { + SetConfigFlags(FLAG_WINDOW_RESIZABLE); + InitWindow(width, height, title.c_str()); + InitAudioDevice(); + SetTargetFPS(target_fps); + + char* mappings = LoadFileText("assets/gamecontrollerdb.txt"); + SetGamepadMappings(mappings); + Manager::init(); + } + + /** + * Set the window title. + * + * @param t The new title. + */ + void set_title(const std::string& t) + { + title = t; + SetWindowTitle(title.c_str()); + } + + /** + * Get the window width. + * + * @return The window width. + */ + float get_width() const + { + return static_cast(width); + } + + /** + * Get the window height. + */ + float get_height() const + { + return static_cast(height); + } + + /** + * Get the window size. + * + * @return The window size as a Vector2. + */ + Vector2 get_size() const + { + return Vector2{(float)width, (float)height}; + } + + /** + * Get the window aspect ratio. + * + * @return The window aspect ratio. + */ + float get_aspect_ratio() const + { + return static_cast(width) / static_cast(height); + } +}; \ No newline at end of file diff --git a/src/engine/prefabs/services.h b/src/engine/prefabs/services.h new file mode 100644 index 0000000..de72906 --- /dev/null +++ b/src/engine/prefabs/services.h @@ -0,0 +1,1159 @@ +#pragma once + +#include + +#include "engine/framework.h" +#include "engine/physics_debug.h" +#include "engine/raycasts.h" + +/** + * For when you want multiple of the same service. + */ +template +class MultiService : public Service +{ +public: + std::unordered_map> services; + + MultiService() = default; + + /** + * Initialize all services. + */ + void init_service() override + { + for (auto& service : services) + { + service.second->init(); + } + Service::init_service(); + } + + /** + * Update all services. + */ + void update(float delta_time) override + { + for (auto& service : services) + { + service.second->update(); + } + Service::update(delta_time); + } + + /** + * Draw all services. + */ + void draw() override + { + for (auto& service : services) + { + service.second->draw(); + } + } + + /** + * Add a service to the MultiService. + * + * @param name The name to give the service. + * @param service The service to add. + */ + void add_service(std::string name, std::unique_ptr service) + { + static_assert(std::is_base_of::value, "T must derive from Service"); + services[name] = std::move(service); + } + + /** + * Create a service and add it to the MultiService. + * + * @param name The name to give the service. + * @param args The arguments to forward to the service constructor. + * @return A pointer to the added service. + */ + template + T* add_service(std::string name, TArgs&&... args) + { + static_assert(std::is_base_of::value, "T must derive from Service"); + auto new_service = std::make_unique(std::forward(args)...); + T* service_ptr = new_service.get(); + add_service(name, std::move(new_service)); + return service_ptr; + } + + /** + * Get a service by name. + * + * @param name The name of the service. + * @return A pointer to the service. + */ + T* get_service(std::string name) + { + return services[name].get(); + } +}; + +/** + * Service for managing textures. + * Useful when you don't want to load the same texture multiple times. + */ +class TextureService : public Service +{ +public: + std::unordered_map textures; + + TextureService() = default; + ~TextureService() + { + for (auto& pair : textures) + { + UnloadTexture(pair.second); + } + } + + /** + * Get a texture by filename. + * Loads the texture if it is not already loaded. + * + * @param filename The filename of the texture. + * @return A reference to the texture. + */ + Texture2D& get_texture(const std::string& filename) + { + if (textures.find(filename) == textures.end()) + { + Texture2D texture = LoadTexture(filename.c_str()); + textures[filename] = texture; + } + return textures[filename]; + } +}; + +/** + * Service for managing sounds. + * Useful when you don't want to load the same sound multiple times and want to play overlapping sounds. + */ +class SoundService : public Service +{ +public: + std::unordered_map> sounds; + + SoundService() = default; + ~SoundService() + { + for (auto& pair : sounds) + { + // The first sound is a real sound. + UnloadSound(pair.second[0]); + for (int i = 1; i < pair.second.size(); i++) + { + UnloadSoundAlias(pair.second[i]); + } + } + } + + /** + * Get a sound by filename. + * Loads the sound if it is not already loaded. + * Creates a new alias if the sound is already loaded to allow overlapping sounds. + * + * @param filename The filename of the sound. + * @return A reference to the sound. + */ + Sound& get_sound(const std::string& filename) + { + if (sounds.find(filename) == sounds.end()) + { + Sound sound = LoadSound(filename.c_str()); + sounds[filename] = {sound}; + } + else + { + // Create a new alias to allow overlapping sounds. + Sound sound = LoadSoundAlias(sounds[filename][0]); + sounds[filename].push_back(sound); + } + return sounds[filename].back(); + } +}; + +/** + * Service for managing the physics world. + */ +class PhysicsService : public Service +{ +public: + b2WorldId world = b2_nullWorldId; + b2Vec2 gravity = {0.0f, 10.0f}; + float time_step = 1.0f / 60.0f; + int sub_steps = 6; + float meters_to_pixels = 30.0f; + float pixels_to_meters = 1.0f / meters_to_pixels; + PhysicsDebugRenderer debug_draw; + + /** + * Constructor for PhysicsService. + * + * @param gravity The gravity vector for the physics world. + * @param time_step The time step for the physics simulation. + * @param sub_steps The number of sub-steps for the physics simulation. + * @param meters_to_pixels The scale factor from meters to pixels. + */ + PhysicsService(b2Vec2 gravity = b2Vec2{0.0f, 10.0f}, + float time_step = 1.0f / 60.0f, + int sub_steps = 6, + float meters_to_pixels = 30.0f) : + gravity(gravity), + time_step(time_step), + sub_steps(sub_steps), + meters_to_pixels(meters_to_pixels), + pixels_to_meters(1.0f / meters_to_pixels) + { + } + + ~PhysicsService() + { + if (b2World_IsValid(world)) + { + b2DestroyWorld(world); + } + } + + /** + * Initialize the physics world. + */ + void init() override + { + b2WorldDef world_def = b2DefaultWorldDef(); + world_def.gravity = gravity; + world_def.contactHertz = 120; + world = b2CreateWorld(&world_def); + debug_draw.init(meters_to_pixels); + } + + /** + * Update the physics world. + * + * @param delta_time The time elapsed since the last frame. + */ + void update(float delta_time) override + { + if (!b2World_IsValid(world)) + { + return; + } + b2World_Step(world, time_step, sub_steps); + } + + /** + * Draw the physics debug information. + */ + void draw_debug() + { + debug_draw.draw_debug(world); + } + + /** + * Convert between pixels and meters. + * + * @param meters The value in meters. + * @return The value in pixels. + */ + Vector2 convert_to_pixels(b2Vec2 meters) const + { + const auto converted = meters * meters_to_pixels; + return {converted.x, converted.y}; + } + + /** + * Convert between pixels and meters. + * + * @param pixels The value in pixels. + * @return The value in meters. + */ + b2Vec2 convert_to_meters(Vector2 pixels) const + { + const auto converted = pixels * pixels_to_meters; + return {converted.x, converted.y}; + } + + /** + * Convert a length from meters to pixels. + * + * @param meters The length in meters. + * @return The length in pixels. + */ + float convert_to_pixels(float meters) const + { + return meters * meters_to_pixels; + } + + /** + * Convert a length from pixels to meters. + * + * @param pixels The length in pixels. + * @return The length in meters. + */ + float convert_to_meters(float pixels) const + { + return pixels * pixels_to_meters; + } + + /** + * Raycast in pixels. + * + * @param ignore Box2d body to ignore. + * @param from The start point of the ray. + * @param to The end point of the ray. + * @return A RayHit struct describing the hit. + */ + RayHit raycast(b2BodyId ignore, Vector2 from, Vector2 to) + { + auto start = convert_to_meters(from); + auto translation = convert_to_meters(to - from); + + return raycast_closest(world, ignore, start, translation); + } + + /** + * Check for circle shape overlaps in pixels. + * + * @param center The center of the circle. + * @param radius The radius of the circle. + * @param ignore_body The body to ignore. + * @return A vector of body IDs that overlap with the circle. + */ + std::vector circle_overlap(Vector2 center, float radius, b2BodyId ignore_body = b2_nullBodyId) + { + auto center_m = convert_to_meters(center); + auto radius_m = convert_to_meters(radius); + return circle_hit(world, ignore_body, center_m, radius_m); + } + + /** + * Check for rectangle shape overlaps in pixels. + * + * @param rectangle The rectangle to check. + * @param rotation The rotation of the rectangle in degrees. + * @param ignore_body The body to ignore. + * @return A vector of body IDs that overlap with the rectangle. + */ + std::vector rectangle_overlap(Rectangle rectangle, + float rotation = 0.0f, + b2BodyId ignore_body = b2_nullBodyId) + { + Vector2 size = {rectangle.width, rectangle.height}; + Vector2 center = {rectangle.x + size.x / 2.0f, rectangle.y + size.y / 2.0f}; + auto size_m = convert_to_meters(size); + auto center_m = convert_to_meters(center); + return rectangle_hit(world, ignore_body, center_m, size_m, rotation); + } +}; + +/** + * Hash for ldtk::IntPoint to be used in unordered_map/set. + */ +struct IntPointHash +{ + size_t operator()(const ldtk::IntPoint& p) const noexcept + { + std::size_t h1 = std::hash{}(p.x); + std::size_t h2 = std::hash{}(p.y); + return h1 ^ (h2 << 1); + } +}; + +/** + * Undirected edge between two IntPoints, stored canonically (a < b). + */ +struct Edge +{ + ldtk::IntPoint a, b; +}; + +/** + * Equality operator for Edge. + * + * @param e1 The first edge. + * @param e2 The second edge. + * @return True if the edges are equal, false otherwise. + */ +static inline bool operator==(const Edge& e1, const Edge& e2) +{ + return e1.a == e2.a && e1.b == e2.b; +} + +/** + * Hash for Edge to be used in unordered_map/set. + */ +struct EdgeHash +{ + size_t operator()(const Edge& e) const noexcept + { + IntPointHash h; + std::size_t h1 = h(e.a); + std::size_t h2 = h(e.b); + return h1 ^ (h2 << 1); + } +}; + +struct LayerRenderer +{ + RenderTexture2D renderer; + ldtk::IID layer_iid; + bool visible = true; +}; + +/** + * Service for managing LDtk levels. + * Depends on TextureService and PhysicsService. + */ +class LevelService : public Service +{ +public: + ldtk::Project project; + std::string project_file; + std::string level_name; + std::vector collision_names; + std::vector renderers; + std::vector layer_bodies; + float scale = 1.0f; + PhysicsService* physics; + + /** + * Constructor for LevelService. + * + * @param project_file The path to the LDtk project file. + * @param level_name The name of the level to load. + * @param collision_names The names of the layers to create collision bodies for. + * @param scale The scale factor for the level. + */ + LevelService(std::string project_file, + std::string level_name, + std::vector collision_names, + float scale = 1.0f) : + project_file(project_file), + level_name(level_name), + collision_names(collision_names), + scale(scale) + { + } + + virtual ~LevelService() + { + for (auto& renderer : renderers) + { + UnloadRenderTexture(renderer.renderer); + } + + for (auto& body : layer_bodies) + { + if (b2Body_IsValid(body)) + { + b2DestroyBody(body); + } + } + } + + /** + * Initialize the level service. + * Loads the LDtk project and level, creates textures and collision bodies. + */ + void init() override + { + if (!FileExists(project_file.c_str())) + { + TraceLog(LOG_FATAL, "LDtk file not found: %s", project_file.c_str()); + } + project.loadFromFile(project_file); + const auto& world = project.getWorld(); + const auto& levels = world.allLevels(); + + bool found = false; + for (const auto& level : levels) + { + if (level.name == level_name) + { + found = true; + break; + } + } + if (!found) + { + TraceLog(LOG_FATAL, "LDtk level not found: %s", level_name.c_str()); + } + + physics = scene->get_service(); + + const auto& level = world.getLevel(level_name); + const auto& layers = level.allLayers(); + + // Loop through all layers and create textures and collisions bodies. + for (auto& layer : layers) + { + if (!layer.hasTileset()) + { + continue; + } + + // Load the texture and the renderer. + auto directory = std::string(GetDirectoryPath(project_file.c_str())); + auto tileset_file = directory + "/" + layer.getTileset().path; + if (!FileExists(tileset_file.c_str())) + { + TraceLog(LOG_FATAL, "Tileset file not found: %s", tileset_file.c_str()); + } + auto texture_service = scene->get_service(); + Texture2D texture = texture_service->get_texture(tileset_file); + RenderTexture2D renderer = LoadRenderTexture(level.size.x, level.size.y); + + // Draw all the tiles. + const auto& tiles_vector = layer.allTiles(); + BeginTextureMode(renderer); + // Clear with transparency so we can render layers on top of each other. + ClearBackground({0, 0, 0, 0}); + for (const auto& tile : tiles_vector) + { + const auto& position = tile.getPosition(); + const auto& texture_rect = tile.getTextureRect(); + Vector2 dest = { + static_cast(position.x), + static_cast(position.y), + }; + Rectangle src = {static_cast(texture_rect.x), + static_cast(texture_rect.y), + static_cast(texture_rect.width) * (tile.flipX ? -1.0f : 1.0f), + static_cast(texture_rect.height) * (tile.flipY ? -1.0f : 1.0f)}; + DrawTextureRec(texture, src, dest, WHITE); + } + EndTextureMode(); + LayerRenderer layer_renderer; + layer_renderer.renderer = renderer; + layer_renderer.layer_iid = layer.iid; + renderers.push_back(layer_renderer); + + // Create bodies. + const auto& size = layer.getGridSize(); + + auto make_edge = [&](ldtk::IntPoint p0, ldtk::IntPoint p1) -> Edge + { + if (p1.x < p0.x || (p1.x == p0.x && p1.y < p0.y)) + std::swap(p0, p1); + return {p0, p1}; + }; + + std::unordered_set edges; + + for (int y = 0; y < size.y; y++) + { + for (int x = 0; x < size.x; x++) + { + if (!is_solid(layer, x, y, size)) + continue; + + // neighbor empty => boundary edge + if (!is_solid(layer, x, y - 1, size)) + edges.insert(make_edge({x, y}, {x + 1, y})); + if (!is_solid(layer, x, y + 1, size)) + edges.insert(make_edge({x, y + 1}, {x + 1, y + 1})); + if (!is_solid(layer, x - 1, y, size)) + edges.insert(make_edge({x, y}, {x, y + 1})); + if (!is_solid(layer, x + 1, y, size)) + edges.insert(make_edge({x + 1, y}, {x + 1, y + 1})); + } + } + + std::unordered_map, IntPointHash> adj; + adj.reserve(edges.size() * 2); + + for (auto& e : edges) + { + adj[e.a].push_back(e.b); + adj[e.b].push_back(e.a); + } + + // Helper to remove an undirected edge from the set as we consume it + auto erase_edge = [&](ldtk::IntPoint p0, ldtk::IntPoint p1) { edges.erase(make_edge(p0, p1)); }; + + // Walk loops + std::vector> loops; + + while (!edges.empty()) + { + // pick an arbitrary remaining edge + Edge startE = *edges.begin(); + ldtk::IntPoint start = startE.a; + ldtk::IntPoint cur = startE.b; + ldtk::IntPoint prev = start; + + std::vector poly; + poly.push_back(start); + poly.push_back(cur); + erase_edge(start, cur); + + while (!(cur == start)) + { + // choose next neighbor that is not prev and still has an edge remaining + const auto& nbs = adj[cur]; + ldtk::IntPoint next = prev; // fallback + + bool found = false; + for (const ldtk::IntPoint& cand : nbs) + { + if (cand == prev) + continue; + if (edges.find(make_edge(cur, cand)) != edges.end()) + { + next = cand; + found = true; + break; + } + } + + if (!found) + { + // Open chain (should be rare for tile boundaries unless the boundary touches the map edge) + break; + } + + prev = cur; + cur = next; + poly.push_back(cur); + erase_edge(prev, cur); + + // safety guard to avoid infinite loops on bad topology + if (poly.size() > 100000) + break; + } + + // If closed, last vertex == start; Box2D chains usually want NOT duplicated end vertex. + if (!poly.empty() && poly.back() == poly.front()) + { + poly.pop_back(); + } + + // Only keep valid chains + if (poly.size() >= 3) + { + // If we're not solid on the right, then we wrapped the wrong way. + if (!loop_has_solid_on_right(poly, layer)) + { + std::reverse(poly.begin(), poly.end()); + } + + // Not really necessary but here we reduce the number of points on a line to just the ends. + // std::vector reduced; + // reduced.push_back(poly[0]); + // b2Vec2 original_normal = {0, 0}; + // for (int i = 1; i < poly.size(); i++) + // { + // auto first = poly[i - 1]; + // auto second = poly[i]; + // float length = sqrt((second.x - first.x) * (second.x - first.x) + + // (second.y - first.y) * (second.y - first.y)); + // b2Vec2 normal = {(second.x - first.x) / length, (second.y - first.y) / length}; + // if (length == 0) + // { + // normal = {0, 0}; + // } + // if (i == 1) + // { + // original_normal = normal; + // } + + // if (normal != original_normal) + // { + // reduced.push_back(first); + // original_normal = normal; + // } + // } + // reduced.push_back(poly.back()); + // loops.push_back(std::move(reduced)); + + loops.push_back(std::move(poly)); + } + } + + b2BodyDef bd = b2DefaultBodyDef(); + bd.type = b2_staticBody; + bd.position = {0, 0}; + assert(b2World_IsValid(physics->world)); + b2BodyId layer_body = b2CreateBody(physics->world, &bd); + + for (auto& loop : loops) + { + std::vector verts; + verts.reserve(loop.size()); + + for (auto& p : loop) + { + float xpx = p.x * layer.getCellSize() * scale; + float ypx = p.y * layer.getCellSize() * scale; + verts.push_back(physics->convert_to_meters({xpx, ypx})); + } + + std::vector mats; + for (int i = 0; i < verts.size(); i++) + { + b2SurfaceMaterial mat = b2DefaultSurfaceMaterial(); + mat.friction = 0.1f; + mat.restitution = 0.1f; + mats.push_back(mat); + } + + b2ChainDef cd = b2DefaultChainDef(); + cd.points = verts.data(); + cd.count = (int)verts.size(); + cd.materials = mats.data(); + cd.materialCount = (int)mats.size(); + cd.isLoop = true; + b2CreateChain(layer_body, &cd); + + layer_bodies.push_back(layer_body); + } + } + } + + /** + * Draw the level. + * Draws all the layer renderers. + */ + void draw() override + { + // Draw renderers in reverse. + for (int i = (int)renderers.size() - 1; i >= 0; i--) + { + const auto& layer_renderer = renderers[i]; + if (!layer_renderer.visible) + { + continue; + } + const auto& renderer = layer_renderer.renderer; + Rectangle src = {0, + 0, + static_cast(renderer.texture.width), + -static_cast(renderer.texture.height)}; + Rectangle dest = {0, + 0, + static_cast(renderer.texture.width) * scale, + static_cast(renderer.texture.height) * scale}; + DrawTexturePro(renderer.texture, src, dest, {0}, .0f, WHITE); + } + } + + /** + * Draw a specific layer by its IID. + * + * @param layer_id The IID of the layer. + */ + void draw_layer(ldtk::IID layer_id) + { + for (const auto& layer_renderer : renderers) + { + if (layer_renderer.layer_iid == layer_id) + { + const auto& renderer = layer_renderer.renderer; + Rectangle src = {0, + 0, + static_cast(renderer.texture.width), + -static_cast(renderer.texture.height)}; + Rectangle dest = {0, + 0, + static_cast(renderer.texture.width) * scale, + static_cast(renderer.texture.height) * scale}; + DrawTexturePro(renderer.texture, src, dest, {0}, .0f, WHITE); + return; + } + } + } + + /** + * Draw a specific layer by its name. + * + * @param layer_name The name of the layer. + */ + void draw_layer(std::string layer_name) + { + const auto& level = get_level(); + const auto& layer = level.getLayer(layer_name); + draw_layer(layer.iid); + } + + /** + * Check if a cell in the layer is solid. + * Used for collision generation. + * + * @param layer The LDtk layer. + * @param x The x coordinate of the cell. + * @param y The y coordinate of the cell. + * @param size The size of the layer in cells. + */ + bool is_solid(const ldtk::Layer& layer, int x, int y, const ldtk::IntPoint& size) + { + if (x < 0 || y < 0 || x >= size.x || y >= size.y) + { + return false; + } + + std::string name = layer.getIntGridVal(x, y).name; + if (std::find(collision_names.begin(), collision_names.end(), name) != collision_names.end()) + { + return true; + } + return false; + }; + + /** + * Check if there is solid on the right side of a loop of corners. + * Used to determine loop winding. + * + * @param loop_corners The corners of the loop. + * @param layer The LDtk layer. + * @return True if there is solid on the right side of the loop, false otherwise. + */ + bool loop_has_solid_on_right(const std::vector& loop_corners, const ldtk::Layer& layer) + { + const int cell_size = layer.getCellSize(); + + // Pick an edge with non-zero length. + int n = (int)loop_corners.size(); + for (int i = 0; i < n; ++i) + { + ldtk::IntPoint a = loop_corners[i]; + ldtk::IntPoint b = loop_corners[(i + 1) % n]; + int dx = b.x - a.x; + int dy = b.y - a.y; + if (dx == 0 && dy == 0) + continue; + + // Convert corner coords to scaled pixel coords. + float ax = a.x * cell_size * scale; + float ay = a.y * cell_size * scale; + float bx = b.x * cell_size * scale; + float by = b.y * cell_size * scale; + + // Edge direction. + float ex = bx - ax; + float ey = by - ay; + float len = std::sqrt(ex * ex + ey * ey); + if (len < 1e-4f) + { + continue; + } + ex /= len; + ey /= len; + + // Right normal = (-ey, ex) + float rx = -ey; + float ry = ex; + + // Midpoint of the edge. + float mx = 0.5f * (ax + bx); + float my = 0.5f * (ay + by); + + // Sample a point slightly to the right, a quarter cell away. + float eps = 0.25f * cell_size * scale; + float sx = mx + rx * eps; + float sy = my + ry * eps; + + // Map sample pixel to grid cell. + int gx = (int)std::floor(sx / (cell_size * scale)); + int gy = (int)std::floor(sy / (cell_size * scale)); + + return is_solid(layer, gx, gy, layer.getGridSize()); + } + + // Fallback: if degenerate, say false + return false; + } + + /** + * Set the visibility of a layer by its IID. + * + * @param layer_id The IID of the layer. + * @param visible True to make the layer visible, false to hide it. + */ + void set_layer_visibility(ldtk::IID layer_id, bool visible) + { + for (auto& layer_renderer : renderers) + { + if (layer_renderer.layer_iid == layer_id) + { + layer_renderer.visible = visible; + return; + } + } + } + + /** + * Set the visibility of a layer by its name. + * + * @param layer_name The name of the layer. + * @param visible True to make the layer visible, false to hide it. + */ + void set_layer_visibility(std::string layer_name, bool visible) + { + const auto& level = get_level(); + const auto& layer = level.getLayer(layer_name); + for (auto& layer_renderer : renderers) + { + if (layer_renderer.layer_iid == layer.iid) + { + layer_renderer.visible = visible; + return; + } + } + } + + /** + * Get the LDtk world. + * + * @return A reference to the LDtk world. + */ + const ldtk::World& get_world() + { + return project.getWorld(); + } + + /** + * Get the LDtk level. + * + * @return A reference to the LDtk level. + */ + const ldtk::Level& get_level() + { + const auto& world = project.getWorld(); + return world.getLevel(level_name); + } + + /** + * Get the level size in pixels. + * + * @return A Vector2 containing the size of the level. + */ + Vector2 get_size() + { + const auto& level = get_level(); + return {level.size.x * scale, level.size.y * scale}; + } + + /** + * Get a layer by its name. + * + * @param name The name of the layer. + * @return A reference to the LDtk layer. + */ + const ldtk::Layer& get_layer_by_name(const std::string& name) + { + const auto& level = get_level(); + return level.getLayer(name); + } + + /** + * Get all entities across all layers in the level. + * + * @return A vector of LDtk entities. + */ + std::vector get_entities() + { + if (!is_init) + { + TraceLog(LOG_ERROR, "LDtk project not loaded."); + return {}; + } + const auto& level = get_level(); + const auto& layers = level.allLayers(); + + std::vector entities; + + for (const auto& layer : layers) + { + const auto& layer_entities = layer.allEntities(); + + entities.reserve(entities.size() + layer_entities.size()); + for (const auto& entity : layer_entities) + { + entities.push_back(&entity); + } + } + + return entities; + } + + /** + * Get all entities across all layers in the level with the given name. + * + * @param name The name of the entities to get. + * @return A vector of LDtk entities. + */ + std::vector get_entities_by_name(const std::string& name) + { + if (!is_init) + { + TraceLog(LOG_ERROR, "LDtk project not loaded."); + return {}; + } + const auto& level = get_level(); + const auto& layers = level.allLayers(); + + std::vector entities; + + for (const auto& layer : layers) + { + const auto& layer_entities = layer.getEntitiesByName(name); + + entities.reserve(entities.size() + layer_entities.size()); + for (const auto& entity : layer_entities) + { + entities.push_back(&entity.get()); + } + } + + return entities; + } + + /** + * Get all entities across all layers in the level with the given tag. + * + * @param tag The tag of the entities to get. + * @return A vector of LDtk entities. + */ + std::vector get_entities_by_tag(const std::string& tag) + { + if (!is_init) + { + TraceLog(LOG_ERROR, "LDtk project not loaded."); + return {}; + } + const auto& level = get_level(); + const auto& layers = level.allLayers(); + + std::vector entities; + + for (const auto& layer : layers) + { + const auto& layer_entities = layer.getEntitiesByTag(tag); + + entities.reserve(entities.size() + layer_entities.size()); + for (const auto& entity : layer_entities) + { + entities.push_back(&entity.get()); + } + } + + return entities; + } + + /** + * Get the first entity across all layers in the level with the given name. + * + * @param name The name of the entity to get. + * @return A pointer to the LDtk entity, or nullptr if not found. + */ + const ldtk::Entity* get_entity_by_name(const std::string& name) + { + auto entities = get_entities_by_name(name); + if (entities.empty()) + { + return nullptr; + } + + return entities[0]; + } + + /** + * Get the first entity across all layers in the level with the given tag. + * + * @param tag The tag of the entity to get. + * @return A pointer to the LDtk entity, or nullptr if not found. + */ + const ldtk::Entity* get_entity_by_tag(const std::string& tag) + { + auto entities = get_entities_by_tag(tag); + if (entities.empty()) + { + return nullptr; + } + + return entities[0]; + } + + /** + * Convert a grid point to pixels. + * + * @param point The grid point to convert. + * @return A Vector2 containing the point in pixels. + */ + Vector2 convert_to_pixels(const ldtk::IntPoint& point) const + { + return {point.x * scale, point.y * scale}; + } + + /** + * Convert a cell point to pixels. + * + * @param cell_point The cell point to convert. + * @param layer The LDtk layer the cell point is in. + */ + Vector2 convert_cells_to_pixels(const ldtk::IntPoint& cell_point, const ldtk::Layer& layer) const + { + float cell_size = static_cast(layer.getCellSize()); + return {cell_point.x * cell_size * scale, cell_point.y * cell_size * scale}; + } + + /** + * Convert a grid point to meters. + * + * @param point The grid point to convert. + * @return A b2Vec2 containing the point in meters. + */ + b2Vec2 convert_to_meters(const ldtk::IntPoint& point) const + { + return physics->convert_to_meters(convert_to_pixels(point)); + } + + /** + * Convert pixels to a grid point. + * + * @param pixels The pixel position to convert. + * @return An IntPoint containing the point in grid coordinates. + */ + ldtk::IntPoint convert_to_grid(const Vector2& pixels) const + { + return {static_cast(pixels.x / scale), static_cast(pixels.y / scale)}; + } + + /** + * Convert meters to a grid point. + * + * @param meters The meter position to convert. + * @return An IntPoint containing the point in grid coordinates. + */ + ldtk::IntPoint convert_to_grid(const b2Vec2& meters) const + { + auto pixels = physics->convert_to_pixels(meters); + return {static_cast(pixels.x / scale), static_cast(pixels.y / scale)}; + } + + /** + * Get the position of an entity in pixels. + * + * @param entity The entity to get the position of. + * @return A Vector2 containing the position of the entity in pixels. + */ + Vector2 get_entity_position(ldtk::Entity* entity) + { + return convert_to_pixels(entity->getPosition()); + } + + /** + * Get the size of an entity in pixels. + * + * @param entity The entity to get the size of. + * @return A Vector2 containing the size of the entity in pixels. + */ + Vector2 get_entity_size(ldtk::Entity* entity) + { + return convert_to_pixels(entity->getSize()); + } +}; diff --git a/src/engine/raycasts.h b/src/engine/raycasts.h new file mode 100644 index 0000000..47be9e3 --- /dev/null +++ b/src/engine/raycasts.h @@ -0,0 +1,256 @@ +#pragma once + +#include +#include + +#include "math_extensions.h" +#include + +/** + * The raycast result struct with information about a raycast. + */ +struct RayHit +{ + bool hit = false; + b2BodyId body = b2_nullBodyId; + float fraction = 1.0f; + float distance = 0.0f; + b2Vec2 point = {0, 0}; + b2Vec2 normal = {0, 0}; +}; + +/** + * The raycast context struct used for passing data during a raycast call. + * For internal use only. + */ +struct RayContextClosest +{ + RayHit closest; + b2BodyId ignore_body = b2_nullBodyId; + b2Vec2 translation; +}; + +/** + * Raycast callback for finding the closest hit. + * For internal use only. + * + * @param shape_id The ID of the shape that was hit. + * @param point The point where the ray hit the shape. + * @param normal The normal of the shape at the hit point. + * @param fraction The fraction of the ray length where the hit occurred. + * @param context The context for the raycast. + * @return The fraction of the ray length to continue searching. + */ +static float raycast_closest_callback(b2ShapeId shape_id, b2Vec2 point, b2Vec2 normal, float fraction, void* context) +{ + auto* ctx = static_cast(context); + // Check for the ignored body. + b2BodyId hit_body = b2Shape_GetBody(shape_id); + if (b2Body_IsValid(ctx->ignore_body) && b2Body_IsValid(hit_body) && hit_body.index1 == ctx->ignore_body.index1) + { + // Continue searching. + return 1.0f; + } + + if (fraction < ctx->closest.fraction) + { + ctx->closest.hit = true; + ctx->closest.fraction = fraction; + ctx->closest.distance = b2Length(ctx->translation) * fraction; + ctx->closest.point = point; + ctx->closest.normal = normal; + ctx->closest.body = hit_body; + } + return fraction; +} + +/** + * Cast a ray and return the closest hit. + * + * @param world The world to cast the ray in. + * @param ignore_body The body to ignore. + * @param origin The starting point of the ray. + * @param translation The length of the ray. + * @return Information about the closest hit. + */ +RayHit raycast_closest(b2WorldId world, b2BodyId ignore_body, b2Vec2 origin, b2Vec2 translation) +{ + RayContextClosest ctx; + ctx.ignore_body = ignore_body; + ctx.translation = translation; + + b2QueryFilter filter = b2DefaultQueryFilter(); + b2World_CastRay(world, origin, translation, filter, raycast_closest_callback, &ctx); + + return ctx.closest; +} + +/** + * The raycast context struct used for passing data during a raycast call. + * For internal use only. + */ +struct RayContextAll +{ + std::vector all; + b2BodyId ignore_body = b2_nullBodyId; + b2Vec2 translation; +}; + +/** + * Raycast callback for finding the closest hit. + * For internal use only. + * + * @param shape_id The ID of the shape that was hit. + * @param point The point where the ray hit the shape. + * @param normal The normal of the shape at the hit point. + * @param fraction The fraction of the ray length where the hit occurred. + * @param context The context for the raycast. + * @return The fraction of the ray length to continue searching. + */ +static float raycast_all_callback(b2ShapeId shape_id, b2Vec2 point, b2Vec2 normal, float fraction, void* context) +{ + auto* ctx = static_cast(context); + // Check for the ignored body. + b2BodyId hit_body = b2Shape_GetBody(shape_id); + if (b2Body_IsValid(ctx->ignore_body) && b2Body_IsValid(hit_body) && hit_body.index1 == ctx->ignore_body.index1) + { + // Continue searching. + return 1.0f; + } + + RayHit hit = {true, hit_body, fraction, b2Length(ctx->translation) * fraction, point, normal}; + ctx->all.push_back(hit); + return fraction; +} + +/** + * Cast a ray and return all hit bodies on the ray. + * + * @param world The world to cast the ray in. + * @param ignore_body The body to ignore. + * @param origin The starting point of the ray. + * @param translation The length of the ray. + * @return Information about the hit bodies. + */ +std::vector raycast_all(b2WorldId world, b2BodyId ignore_body, b2Vec2 origin, b2Vec2 translation) +{ + RayContextAll ctx; + ctx.ignore_body = ignore_body; + ctx.translation = translation; + + b2QueryFilter filter = b2DefaultQueryFilter(); + b2World_CastRay(world, origin, translation, filter, raycast_all_callback, &ctx); + + return ctx.all; +} + +/** + * The shape hit context struct used for passing data during a shape overlap call. + * For internal use only. + */ +struct ShapeHitContext +{ + b2BodyId ignore_body = b2_nullBodyId; + std::vector hits; +}; + +/** + * Shape hit callback for finding shape overlaps. + * For internal use only. + * + * @param shape_id The ID of the shape that was hit. + * @param point The point where the ray hit the shape. + * @param normal The normal of the shape at the hit point. + * @param fraction The fraction of the ray length where the hit occurred. + * @param context The context for the raycast. + * @return The fraction of the ray length to continue searching. + */ +static bool shape_hit_callback(b2ShapeId shape_id, void* context) +{ + auto* ctx = static_cast(context); + // Check for the ignored body. + b2BodyId hit_body = b2Shape_GetBody(shape_id); + if (b2Body_IsValid(ctx->ignore_body) && b2Body_IsValid(hit_body) && hit_body.index1 == ctx->ignore_body.index1) + { + // Continue searching. + return true; + } + + ctx->hits.push_back(hit_body); + return true; +} + +/** + * Cast a ray and return the closest hit. + * + * @param world The world to cast the ray in. + * @param ignore_body The body to ignore. + * @param origin The starting point of the ray. + * @param translation The length of the ray. + * @return Information about the closest hit. + */ +std::vector shape_hit(b2WorldId world, b2BodyId ignore_body, b2ShapeProxy proxy) +{ + ShapeHitContext ctx; + ctx.ignore_body = ignore_body; + + b2QueryFilter filter = b2DefaultQueryFilter(); + b2World_OverlapShape(world, &proxy, filter, shape_hit_callback, &ctx); + + // Remove duplicate bodies. + std::sort(ctx.hits.begin(), ctx.hits.end()); + ctx.hits.erase(std::unique(ctx.hits.begin(), ctx.hits.end()), ctx.hits.end()); + + return ctx.hits; +} + +/** + * Check for circle shape overlaps in the world. + * + * @param world The world to check in. + * @param ignore_body The body to ignore. + * @param center The center of the circle. + * @param radius The radius of the circle. + * @return A vector of body IDs that overlap with the circle. + */ +std::vector circle_hit(b2WorldId world, b2BodyId ignore_body, b2Vec2 center, float radius) +{ + b2Circle circle = {center, radius}; + b2ShapeProxy proxy = b2MakeProxy(&circle.center, 1, circle.radius); + return shape_hit(world, ignore_body, proxy); +} + +/** + * Check for rectangle shape overlaps in the world. + * + * @param world The world to check in. + * @param ignore_body The body to ignore. + * @param center The center of the rectangle. + * @param size The size of the rectangle. + * @param rotation The rotation of the rectangle in degrees. + * @return A vector of body IDs that overlap with the rectangle. + */ +std::vector +rectangle_hit(b2WorldId world, b2BodyId ignore_body, b2Vec2 center, b2Vec2 size, float rotation = 0.0f) +{ + // 4 corners in local space + b2Vec2 half = {size.x / 2.0f, size.y / 2.0f}; + b2Vec2 local[4] = { + {-half.x, -half.y}, + {half.x, -half.y}, + {half.x, half.y}, + {-half.x, half.y}, + }; + + // transform corners to world space + auto rot = b2MakeRot(rotation * DEG2RAD); + b2Transform transform = {center, rot}; + b2Vec2 pts[4]; + for (int i = 0; i < 4; ++i) + { + pts[i] = b2TransformPoint(transform, local[i]); + } + + b2ShapeProxy proxy = b2MakeProxy(pts, 4, 0); + return shape_hit(world, ignore_body, proxy); +} diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..cd75f31 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,47 @@ +#include "samples/collecting_game.h" +#include "samples/fighting_game.h" +#include "samples/title_screen.h" +#include "samples/zombie_game.h" + +// Emscripten is used for web builds. +#ifdef __EMSCRIPTEN__ +#include +#endif + +Game game; + +void update() +{ + float delta_time = GetFrameTime(); + game.update(delta_time); +} + +// TODO: Make this a GUI app for each platform. +int main(int argc, char** argv) +{ + // Initialize the window + game.add_manager(1280, 720, "Game Jam Kit"); + auto font_manager = game.add_manager(); + game.init(); + + // Game::init initializes all managers, so we can load fonts now. + font_manager->load_font("Roboto", "assets/fonts/Roboto.ttf", 64); + font_manager->load_font("Tiny5", "assets/fonts/Tiny5.ttf", 64); + font_manager->set_texture_filter("Roboto", TEXTURE_FILTER_BILINEAR); + + game.add_scene("title"); + game.add_scene("fighting"); + game.add_scene("collecting"); + game.add_scene("zombie"); + +// Main game loop +#ifdef __EMSCRIPTEN__ + emscripten_set_main_loop(update, 0, true); +#else + while (!WindowShouldClose()) + { + update(); + } +#endif + return 0; +} diff --git a/src/samples/collecting_game.h b/src/samples/collecting_game.h new file mode 100644 index 0000000..f7316aa --- /dev/null +++ b/src/samples/collecting_game.h @@ -0,0 +1,577 @@ +/** + * Demonstration of split screen camera system and sensors for collecting items. + */ + +#pragma once + +#include "engine/prefabs/includes.h" + +/** + * A basic collecting character. + * See also engine/prefabs/game_objects.h for PlatformerCharacter. + */ +class CollectingCharacter : public GameObject +{ +public: + CharacterParams p; + PhysicsService* physics; + LevelService* level; + BodyComponent* body; + PlatformerMovementComponent* movement; + AnimationController* animation; + MultiComponent* sounds; + SoundComponent* jump_sound; + SoundComponent* die_sound; + int score = 0; + + bool grounded = false; + bool on_wall_left = false; + bool on_wall_right = false; + float coyote_timer = 0.0f; + float jump_buffer_timer = 0.0f; + int gamepad = 0; + int player_number = 1; + float width = 24.0f; + float height = 24.0f; + + CollectingCharacter(CharacterParams p, int player_number = 1) : + p(p), + player_number(player_number), + gamepad(player_number - 1), + width(p.width), + height(p.height) + { + } + + void init() override + { + + // Grab the physics service. + // All get_service calls should be done in init(). get_service is not quick and this also allows us to test + // that all services exist during init time. + physics = scene->get_service(); + + // Setup the character's physics body using the BodyComponent initialization callback lambda. + body = add_component( + [=](BodyComponent& b) + { + b2BodyDef body_def = b2DefaultBodyDef(); + body_def.type = b2_dynamicBody; + body_def.fixedRotation = true; + body_def.isBullet = true; + // All units in box2d are in meters. + body_def.position = physics->convert_to_meters(p.position); + // Assign this GameObject as the user data so we can find it in collision callbacks. + body_def.userData = this; + b.id = b2CreateBody(physics->world, &body_def); + + b2SurfaceMaterial body_material = b2DefaultSurfaceMaterial(); + body_material.friction = p.friction; + body_material.restitution = p.restitution; + + b2ShapeDef box_shape_def = b2DefaultShapeDef(); + box_shape_def.density = p.density; + box_shape_def.material = body_material; + + // Needed to get sensor events. + box_shape_def.enableSensorEvents = true; + + // We use a rounded box which helps with getting stuck on edges. + b2Polygon body_polygon = b2MakeRoundedBox(physics->convert_to_meters(p.width / 2.0f), + physics->convert_to_meters(p.height / 2.0f), + physics->convert_to_meters(0.25)); + b2CreatePolygonShape(b.id, &box_shape_def, &body_polygon); + }); + + PlatformerMovementParams mp; + mp.width = p.width; + mp.height = p.height; + movement = add_component(mp); + + level = scene->get_service(); + + // TODO: Is only allowing one component per type really as cool an idea as I thought? + sounds = add_component>(); + jump_sound = sounds->add_component("jump", "assets/sounds/jump.wav"); + die_sound = sounds->add_component("die", "assets/sounds/die.wav"); + + // Setup animations. + animation = add_component(body); + if (player_number == 1) + { + animation->add_animation("run", + std::vector{"assets/pixel_platformer/characters/green_1.png", + "assets/pixel_platformer/characters/green_2.png"}, + 10.0f); + } + else if (player_number == 2) + { + animation->add_animation("run", + std::vector{"assets/pixel_platformer/characters/blue_1.png", + "assets/pixel_platformer/characters/blue_2.png"}, + 10.0f); + } + else if (player_number == 3) + { + animation->add_animation("run", + std::vector{"assets/pixel_platformer/characters/pink_1.png", + "assets/pixel_platformer/characters/pink_2.png"}, + 10.0f); + } + else if (player_number == 4) + { + animation->add_animation("run", + std::vector{"assets/pixel_platformer/characters/yellow_1.png", + "assets/pixel_platformer/characters/yellow_2.png"}, + 10.0f); + } + } + + void update(float delta_time) override + { + // Get input and route to movement component. + float deadzone = 0.1f; + + const bool jump_pressed = + IsKeyPressed(KEY_W) || IsGamepadButtonPressed(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_DOWN); + const bool jump_held = IsKeyDown(KEY_W) || IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_DOWN); + + float move_x = 0.0f; + move_x = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_X); + if (fabsf(move_x) < deadzone) + { + move_x = 0.0f; + } + if (IsKeyDown(KEY_D) || IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) + { + move_x = 1.0f; + } + else if (IsKeyDown(KEY_A) || IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) + { + move_x = -1.0f; + } + + movement->set_input(move_x, jump_pressed, jump_held); + + if (movement->grounded && jump_pressed) + { + jump_sound->play(); + } + + if (fabsf(movement->move_x) > 0.1f) + { + animation->play("run"); + animation->flip_x = movement->move_x > 0.0f; + } + else + { + animation->pause(); + } + } + + void die() + { + // Re-spawn at start position. + body->set_position(p.position); + body->set_velocity(Vector2{0.0f, 0.0f}); + die_sound->play(); + } +}; + +enum EnemyType +{ + Bat, + DrillHead, + BlockHead +}; + +/** + * An enemy. + */ +class Enemy : public GameObject +{ +public: + Vector2 start; + Vector2 end; + PhysicsService* physics; + BodyComponent* body; + AnimationController* animation; + EnemyType type; + float radius = 12.0f; + + Enemy(EnemyType type, Vector2 start, Vector2 end) : type(type), start(start), end(end) {} + void init_object() override + { + physics = scene->get_service(); + + body = add_component( + [=](BodyComponent& b) + { + b2BodyDef body_def = b2DefaultBodyDef(); + body_def.type = b2_kinematicBody; + body_def.position = physics->convert_to_meters(start); + body_def.userData = this; + b.id = b2CreateBody(physics->world, &body_def); + + b2SurfaceMaterial body_material = b2DefaultSurfaceMaterial(); + + b2ShapeDef circle_shape_def = b2DefaultShapeDef(); + circle_shape_def.density = 1.0f; + circle_shape_def.material = body_material; + circle_shape_def.isSensor = true; + circle_shape_def.enableSensorEvents = true; + + b2Circle circle_shape = {b2Vec2_zero, physics->convert_to_meters(radius)}; + b2CreateCircleShape(b.id, &circle_shape_def, &circle_shape); + }); + + animation = add_component(body); + if (type == Bat) + { + animation->add_animation("move", + std::vector{"assets/pixel_platformer/enemies/bat_1.png", + "assets/pixel_platformer/enemies/bat_2.png", + "assets/pixel_platformer/enemies/bat_3.png"}, + 5.0f); + } + else if (type == DrillHead) + { + animation->add_animation("move", + std::vector{"assets/pixel_platformer/enemies/drill_head_1.png", + "assets/pixel_platformer/enemies/drill_head_2.png"}, + 5.0f); + } + else if (type == BlockHead) + { + animation->add_animation("move", + std::vector{"assets/pixel_platformer/enemies/block_head_1.png", + "assets/pixel_platformer/enemies/block_head_2.png"}, + 5.0f); + } + animation->play("move"); + + GameObject::init_object(); + + // Start moving towards end position. + Vector2 to_end = end - body->get_position_pixels(); + to_end = Vector2Normalize(to_end); + body->set_velocity(to_end * 50.0f); + } + + void update(float delta_time) override + { + b2Circle circle_shape = {body->get_position_meters(), physics->convert_to_meters(radius * 2.0f)}; + if (b2PointInCircle(physics->convert_to_meters(end), &circle_shape)) + { + // Move towards start position. + Vector2 to_start = start - body->get_position_pixels(); + to_start = Vector2Normalize(to_start); + body->set_velocity(to_start * 50.0f); + } + else if (b2PointInCircle(physics->convert_to_meters(start), &circle_shape)) + { + // Move towards end position. + Vector2 to_end = end - body->get_position_pixels(); + to_end = Vector2Normalize(to_end); + body->set_velocity(to_end * 50.0f); + } + + // Check for collisions. + auto sensor_contacts = body->get_sensor_overlaps(); + for (auto contact_body_id : sensor_contacts) + { + auto user_data = static_cast(b2Body_GetUserData(contact_body_id)); + if (user_data && user_data->has_tag("character")) + { + // Hit player. + CollectingCharacter* character = static_cast(user_data); + character->die(); + } + } + + // Flip based on velocity. + Vector2 velocity = body->get_velocity_pixels(); + animation->flip_x = velocity.x > 0.0f; + } +}; + +/** + * A collectible coin. + */ +class Coin : public GameObject +{ +public: + Vector2 position; + PhysicsService* physics; + BodyComponent* body; + AnimationController* animation; + SoundComponent* collect_sound; + + Coin(Vector2 position) : position(position) {} + void init() override + { + physics = scene->get_service(); + + body = add_component( + [=](BodyComponent& b) + { + b2BodyDef body_def = b2DefaultBodyDef(); + body_def.type = b2_staticBody; + body_def.position = physics->convert_to_meters(position); + body_def.userData = this; + b.id = b2CreateBody(physics->world, &body_def); + + b2SurfaceMaterial body_material = b2DefaultSurfaceMaterial(); + + b2ShapeDef circle_shape_def = b2DefaultShapeDef(); + circle_shape_def.density = 1.0f; + circle_shape_def.material = body_material; + circle_shape_def.isSensor = true; + circle_shape_def.enableSensorEvents = true; + + b2Circle circle_shape = {b2Vec2_zero, physics->convert_to_meters(8.0f)}; + b2CreateCircleShape(b.id, &circle_shape_def, &circle_shape); + }); + + animation = add_component(body); + animation->add_animation("spin", + std::vector{"assets/pixel_platformer/items/coin_1.png", + "assets/pixel_platformer/items/coin_2.png"}, + 5.0f); + animation->play("spin"); + + collect_sound = add_component("assets/sounds/coin.wav"); + } + + void update(float delta_time) override + { + auto sensor_contacts = body->get_sensor_overlaps(); + for (auto contact_body_id : sensor_contacts) + { + auto user_data = static_cast(b2Body_GetUserData(contact_body_id)); + if (user_data && user_data->has_tag("character")) + { + // Collected by character. + collect_sound->play(); + + // Disable the coin. + is_active = false; + body->disable(); + + // Increase the score on the character. + CollectingCharacter* character = static_cast(user_data); + character->score += 1; + break; + } + } + } +}; + +/** + * A collecting game scene. + */ +class CollectingScene : public Scene +{ +public: + WindowManager* window_manager; + FontManager* font_manager; + std::vector> characters; + LevelService* level; + PhysicsService* physics; + std::vector> cameras; + Vector2 screen_size; + float scale = 2.5f; + + void init_services() override + { + // TextureService and SoundService are needed by other components and game objects. + add_service(); + add_service(); + + // PhysicsService is used by LevelService and must be added first. + physics = add_service(); + // Setup LDtk level. Checkout the file in LDtk editor to see how it's built. + std::vector collision_names = {"walls", "clouds", "trees"}; + level = add_service("assets/levels/collecting.ldtk", "Level", collision_names); + } + + void init() override + { + window_manager = game->get_manager(); + font_manager = game->get_manager(); + + const auto& entities_layer = level->get_layer_by_name("Entities"); + + // Create player characters at the "Start" entities. + auto player_entities = level->get_entities_by_name("Start"); + + for (int i = 0; i < player_entities.size() && i < 4; i++) + { + auto& player_entity = player_entities[i]; + CharacterParams params; + params.position = level->convert_to_pixels(player_entity->getPosition()); + params.width = 16; + params.height = 24; + auto character = add_game_object(params, i + 1); + character->add_tag("character"); + characters.push_back(character); + } + + // Create enemies at the each enemy entity. + auto bat_entities = level->get_entities_by_name("Bat"); + for (auto& bat_entity : bat_entities) + { + auto start_point = bat_entity->getPosition(); + Vector2 start_position = level->convert_to_pixels(start_point); + ldtk::IntPoint end_point = bat_entity->getField("end").value(); + // Annoyingly, Point fields in LDtk are in cell coordinates rather than pixel coordinates, and the cell + // size is dependent on the layer. + Vector2 end_position = level->convert_cells_to_pixels(end_point, entities_layer); + auto enemy = add_game_object(EnemyType::Bat, start_position, end_position); + enemy->add_tag("enemy"); + } + + auto drill_entities = level->get_entities_by_name("DrillHead"); + for (auto& drill_entity : drill_entities) + { + auto start_point = drill_entity->getPosition(); + Vector2 start_position = level->convert_to_pixels(start_point); + ldtk::IntPoint end_point = drill_entity->getField("end").value(); + Vector2 end_position = level->convert_cells_to_pixels(end_point, entities_layer); + auto enemy = add_game_object(EnemyType::DrillHead, start_position, end_position); + enemy->add_tag("enemy"); + } + + auto block_entities = level->get_entities_by_name("BlockHead"); + for (auto& block_entity : block_entities) + { + auto start_point = block_entity->getPosition(); + Vector2 start_position = level->convert_to_pixels(start_point); + ldtk::IntPoint end_point = block_entity->getField("end").value(); + Vector2 end_position = level->convert_cells_to_pixels(end_point, entities_layer); + auto enemy = add_game_object(EnemyType::BlockHead, start_position, end_position); + enemy->add_tag("enemy"); + } + + // Create coins at the "Coin" entities. + auto coin_entities = level->get_entities_by_name("Coin"); + for (auto& coin_entity : coin_entities) + { + Vector2 coin_position = level->convert_to_pixels(coin_entity->getPosition()); + auto coin = add_game_object(coin_position); + coin->add_tag("coin"); + } + + // Setup cameras. + screen_size = + Vector2{static_cast(window_manager->get_width()), static_cast(window_manager->get_height())}; + for (int i = 0; i < characters.size(); i++) + { + auto cam = add_game_object(screen_size / scale, level->get_size()); + cameras.push_back(cam); + } + } + + void update(float delta_time) override + { + // Set the camera target to follow each character. + for (int i = 0; i < cameras.size(); i++) + { + cameras[i]->target = characters[i]->body->get_position_pixels(); + } + + auto new_screen_size = Vector2{static_cast(GetScreenWidth()), static_cast(GetScreenHeight())}; + if (new_screen_size != screen_size) + { + // Window resized, update cameras. + screen_size = new_screen_size; + // Scale the cameras so they are zoomed in when drawn. + float screen_scale = window_manager->get_width() / screen_size.x; + for (auto camera : cameras) + { + camera->size = screen_size / scale * screen_scale; + camera->camera.offset = {camera->size.x / 2.0f, camera->size.y / 2.0f}; + UnloadRenderTexture(camera->renderer); + camera->renderer = LoadRenderTexture((int)camera->size.x, (int)camera->size.y); + } + } + + // Trigger scene change on Enter key or gamepad start button. + if (IsKeyPressed(KEY_ENTER) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_MIDDLE_RIGHT)) + { + game->go_to_scene_next(); + } + } + + /** + * We override draw_scene instead of draw to control when Scene::draw_scene is called. + * This allows us to draw the scene inside the camera's Begin/End block and render the camera to a texture. + */ + void draw_scene() override + { + // The scene needs to be rendered once per camera. + for (auto camera : cameras) + { + camera->draw_begin(); + Scene::draw_scene(); + // physics->draw_debug(); + // camera->draw_debug(); + camera->draw_end(); + } + + // Draw the cameras. + ClearBackground(MAGENTA); + + // Draw each camera's texture side by side. + for (int i = 0; i < cameras.size(); i++) + { + if (i == 0) + { + cameras[i]->draw_texture_pro(0, 0, screen_size.x / 2.0f, screen_size.y / 2.0f); + DrawTextEx(font_manager->get_font("Tiny5"), + TextFormat("Score: %d", characters[0]->score), + Vector2{20.0f, 20.0f}, + 40.0f, + 2.0f, + BLACK); + } + else if (i == 1) + { + cameras[i]->draw_texture_pro(screen_size.x / 2.0f, 0, screen_size.x / 2.0f, screen_size.y / 2.0f); + DrawTextEx(font_manager->get_font("Tiny5"), + TextFormat("Score: %d", characters[1]->score), + Vector2{screen_size.x / 2.0f + 20.0f, 20.0f}, + 40.0f, + 2.0f, + BLACK); + } + else if (i == 2) + { + cameras[i]->draw_texture_pro(0, screen_size.y / 2.0f, screen_size.x / 2.0f, screen_size.y / 2.0f); + DrawTextEx(font_manager->get_font("Tiny5"), + TextFormat("Score: %d", characters[2]->score), + Vector2{20.0f, screen_size.y / 2.0f + 20.0f}, + 40.0f, + 2.0f, + BLACK); + } + else if (i == 3) + { + cameras[i]->draw_texture_pro(screen_size.x / 2.0f, + screen_size.y / 2.0f, + screen_size.x / 2.0f, + screen_size.y / 2.0f); + DrawTextEx(font_manager->get_font("Tiny5"), + TextFormat("Score: %d", characters[3]->score), + Vector2{screen_size.x / 2.0f + 20.0f, screen_size.y / 2.0f + 20.0f}, + 40.0f, + 2.0f, + BLACK); + } + } + + // Draw split lines. + DrawLineEx(Vector2{screen_size.x / 2.0f, 0}, Vector2{screen_size.x / 2.0f, screen_size.y}, 4.0f, GRAY); + DrawLineEx(Vector2{0, screen_size.y / 2.0f}, Vector2{screen_size.x, screen_size.y / 2.0f}, 4.0f, GRAY); + } +}; diff --git a/src/samples/fighting_game.h b/src/samples/fighting_game.h new file mode 100644 index 0000000..53f11a8 --- /dev/null +++ b/src/samples/fighting_game.h @@ -0,0 +1,564 @@ +/** + * Demonstration of a shared camera, multiple characters, and basic fighting mechanics. + * Shows how to setup a level with the LevelService and physics bodies with the PhysicsService. + * Also shows how to use animations and sounds. + */ + +#pragma once + +#include "engine/prefabs/includes.h" + +/** + * A basic fighting character. + * See also engine/prefabs/game_objects.h for PlatformerCharacter. + */ +class FightingCharacter : public GameObject +{ +public: + CharacterParams p; + PhysicsService* physics; + LevelService* level; + BodyComponent* body; + PlatformerMovementComponent* movement; + AnimationController* animation; + MultiComponent* sounds; + SoundComponent* jump_sound; + SoundComponent* hit_sound; + SoundComponent* die_sound; + + bool grounded = false; + bool on_wall_left = false; + bool on_wall_right = false; + float coyote_timer = 0.0f; + float jump_buffer_timer = 0.0f; + int gamepad = 0; + int player_number = 1; + float width = 24.0f; + float height = 40.0f; + bool fall_through = false; + float fall_through_timer = 0.0f; + float fall_through_duration = 0.2f; + float attack_display_timer = 0.0f; + float attack_display_duration = 0.1f; + bool attack = false; + + FightingCharacter(CharacterParams p, int player_number = 1) : + p(p), + player_number(player_number), + gamepad(player_number - 1), + width(p.width), + height(p.height) + { + } + + void init() override + { + + // Grab the physics service. + // All get_service calls should be done in init(). get_service is not quick and this also allows us to test + // that all services exist during init time. + physics = scene->get_service(); + + // Setup the character's physics body using the BodyComponent initialization callback lambda. + body = add_component( + [=](BodyComponent& b) + { + b2BodyDef body_def = b2DefaultBodyDef(); + body_def.type = b2_dynamicBody; + body_def.fixedRotation = true; + body_def.isBullet = true; + // All units in box2d are in meters. + body_def.position = physics->convert_to_meters(p.position); + b.id = b2CreateBody(physics->world, &body_def); + + b2SurfaceMaterial body_material = b2DefaultSurfaceMaterial(); + body_material.friction = p.friction; + body_material.restitution = p.restitution; + + b2ShapeDef box_shape_def = b2DefaultShapeDef(); + box_shape_def.density = p.density; + box_shape_def.material = body_material; + + // Needed to presolve one-way behavior. + box_shape_def.enablePreSolveEvents = true; + + // We use a rounded box which helps with getting stuck on edges. + b2Polygon body_polygon = b2MakeRoundedBox(physics->convert_to_meters(p.width / 2.0f), + physics->convert_to_meters(p.height / 2.0f), + physics->convert_to_meters(0.25)); + b2CreatePolygonShape(b.id, &box_shape_def, &body_polygon); + }); + + PlatformerMovementParams mp; + mp.width = p.width; + mp.height = p.height; + movement = add_component(mp); + + level = scene->get_service(); + + // TODO: Is only allowing one component per type really as cool an idea as I thought? + sounds = add_component>(); + jump_sound = sounds->add_component("jump", "assets/sounds/jump.wav"); + hit_sound = sounds->add_component("hit", "assets/sounds/hit.wav"); + die_sound = sounds->add_component("die", "assets/sounds/die.wav"); + + // Setup animations. + animation = add_component(body); + if (player_number == 1) + { + animation->add_animation("run", + std::vector{"assets/sunnyland/fox/run-1.png", + "assets/sunnyland/fox/run-2.png", + "assets/sunnyland/fox/run-3.png", + "assets/sunnyland/fox/run-4.png", + "assets/sunnyland/fox/run-5.png", + "assets/sunnyland/fox/run-6.png"}, + 10.0f); + animation->add_animation("idle", + std::vector{"assets/sunnyland/fox/idle-1.png", + "assets/sunnyland/fox/idle-2.png", + "assets/sunnyland/fox/idle-3.png", + "assets/sunnyland/fox/idle-4.png"}, + 5.0f); + animation->add_animation("jump", std::vector{"assets/sunnyland/fox/jump-1.png"}, 0.0f); + animation->add_animation("fall", std::vector{"assets/sunnyland/fox/jump-2.png"}, 0.0f); + + animation->origin.y += 4; + } + else if (player_number == 2) + { + animation->add_animation("run", + std::vector{"assets/sunnyland/bunny/run-1.png", + "assets/sunnyland/bunny/run-2.png", + "assets/sunnyland/bunny/run-3.png", + "assets/sunnyland/bunny/run-4.png", + "assets/sunnyland/bunny/run-5.png", + "assets/sunnyland/bunny/run-6.png"}, + 10.0f); + animation->add_animation("idle", + std::vector{"assets/sunnyland/bunny/idle-1.png", + "assets/sunnyland/bunny/idle-2.png", + "assets/sunnyland/bunny/idle-3.png", + "assets/sunnyland/bunny/idle-4.png"}, + 10.0f); + animation->add_animation("jump", std::vector{"assets/sunnyland/bunny/jump-1.png"}, 0.0f); + animation->add_animation("fall", std::vector{"assets/sunnyland/bunny/jump-2.png"}, 0.0f); + + animation->origin.y += 8; + } + else if (player_number == 3) + { + animation->add_animation("run", + std::vector{"assets/sunnyland/squirrel/run-1.png", + "assets/sunnyland/squirrel/run-2.png", + "assets/sunnyland/squirrel/run-3.png", + "assets/sunnyland/squirrel/run-4.png", + "assets/sunnyland/squirrel/run-5.png", + "assets/sunnyland/squirrel/run-6.png"}, + 10.0f); + animation->add_animation("idle", + std::vector{"assets/sunnyland/squirrel/idle-1.png", + "assets/sunnyland/squirrel/idle-2.png", + "assets/sunnyland/squirrel/idle-3.png", + "assets/sunnyland/squirrel/idle-4.png", + "assets/sunnyland/squirrel/idle-5.png", + "assets/sunnyland/squirrel/idle-6.png", + "assets/sunnyland/squirrel/idle-7.png", + "assets/sunnyland/squirrel/idle-8.png"}, + 8.0f); + animation->add_animation("jump", + std::vector{"assets/sunnyland/squirrel/jump-1.png", + "assets/sunnyland/squirrel/jump-2.png", + "assets/sunnyland/squirrel/jump-3.png", + "assets/sunnyland/squirrel/jump-4.png"}, + 15.0f); + animation->origin.y += 7; + } + else if (player_number == 4) + { + animation->add_animation("run", + std::vector{"assets/sunnyland/imp/run-1.png", + "assets/sunnyland/imp/run-2.png", + "assets/sunnyland/imp/run-3.png", + "assets/sunnyland/imp/run-4.png", + "assets/sunnyland/imp/run-5.png", + "assets/sunnyland/imp/run-6.png", + "assets/sunnyland/imp/run-7.png", + "assets/sunnyland/imp/run-8.png"}, + 10.0f); + animation->add_animation("idle", + std::vector{"assets/sunnyland/imp/idle-1.png", + "assets/sunnyland/imp/idle-2.png", + "assets/sunnyland/imp/idle-3.png", + "assets/sunnyland/imp/idle-4.png"}, + 10.0f); + animation->add_animation("jump", std::vector{"assets/sunnyland/imp/jump-1.png"}, 0.0f); + animation->add_animation("fall", std::vector{"assets/sunnyland/imp/jump-4.png"}, 0.0f); + animation->origin.y += 10; + } + } + + void update(float delta_time) override + { + // Get input and route to movement component. + float deadzone = 0.1f; + + const bool jump_pressed = + IsKeyPressed(KEY_W) || IsGamepadButtonPressed(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_DOWN); + const bool jump_held = IsKeyDown(KEY_W) || IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_DOWN); + + float move_x = 0.0f; + move_x = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_X); + if (fabsf(move_x) < deadzone) + { + move_x = 0.0f; + } + if (IsKeyDown(KEY_D) || IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) + { + move_x = 1.0f; + } + else if (IsKeyDown(KEY_A) || IsGamepadButtonDown(gamepad, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) + { + move_x = -1.0f; + } + + movement->set_input(move_x, jump_pressed, jump_held); + + if (movement->grounded && jump_pressed) + { + jump_sound->play(); + } + + if (fabsf(movement->move_x) > 0.1f) + { + animation->play("run"); + animation->flip_x = movement->move_x < 0.0f; + } + else + { + animation->play("idle"); + } + + if (!movement->grounded) + { + // Squirrel doesn't have a fall animation so we do this monstrosity. + if (player_number != 3) + { + if (body->get_velocity_meters().y < 0.0f) + { + animation->play("jump"); + } + else + { + + animation->play("fall"); + } + } + else + { + animation->play("jump"); + } + } + + // Custom one-way platform fall-through logic. + float move_y = GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_Y); + if (IsKeyPressed(KEY_S) || IsGamepadButtonPressed(gamepad, GAMEPAD_BUTTON_LEFT_FACE_DOWN) || move_y > 0.5f) + { + fall_through = true; + fall_through_timer = fall_through_duration; + } + + if (fall_through_timer > 0.0f) + { + fall_through_timer = std::max(0.0f, fall_through_timer - delta_time); + if (fall_through_timer == 0.0f) + { + fall_through = false; + } + } + + // Attack logic. + if (IsKeyPressed(KEY_SPACE) || IsGamepadButtonPressed(gamepad, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) + { + attack = true; + attack_display_timer = attack_display_duration; + Vector2 position = body->get_position_pixels(); + position.x += (width / 2.0f + 8.0f) * (animation->flip_x ? -1.0f : 1.0f); + auto bodies = physics->circle_overlap(position, 8.0f, body->id); + for (auto& other_body : bodies) + { + // Apply impulse to other character. + b2Vec2 impulse = b2Vec2{animation->flip_x ? -10.0f : 10.0f, -10.0f}; + b2Body_ApplyLinearImpulse(other_body, impulse, b2Body_GetPosition(other_body), true); + hit_sound->play(); + } + } + + if (attack_display_timer > 0.0f) + { + attack_display_timer = std::max(0.0f, attack_display_timer - delta_time); + if (attack_display_timer == 0.0f) + { + attack = false; + } + } + + // Death and respawn logic. + if (body->get_position_pixels().y > level->get_size().y + 200.0f) + { + // Re-spawn at start position. + body->set_position(p.position); + body->set_velocity(Vector2{0.0f, 0.0f}); + die_sound->play(); + } + } + + void draw() override + { + // Draw attack indicator. + if (attack) + { + Vector2 position = body->get_position_pixels(); + position.x += (width / 2.0f + 8.0f) * (animation->flip_x ? -1.0f : 1.0f); + DrawCircleV(position, 8.0f, Fade(RED, 0.5f)); + } + // Animations are drawn by the AnimationController component. + } + + /** + * Pre-solve callback for one-way platforms. + * + * @param body_a The first body in the collision. + * @param body_b The second body in the collision. + * @param manifold The contact manifold. + * @param platforms The list of one-way platform StaticBox objects. + * @return true to enable the contact, false to disable it. + */ + bool PreSolve(b2BodyId body_a, + b2BodyId body_b, + b2Manifold* manifold, + std::vector> platforms) const + { + float sign = 0.0f; + b2BodyId other = b2_nullBodyId; + + // Check which body is the character. + if (body_a == body->id) + { + sign = 1.0f; + other = body_b; + } + else if (body_b == body->id) + { + sign = -1.0f; + other = body_a; + } + + if (sign * manifold->normal.y < 0.5f) + { + // Normal points down, disable contact. + return false; + } + + if (fall_through) + { + for (auto& platform : platforms) + { + if (other == platform->body) + { + // Character is in fall-through state, disable contact. + return false; + } + } + } + + // Otherwise, enable contact. + return true; + } +}; + +/** + * A fighting game scene. + */ +class FightingScene : public Scene +{ +public: + RenderTexture2D renderer; + Rectangle render_rect; + std::vector> platforms; + std::vector> characters; + LevelService* level; + PhysicsService* physics; + std::shared_ptr camera; + + void init_services() override + { + // TextureService and SoundService are needed by other components and game objects. + add_service(); + add_service(); + + // PhysicsService is used by LevelService and must be added first. + physics = add_service(); + // Setup LDtk level. Checkout the file in LDtk editor to see how it's built. + std::vector collision_names = {"walls"}; + level = add_service("assets/levels/fighting.ldtk", "Stage", collision_names); + } + + void init() override + { + auto window_manager = game->get_manager(); + + // Find one-way platform entities in the level and create StaticBox game objects for them. + auto platform_entities = level->get_entities_by_name("One_way_platform"); + for (auto& platform_entity : platform_entities) + { + Vector2 position = level->convert_to_pixels(platform_entity->getPosition()); + Vector2 size = level->convert_to_pixels(platform_entity->getSize()); + auto platform = add_game_object(position + size / 2.0f, size); + platform->is_visible = false; + platform->add_tag("platform"); + platforms.push_back(platform); + } + + // Pre-solve callback to handle one-way platforms. + b2World_SetPreSolveCallback(physics->world, PreSolveStatic, this); + + // Create player characters at the "Start" entities. + auto player_entities = level->get_entities_by_name("Start"); + + for (int i = 0; i < player_entities.size() && i < 4; i++) + { + auto& player_entity = player_entities[i]; + CharacterParams params; + params.position = level->convert_to_pixels(player_entity->getPosition()); + params.width = 16; + params.height = 24; + auto character = add_game_object(params, i + 1); + character->add_tag("character"); + characters.push_back(character); + } + + // Setup shared camera. + camera = add_game_object(level->get_size(), + Vector2{0.0f, 0.0f}, + Vector2{300.0f, 300.0f}, + 0.0f, + 0.0f, + 0.0f, + 0.0f); + camera->target = level->get_size() / 2.0f; + + // Disable the background layer from drawing. We'll draw it manually in draw_scene(). + level->set_layer_visibility("Background", false); + + renderer = LoadRenderTexture((int)level->get_size().x, (int)level->get_size().y); + } + + void update(float delta_time) override + { + // Set the camera target to the center of all players. + // Also zoom to fit all players. + Vector2 avg_position = {0.0f, 0.0f}; + Vector2 min_point = {FLT_MAX, FLT_MAX}; + Vector2 max_point = {-FLT_MAX, -FLT_MAX}; + for (auto& character : characters) + { + Vector2 char_pos = character->body->get_position_pixels(); + avg_position = avg_position + char_pos; + min_point.x = std::min(min_point.x, char_pos.x); + min_point.y = std::min(min_point.y, char_pos.y); + max_point.x = std::max(max_point.x, char_pos.x); + max_point.y = std::max(max_point.y, char_pos.y); + } + avg_position = avg_position / static_cast(characters.size()); + camera->target = avg_position; + + // Force camera to align with pixel grid to avoid sub-pixel jitter. + camera->target.x = floorf(camera->target.x); + camera->target.y = floorf(camera->target.y); + + // Calculate zoom to fit all characters. + float distance = sqrtf((max_point.x - min_point.x) * (max_point.x - min_point.x) + + (max_point.y - min_point.y) * (max_point.y - min_point.y)); + float level_diagonal = + sqrtf(level->get_size().x * level->get_size().x + level->get_size().y * level->get_size().y); + float zoom = level_diagonal / (distance + 400); + zoom = std::clamp(zoom, 0.5f, 2.0f); + + // Lerp zoom for smoothness. + // Note that this style of camera zoom is incompatible with pixel perfect rendering. Remove this line to see + // pixel perfect scaling. + camera->camera.zoom += (zoom - camera->camera.zoom) * std::min(1.0f, delta_time * 5.0f); + + // Draw the level centered in the window. + float aspect_ratio = level->get_size().x / level->get_size().y; + float render_scale = GetScreenHeight() / level->get_size().y; + Vector2 render_size = {level->get_size().y * render_scale * aspect_ratio, level->get_size().y * render_scale}; + auto pos = (Vector2{(float)GetScreenWidth(), (float)GetScreenHeight()} - render_size) / 2.0f; + render_rect = Rectangle{pos.x, pos.y, render_size.x, render_size.y}; + + // Trigger scene change on Enter key or gamepad start button. + if (IsKeyPressed(KEY_ENTER) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_MIDDLE_RIGHT)) + { + game->go_to_scene_next(); + } + } + + /** + * We override draw_scene instead of draw to control when Scene::draw_scene is called. + * This allows us to draw the scene inside the camera's Begin/End block and render the camera to a texture. + */ + void draw_scene() override + { + // Draw to render texture. + BeginTextureMode(renderer); + ClearBackground(MAGENTA); + + // Draw the background layer outside of the camera. + level->draw_layer("Background"); + + // Start the camera and render the scene inside. + camera->draw_begin(); + Scene::draw_scene(); + // physics->draw_debug(); + // camera->draw_debug(); + camera->draw_end(); + + EndTextureMode(); + + // Draw centered. + DrawTexturePro( + renderer.texture, + Rectangle{0, 0, static_cast(renderer.texture.width), -static_cast(renderer.texture.height)}, + render_rect, + Vector2{0.0f, 0.0f}, + 0.0f, + WHITE); + } + + /** + * Static pre-solve callback to route to the appropriate character. + * + * @param shape_a The first shape in the collision. + * @param shape_b The second shape in the collision. + * @param manifold The contact manifold. + * @param context The FightingScene instance. + * @return true to enable the contact, false to disable it. + */ + static bool PreSolveStatic(b2ShapeId shape_a, b2ShapeId shape_b, b2Manifold* manifold, void* context) + { + FightingScene* self = static_cast(context); + b2BodyId body_a = b2Shape_GetBody(shape_a); + b2BodyId body_b = b2Shape_GetBody(shape_b); + + // Find which character is involved and route to its PreSolve method. + for (auto& character : self->characters) + { + if (body_a == character->body->id || body_b == character->body->id) + { + return character->PreSolve(body_a, body_b, manifold, self->platforms); + } + } + return true; + } +}; diff --git a/src/samples/title_screen.h b/src/samples/title_screen.h new file mode 100644 index 0000000..846bb44 --- /dev/null +++ b/src/samples/title_screen.h @@ -0,0 +1,48 @@ +#pragma once + +#include "engine/prefabs/includes.h" + +class TitleScreen : public Scene +{ +public: + Font font; + std::string title = "Game Jam Kit"; + void init() override + { + auto font_manager = game->get_manager(); + font = font_manager->get_font("Roboto"); + } + + void update(float delta_time) override + { + // Trigger scene change on Enter key or gamepad start button. + if (IsKeyPressed(KEY_ENTER) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_MIDDLE_RIGHT)) + { + game->go_to_scene_next(); + } + } + + void draw() override + { + auto width = GetScreenWidth(); + auto height = GetScreenHeight(); + auto title_text_size = MeasureTextEx(font, title.c_str(), 64, 0); + + std::string subtitle = "Press Start or Enter to Switch Scenes"; + auto subtitle_text_size = MeasureTextEx(font, subtitle.c_str(), 32, 0); + + ClearBackground(SKYBLUE); + DrawTextEx(font, + title.c_str(), + {(width - title_text_size.x) / 2, (height - title_text_size.y - 100) / 2}, + 64, + 1, + WHITE); + DrawTextEx(font, + subtitle.c_str(), + {(width - subtitle_text_size.x) / 2, (height - subtitle_text_size.y + 100) / 2}, + 32, + 1, + WHITE); + } +}; \ No newline at end of file diff --git a/src/samples/zombie_game.h b/src/samples/zombie_game.h new file mode 100644 index 0000000..055a2ed --- /dev/null +++ b/src/samples/zombie_game.h @@ -0,0 +1,551 @@ +/** + * Demonstration of a top down shooter game. + * Shows how to draw lights using custom blend modes. + */ + +#pragma once + +#include "engine/prefabs/includes.h" +#include "rlgl.h" + +// Custom Blend Modes for lights. See https://www.raylib.com/examples/shapes/loader.html?name=shapes_top_down_lights +#define RLGL_SRC_ALPHA 0x0302 +#define RLGL_MIN 0x8007 + +class ZombieScene; + +/** + * A bullet fired by a character. + */ +class Bullet : public GameObject +{ +public: + PhysicsService* physics; + BodyComponent* body; + SpriteComponent* sprite; + SoundComponent* hit_sound; + float speed = 800.0f; // pixels per second + + void init() override + { + physics = scene->get_service(); + + body = add_component( + [=](BodyComponent& b) + { + b2BodyDef body_def = b2DefaultBodyDef(); + body_def.type = b2_dynamicBody; + body_def.isBullet = true; + // Start off-screen. + body_def.position = physics->convert_to_meters(Vector2{-1000.0f, -1000.0f}); + body_def.userData = this; + b.id = b2CreateBody(physics->world, &body_def); + + b2SurfaceMaterial body_material = b2DefaultSurfaceMaterial(); + body_material.restitution = 0.0f; + body_material.friction = 0.0f; + + b2ShapeDef circle_shape_def = b2DefaultShapeDef(); + circle_shape_def.density = 0.25f; + circle_shape_def.material = body_material; + + b2Circle circle_shape = {b2Vec2_zero, physics->convert_to_meters(8.0f)}; + b2CreateCircleShape(b.id, &circle_shape_def, &circle_shape); + }); + + sprite = add_component("assets/zombie_shooter/bullet.png", body); + + hit_sound = add_component("assets/sounds/hit.wav"); + } + + void update(float delta_time) override + { + auto contacts = body->get_contacts(); + for (const auto& contact : contacts) + { + // Deactivate the bullet if we hit anything. + is_active = false; + // Move it off-screen. + body->set_position(Vector2{-1000.0f, -1000.0f}); + body->set_velocity(Vector2{0.0f, 0.0f}); + + GameObject* other = static_cast(b2Body_GetUserData(contact)); + if (other) + { + if (other->has_tag("zombie")) + { + hit_sound->play(); + + // Hit a zombie, deactivate it too. + other->is_active = false; + // Move it off-screen. + auto zombie_body = other->get_component(); + if (zombie_body) + { + zombie_body->set_position(Vector2{-1000.0f, -1000.0f}); + zombie_body->set_velocity(Vector2{0.0f, 0.0f}); + zombie_body->disable(); + } + auto zombie_sprite = other->get_component(); + if (zombie_sprite) + { + zombie_sprite->set_position(Vector2{-1000.0f, -1000.0f}); + } + } + break; + } + } + } +}; + +/** + * A top-down character controlled by the player. + */ +class TopDownCharacter : public GameObject +{ +public: + Vector2 position = {0, 0}; + BodyComponent* body; + PhysicsService* physics; + SpriteComponent* sprite; + TopDownMovementComponent* movement; + MultiComponent* sounds; + SoundComponent* shoot_sound; + std::vector> bullets; + int player_num = 0; + int health = 10; + float contact_timer = 1.0f; + float contact_cooldown = 0.3f; + + TopDownCharacter(Vector2 position, std::vector> bullets, int player_num = 0) : + position(position), + bullets(std::move(bullets)), + player_num(player_num) + { + } + + void init() override + { + // Grab the physics service. + // All get_service calls should be done in init(). get_service is not quick and this also allows us to test + // that all services exist during init time. + physics = scene->get_service(); + + body = add_component( + [=](BodyComponent& b) + { + b2BodyDef body_def = b2DefaultBodyDef(); + body_def.type = b2_dynamicBody; + body_def.fixedRotation = true; + body_def.position = physics->convert_to_meters(position); + body_def.userData = this; + b.id = b2CreateBody(physics->world, &body_def); + + b2SurfaceMaterial body_material = b2DefaultSurfaceMaterial(); + + b2ShapeDef circle_shape_def = b2DefaultShapeDef(); + circle_shape_def.density = 1.0f; + circle_shape_def.material = body_material; + + b2Circle circle_shape = {b2Vec2_zero, physics->convert_to_meters(16.0f)}; + b2CreateCircleShape(b.id, &circle_shape_def, &circle_shape); + }); + + // Setup movement. + TopDownMovementParams mp; + mp.accel = 5000.0f; + mp.friction = 5000.0f; + mp.max_speed = 350.0f; + movement = add_component(mp); + + // Setup sounds. + // TODO: Is only allowing one component per type really as cool an idea as I thought? + sounds = add_component>(); + shoot_sound = sounds->add_component("shoot", "assets/sounds/shoot.wav"); + + // Setup sprite. + sprite = + add_component("assets/zombie_shooter/player_" + std::to_string(player_num + 1) + ".png"); + } + + void update(float delta_time) override + { + Vector2 move = {0.0f, 0.0f}; + + move = {GetGamepadAxisMovement(player_num, GAMEPAD_AXIS_LEFT_X), + GetGamepadAxisMovement(player_num, GAMEPAD_AXIS_LEFT_Y)}; + + if (IsKeyDown(KEY_W) || IsGamepadButtonDown(player_num, GAMEPAD_BUTTON_LEFT_FACE_UP)) + { + move.y -= 1.0f; + } + if (IsKeyDown(KEY_S) || IsGamepadButtonDown(player_num, GAMEPAD_BUTTON_LEFT_FACE_DOWN)) + { + move.y += 1.0f; + } + if (IsKeyDown(KEY_A) || IsGamepadButtonDown(player_num, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) + { + move.x -= 1.0f; + } + if (IsKeyDown(KEY_D) || IsGamepadButtonDown(player_num, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) + { + move.x += 1.0f; + } + + movement->set_input(move.x, move.y); + + // Update sprite position and rotation. + sprite->set_position(body->get_position_pixels()); + sprite->set_rotation(movement->facing_dir); + + // Shooting + if (IsKeyPressed(KEY_SPACE) || IsGamepadButtonPressed(player_num, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) + { + // Find an inactive bullet from the pool. + for (auto& bullet : bullets) + { + if (!bullet->is_active) + { + // Play shoot sound. + shoot_sound->play(); + + // Activate and position the bullet. + Vector2 char_pos = body->get_position_pixels(); + Vector2 shoot_dir = {std::cos(movement->facing_dir * DEG2RAD), + std::sin(movement->facing_dir * DEG2RAD)}; + Vector2 bullet_start_pos = {char_pos.x + shoot_dir.x * 48.0f, char_pos.y + shoot_dir.y * 48.0f}; + bullet->body->set_position(bullet_start_pos); + + bullet->body->set_rotation(movement->facing_dir + 90.0f); + + // Set bullet velocity. + Vector2 velocity = {shoot_dir.x * bullet->speed, shoot_dir.y * bullet->speed}; + bullet->body->set_velocity(velocity); + bullet->is_active = true; + break; + } + } + } + + // Damage. + auto contacts = body->get_contacts(); + for (const auto& contact : contacts) + { + GameObject* other = static_cast(b2Body_GetUserData(contact)); + if (other) + { + if (other->has_tag("zombie")) + { + // When we are in contact with a zombie long enough, take 1 damage. + if (contact_timer > 0.0f) + { + contact_timer -= delta_time; + } + if (contact_timer <= 0.0f) + { + health -= 1; + contact_timer = contact_cooldown; + if (health <= 0) + { + // Deactivate character. + is_active = false; + // Move off-screen. + body->set_position(Vector2{-1000.0f, -1000.0f}); + body->set_velocity(Vector2{0.0f, 0.0f}); + } + } + } + } + } + } +}; + +/** + * A zombie that chases the closest player. + */ +class Zombie : public GameObject +{ +public: + BodyComponent* body; + PhysicsService* physics; + SpriteComponent* sprite; + TopDownMovementComponent* movement; + std::vector> players; + + Zombie(std::vector> players) : players(std::move(players)) {} + + void init() override + { + // Grab the physics service. + physics = scene->get_service(); + + body = add_component( + [=](BodyComponent& b) + { + b2BodyDef body_def = b2DefaultBodyDef(); + body_def.type = b2_dynamicBody; + body_def.fixedRotation = true; + body_def.position = physics->convert_to_meters(Vector2{-1000.0f, -1000.0f}); + body_def.userData = this; + b.id = b2CreateBody(physics->world, &body_def); + + b2SurfaceMaterial body_material = b2DefaultSurfaceMaterial(); + + b2ShapeDef circle_shape_def = b2DefaultShapeDef(); + circle_shape_def.density = 1.0f; + circle_shape_def.material = body_material; + + b2Circle circle_shape = {b2Vec2_zero, physics->convert_to_meters(16.0f)}; + b2CreateCircleShape(b.id, &circle_shape_def, &circle_shape); + // Disable by default. + b2Body_Disable(b.id); + }); + + // Setup movement. + TopDownMovementParams mp; + mp.accel = 5000.0f; + mp.friction = 5000.0f; + mp.max_speed = 100.0f; + movement = add_component(mp); + + // Setup sprite. + sprite = add_component("assets/zombie_shooter/zombie.png"); + } + + void update(float delta_time) override + { + // Find the closest player and move towards them. + Vector2 closest_player_pos = {0, 0}; + float closest_dist_sq = FLT_MAX; + for (auto& player : players) + { + Vector2 player_pos = player->body->get_position_pixels(); + Vector2 to_player = {player_pos.x - body->get_position_pixels().x, + player_pos.y - body->get_position_pixels().y}; + float dist_sq = to_player.x * to_player.x + to_player.y * to_player.y; + if (dist_sq < closest_dist_sq) + { + closest_dist_sq = dist_sq; + closest_player_pos = player_pos; + } + } + Vector2 to_closest = {closest_player_pos.x - body->get_position_pixels().x, + closest_player_pos.y - body->get_position_pixels().y}; + float to_closest_len = std::sqrt(to_closest.x * to_closest.x + to_closest.y * to_closest.y); + if (to_closest_len > 0.0f) + { + to_closest.x /= to_closest_len; + to_closest.y /= to_closest_len; + } + movement->set_input(to_closest.x, to_closest.y); + + // Update sprite position and rotation. + sprite->set_position(body->get_position_pixels()); + sprite->set_rotation(movement->facing_dir); + } +}; + +/** + * A spawner that spawns zombies at intervals. + */ +class Spawner : public GameObject +{ +public: + float spawn_timer = 0.0f; + float spawn_interval = 1.0f; // Spawn a zombie every 1 second + std::vector> zombie_pool; + Vector2 position = {0, 0}; + Vector2 size = {0, 0}; + + Spawner(Vector2 position, Vector2 size, std::vector> zombies) : + position(position - size * 0.5f), + size(size), + zombie_pool(std::move(zombies)) + { + } + + void update(float delta_time) override + { + spawn_timer -= delta_time; + if (spawn_timer <= 0.0f) + { + spawn_timer = spawn_interval; + + // Spawn a zombie at a random position within the spawner area + float x = position.x + static_cast(GetRandomValue(0, static_cast(size.x))); + float y = position.y + static_cast(GetRandomValue(0, static_cast(size.y))); + Vector2 spawn_pos = {x, y}; + + for (auto& zombie : zombie_pool) + { + if (!zombie->is_active) + { + zombie->body->set_position(spawn_pos); + zombie->is_active = true; + zombie->body->enable(); + return; + } + } + } + } +}; + +/** + * A scene for the zombie shooter game. + */ +class ZombieScene : public Scene +{ +public: + FontManager* font_manager; + PhysicsService* physics; + LevelService* level; + RenderTexture2D renderer; + RenderTexture2D light_map; + Texture2D light_texture; + std::vector> bullets; + std::vector> characters; + std::vector> zombies; + + void init_services() override + { + // TextureService and SoundService are needed by other components and game objects. + add_service(); + add_service(); + + // Set gravity to zero for top-down game. + physics = add_service(b2Vec2_zero); + std::vector collision_names = {"walls", "obstacles"}; + level = add_service("assets/levels/top_down.ldtk", "Level", collision_names); + + // Grab the font manager. + font_manager = game->get_manager(); + } + + void init() override + { + const auto& entities_layer = level->get_layer_by_name("Entities"); + + // Prepare a pool of bullets. + // It is unwise to call init during update loops, so we create all bullets here and deactivate them. + for (int i = 0; i < 100; i++) + { + auto bullet = add_game_object(); + // When is_active is false, update and draw are skipped. + bullet->is_active = false; + bullets.push_back(bullet); + } + + // Create player characters. + auto player_entities = level->get_entities_by_name("Start"); + + for (int i = 0; i < player_entities.size() && i < 4; i++) + { + auto& player_entity = player_entities[i]; + auto position = level->convert_to_pixels(player_entity->getPosition()); + auto character = add_game_object(position, bullets, i); + character->add_tag("player"); + characters.push_back(character); + } + + // Prepare a pool of zombies. + // It is unwise to call init during update loops, so we create all zombies here and deactivate them. + for (int i = 0; i < 100; i++) + { + // Start off-screen + auto zombie = add_game_object(characters); + // When is_active is false, update and draw are skipped. + zombie->is_active = false; + zombie->add_tag("zombie"); + zombies.push_back(zombie); + } + + // Create spawner. + auto spawn_entity = level->get_entities_by_name("Spawn")[0]; + auto spawn_position = level->convert_to_pixels(spawn_entity->getPosition()); + auto spawn_size = level->convert_to_pixels(spawn_entity->getSize()); + auto spawner = add_game_object(spawn_position, spawn_size, zombies); + + // We want to control when the foreground layer is drawn. + level->set_layer_visibility("Foreground", false); + + // Create render texture to scale the level to the screen. + renderer = LoadRenderTexture((int)level->get_size().x, (int)level->get_size().y); + light_map = LoadRenderTexture((int)level->get_size().x, (int)level->get_size().y); + + light_texture = get_service()->get_texture("assets/zombie_shooter/light.png"); + } + + void update(float delta_time) override + { + // Trigger scene change on Enter key or gamepad start button. + if (IsKeyPressed(KEY_ENTER) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_MIDDLE_RIGHT)) + { + game->go_to_scene_next(); + } + } + + void draw_scene() override + { + // Build up the light mask + BeginTextureMode(light_map); + ClearBackground(BLACK); + + // Force the blend mode to only set the alpha of the destination + rlSetBlendFactors(RLGL_SRC_ALPHA, RLGL_SRC_ALPHA, RLGL_MIN); + rlSetBlendMode(BLEND_CUSTOM); + + // Merge in all the light masks + for (int i = 0; i < 4; i++) + { + // DrawCircleGradient((int)characters[i]->body->get_position_pixels().x, + // (int)characters[i]->body->get_position_pixels().y, + // 300.0f, + // ColorAlpha(WHITE, 0), + // ColorAlpha(BLACK, 1)); + DrawTexture(light_texture, + (int)(characters[i]->body->get_position_pixels().x - light_texture.width / 2), + (int)(characters[i]->body->get_position_pixels().y - light_texture.height / 2), + WHITE); + } + + rlDrawRenderBatchActive(); + + // Go back to normal blend + rlSetBlendMode(BLEND_ALPHA); + EndTextureMode(); + + // Draw to render texture first. + BeginTextureMode(renderer); + ClearBackground(MAGENTA); + Scene::draw_scene(); + level->draw_layer("Foreground"); + DrawTexturePro( + light_map.texture, + {0.0f, 0.0f, static_cast(light_map.texture.width), static_cast(-light_map.texture.height)}, + {0.0f, 0.0f, static_cast(light_map.texture.width), static_cast(light_map.texture.height)}, + {0.0f, 0.0f}, + 0.0f, + ColorAlpha(WHITE, 0.92f)); + DrawRectangle(10, 10, 210, 210, Fade(WHITE, 0.3f)); + DrawTextEx(font_manager->get_font("Roboto"), + TextFormat("Health: %d\nHealth: %d\nHealth: %d\nHealth: %d", + characters[0]->health, + characters[1]->health, + characters[2]->health, + characters[3]->health), + Vector2{20.0f, 20.0f}, + 45.0f, + 1.0f, + RED); + EndTextureMode(); + + // Draw the render texture scaled to the screen. + DrawTexturePro( + renderer.texture, + {0.0f, 0.0f, static_cast(renderer.texture.width), static_cast(-renderer.texture.height)}, + {0.0f, 0.0f, static_cast(GetScreenWidth()), static_cast(GetScreenHeight())}, + {0.0f, 0.0f}, + 0.0f, + WHITE); + } +}; diff --git a/xmake.lua b/xmake.lua new file mode 100644 index 0000000..f570341 --- /dev/null +++ b/xmake.lua @@ -0,0 +1,49 @@ +add_rules("mode.debug", "mode.release") + +set_languages("c++17") + +-- set_warnings("all", "error") + +if is_plat("wasm") then + set_toolchains("emcc") +end + +-- Packages +add_requires("raylib", "box2d", "ldtkloader") + +target("game_jam_kit") + set_kind("binary") + add_files("src/*.cpp") + add_includedirs("src", { public = true }) + add_packages("raylib", "box2d", "ldtkloader") + + -- Copy assets to output directory after build + after_build(function (target) + local outdir = target:targetdir() + os.mkdir(outdir) + os.cp("assets", outdir) + end) + + -- Emscripten / WebAssembly specific settings + if is_plat("wasm") then + add_cxxflags("-O3", {force = true}) + add_ldflags( + "-O3", + -- For in-browser wasm debugging. + -- "-g", + "-s USE_GLFW=3", + "-s ASYNCIFY", + "-s ALLOW_MEMORY_GROWTH=1", + "-s EXPORT_NAME=Module", + "-s EXPORTED_RUNTIME_METHODS=[ccall,cwrap]", + "-s FORCE_FILESYSTEM=1", + "-s ENVIRONMENT=web", + "-s WASM=1", + "-lwebsocket.js", + -- "--shell-file=web/shell_minimal.html", + -- Add files to the virtual file system. + "--preload-file", "assets@/assets", + {force = true} + ) + set_extension(".html") + end