From b4966adb2f5d06bb1752b60148771db03155dbc4 Mon Sep 17 00:00:00 2001
From: alexpalms
If you want to test your agent locally before submitting it for evaluation on the platform, you can use the specific feature provided by our command line interface. The pattern of the command is the very same used for submission, except that instead of the submit
option you will use test
.
It can be used to make sure the agent behaves as expected, and to debug it in case it fails, without waiting for the online evaluation pipeline.
It works with both plain docker images as well as submission manifests with privately hosted files and secret tokens, using respectively, the following commands:
diambra agent test <docker image>
or
diambra agent test --submission.secret token=<my-secret token> --submission.manifest submission.yaml
-
And a special thanks to @vjeantet for his work on docdock, a fork of hugo-theme-learn. v2.0.0 of this theme is inspired by his work.
And a special thanks to @vjeantet for his work on docdock, a fork of hugo-theme-learn. v2.0.0 of this theme is inspired by his work.
Game ID | doapp |
Original ROM Name | doapp.zip |
SHA256 Checksum | d95855c7d8596a90f0b8ca15725686567d767a9a3f93a8896b489a160e705c4e |
Search Keywords | DEAD OR ALIVE ++ [JAPAN] , dead-or-alive-japan , 80781 , wowroms |
Game Resolution (H X W X C) | 480px X 512px X 3 |
Number of Moves and Attack Actions | 9, 8 (4) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-7): No-Attack, Hold, Punch, Kick, Hold+Punch, Hold+Kick, Punch+Kick, Hold+Punch+Kick |
Max Difficulty (1P Mode) | 4 |
Number of Characters (Selectable) | 11 (11) |
Max Number of Outfits | 4 |
Number of Stages (1P Mode) | 8 |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 4] |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Kasumi, Zack, Hayabusa, Bayman, Lei-Fang, Raidou, Gen-Fu, Tina, Bass, Jann-Lee, Ayane |
outfits* | int | 1 | [1, 4] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 8 (attacks) - 1 (no-op counted twice) = 16 |
MultiDiscrete | 9 (moves) X 8 (attacks) = 72 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [480 X 512 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 8] | Current stage of the game |
timer | Box | [0, 40] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 2] | Number of rounds won by the player |
character | Discrete | [0, 10] | Index of character in use 0: Kasumi, 1: Zack, 2: Hayabusa, 3: Bayman, 4: Lei-Fang, 5: Raidou, 6: Gen-Fu, 7: Tina, 8: Bass, 9: Jann-Lee, 10: Ayane |
health | Box | [0, 208] | Health bar value |
Game ID | doapp |
Original ROM Name | doapp.zip |
SHA256 Checksum | d95855c7d8596a90f0b8ca15725686567d767a9a3f93a8896b489a160e705c4e |
Search Keywords | DEAD OR ALIVE ++ [JAPAN] , dead-or-alive-japan , 80781 , wowroms |
Game Resolution (H X W X C) | 480px X 512px X 3 |
Number of Moves and Attack Actions | 9, 8 (4) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-7): No-Attack, Hold, Punch, Kick, Hold+Punch, Hold+Kick, Punch+Kick, Hold+Punch+Kick |
Max Difficulty (1P Mode) | 4 |
Number of Characters (Selectable) | 11 (11) |
Max Number of Outfits | 4 |
Number of Stages (1P Mode) | 8 |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 4] |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Kasumi, Zack, Hayabusa, Bayman, Lei-Fang, Raidou, Gen-Fu, Tina, Bass, Jann-Lee, Ayane |
outfits* | int | 1 | [1, 4] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 8 (attacks) - 1 (no-op counted twice) = 16 |
MultiDiscrete | 9 (moves) X 8 (attacks) = 72 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [480 X 512 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 8] | Current stage of the game |
timer | Box | [0, 40] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 2] | Number of rounds won by the player |
character | Discrete | [0, 10] | Index of character in use 0: Kasumi, 1: Zack, 2: Hayabusa, 3: Bayman, 4: Lei-Fang, 5: Raidou, 6: Gen-Fu, 7: Tina, 8: Bass, 9: Jann-Lee, 10: Ayane |
health | Box | [0, 208] | Health bar value |
... many more to come soon.
Title | FPS* | Game Id |
---|---|---|
Dead Or Alive ++ | 92 | doapp |
Street Fighter III 3rd Strike | 164 | sfiii3n |
Tekken Tag Tournament | 72 | tektagt |
Ultimate Mortal Kombat 3 | 158 | umk3 |
Samurai Showdown 5 Special | 168 | samsh5sp |
The King of Fighters ‘98: Ultimate Match Hero | 92 | kof98umh |
Marvel VS Capcom | 190 | mvsc |
X-Men VS Street Fighter | 190 | xmvsf |
Soul Calibur | 60 | soulclbr |
*Measured on Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz, using step_ratio = 1
and frame_shape = (128, 128, 1)
Game specific details provide useful information about each title. They are reported in every game-dedicated page, and summarized in the table below.
Parameter | Description |
---|---|
Game ID | String identifying the game |
Original ROM Name | Name of the original game ROM to be downloaded (if renaming is needed, it is indicated) |
SHA256 Checksum | ROM file checksum used to validate it |
Search Keywords | List of keywords that can be used to find the correct ROM file |
Game Resolution (H X W X C) | Game frame native resolution |
Number of Moves and Attack Actions | Number of moves and attack actions and their description |
Max Difficulty | Maximum difficulty level available |
Number of Characters (Selectable) | Number of characters featured in the game, and those that can actually be selected |
Max Number of Outfits | Maximum number of different outfits available per each character |
Max Stage | Maximum number of stages for the single player mode |
Whenever possible, games are released with all hidden/bonus characters unlocked.
For every released title, extensive testing has been carried out, making sure the 1P mode is playable with no bugs up until game end.
... many more to come soon.
Title | FPS* | Game Id |
---|---|---|
Dead Or Alive ++ | 92 | doapp |
Street Fighter III 3rd Strike | 164 | sfiii3n |
Tekken Tag Tournament | 72 | tektagt |
Ultimate Mortal Kombat 3 | 158 | umk3 |
Samurai Showdown 5 Special | 168 | samsh5sp |
The King of Fighters ‘98: Ultimate Match Hero | 92 | kof98umh |
Marvel VS Capcom | 190 | mvsc |
X-Men VS Street Fighter | 190 | xmvsf |
Soul Calibur | 60 | soulclbr |
*Measured on Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz, using step_ratio = 1
and frame_shape = (128, 128, 1)
Game specific details provide useful information about each title. They are reported in every game-dedicated page, and summarized in the table below.
Parameter | Description |
---|---|
Game ID | String identifying the game |
Original ROM Name | Name of the original game ROM to be downloaded (if renaming is needed, it is indicated) |
SHA256 Checksum | ROM file checksum used to validate it |
Search Keywords | List of keywords that can be used to find the correct ROM file |
Game Resolution (H X W X C) | Game frame native resolution |
Number of Moves and Attack Actions | Number of moves and attack actions and their description |
Max Difficulty | Maximum difficulty level available |
Number of Characters (Selectable) | Number of characters featured in the game, and those that can actually be selected |
Max Number of Outfits | Maximum number of different outfits available per each character |
Max Stage | Maximum number of stages for the single player mode |
Whenever possible, games are released with all hidden/bonus characters unlocked.
For every released title, extensive testing has been carried out, making sure the 1P mode is playable with no bugs up until game end.
Game ID | kof98umh |
Original ROM Name | kof98umh.zip |
SHA256 Checksum | beb7bdea87137832f5f6d731fd1abd0350c0cd6b6b2d57cab2bedbac24fe8d0a |
Search Keywords | The King Of Fighters '98: Ultimate Match HERO , kof98umh , allmyroms |
Game Resolution (H X W X C) | 240px X 320px X 3 |
Number of Moves and Attack Actions | 9, 9 (5) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-8): No-Attack, Weak Punch, Weak Kick, Strong Punch, Strong Kick, Weak Punch + Weak Kick, Strong Punch + Strong Kick, Weak Punch + Weak Kick + Strong Punch + Strong Kick, Weak Punch + Weak Kick + Strong Punch |
Max Difficulty (1P Mode) | 8 |
Number of Characters (Selectable) | 45 (43) |
Max Number of Outfits | 4 |
Number of Stages (1P Mode) | 7 |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Kyo, Benimaru, Daimon, Terry, Andy, Joe, Ryo, Robert, Yuri, Leona, Ralf, Clark, Athena, Kensou, Chin, Chizuru, Mai, King, Kim, Chang, Choi, Yashiro, Shermie, Chris, Yamazaki, Mary, Billy, Iori, Mature, Vice, Heidern, Takuma, Saisyu, Heavy-D!, Lucky, Brian, Eiji, Kasumi, Shingo, Rugal, Geese, Krauser, Mr.Big |
outfits* | int | 1 | [1, 4] |
Key | Type | Default Value(s) | Value Range | Description |
---|---|---|---|---|
fighting_style* | None U int | None | [1, 3] | Selects the fighting style. 1: Advanced, 2: Extra, 3: Ultimate |
ultimate_style* | None U tuple of three int | None | [1, 2] X [1, 2] X [1, 2] | Selects details about ultimate fighting style for Dash, Evade and Bar features. 1: Advanced, 2: Extra |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 9 (attacks) - 1 (no-op counted twice) = 17 |
MultiDiscrete | 9 (moves) X 9 (attacks) = 81 |
Key | Type | Value | Description |
---|---|---|---|
frame | Box | [0, 255] X [240 X 320 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 7] | Current stage of the game |
timer | Box | [0, 60] | Round time remaining |
Key | Type | Value | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 3] | Number of rounds won by the player |
character_1 | Discrete | [0, 44] | Index of first character slot 0: Kyo, 1: Benimaru, 2: Daimon, 3: Terry, 4: Andy, 5: Joe, 6: Ryo, 7: Robert, 8: Yuri, 9: Leona, 10: Ralf, 11: Clark, 12: Athena, 13: Kensou, 14: Chin, 15: Chizuru, 16: Mai, 17: King, 18: Kim, 19: Chang, 20: Choi, 21: Yashiro, 22: Shermie, 23: Chris, 24: Yamazaki, 25: Mary, 26: Billy, 27: Iori, 28: Mature, 29: Vice, 30: Heidern, 31: Takuma, 32: Saisyu, 33: Heavy-D!, 34: Lucky, 35: Brian, 36: Eiji, 37: Kasumi, 38: Shingo, 39: Rugal, 40: Geese, 41: Krauser, 42: Mr.Big, 43: Goenitz, 44: Orochi |
character_2 | Discrete | [0, 44] | Index of second character slot 0: Kyo, 1: Benimaru, 2: Daimon, 3: Terry, 4: Andy, 5: Joe, 6: Ryo, 7: Robert, 8: Yuri, 9: Leona, 10: Ralf, 11: Clark, 12: Athena, 13: Kensou, 14: Chin, 15: Chizuru, 16: Mai, 17: King, 18: Kim, 19: Chang, 20: Choi, 21: Yashiro, 22: Shermie, 23: Chris, 24: Yamazaki, 25: Mary, 26: Billy, 27: Iori, 28: Mature, 29: Vice, 30: Heidern, 31: Takuma, 32: Saisyu, 33: Heavy-D!, 34: Lucky, 35: Brian, 36: Eiji, 37: Kasumi, 38: Shingo, 39: Rugal, 40: Geese, 41: Krauser, 42: Mr.Big, 43: Goenitz, 44: Orochi |
character_3 | Discrete | [0, 44] | Index of third character slot 0: Kyo, 1: Benimaru, 2: Daimon, 3: Terry, 4: Andy, 5: Joe, 6: Ryo, 7: Robert, 8: Yuri, 9: Leona, 10: Ralf, 11: Clark, 12: Athena, 13: Kensou, 14: Chin, 15: Chizuru, 16: Mai, 17: King, 18: Kim, 19: Chang, 20: Choi, 21: Yashiro, 22: Shermie, 23: Chris, 24: Yamazaki, 25: Mary, 26: Billy, 27: Iori, 28: Mature, 29: Vice, 30: Heidern, 31: Takuma, 32: Saisyu, 33: Heavy-D!, 34: Lucky, 35: Brian, 36: Eiji, 37: Kasumi, 38: Shingo, 39: Rugal, 40: Geese, 41: Krauser, 42: Mr.Big, 43: Goenitz, 44: Orochi |
character | Discrete | [0, 44] | Index of character in use 0: Kyo, 1: Benimaru, 2: Daimon, 3: Terry, 4: Andy, 5: Joe, 6: Ryo, 7: Robert, 8: Yuri, 9: Leona, 10: Ralf, 11: Clark, 12: Athena, 13: Kensou, 14: Chin, 15: Chizuru, 16: Mai, 17: King, 18: Kim, 19: Chang, 20: Choi, 21: Yashiro, 22: Shermie, 23: Chris, 24: Yamazaki, 25: Mary, 26: Billy, 27: Iori, 28: Mature, 29: Vice, 30: Heidern, 31: Takuma, 32: Saisyu, 33: Heavy-D!, 34: Lucky, 35: Brian, 36: Eiji, 37: Kasumi, 38: Shingo, 39: Rugal, 40: Geese, 41: Krauser, 42: Mr.Big, 43: Goenitz, 44: Orochi |
health | Box | [-1, 119] | Health bar value |
power_bar | Box | [0, 100] | Power bar value |
special_attacks | Box | [0, 5] | Number of special attacks available |
bar_type | Discrete | [0, 7] | Index of bar type 0: Advanced / Ultimate (Dash Advanced, Evade Advanced, Bar Advanced), 1: Extra / Ultimate (Dash Extra, Evade Extra, Bar Extra), 2: Ultimate (Dash Extra, Evade Advanced, Bar Advanced), 3: Ultimate (Dash Advanced, Evade Advanced, Bar Extra), 4: Ultimate (Dash Extra, Evade Advanced, Bar Extra), 5: Ultimate (Dash Advanced, Evade Extra, Bar Advanced), 6: Ultimate (Dash Extra, Evade Extra, Bar Advanced), 7: Ultimate (Dash Advanced, Evade Extra, Bar Extra) |
Game ID | kof98umh |
Original ROM Name | kof98umh.zip |
SHA256 Checksum | beb7bdea87137832f5f6d731fd1abd0350c0cd6b6b2d57cab2bedbac24fe8d0a |
Search Keywords | The King Of Fighters '98: Ultimate Match HERO , kof98umh , allmyroms |
Game Resolution (H X W X C) | 240px X 320px X 3 |
Number of Moves and Attack Actions | 9, 9 (5) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-8): No-Attack, Weak Punch, Weak Kick, Strong Punch, Strong Kick, Weak Punch + Weak Kick, Strong Punch + Strong Kick, Weak Punch + Weak Kick + Strong Punch + Strong Kick, Weak Punch + Weak Kick + Strong Punch |
Max Difficulty (1P Mode) | 8 |
Number of Characters (Selectable) | 45 (43) |
Max Number of Outfits | 4 |
Number of Stages (1P Mode) | 7 |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Kyo, Benimaru, Daimon, Terry, Andy, Joe, Ryo, Robert, Yuri, Leona, Ralf, Clark, Athena, Kensou, Chin, Chizuru, Mai, King, Kim, Chang, Choi, Yashiro, Shermie, Chris, Yamazaki, Mary, Billy, Iori, Mature, Vice, Heidern, Takuma, Saisyu, Heavy-D!, Lucky, Brian, Eiji, Kasumi, Shingo, Rugal, Geese, Krauser, Mr.Big |
outfits* | int | 1 | [1, 4] |
Key | Type | Default Value(s) | Value Range | Description |
---|---|---|---|---|
fighting_style* | None U int | None | [1, 3] | Selects the fighting style. 1: Advanced, 2: Extra, 3: Ultimate |
ultimate_style* | None U tuple of three int | None | [1, 2] X [1, 2] X [1, 2] | Selects details about ultimate fighting style for Dash, Evade and Bar features. 1: Advanced, 2: Extra |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 9 (attacks) - 1 (no-op counted twice) = 17 |
MultiDiscrete | 9 (moves) X 9 (attacks) = 81 |
Key | Type | Value | Description |
---|---|---|---|
frame | Box | [0, 255] X [240 X 320 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 7] | Current stage of the game |
timer | Box | [0, 60] | Round time remaining |
Key | Type | Value | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 3] | Number of rounds won by the player |
character_1 | Discrete | [0, 44] | Index of first character slot 0: Kyo, 1: Benimaru, 2: Daimon, 3: Terry, 4: Andy, 5: Joe, 6: Ryo, 7: Robert, 8: Yuri, 9: Leona, 10: Ralf, 11: Clark, 12: Athena, 13: Kensou, 14: Chin, 15: Chizuru, 16: Mai, 17: King, 18: Kim, 19: Chang, 20: Choi, 21: Yashiro, 22: Shermie, 23: Chris, 24: Yamazaki, 25: Mary, 26: Billy, 27: Iori, 28: Mature, 29: Vice, 30: Heidern, 31: Takuma, 32: Saisyu, 33: Heavy-D!, 34: Lucky, 35: Brian, 36: Eiji, 37: Kasumi, 38: Shingo, 39: Rugal, 40: Geese, 41: Krauser, 42: Mr.Big, 43: Goenitz, 44: Orochi |
character_2 | Discrete | [0, 44] | Index of second character slot 0: Kyo, 1: Benimaru, 2: Daimon, 3: Terry, 4: Andy, 5: Joe, 6: Ryo, 7: Robert, 8: Yuri, 9: Leona, 10: Ralf, 11: Clark, 12: Athena, 13: Kensou, 14: Chin, 15: Chizuru, 16: Mai, 17: King, 18: Kim, 19: Chang, 20: Choi, 21: Yashiro, 22: Shermie, 23: Chris, 24: Yamazaki, 25: Mary, 26: Billy, 27: Iori, 28: Mature, 29: Vice, 30: Heidern, 31: Takuma, 32: Saisyu, 33: Heavy-D!, 34: Lucky, 35: Brian, 36: Eiji, 37: Kasumi, 38: Shingo, 39: Rugal, 40: Geese, 41: Krauser, 42: Mr.Big, 43: Goenitz, 44: Orochi |
character_3 | Discrete | [0, 44] | Index of third character slot 0: Kyo, 1: Benimaru, 2: Daimon, 3: Terry, 4: Andy, 5: Joe, 6: Ryo, 7: Robert, 8: Yuri, 9: Leona, 10: Ralf, 11: Clark, 12: Athena, 13: Kensou, 14: Chin, 15: Chizuru, 16: Mai, 17: King, 18: Kim, 19: Chang, 20: Choi, 21: Yashiro, 22: Shermie, 23: Chris, 24: Yamazaki, 25: Mary, 26: Billy, 27: Iori, 28: Mature, 29: Vice, 30: Heidern, 31: Takuma, 32: Saisyu, 33: Heavy-D!, 34: Lucky, 35: Brian, 36: Eiji, 37: Kasumi, 38: Shingo, 39: Rugal, 40: Geese, 41: Krauser, 42: Mr.Big, 43: Goenitz, 44: Orochi |
character | Discrete | [0, 44] | Index of character in use 0: Kyo, 1: Benimaru, 2: Daimon, 3: Terry, 4: Andy, 5: Joe, 6: Ryo, 7: Robert, 8: Yuri, 9: Leona, 10: Ralf, 11: Clark, 12: Athena, 13: Kensou, 14: Chin, 15: Chizuru, 16: Mai, 17: King, 18: Kim, 19: Chang, 20: Choi, 21: Yashiro, 22: Shermie, 23: Chris, 24: Yamazaki, 25: Mary, 26: Billy, 27: Iori, 28: Mature, 29: Vice, 30: Heidern, 31: Takuma, 32: Saisyu, 33: Heavy-D!, 34: Lucky, 35: Brian, 36: Eiji, 37: Kasumi, 38: Shingo, 39: Rugal, 40: Geese, 41: Krauser, 42: Mr.Big, 43: Goenitz, 44: Orochi |
health | Box | [-1, 119] | Health bar value |
power_bar | Box | [0, 100] | Power bar value |
special_attacks | Box | [0, 5] | Number of special attacks available |
bar_type | Discrete | [0, 7] | Index of bar type 0: Advanced / Ultimate (Dash Advanced, Evade Advanced, Bar Advanced), 1: Extra / Ultimate (Dash Extra, Evade Extra, Bar Extra), 2: Ultimate (Dash Extra, Evade Advanced, Bar Advanced), 3: Ultimate (Dash Advanced, Evade Advanced, Bar Extra), 4: Ultimate (Dash Extra, Evade Advanced, Bar Extra), 5: Ultimate (Dash Advanced, Evade Extra, Bar Advanced), 6: Ultimate (Dash Extra, Evade Extra, Bar Advanced), 7: Ultimate (Dash Advanced, Evade Extra, Bar Extra) |
Game ID | mvsc |
Original ROM Name | mvsc.zip Requires the QSound_HLE sound driver to be placed in the roms folder. Search keywords: “qsound_hle.zip”, “dl-1425.bin” |
SHA256 Checksum | 6f63627cc37c554f74e8bf07b21730fa7f85511c7d5d07449850be98dde91da8 |
Search Keywords | marvel vs capcom clash of super heroes , marvel-vs.-capcom-clash-of-super-heroes-euro-980123 , 5511 , wowroms |
Game Resolution (H X W X C) | 224px X 384px X 3 |
Number of Moves and Attack Actions | 9, 19 (7) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-18): No-Attack, Weak Punch, Medium Punch, Strong Punch, Weak Kick, Medium Kick, Strong Kick, WP+MP, MP+SP, WP+SP, WK+MK, MK+SK, WK+SK, WP+WK, MP+MK, SP+SK, MP+WK, WP+MP+SP, WK+MK+SK |
Max Difficulty (1P Mode) | 8 |
Number of Characters (Selectable) | 22 (15) |
Max Number of Outfits | 2 |
Number of Stages (1P Mode) | 8 |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Chun-Li, Ryu, Zangief, Morrigan, Captain Commando, Megaman, Strider Hiryu, Spider Man, Jin, Captain America, Venom, Hulk, Gambit, War Machine, Wolverine |
outfits* | int | 1 | [1, 2] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 19 (attacks) - 1 (no-op counted twice) = 27 |
MultiDiscrete | 9 (moves) X 19 (attacks) = 171 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [224 X 384 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 8] | Current stage of the game |
timer | Box | [0, 99] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 1] | Number of rounds won by the player |
character_1 | Discrete | [0, 21] | Index of first character slot 0: Chun-Li, 1: Ryu, 2: Zangief, 3: Morrigan, 4: Captain Commando, 5: Megaman, 6: Strider Hiryu, 7: Spider Man, 8: Jin, 9: Captain America, 10: Venom, 11: Hulk, 12: Gambit, 13: War Machine, 14: Wolverine, 15: Roll, 16: Onslaught, 17: Alt-Venom, 18: Alt-Hulk, 19: Alt-War Machine, 20: Shadow Lady, 21: Alt-Morrigan |
character_2 | Discrete | [0, 21] | Index of second character slot 0: Chun-Li, 1: Ryu, 2: Zangief, 3: Morrigan, 4: Captain Commando, 5: Megaman, 6: Strider Hiryu, 7: Spider Man, 8: Jin, 9: Captain America, 10: Venom, 11: Hulk, 12: Gambit, 13: War Machine, 14: Wolverine, 15: Roll, 16: Onslaught, 17: Alt-Venom, 18: Alt-Hulk, 19: Alt-War Machine, 20: Shadow Lady, 21: Alt-Morrigan |
character | Discrete | [0, 21] | Index of character in use 0: Chun-Li, 1: Ryu, 2: Zangief, 3: Morrigan, 4: Captain Commando, 5: Megaman, 6: Strider Hiryu, 7: Spider Man, 8: Jin, 9: Captain America, 10: Venom, 11: Hulk, 12: Gambit, 13: War Machine, 14: Wolverine, 15: Roll, 16: Onslaught, 17: Alt-Venom, 18: Alt-Hulk, 19: Alt-War Machine, 20: Shadow Lady, 21: Alt-Morrigan |
health_1 | Box | [0, 144] | Health bar value for first character in use |
health_2 | Box | [0, 144] | Health bar value for second character in use |
active_character | Discrete (Binary) | [0, 1] | Index of the active character 1: first, 0: second |
super_bar | Box | [0, 144] | Super bar value |
super_count | Box | [0, 3] | Count of activated super moves |
partner | Discrete | [0, 21] | Index of character in use 0: Lou, 1: Juggernaut, 2: Magneto, 3: Psylocke, 4: Cyclops, 5: Colossus, 6: Unknown Soldier, 7: Ton Pooh, 8: Arthur, 9: Saki, 10: Miechele Heart, 11: Thor, 12: Storm, 13: Rogue, 14: Iceman, 15: Pure&Fur, 16: US Agent, 17: Anita, 18: Devilot, 19: Jubilee, 20: Shadow, 21: Sentinel |
partner_attacks | Box | [0, 9] | Count of available partner attacks |
Game ID | mvsc |
Original ROM Name | mvsc.zip Requires the QSound_HLE sound driver to be placed in the roms folder. Search keywords: “qsound_hle.zip”, “dl-1425.bin” |
SHA256 Checksum | 6f63627cc37c554f74e8bf07b21730fa7f85511c7d5d07449850be98dde91da8 |
Search Keywords | marvel vs capcom clash of super heroes , marvel-vs.-capcom-clash-of-super-heroes-euro-980123 , 5511 , wowroms |
Game Resolution (H X W X C) | 224px X 384px X 3 |
Number of Moves and Attack Actions | 9, 19 (7) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-18): No-Attack, Weak Punch, Medium Punch, Strong Punch, Weak Kick, Medium Kick, Strong Kick, WP+MP, MP+SP, WP+SP, WK+MK, MK+SK, WK+SK, WP+WK, MP+MK, SP+SK, MP+WK, WP+MP+SP, WK+MK+SK |
Max Difficulty (1P Mode) | 8 |
Number of Characters (Selectable) | 22 (15) |
Max Number of Outfits | 2 |
Number of Stages (1P Mode) | 8 |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Chun-Li, Ryu, Zangief, Morrigan, Captain Commando, Megaman, Strider Hiryu, Spider Man, Jin, Captain America, Venom, Hulk, Gambit, War Machine, Wolverine |
outfits* | int | 1 | [1, 2] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 19 (attacks) - 1 (no-op counted twice) = 27 |
MultiDiscrete | 9 (moves) X 19 (attacks) = 171 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [224 X 384 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 8] | Current stage of the game |
timer | Box | [0, 99] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 1] | Number of rounds won by the player |
character_1 | Discrete | [0, 21] | Index of first character slot 0: Chun-Li, 1: Ryu, 2: Zangief, 3: Morrigan, 4: Captain Commando, 5: Megaman, 6: Strider Hiryu, 7: Spider Man, 8: Jin, 9: Captain America, 10: Venom, 11: Hulk, 12: Gambit, 13: War Machine, 14: Wolverine, 15: Roll, 16: Onslaught, 17: Alt-Venom, 18: Alt-Hulk, 19: Alt-War Machine, 20: Shadow Lady, 21: Alt-Morrigan |
character_2 | Discrete | [0, 21] | Index of second character slot 0: Chun-Li, 1: Ryu, 2: Zangief, 3: Morrigan, 4: Captain Commando, 5: Megaman, 6: Strider Hiryu, 7: Spider Man, 8: Jin, 9: Captain America, 10: Venom, 11: Hulk, 12: Gambit, 13: War Machine, 14: Wolverine, 15: Roll, 16: Onslaught, 17: Alt-Venom, 18: Alt-Hulk, 19: Alt-War Machine, 20: Shadow Lady, 21: Alt-Morrigan |
character | Discrete | [0, 21] | Index of character in use 0: Chun-Li, 1: Ryu, 2: Zangief, 3: Morrigan, 4: Captain Commando, 5: Megaman, 6: Strider Hiryu, 7: Spider Man, 8: Jin, 9: Captain America, 10: Venom, 11: Hulk, 12: Gambit, 13: War Machine, 14: Wolverine, 15: Roll, 16: Onslaught, 17: Alt-Venom, 18: Alt-Hulk, 19: Alt-War Machine, 20: Shadow Lady, 21: Alt-Morrigan |
health_1 | Box | [0, 144] | Health bar value for first character in use |
health_2 | Box | [0, 144] | Health bar value for second character in use |
active_character | Discrete (Binary) | [0, 1] | Index of the active character 1: first, 0: second |
super_bar | Box | [0, 144] | Super bar value |
super_count | Box | [0, 3] | Count of activated super moves |
partner | Discrete | [0, 21] | Index of character in use 0: Lou, 1: Juggernaut, 2: Magneto, 3: Psylocke, 4: Cyclops, 5: Colossus, 6: Unknown Soldier, 7: Ton Pooh, 8: Arthur, 9: Saki, 10: Miechele Heart, 11: Thor, 12: Storm, 13: Rogue, 14: Iceman, 15: Pure&Fur, 16: US Agent, 17: Anita, 18: Devilot, 19: Jubilee, 20: Shadow, 21: Sentinel |
partner_attacks | Box | [0, 9] | Count of available partner attacks |
Game ID | samsh5sp |
Original ROM Name | samsh5sp.zip |
SHA256 Checksum | adf33d8a02f3d900b4aa95e62fb21d9278fb920b179665b12a489bd39a6c103d |
Search Keywords | SAMURAI SHODOWN V SPECIAL , samurai-shodown-v-special , 100347 , wowroms |
Game Resolution (H X W X C) | 224px X 320px X 3 |
Number of Moves and Attack Actions | 9, 11 (5) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-10): No-Attack, Weak Slash, Medium Slash, Kick, Meditation, Weak Slash + Medium Slash (Strong Slash), Medium Slash + Kick (Surprise Attack), Weak Slash + Kick, Kick + Meditation, Weak Slash + Medium Slash + Kick (Rage), Medium Slash + Kick + Meditation |
Max Difficulty (1P Mode) | 8 |
Number of Characters (Selectable) | 28 (28) |
Max Number of Outfits | 4 |
Number of Stages (1P Mode) | 7 |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Kyoshiro, Jubei, Hanzo, Enja, Amakusa, Suija, Galford, Charlotte, Kusare, Sogetsu, Gaira, Ukyo, Yoshitora, Gaoh, Haohmaru, Genjuro, Shizumaru, Kazuki, Tamtam, Rasetsumaru, Rimururu, Mina, Zankuro, Nakoruru, Rera, Yunfei, Basara, Mizuki |
outfits* | int | 1 | [1, 4] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 11 (attacks) - 1 (no-op counted twice) = 19 |
MultiDiscrete | 9 (moves) X 11 (attacks) = 99 |
Key | Type | Value | Description |
---|---|---|---|
frame | Box | [0, 255] X [224 X 320 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 7] | Current stage of the game |
timer | Box | [0, 60] | Round time remaining |
Key | Type | Value | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 3] | Number of rounds won by the player |
character | Discrete | [0, 27] | Index of character in use 0: Kyoshiro, 1: Jubei, 2: Hanzo, 3: Enja, 4: Amakusa, 5: Suija , 6: Galford, 7: Charlotte, 8: Kusare, 9: Sogetsu, 10: Gaira, 11: Ukyo, 12: Yoshitora, 13: Gaoh, 14: Haohmaru, 15: Genjuro, 16: Shizumaru, 17: Kazuki, 18: Tamtam, 19: Rasetsumaru, 20: Rimururu, 21: Mina, 22: Zankuro, 23: Nakoruru, 24: Rera, 25: Yunfei, 26: Basara, 27: Mizuki |
health | Box | [0, 125] | Health bar value |
rage_on | Discrete (Binary) | [0, 1] | Rage on for the player 0: False, 1: True |
rage_used | <a href=“ht | action_move | Discrete |
action_attack | Discrete | [0, 7] | Index of latest attack action performed (no-attack, hold, punch, etc.) |
weapon_lost | Discrete (Binary) | [0, 1] | Weapon lost by the player 0: False, 1: True |
weapon_fight | Discrete (Binary) | [0, 1] | Weapon fight condition triggered 0: False, 1: True |
rage_bar | Box | [0, 100] | Rage bar value |
weapon_bar | Box | [0, 120] | Weapon bar value |
power_bar | Box | [0, 64] | Power bar value |
Game ID | samsh5sp |
Original ROM Name | samsh5sp.zip |
SHA256 Checksum | adf33d8a02f3d900b4aa95e62fb21d9278fb920b179665b12a489bd39a6c103d |
Search Keywords | SAMURAI SHODOWN V SPECIAL , samurai-shodown-v-special , 100347 , wowroms |
Game Resolution (H X W X C) | 224px X 320px X 3 |
Number of Moves and Attack Actions | 9, 11 (5) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-10): No-Attack, Weak Slash, Medium Slash, Kick, Meditation, Weak Slash + Medium Slash (Strong Slash), Medium Slash + Kick (Surprise Attack), Weak Slash + Kick, Kick + Meditation, Weak Slash + Medium Slash + Kick (Rage), Medium Slash + Kick + Meditation |
Max Difficulty (1P Mode) | 8 |
Number of Characters (Selectable) | 28 (28) |
Max Number of Outfits | 4 |
Number of Stages (1P Mode) | 7 |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Kyoshiro, Jubei, Hanzo, Enja, Amakusa, Suija, Galford, Charlotte, Kusare, Sogetsu, Gaira, Ukyo, Yoshitora, Gaoh, Haohmaru, Genjuro, Shizumaru, Kazuki, Tamtam, Rasetsumaru, Rimururu, Mina, Zankuro, Nakoruru, Rera, Yunfei, Basara, Mizuki |
outfits* | int | 1 | [1, 4] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 11 (attacks) - 1 (no-op counted twice) = 19 |
MultiDiscrete | 9 (moves) X 11 (attacks) = 99 |
Key | Type | Value | Description |
---|---|---|---|
frame | Box | [0, 255] X [224 X 320 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 7] | Current stage of the game |
timer | Box | [0, 60] | Round time remaining |
Key | Type | Value | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 3] | Number of rounds won by the player |
character | Discrete | [0, 27] | Index of character in use 0: Kyoshiro, 1: Jubei, 2: Hanzo, 3: Enja, 4: Amakusa, 5: Suija , 6: Galford, 7: Charlotte, 8: Kusare, 9: Sogetsu, 10: Gaira, 11: Ukyo, 12: Yoshitora, 13: Gaoh, 14: Haohmaru, 15: Genjuro, 16: Shizumaru, 17: Kazuki, 18: Tamtam, 19: Rasetsumaru, 20: Rimururu, 21: Mina, 22: Zankuro, 23: Nakoruru, 24: Rera, 25: Yunfei, 26: Basara, 27: Mizuki |
health | Box | [0, 125] | Health bar value |
rage_on | Discrete (Binary) | [0, 1] | Rage on for the player 0: False, 1: True |
rage_used | <a href=“ht | action_move | Discrete |
action_attack | Discrete | [0, 7] | Index of latest attack action performed (no-attack, hold, punch, etc.) |
weapon_lost | Discrete (Binary) | [0, 1] | Weapon lost by the player 0: False, 1: True |
weapon_fight | Discrete (Binary) | [0, 1] | Weapon fight condition triggered 0: False, 1: True |
rage_bar | Box | [0, 100] | Rage bar value |
weapon_bar | Box | [0, 120] | Weapon bar value |
power_bar | Box | [0, 64] | Power bar value |
Game ID | sfiii3n |
Original ROM Name | sfiii3n.zip |
SHA256 Checksum | 7239b5eb005488db22ace477501c574e9420c0ab70aeeb0795dfeb474284d416 |
Search Keywords | STREET FIGHTER III 3RD STRIKE: FIGHT FOR THE FUTUR [JAPAN] (CLONE) , street-fighter-iii-3rd-strike-fight-for-the-futur-japan-clone , 106255 , wowroms |
Game Resolution (H X W X C) | 224px X 384px X 3 |
Number of Moves and Attack Actions | 9, 10 (7) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-9): No-Attack, Low Punch, Medium Punch, High Punch, Low Kick, Medium Kick, High Kick, Low Punch+Low Kick, Medium Punch+Medium Kick, High Punch+High Kick |
Max Difficulty (1P Mode) | 8 |
Number of Characters (Selectable) | 20 (19) |
Max Number of Outfits | 7 |
Number of Stages (1P Mode) | 10 |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Alex, Twelve, Hugo, Sean, Makoto, Elena, Ibuki, Chun-Li, Dudley, Necro, Q, Oro, Urien, Remy, Ryu, Gouki, Yun, Yang, Ken |
outfits* | int | 1 | [1, 7] |
Key | Type | Default Value(s) | Value Range | Description |
---|---|---|---|---|
super_art* | None U int | None | [1, 3] | Selects the type of super move. 1-2-3: Super move 1-2-3 |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 10 (attacks) - 1 (no-op counted twice) = 18 |
MultiDiscrete | 9 (moves) X 10 (attacks) = 90 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [224 X 384 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 10] | Current stage of the game |
timer | Box | [0, 100] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 2] | Number of rounds won by the player |
character | Discrete | [0, 19] | Index of character in use 0: Alex, 1: Twelve, 2: Hugo, 3: Sean, 4: Makoto, 5: Elena, 6: Ibuki, 7: Chun-Li, 8: Dudley, 9: Necro, 10: Q, 11: Oro, 12: Urien, 13: Remy, 14: Ryu, 15: Gouki, 16: Yun, 17: Yang, 18: Ken, 19: Gill |
health | Box | [-1, 160] | Health bar value |
stun_bar | Box | [0, 72] | Stun bar value |
stunned | Discrete (Binary) | [0, 1] | Stunned flag |
super_bar | Box | [0, 128] | Super bar value |
super_type | Discrete | [0, 2] | Selected type of super move 0-1-2: Super Type 1-2-3 |
super_count | Box | [0, 3] | Count of activated super moves |
super_max | Box | [1, 3] | Maximum number of activated super moves |
Game ID | sfiii3n |
Original ROM Name | sfiii3n.zip |
SHA256 Checksum | 7239b5eb005488db22ace477501c574e9420c0ab70aeeb0795dfeb474284d416 |
Search Keywords | STREET FIGHTER III 3RD STRIKE: FIGHT FOR THE FUTUR [JAPAN] (CLONE) , street-fighter-iii-3rd-strike-fight-for-the-futur-japan-clone , 106255 , wowroms |
Game Resolution (H X W X C) | 224px X 384px X 3 |
Number of Moves and Attack Actions | 9, 10 (7) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-9): No-Attack, Low Punch, Medium Punch, High Punch, Low Kick, Medium Kick, High Kick, Low Punch+Low Kick, Medium Punch+Medium Kick, High Punch+High Kick |
Max Difficulty (1P Mode) | 8 |
Number of Characters (Selectable) | 20 (19) |
Max Number of Outfits | 7 |
Number of Stages (1P Mode) | 10 |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Alex, Twelve, Hugo, Sean, Makoto, Elena, Ibuki, Chun-Li, Dudley, Necro, Q, Oro, Urien, Remy, Ryu, Gouki, Yun, Yang, Ken |
outfits* | int | 1 | [1, 7] |
Key | Type | Default Value(s) | Value Range | Description |
---|---|---|---|---|
super_art* | None U int | None | [1, 3] | Selects the type of super move. 1-2-3: Super move 1-2-3 |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 10 (attacks) - 1 (no-op counted twice) = 18 |
MultiDiscrete | 9 (moves) X 10 (attacks) = 90 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [224 X 384 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 10] | Current stage of the game |
timer | Box | [0, 100] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 2] | Number of rounds won by the player |
character | Discrete | [0, 19] | Index of character in use 0: Alex, 1: Twelve, 2: Hugo, 3: Sean, 4: Makoto, 5: Elena, 6: Ibuki, 7: Chun-Li, 8: Dudley, 9: Necro, 10: Q, 11: Oro, 12: Urien, 13: Remy, 14: Ryu, 15: Gouki, 16: Yun, 17: Yang, 18: Ken, 19: Gill |
health | Box | [-1, 160] | Health bar value |
stun_bar | Box | [0, 72] | Stun bar value |
stunned | Discrete (Binary) | [0, 1] | Stunned flag |
super_bar | Box | [0, 128] | Super bar value |
super_type | Discrete | [0, 2] | Selected type of super move 0-1-2: Super Type 1-2-3 |
super_count | Box | [0, 3] | Count of activated super moves |
super_max | Box | [1, 3] | Maximum number of activated super moves |
Game ID | soulclbr |
Original ROM Name | soulclbr.zip |
SHA256 Checksum | a07a1a19995d582b56f2865783c5d7adb7acb9a6ad995a26fc7c4cfecd821817 |
Search Keywords | soul calibur , soul-calibur , 106959 , wowroms |
Game Resolution (H X W X C) | 240 X 512px X 3 |
Number of Moves and Attack Actions | 9, 13 (5) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-12): No-Attack, Horizontal Attack, Vertical Attack, Kick, Guard, HA+VA, HA+K, VA+K, HA+G, VA+G, K+G, HA+VA+K, HA+VA+G |
Max Difficulty (1P Mode) | 5 |
Number of Characters (Selectable) | 18 (17) |
Max Number of Outfits | 2 |
Number of Stages (1P Mode) | 8 |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Xianghua, Yoshimitsu, Lizard Man, Siegfried, Rock, Seung Mina, Edge Master, Voldo, Ivy, Sophitia, Arthur, Kilik, Hwang, Maxi, Nightmare, Taki, Astaroth |
outfits* | int | 1 | [1, 2] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 13 (attacks) - 1 (no-op counted twice) = 21 |
MultiDiscrete | 9 (moves) X 13 (attacks) = 117 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [240 X 512 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 8] | Current stage of the game |
timer | Box | [0, 40] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 2] | Number of rounds won by the player |
character | Discrete | [0, 17] | Index of character in use 0: Xianghua, 1: Yoshimitsu, 2: Lizard Man, 3: Siegfried, 4: Rock, 5: Seung Mina, 6: Edge Master, 7: Voldo, 8: Ivy, 9: Sophitia, 10: Arthur, 11: Kilik, 12: Hwang, 13: Maxi, 14: Nightmare, 15: Taki, 16: Astaroth, 17: Inferno |
health | Box | [0, 240] | Health bar value |
Game ID | soulclbr |
Original ROM Name | soulclbr.zip |
SHA256 Checksum | a07a1a19995d582b56f2865783c5d7adb7acb9a6ad995a26fc7c4cfecd821817 |
Search Keywords | soul calibur , soul-calibur , 106959 , wowroms |
Game Resolution (H X W X C) | 240 X 512px X 3 |
Number of Moves and Attack Actions | 9, 13 (5) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-12): No-Attack, Horizontal Attack, Vertical Attack, Kick, Guard, HA+VA, HA+K, VA+K, HA+G, VA+G, K+G, HA+VA+K, HA+VA+G |
Max Difficulty (1P Mode) | 5 |
Number of Characters (Selectable) | 18 (17) |
Max Number of Outfits | 2 |
Number of Stages (1P Mode) | 8 |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Xianghua, Yoshimitsu, Lizard Man, Siegfried, Rock, Seung Mina, Edge Master, Voldo, Ivy, Sophitia, Arthur, Kilik, Hwang, Maxi, Nightmare, Taki, Astaroth |
outfits* | int | 1 | [1, 2] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 13 (attacks) - 1 (no-op counted twice) = 21 |
MultiDiscrete | 9 (moves) X 13 (attacks) = 117 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [240 X 512 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 8] | Current stage of the game |
timer | Box | [0, 40] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 2] | Number of rounds won by the player |
character | Discrete | [0, 17] | Index of character in use 0: Xianghua, 1: Yoshimitsu, 2: Lizard Man, 3: Siegfried, 4: Rock, 5: Seung Mina, 6: Edge Master, 7: Voldo, 8: Ivy, 9: Sophitia, 10: Arthur, 11: Kilik, 12: Hwang, 13: Maxi, 14: Nightmare, 15: Taki, 16: Astaroth, 17: Inferno |
health | Box | [0, 240] | Health bar value |
Game ID | tektagt |
Original ROM Name | tektagtac.zip Rename the rom from tektagtac.zip to tektagt.zip |
SHA256 Checksum | 57be777eae0ee9e1c035a64da4c0e7cb7112259ccebe64e7e97029ac7f01b168 |
Search Keywords | TEKKEN TAG TOURNAMENT [ASIA] (CLONE) , tekken-tag-tournament-asia-clone , 108661 , wowroms |
Game Resolution (H X W X C) | 240px X 512px X 3 |
Number of Moves and Attack Actions | 9, 13 (6) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-12): No-Attack, Left Punch, Right Punch, Left Kick, Right Kick, Tag, Left Punch+Right Punch, Left Punch+Left Kick, Left Punch+Right Kick, Right Punch+Left Kick, Right Punch+Right Kick, Right Punch+Tag, Left Kick+Right Kick |
Max Difficulty (1P Mode) | 9 |
Number of Characters (Selectable) | 39 (38) |
Max Number of Outfits | 5 (Note that some characters have a lower number of available outfits) |
Number of Stages (1P Mode) | 8 |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 9] |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Xiaoyu, Yoshimitsu, Nina, Law, Hwoarang, Eddy, Paul, King, Lei, Jin, Baek, Michelle, Armorking, Gunjack, Anna, Brian, Heihachi, Ganryu, Julia, Jun, Kunimitsu, Kazuya, Bruce, Kuma, Jack-Z, Lee, Wang, P.Jack, Devil, True Ogre, Ogre, Roger, Tetsujin, Panda, Tiger, Angel, Alex, Mokujin |
outfits* | int | 1 | [1, 2] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 13 (attacks) - 1 (no-op counted twice) = 21 |
MultiDiscrete | 9 (moves) X 13 (attacks) = 117 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [240 X 512 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 8] | Current stage of the game |
timer | Box | [0, 60] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 2] | Number of rounds won by the player |
character_1 | Discrete | [0, 38] | Index of first character slot 0: Xiaoyu, 1: Yoshimitsu, 2: Nina, 3: Law, 4: Hwoarang, 5: Eddy, 6: Paul, 7: King, 8: Lei, 9: Jin, 10: Baek, 11: Michelle, 12: Armorking, 13: Gunjack, 14: Anna, 15: Brian, 16: Heihachi, 17: Ganryu, 18: Julia, 19: Jun, 20: Kunimitsu, 21: Kazuya, 22: Bruce, 23: Kuma, 24: Jack-Z, 25: Lee, 26: Wang, 27: P.Jack, 28: Devil, 29: True Ogre, 30: Ogre, 31: Roger, 32: Tetsujin, 33: Panda, 34: Tiger, 35: Angel, 36: Alex, 37: Mokujin, 38: Unknown |
character_2 | Discrete | [0, 38] | Index of second character slot 0: Xiaoyu, 1: Yoshimitsu, 2: Nina, 3: Law, 4: Hwoarang, 5: Eddy, 6: Paul, 7: King, 8: Lei, 9: Jin, 10: Baek, 11: Michelle, 12: Armorking, 13: Gunjack, 14: Anna, 15: Brian, 16: Heihachi, 17: Ganryu, 18: Julia, 19: Jun, 20: Kunimitsu, 21: Kazuya, 22: Bruce, 23: Kuma, 24: Jack-Z, 25: Lee, 26: Wang, 27: P.Jack, 28: Devil, 29: True Ogre, 30: Ogre, 31: Roger, 32: Tetsujin, 33: Panda, 34: Tiger, 35: Angel, 36: Alex, 37: Mokujin, 38: Unknown |
character | Discrete | [0, 38] | Index of character in use 0: Xiaoyu, 1: Yoshimitsu, 2: Nina, 3: Law, 4: Hwoarang, 5: Eddy, 6: Paul, 7: King, 8: Lei, 9: Jin, 10: Baek, 11: Michelle, 12: Armorking, 13: Gunjack, 14: Anna, 15: Brian, 16: Heihachi, 17: Ganryu, 18: Julia, 19: Jun, 20: Kunimitsu, 21: Kazuya, 22: Bruce, 23: Kuma, 24: Jack-Z, 25: Lee, 26: Wang, 27: P.Jack, 28: Devil, 29: True Ogre, 30: Ogre, 31: Roger, 32: Tetsujin, 33: Panda, 34: Tiger, 35: Angel, 36: Alex, 37: Mokujin, 38: Unknown |
health_1 | Box | [0, 227] | Health bar value for first character in use |
health_2 | Box | [0, 227] | Health bar value for second character in use |
active_character | Discrete (Binary) | [0, 1] | Index of the active character 0: first, 1: second |
bar_status | Discrete | [0, 4] | Status of the background character health bar 0: reserve health bar almost filled, 1: small amount of health lost, recharging in progress, 2: large amount of health lost, recharging in progress, 3: rage mode on, combo attack ready, 4: no background character (final boss) |
Game ID | tektagt |
Original ROM Name | tektagtac.zip Rename the rom from tektagtac.zip to tektagt.zip |
SHA256 Checksum | 57be777eae0ee9e1c035a64da4c0e7cb7112259ccebe64e7e97029ac7f01b168 |
Search Keywords | TEKKEN TAG TOURNAMENT [ASIA] (CLONE) , tekken-tag-tournament-asia-clone , 108661 , wowroms |
Game Resolution (H X W X C) | 240px X 512px X 3 |
Number of Moves and Attack Actions | 9, 13 (6) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-12): No-Attack, Left Punch, Right Punch, Left Kick, Right Kick, Tag, Left Punch+Right Punch, Left Punch+Left Kick, Left Punch+Right Kick, Right Punch+Left Kick, Right Punch+Right Kick, Right Punch+Tag, Left Kick+Right Kick |
Max Difficulty (1P Mode) | 9 |
Number of Characters (Selectable) | 39 (38) |
Max Number of Outfits | 5 (Note that some characters have a lower number of available outfits) |
Number of Stages (1P Mode) | 8 |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 9] |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Xiaoyu, Yoshimitsu, Nina, Law, Hwoarang, Eddy, Paul, King, Lei, Jin, Baek, Michelle, Armorking, Gunjack, Anna, Brian, Heihachi, Ganryu, Julia, Jun, Kunimitsu, Kazuya, Bruce, Kuma, Jack-Z, Lee, Wang, P.Jack, Devil, True Ogre, Ogre, Roger, Tetsujin, Panda, Tiger, Angel, Alex, Mokujin |
outfits* | int | 1 | [1, 2] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 13 (attacks) - 1 (no-op counted twice) = 21 |
MultiDiscrete | 9 (moves) X 13 (attacks) = 117 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [240 X 512 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 8] | Current stage of the game |
timer | Box | [0, 60] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 2] | Number of rounds won by the player |
character_1 | Discrete | [0, 38] | Index of first character slot 0: Xiaoyu, 1: Yoshimitsu, 2: Nina, 3: Law, 4: Hwoarang, 5: Eddy, 6: Paul, 7: King, 8: Lei, 9: Jin, 10: Baek, 11: Michelle, 12: Armorking, 13: Gunjack, 14: Anna, 15: Brian, 16: Heihachi, 17: Ganryu, 18: Julia, 19: Jun, 20: Kunimitsu, 21: Kazuya, 22: Bruce, 23: Kuma, 24: Jack-Z, 25: Lee, 26: Wang, 27: P.Jack, 28: Devil, 29: True Ogre, 30: Ogre, 31: Roger, 32: Tetsujin, 33: Panda, 34: Tiger, 35: Angel, 36: Alex, 37: Mokujin, 38: Unknown |
character_2 | Discrete | [0, 38] | Index of second character slot 0: Xiaoyu, 1: Yoshimitsu, 2: Nina, 3: Law, 4: Hwoarang, 5: Eddy, 6: Paul, 7: King, 8: Lei, 9: Jin, 10: Baek, 11: Michelle, 12: Armorking, 13: Gunjack, 14: Anna, 15: Brian, 16: Heihachi, 17: Ganryu, 18: Julia, 19: Jun, 20: Kunimitsu, 21: Kazuya, 22: Bruce, 23: Kuma, 24: Jack-Z, 25: Lee, 26: Wang, 27: P.Jack, 28: Devil, 29: True Ogre, 30: Ogre, 31: Roger, 32: Tetsujin, 33: Panda, 34: Tiger, 35: Angel, 36: Alex, 37: Mokujin, 38: Unknown |
character | Discrete | [0, 38] | Index of character in use 0: Xiaoyu, 1: Yoshimitsu, 2: Nina, 3: Law, 4: Hwoarang, 5: Eddy, 6: Paul, 7: King, 8: Lei, 9: Jin, 10: Baek, 11: Michelle, 12: Armorking, 13: Gunjack, 14: Anna, 15: Brian, 16: Heihachi, 17: Ganryu, 18: Julia, 19: Jun, 20: Kunimitsu, 21: Kazuya, 22: Bruce, 23: Kuma, 24: Jack-Z, 25: Lee, 26: Wang, 27: P.Jack, 28: Devil, 29: True Ogre, 30: Ogre, 31: Roger, 32: Tetsujin, 33: Panda, 34: Tiger, 35: Angel, 36: Alex, 37: Mokujin, 38: Unknown |
health_1 | Box | [0, 227] | Health bar value for first character in use |
health_2 | Box | [0, 227] | Health bar value for second character in use |
active_character | Discrete (Binary) | [0, 1] | Index of the active character 0: first, 1: second |
bar_status | Discrete | [0, 4] | Status of the background character health bar 0: reserve health bar almost filled, 1: small amount of health lost, recharging in progress, 2: large amount of health lost, recharging in progress, 3: rage mode on, combo attack ready, 4: no background character (final boss) |
Game ID | umk3 |
Original ROM Name | umk3r10.zip Rename the rom from umk3r10.zip to umk3.zip |
SHA256 Checksum | f48216ad82f78cb86e9c07d2507be347f904f4b5ae354a85ae7c34d969d265af |
Search Keywords | ULTIMATE MORTAL KOMBAT 3 (CLONE) , ultimate-mortal-kombat-3-clone , 109574 , wowroms |
Game Resolution (H X W X C) | 254px X 500px X 3 |
Number of Moves and Attack Actions | 9, 7 (7) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-6): (No-Attack, High Punch, High Kick, Low Kick, Low Punch, Run, Block) |
Max Difficulty (1P Mode) | 5 |
Number of Characters (Selectable) | 26 (22) |
Max Number of Outfits | 1 |
Number of Stages (1P Mode) | 8 (Tower 1), 9 (Tower 2), 10 (Tower 3), 11 (Tower 4) |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 5] |
Key | Type | Default Value(s) | Value Range | Description |
---|---|---|---|---|
tower | int | 3 | [1, 4] | Selects the tower to play in (1P mode only) |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Kitana, Reptile, Kano, Sektor, Kabal, Sonya, Mileena, Sindel, Sheeva, Jax, Ermac, Stryker, Shang Tsung, Nightwolf, Sub-Zero-2, Cyrax, Liu Kang, Jade, Sub-Zero, Kung Lao, Smoke, Skorpion |
outfits* | int | 1 | [1, 1] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 7 (attacks) - 1 (no-op counted twice) = 15 |
MultiDiscrete | 9 (moves) X 7 (attacks) = 63 |
Key | Type | Value | Description |
---|---|---|---|
frame | Box | [0, 255] X [254 X 500 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 11] | Current stage of the game |
timer | Box | [0, 100] | Round time remaining |
Key | Type | Value | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 2] | Number of rounds won by the player |
character | Discrete | [0, 25] | Index of character in use 0: Kitana, 1: Reptile, 2: Kano, 3: Sektor, 4: Kabal, 5: Sonya, 6: Mileena, 7: Sindel, 8: Sheeva, 9: Jax, 10: Ermac, 11: Stryker, 12: Shang Tsung, 13: Nightwolf, 14: Sub-Zero-2, 15: Cyrax, 16: Liu Kang, 17: Jade, 18: Sub-Zero, 19: Kung Lao, 20: Smoke, 21: Skorpion, 22: Human Smoke, 23: Noob Saibot, 24: Motaro", 25: Shao Kahn |
health | Box | [0, 166] | Health bar value |
aggressor_bar | Box | [0, 48] | Aggressor bar value |
Game ID | umk3 |
Original ROM Name | umk3r10.zip Rename the rom from umk3r10.zip to umk3.zip |
SHA256 Checksum | f48216ad82f78cb86e9c07d2507be347f904f4b5ae354a85ae7c34d969d265af |
Search Keywords | ULTIMATE MORTAL KOMBAT 3 (CLONE) , ultimate-mortal-kombat-3-clone , 109574 , wowroms |
Game Resolution (H X W X C) | 254px X 500px X 3 |
Number of Moves and Attack Actions | 9, 7 (7) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-6): (No-Attack, High Punch, High Kick, Low Kick, Low Punch, Run, Block) |
Max Difficulty (1P Mode) | 5 |
Number of Characters (Selectable) | 26 (22) |
Max Number of Outfits | 1 |
Number of Stages (1P Mode) | 8 (Tower 1), 9 (Tower 2), 10 (Tower 3), 11 (Tower 4) |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 5] |
Key | Type | Default Value(s) | Value Range | Description |
---|---|---|---|---|
tower | int | 3 | [1, 4] | Selects the tower to play in (1P mode only) |
Key | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Kitana, Reptile, Kano, Sektor, Kabal, Sonya, Mileena, Sindel, Sheeva, Jax, Ermac, Stryker, Shang Tsung, Nightwolf, Sub-Zero-2, Cyrax, Liu Kang, Jade, Sub-Zero, Kung Lao, Smoke, Skorpion |
outfits* | int | 1 | [1, 1] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 7 (attacks) - 1 (no-op counted twice) = 15 |
MultiDiscrete | 9 (moves) X 7 (attacks) = 63 |
Key | Type | Value | Description |
---|---|---|---|
frame | Box | [0, 255] X [254 X 500 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 11] | Current stage of the game |
timer | Box | [0, 100] | Round time remaining |
Key | Type | Value | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 2] | Number of rounds won by the player |
character | Discrete | [0, 25] | Index of character in use 0: Kitana, 1: Reptile, 2: Kano, 3: Sektor, 4: Kabal, 5: Sonya, 6: Mileena, 7: Sindel, 8: Sheeva, 9: Jax, 10: Ermac, 11: Stryker, 12: Shang Tsung, 13: Nightwolf, 14: Sub-Zero-2, 15: Cyrax, 16: Liu Kang, 17: Jade, 18: Sub-Zero, 19: Kung Lao, 20: Smoke, 21: Skorpion, 22: Human Smoke, 23: Noob Saibot, 24: Motaro", 25: Shao Kahn |
health | Box | [0, 166] | Health bar value |
aggressor_bar | Box | [0, 48] | Aggressor bar value |
Game ID | xmvsf |
Original ROM Name | xmvsf.zip Requires the QSound_HLE sound driver to be placed in the roms folder. Search keywords: “qsound_hle.zip”, “dl-1425.bin” |
SHA256 Checksum | 833aa46af63a3ad87f69ce2bacd85a4445f35a50e3aff4f793f069b205b51c60 |
Search Keywords | x-men vs street fighter , x-men-vs.-street-fighter-usa-961004 , 8769 , wowroms |
Game Resolution (H X W X C) | 224px X 384px X 3 |
Number of Moves and Attack Actions | 9, 18 (7) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-17): No-Attack, Weak Punch, Medium Punch, Strong Punch, Weak Kick, Medium Kick, Strong Kick, WP+MP, MP+SP, WP+SP, WK+MK, MK+SK, WK+SK, WP+WK, SP+SK, MP+WK, WP+MP+SP, WK+MK+SK |
Max Difficulty (1P Mode) | 8 |
Number of Characters (Selectable) | 19 (17) |
Max Number of Outfits | 2 |
Number of Stages (1P Mode) | 8 |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Akuma, Magneto, Juggernaut, Dhalsim, Mr. Bison, Sabretooth, Storm, Chun-Li, Zangief, Gambit, Rogue, Cammy, Charlie, Wolverine, Cyclops, Ryu, Ken |
outfits* | int | 1 | [1, 2] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 18 (attacks) - 1 (no-op counted twice) = 26 |
MultiDiscrete | 9 (moves) X 18 (attacks) = 162 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [224 X 384 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 8] | Current stage of the game |
timer | Box | [0, 99] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 1] | Number of rounds won by the player |
character_1 | Discrete | [0, 18] | Index of first character slot 0: Akuma, 1: Magneto, 2: Juggernaut, 3: Dhalsim, 4: Mr. Bison, 5: Sabretooth, 6: Storm, 7: Chun-Li, 8: Zangief, 9: Gambit, 10: Rogue, 11: Cammy, 12: Charlie, 13: Wolverine, 14: Cyclops, 15: Ryu, 16: Ken, 17: Apocalypse, 18: Alpha Chun-Li |
character_2 | Discrete | [0, 18] | Index of second character slot 0: Akuma, 1: Magneto, 2: Juggernaut, 3: Dhalsim, 4: Mr. Bison, 5: Sabretooth, 6: Storm, 7: Chun-Li, 8: Zangief, 9: Gambit, 10: Rogue, 11: Cammy, 12: Charlie, 13: Wolverine, 14: Cyclops, 15: Ryu, 16: Ken, 17: Apocalypse, 18: Alpha Chun-Li |
character | Discrete | [0, 18] | Index of character in use 0: Akuma, 1: Magneto, 2: Juggernaut, 3: Dhalsim, 4: Mr. Bison, 5: Sabretooth, 6: Storm, 7: Chun-Li, 8: Zangief, 9: Gambit, 10: Rogue, 11: Cammy, 12: Charlie, 13: Wolverine, 14: Cyclops, 15: Ryu, 16: Ken, 17: Apocalypse, 18: Alpha Chun-Li |
health_1 | Box | [0, 144] | Health bar value for first character in use |
health_2 | Box | [0, 144] | Health bar value for second character in use |
active_character | Discrete (Binary) | [0, 1] | Index of the active character 1: first, 0: second |
super_bar | Box | [0, 144] | Super bar value |
super_count | Box | [0, 3] | Count of activated super moves |
Game ID | xmvsf |
Original ROM Name | xmvsf.zip Requires the QSound_HLE sound driver to be placed in the roms folder. Search keywords: “qsound_hle.zip”, “dl-1425.bin” |
SHA256 Checksum | 833aa46af63a3ad87f69ce2bacd85a4445f35a50e3aff4f793f069b205b51c60 |
Search Keywords | x-men vs street fighter , x-men-vs.-street-fighter-usa-961004 , 8769 , wowroms |
Game Resolution (H X W X C) | 224px X 384px X 3 |
Number of Moves and Attack Actions | 9, 18 (7) Moves (0-8): No-Move, Left, Left+Up, Up, Up+Right, Right, Right+Down, Down, Down+Left Attacks (0-17): No-Attack, Weak Punch, Medium Punch, Strong Punch, Weak Kick, Medium Kick, Strong Kick, WP+MP, MP+SP, WP+SP, WK+MK, MK+SK, WK+SK, WP+WK, SP+SK, MP+WK, WP+MP+SP, WK+MK+SK |
Max Difficulty (1P Mode) | 8 |
Number of Characters (Selectable) | 19 (17) |
Max Number of Outfits | 2 |
Number of Stages (1P Mode) | 8 |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
difficulty | None U int | None | [1, 8] |
Name | Type | Default Value(s) | Value Range |
---|---|---|---|
characters* | None U str U tuple of maximum three str | None | Akuma, Magneto, Juggernaut, Dhalsim, Mr. Bison, Sabretooth, Storm, Chun-Li, Zangief, Gambit, Rogue, Cammy, Charlie, Wolverine, Cyclops, Ryu, Ken |
outfits* | int | 1 | [1, 2] |
*: must be provided as tuples of two elements (for agent_0
and agent_1
respectively) when using the environments in two players mode.
Type | Space Size (Number of Actions) |
---|---|
Discrete | 9 (moves) + 18 (attacks) - 1 (no-op counted twice) = 26 |
MultiDiscrete | 9 (moves) X 18 (attacks) = 162 |
Key | Type | Value Range | Description |
---|---|---|---|
frame | Box | [0, 255] X [224 X 384 X 3] | Latest game frame (RGB pixel screen) |
stage | Box | [1, 8] | Current stage of the game |
timer | Box | [0, 99] | Round time remaining |
Key | Type | Value Range | Description |
---|---|---|---|
side | Discrete (Binary) | [0, 1] | Side of the stage where the player is 0: Left, 1: Right |
wins | Box | [0, 1] | Number of rounds won by the player |
character_1 | Discrete | [0, 18] | Index of first character slot 0: Akuma, 1: Magneto, 2: Juggernaut, 3: Dhalsim, 4: Mr. Bison, 5: Sabretooth, 6: Storm, 7: Chun-Li, 8: Zangief, 9: Gambit, 10: Rogue, 11: Cammy, 12: Charlie, 13: Wolverine, 14: Cyclops, 15: Ryu, 16: Ken, 17: Apocalypse, 18: Alpha Chun-Li |
character_2 | Discrete | [0, 18] | Index of second character slot 0: Akuma, 1: Magneto, 2: Juggernaut, 3: Dhalsim, 4: Mr. Bison, 5: Sabretooth, 6: Storm, 7: Chun-Li, 8: Zangief, 9: Gambit, 10: Rogue, 11: Cammy, 12: Charlie, 13: Wolverine, 14: Cyclops, 15: Ryu, 16: Ken, 17: Apocalypse, 18: Alpha Chun-Li |
character | Discrete | [0, 18] | Index of character in use 0: Akuma, 1: Magneto, 2: Juggernaut, 3: Dhalsim, 4: Mr. Bison, 5: Sabretooth, 6: Storm, 7: Chun-Li, 8: Zangief, 9: Gambit, 10: Rogue, 11: Cammy, 12: Charlie, 13: Wolverine, 14: Cyclops, 15: Ryu, 16: Ken, 17: Apocalypse, 18: Alpha Chun-Li |
health_1 | Box | [0, 144] | Health bar value for first character in use |
health_2 | Box | [0, 144] | Health bar value for second character in use |
active_character | Discrete (Binary) | [0, 1] | Index of the active character 1: first, 0: second |
super_bar | Box | [0, 144] | Super bar value |
super_count | Box | [0, 3] | Count of activated super moves |
With the following additional term at the denominator:
The normalization term at the denominator ensures that a round won with a perfect (i.e. without losing any health), generates always the same maximum total cumulative reward (for the round) accross all games, equal to $N_c/N_k$.
This section presents a detailed description of the examples that are provided with DIAMBRA Arena repository. They cover the most important use-cases, and can be used as templates and starting points to explore all the features of the software package.
These examples show how to leverage both single and two players modes, how to set up environment wrappers with all their options, how to record human expert demonstrations and how to load them to apply imitation learning.
Every example has a dedicated page that can be reached via the sidebar menu or the list below.
Source code for examples described in what follows can be found in the code repository, here.
This section presents a detailed description of the examples that are provided with DIAMBRA Arena repository. They cover the most important use-cases, and can be used as templates and starting points to explore all the features of the software package.
These examples show how to leverage both single and two players modes, how to set up environment wrappers with all their options, how to record human expert demonstrations and how to load them to apply imitation learning.
Every example has a dedicated page that can be reached via the sidebar menu or the list below.
Source code for examples described in what follows can be found in the code repository, here.
It is possible to activate emulator native rendering while running environments (i.e. bringing up the emulator graphics window). The CLI provides a specific flag for this purpose, but currently this is supported only on Linux, while Windows and MacOS users have to configure a Xserver and link it to the environment container. The next tabs provide hints for each context.
On Linux, the CLI allows to render emulator natively on the host, the user only needs to add the -g
flag to the run command, as follows:
diambra run -g python diambra_arena_gist.py
-
Activating emulator native rendering will open a GUI where the game executes. Currently, this feature is affected by a problem: the mouse cursor disappears and remains constrained inside such window. To re-aquire control of the OS Xserver, one can circle through the active windows using the key combination ALT+TAB and highlight a different one.
To run environments with native emulator GUI support on Windows, currently requires the user to setup a virtual XServer and connect it to the container. We cannot provide support for this use case at the moment, but we plan to implement this feature in the near future.
A virtual XServer that in our experience proved to be effective is VcXsrv Windows X Server.
To run environments with native emulator GUI support on MacOS, currently requires the user to setup a virtual XServer and connect it to the container. We cannot provide support for this use case at the moment, but we plan to implement this feature in the near future.
A virtual XServer that in our experience proved to be effective is XQuartz 2.7.8 coupled to socat
that can be installed via brew install socat
.
Activating emulator native rendering will open a GUI where the game executes. Currently, this feature is affected by a problem: the mouse cursor disappears and remains constrained inside such window. To re-aquire control of the OS Xserver, one can circle through the active windows using the key combination ALT+TAB and highlight a different one.
To run environments with native emulator GUI support on Windows, currently requires the user to setup a virtual XServer and connect it to the container. We cannot provide support for this use case at the moment, but we plan to implement this feature in the near future.
A virtual XServer that in our experience proved to be effective is VcXsrv Windows X Server.
To run environments with native emulator GUI support on MacOS, currently requires the user to setup a virtual XServer and connect it to the container. We cannot provide support for this use case at the moment, but we plan to implement this feature in the near future.
A virtual XServer that in our experience proved to be effective is XQuartz 2.7.8 coupled to socat
that can be installed via brew install socat
.
More complex scripts can be built in similar ways, for example continuously performing user-defined combos moves, or adding some more complex choice mechanics. But this would still require to decide the tactics in advance, properly translating knowledge into code. A different approach would be to leverage reinforcement learning, so that the agent will improve leveraging its own experience.
An alternative approach to scripted agents is adopting reinforcement learning, and the following sections provide examples on how to do that with the most important libraries in the domain.
DIAMBRA Arena natively provides interfaces to SheepRL, Stable Baselines 3, and Ray RLlib, allowing to easily train models with them on our environments. Each library-dedicated page presents some basic and advanced examples.
DIAMBRA Arena provides a working interface with Stable Baselines 2 too, but it is deprecated and will be discontinued in the near future.
More complex scripts can be built in similar ways, for example continuously performing user-defined combos moves, or adding some more complex choice mechanics. But this would still require to decide the tactics in advance, properly translating knowledge into code. A different approach would be to leverage reinforcement learning, so that the agent will improve leveraging its own experience.
An alternative approach to scripted agents is adopting reinforcement learning, and the following sections provide examples on how to do that with the most important libraries in the domain.
DIAMBRA Arena natively provides interfaces to SheepRL, Stable Baselines 3, and Ray RLlib, allowing to easily train models with them on our environments. Each library-dedicated page presents some basic and advanced examples.
DIAMBRA Arena provides a working interface with Stable Baselines 2 too, but it is deprecated and will be discontinued in the near future.
How to run it locally:
diambra run python agent.py --trainedModel /absolute/path/to/checkpoint/ --envSpaces /absolute/path/to/environment/spaces/descriptor/
-
How to run it locally:
diambra run python agent.py --cfgFile /absolute/path/to/config.yaml --trainedModel "model_name"
-
and the configuration file to be used is the same that was used for training it, like the one reported in the previous paragraph.
and the configuration file to be used is the same that was used for training it, like the one reported in the previous paragraph.
L~6F57JH@e_XIHv4=%#VzqU!&pKnFm1~db+^UK zZVS+eE47D$mf~$2S4HRy>3svj)9(mG&r`uxdYkjXBm^hHC`I%M@CoyYJe`yHY$2Tx zVLszHMtaCrjg^S#+U~x|x)Y7W>TX&6g>uWesf+JMtgubPJ!?~PvosQ^Us*;`%OQ<#3bNLxsV);%q?K$q3hMNVP^9A>CB`Z^}bwlH*w@Kam zaX&4(iw+C=;S`7 l MfJDP*{_B)z<;CtA#jQm45>GawA+QH-=_daOFCVTB6<>olw?B{Ut{lV|h zQKdWe!!GyT5WksdxkDshvK3-kC7;d!gmuMZk+3B7Wfr21t)&aGa)s7KBeWV-8dd62 z+(J}V{aaxn1)YJQQej9khszWQQiqkHft`yjX}6hBW!|VCq;2mRz3_Sbur?pKs@*gA zzJ{JLgxd0YiOS@5j0fs^jpJc@!N|1XfgN^Vil0Ev`92GhztX4Hl<4FB>Tcmq4j+hA z_nuQjR9KNsfu9_MkiSqnb=#4sa+Jt&f+MV9{7gDT#qV8)ZT^I&GU7`I?930mxH(L; zqI4@S?;KkSjKqGbbauzKs@)Uem8=w9XQDl>s9DOjRN)o+fbj}~8(jrMktf`_3xiA5 zz*1&OsLs_CUbfc2Fjflcs;_R1ysw(&6>V$lxHDM2_;TZ_gpgxt$PpVwiV|LT=~K+h z(RRT?m7Wxspc0nN`O%-SLEY`r`o2K_ryy7nBM3-?I|*W5( ~DL%5Op&IWaP9Ao0zt@dU`ifF!x1mtT*v-d%rY86Rh(vFl!uSNpH}hNzko1 z?kUrr#92$mt40@t9KmeqK;o7J44sV!^m@wZH-&`863`RaW4?~ak?&6CXgp1?_dme+ z7!>DsmSQ_QtG8qsxNu!ShnJpAH=#AY2UPe$HDdK(cN8C^DJIdI`_4}t*!!tZHGh^s zF)gF6DzpU#SbM~0`CaWUCwPOtdypc}qe9iFmF@O1H@7QlqbA4N%iYFV*`yafv+U08 zf$QIZzx-eqoOUljI5=|qT!UA_&{;vX#qqRa1uJj$bxfY~VpP9I-t%Ouvy(x-CL(~Z z6GDdv2ZJx4(I<)mYAAD(uBk9m szh_o3DFJt?ix9*SQ>NC?9S<1RE;%P!3zGFC$5YCs}_RaUg5tDlnZoAP&{+u7q;y z53TysdLVYxS#El3Pgycmzu UVorYB}-+m=I`hCJ~mO1<;kT zH=xcH>aTsTPE@ynIW#onc@R?py zNQlb%2dn6M ztiK?;wP@B;V94#FPd3sh%vzWb^xdq>=vyX$ R%g(=l6S33RSj=7~*?J z<`L&~Ff)8ZKU)`4M;9&IbGtdYa51@HJJ}zH%Pm-KOql-l%kBEL8ma0~ri5qf%9M%K z?bVJ%MM4A8_shr*Z3 Y0vKpj0JaHuTQ&bQBDeh9q7*?!mzz3| zJ!G2qoqFXhIzv@#Ej3TkN*~Pp#xPx0no$8!1I;$tO`Lzcr=$x;KoL1)Z`mO8!%?LR z_;6j9pD6EXfs~RC70*1bq#rjVY@pA+L#RLu?hOI%LM E)0M(J{kSyZ~V zl14iH42$5(=B5HD-wFsLzd0H&UGMyLYCscoPxJd G`UYn@$v+ zHtli{_z48sIvoVML8{$VxdUK^v=fD`mN#3nSBUFg)a$bJcHetD69hVlDZeYkcZwl3 z76rkZ77h6LNj#*zMW|nRk!k|aD-~UR9cG@@v$H>sLpv8~Iri(HI97}z;WDVP9etl2 z_+6lCaS!d|!^w1*?|Df8%&}riz4tod* 6GulQQ}H~}Cs5JuJud5h z{ZW>P$vz+5WFRq#O*D6=_qG#k*f=IwQl1<0jk^I;eXJ~ekNoSG<&2hVr-d~Jr6KtI zi{)^VTa|} k-uJQGs!=#*5^^0#9X6noniz%{R3goiQ>sQBK};}d(# z_mY3)H=`r9jE&~1jxv@+v7%(eL{p3o0i}xD8id~17iSt_q*9qlo}*=2zRq5Z+jw+! za|=2sb@LE1(PH$E_)Pe^^SL!Z?R8YXG$8)si?O0#a#fU8I!(f}Ti$If*w{1%mp zLiOwL2K>ijut5dm%93XxiFZlU$|&6%sndK3kxZ$kdZbVxT8BVp`WOP$(w;+^+5OAB zfYXZ4 F&R9s>UG zO4-YzmJ2n38C#7PVJa{2!W3pqdEctDh5|~lgh tRCB4$OB^tBnRU1URF~d=gcDtEhzbM3$Wf)(l3@bt&gcU9yn-W{FxiVEw_Pz*o zy4_j)d2|$cc0*!%ag@? ?758X<7469ZS%)kF+Pte3|Zz>8TqyCEV3eDe^zd! zE1Zzz#bfebc^X5AV}W|%8cTXMrJvDug7R9|-na5ctK&z5+^^)-b9J^cmT#Bf_H-zX zbxa?qjb`(OUe6m>^g (t@9yZ4mc7e5;k_p=6MiWA^sDC$Y(6B{Mm#A zKfl7FwK3H7dVxB9CwBQy8JYw>sS&PGEUpLK?%$&hwH#2FG}UhnJ$bR%*mboVeY(ZA zlSnu_aW!%wp#15{SU7EGp?R&zSRL2T&<2I#@&Ps9o#S*^(0R+1jl|7y#Y3`ob#lSS z6{&lND%Y5y4|tA98kg;Ic=F~p9$*T^?NhOOG| J6%uWl&G6}|d}V2BaM3`Qbxd6=a4J>C8J{e^UHhG3~ddmn6W|7*|skg*;Mg P@+oiFu$3!0CWmuC1{B2`?8JjD^mkr*{4+iJA llLuL kp>#7iuIkSUL{`;x(g&NNEtdwIb p;v#$p0o1lIqI>D z2WG!uBTH1XvvftWX-L4SlZN9DwT_ PiJ&{2Z4=ohje za{S4UnVsDTG7(6R^!OUUkjzaNWsb;h7~hlV;`p!#Zl$Yh+{?TDd%8HOi@@yLTGJKj z+n9UzSH$`!3~V7X5OVi9Dyx>2p_yXR@z)lz3&^~i=A|j*uN<~RtHJT9GpHWd1Ff2v zhU~)lTPCS5Q}eDvD3&UUdk6(RW)Jm0x2sqSVQ0oE0+RW8X)wV;SYKW(h{9$v0huil z9-Qc&rHg7l0~|qOuWULWcAaK|wlQ+UvkukOx97(nC1=}EQR(8SuyA`ipWh8~P@=>Q z(Yd%voDT987E>R8%!?EO*lGu%uzQ-X2b#I@eb?Tv09QsQ$q2}AuSK+Xrux(cze q0JW7yKn}R}Kxr6<*#G$zQZ8?+2vx(0qw2KzDig|Hz4ChW`>6C>n)b y8j$Dr8G=Dc=zDsQUEi zMT|DprvkATX&8#P(fTfQ?-}jlb>ofZC9&yJ@gnI?NuowbEDOGcd|EuuXL 2SEQ_WEa{a#hTZ9cV;?$`4~|{ z*eJ3xxY_TrH!S*GfriXNiguCmn$6fX+s7HK&F+!(f=4gxbhWC2p+3Cw#X~mAaSl+1 z6uIIUBchTGQ)o}?E-l-b?uLmZod^*S=ShGZmMTpiqJb Jo=XBj$_EPvd`@>y( zA>w(0_pAmRlw>2kRP&c3Gx%SZ mHU89cqhb|Us`m7jc4Vp+*@TvTz121l z_#%smsksJtO3580w*nup7SH|Zq|F}M->(LH#pwRhA5L?NQStTmMHuqb%h`!-rlJ$8 zvQ^cw&b#f%5?pCUBNM2HTl*{$86h8Ii29cD)sAG-j^u58F990Jj6MHNUm;T4!j g2wXr*M%!UmhX#+>ls G;4;h!4aG93NnAcl?Qd0S%X >yf4MY@QT_wzmPX%2j(l1!Gj?0 HFG0I=~~#^D&MHA z1cp;ZN>%TeX33JfDPy3I8y3f$F2|YwVCHF{jC8j8mXyTS#V~Ar;OxGcfskQY14qFb z@9-PejHET0PXC#K=<$4keAnwU9*+L-;Mr;R%)nTbX>@@1T9KWgYGg_)O(KOFe#sE< zMMy%sfHcgD)jI8G%eJ#fF)wi#z^8w=zY|Oh!_QL`aUw?>UGzbslOd-g z$*$hkA3B&a|n2?s2U)s3es(`x8VRovSzZ}J7zz)J=m|MWPl5}_99}0 zg9^uP11$A|P(nDrWwk%+J7G%97olQ?U+^X5w!5_vRWJ8c195s#<6?;)LA4qldAYH0 zzh{JwoB`m2W(J2$`M0yVC_EWcTF#l4&&kIm8~fqbWiGUibKvtp1?gDX$J1S8&jV zq*eg%>vEN8mH73wCcByEin%A2(wB?gv-!h|i~C{eZ92Fy5yNMnVmU39H*8NhMN$LB z@lf~$NCh&o5pAXmr|H%SuvrW4Y%TCCdpcQz1ejEZDq{6b9{kuvajLVmV6{?tqcM>L zs90;WHQZOvh5l)TL`=T9*|tyjLRMV!U5doT)s*MeyA}^v#mJ;k8;0wE)7Y>`c zcKEKq1fvn7N;=C9l`UmR<~-<|s$X=3K pJ2s9JN1Hx(+2jSlTp8qTcl*{3!N!!^s_tVos!}mmzlY z{YZ$#U&6ilV~KZ|f4#b8@-j-le36tpaRe;E{<-}fzOAC&1VXFQ#6mBx9va6y7w@;h zvlxsRq;xSFj8oB}<4=&jsqBJoEK(1w&h6Ra)ZzMVu3mg3eY(z^Wk2c( hiuPV%hDo!0zOUx zDMccM2Mszt-SY83A0YJ00@^da{3Hj;)2GV-tw$6+<(Y<`Kiq#J HnOqJSv{67%+y{rKCvQ-JPdWOMoSrrJycPc749_j)Kinf%QIh zDbIJWgLJVhf@`r~P$eTDpM#K88XiqHh#8T5*a7dqsG6-zOyd+i@dieXyCRtSsKgLS zi3ll`^(>1iG2vOr*Uyd!U{^(S7K%pq=~1Z=7ms!<=h%ZhjGy5v`1z7xGY%%?s0S#W8vz-wl0C+69{}^xfv;+LU6XjQRX!q*k@N&2vu#va0Tg>>dCza+V# z2q2=v+=HX0pIvIF7eks>+RlWM%;%MvdX->aZ`m>jf}E>&$UKQ~oBD3+>}fNk#DQFb z7Y;Pxp+zA>Sf?IHRD>S&fI|O%k3r>;X?(Xgm zfx bDQ_ Z@J2FjqccInYkHbLy{jJs>Go0r+c1EoIw+nmSxANSXT)H+e-eA>Q9XgKCr ze #`^5h1!?P>$uwyS68 h(yuE02u25NTq5?A7Phy?0~ob9Lq((Yr%v0&mHgg29O_`zE{*x9hiS+L&v@XDbUb>KhvE zCRtmvU%FV<|GE6LdikumfHjdJp}zffFJn|aAV5l3)MdC9H(`nS_qZS>)i+YvO;qJF z5MrXK8lgA10Y;q$WePsz`#_= |h1>`hW_CujK~Y!>)5vxFg3LNIT#J1 JUNuo4iH|RZg|uyI#UQ!Y(Zg zmz;&O;b-vBrkxotl(dYJPaRDlT2MP~nLiV$5&pDc3asqR7DsMSh@ydkZzets)$U*V z9!mgve!7M=2CX(hjlq zyHwvLAt%JElQKea?x5#v%p~+jv}R4PO4DREl+(x77F{%YilEN`O@eVB2-5^C%fnI- zIf{tD$6c+1Cco~LG+*f~I*YavHpPBU+;Z<>6b{EHIvYTj?fLQ(Y`-C)>bs%yt>?cP z(`P|e)~NdN|A^Cn$}>dL%LD(%@YfUnC#F ? zn^mnI&mfDqY=@^^y!Nx-wHI$eU9I_llDF*`X;qZ_%51(3=9qq`9%t2#`XHL@r*q~{ z$L0ezE$e2qZRrKzSzdK#q5$TRM@Ny6-FBi~Z!MT!2UZ6sW4EIXTrhLL)?XpLnxrl1 zkVblD)Ox~ONQ~fWeOsKQ9qyqCTnF`nl(AUi#^w^ItZok~Q0QbdGO<)awL=S9V}7;W zr7V(8HyOw~&%qB*$M)|`wx7n1B$Na9^LG!}=e%sMRJ``J-`uBx+k *{D$3 zneRh-7ZbQ|QY&8yx~NewJsm81`6-JW4GATO*m=g$LxP5Xfz2HTLxK{^(+%hpmCf04 z5o950;iZ!?$O{obxY8_h5h^0eMWd;XV=j=H@G+(<$i|_Tp}NBLM1Y=e62U<*MUFYq z-uH1Nj&Hjx|H|prPdI9=1drk#F4SQQP3_^+^s0~34DEP%GlJseXU{p+>7wC&W)3St z6fQ@yY+rbnoclSt4V6E5trk$g4@OlZj8DdCg?xXs0LzI5f#np0bB17{bXW<#8KVL) zBH$S$EK-X+TpY-?2{534ygR9tCv6bYe&?W@ha^?yTHlWCFv>DWe&$6r%;`3O>5pC! z{_2aO`udtJlUtB5XF-zQyO^5S)y1Dh|I{#;n_u;*PN_HtibTW;LV656C>-=QBK~!H zn%X!#$o?e5SVd co}__c6a8Zm<2m~0yKB(1gLebZ^kDC)zRYmP>HBeU?_jfjz`j3h-RhG zd1M8WNhnzkCpb85pJ$VqVoRvGk+!fIx{OpuB&t2CVA^%wpmyJ$bjvquqZ{AWuCWgs ze!D17OaJdZ?(^aHK?MoW^54kI %Gv&!K+30 f`l8k?;e3;KzOCdpQerHEv^Ts)!lw^%^UCE-Syl1m)CSEE;902 z2pK!r%$$TA-fr=}2z5=qUHE5*lL%}cZwI}({lKSo&!QpT+ef#F m`;;>JVjU(4vO(ac&;>5{ jQd(%jv(eLQW_b* d4{OEw-xQj7q@nC0HY!t&?czl735zO12^KL-=y%(0S@0{W{m`SgTWFU zYF`UC&wbBPu?hEk$j_4SpoR>GQex1JFx;R1$`v#u%rt?Ta@i{<-{x{fCL+0`Wlu-R zKwhy}-%O AWrE;w!m-js zoXr={F~ect>#3rR#P_IV9@gd-@@#kp)Ls}zu5Bt_G)^&z8|@JVHQ2^tgc3%xcyS`j z;R7br#dfw0{tHL$sl$n--@02g mK==ZUZ%B$9<$i_~#RE^ke+8vF L&$-VXG4iB&j?ex^BRiRo zqLK)&NP~?@$m baj?vMX?yr|KTLA7`#$_S&h#N>Jj+dUN9&}ZFgwtH z@dlUm9{%u|6IJW?#-Od{w9(J56qew(=zMjHhcn5zbbc=z#h0zUwao6AAi+2zTxDnx zAFxvUmkV`0iWg8RgJT^WfrlS;kv`~CWm)L8w`Fs^Vo2?w>W0%#dhH$C&Il8hJ5xIn zqtnX2F~kMcQ6}@Rff$F7{O4?2uzrLoc1c3JW9%R*gq1*^hRHW}^q+)58CA`iqY<#~ zM99t=_p4E+9098)Lt^cLOUe{;&T$5UBhYZK74b5psguEr{}^~tQDMJ+XwikL&OqSG z(z0Ni2zz{NnSj^d_%FJiI8TyP;?C>{(yH>U_|mGjip0l8mh;nMyfUR*BJWVQ(2@j( zJ>6~MzW;~S{8tO$^Wj72_DHLj@&EQAKa0gTy%Gt4JL%>5iT&kyy1k>f^H{@0=Tu(c zSF *=2DxV zBuaAxyOhfJOb_khfRcfvxsSGq@_OLU#-}F&V>~iH4HI(PXTkNyHx9eRQ}CQm5ebRO ziJMbW&zjUyG+i|QI7JhSn1%GW65EQdC2fOpM+voJ zS*R!}n_2#aHxP xPpCc_zVXPr($sN3L{Py+E!5@MeORo34Vhj9 z9KjS>Whqh;3uc~RaT({}VCoAuhK7_ojh|Av1~Lw2(p;`_{^<0d#}B83M!}ZfQKWF8 zkwc&Y-UM-3o6?^ap=0vQ-R(1pWIb%B_j1(x>|lI?B_?uTKjbN0{jH-1ens~R5|I2$ zzLB55_vrK)t_MH&7oxY<$FJP53_JlaaDe#WLX03DsZB{$DnqPrKFQU)!$(*8skB;j zBUT#x1T-t`@7PY@b6EKBltZ%KwZMwlxI@S3AIO(^;{HOW=DPfzee;7bJAQGg)Ar4} z{C)#_!Em}8-IMRVzUxQ$U6 U`F&cLK2xS6jI$QHb(vjnPE7&>u8o_LD6!Gtd z`zX9z7Lt`UtFIY8gm)fENrtHJH+>!XoNOh+-=|V*SlvV8w$B4l0naz~YDcPsHKJB> zR!VsYF`l0ZR`yL1Wdq9A{ULmi2cPz01EY5ni|*qr^PBH||9F9eL^u2U;cb5P# h8Jj79ma84Q^GOscM%d7⋙r0uslk?(!fi)Q;d@o|32fii0VLtoL zLEa{ik?GP!qzIn!{`IIzmVocjo!u}6tej-*7$-I3?7%Ghbw%{)U^?#*@4pVmTenAh z%D`k;b!hcOE62koboYvAT%`_{Vu%%7#Rl*XF&Jnh6S_%C)W`2%Rp~l>p#f0=(51pB zJ_5b*ke_T=A}()zbYbxX5_9xH03qa (n?8bNmn4lFV9HMjIQPB;Qu-A$Y9Pyy^J)ef${5x3fbPsR0?*N~1ts6Q&aI7Su z01GcVJ!aXb+j|ILAoTdyaTVmPIH?Ep6vkm`u#95!kQ)I-QT lo2s%E>oiiK5j(CjynFHCd_to-(K5V-|@B z1c9S*8+btoDl#Em4-d4k#+b|O)0sqpiI|gJR~&-8%MMNtj1~t6pC$QWb#la1#iGwq z_ACD0zYV~se)Vs~IP$=6%6j7T_R(q%^SPZo7~D@p%FxQw+CUZj)gwr@xEBo6*ev~T zSol$50r1v#XUYx-ldYDn9eiKMCf>b07ywZtC>?x~!6YuXaje0RU3=5jA8AVt0)(FW zOPgjDkMj~v|7Z;*bBQb} z!RLLhr$?O) *l;aG01FmdX@-E{rZSHcQFfB*a zx-gZ=N=$Tn0;??Yn*-n@%+WNBP%vBhGf<2!6@*woa8MYO(AryvOmkctodj=UDMcE8 z+)?|@6r?=96I41ZwEAYBjr4*@Th3ci@DoWd+?6Q52N0cg_T#f>2H^m&T}GhuT_Oo% zumJ2k0r7;GBZo`++1u^vGWB?lSevDeemkGVOVU4h*#bNhiUfpnK!jszp^wa&LtBqq z(z>Fmh 74vtQ|dR_~PT>Fvk$&7^qeHTDHBS5Vc^6?M6xkj@MQz}Tm-Vb}G^Alhf!;xc7j zYkVwTIQaR2&%7TtRUiSVzLR@9lD8!O1J<}6Z>Jd!ofaMIta|#+d`+N?)|QsdXRp7^ za_3HqO(}>k{B@W{1R#18-91_Rb;9lT9RDHoPtHdzVUxN5s*+{L2H2MOKk^HjggWY6 zO|mXXZD{69Nc=&pRUNiUKj=a&k pg5#|*`$=sMZ9J*uT=C**Uy+(In!$NAvBK$9xrN#T6(1wTz67-}UyPzj0 z?9>x9_f$t1iy404(US$k=A7fil~{e@>|ARC3y8^ITUs;|Q^56de_|X|A#>B&&7
CeO+KU zUvK|=V&4hw ^RCpRl;2=-HgiVr5Yys? zg?zn doMne0{JXClfTzbpPP3a&^t*be8%DcswExD>R4LhNJyYvT=cF zfi3ZHQjDO*{c Prs%WWmM(AR88f_#ov&nH-Mr zQ49{SOh{gDoMc`FJVzau5v6A>5!?rvdLTQGhp&g#r2nE+48sAH-GW0i1zS6 l7qrbek;A`cet ;U<+mg6JxRl$@nGp7iLw-?wDB263@rIP_xu+BC1^Bp?o#MC!IPBKe!NGkG!wFS z>P*95qz Urp#DLs%mdps7~3*dr$^({XF4F#bg}pxXqC zSq!F(XHGUC?8=EHg-}tZv9QU>&`ID^%dm`_O0ZAqT1HJ np)9Zse-s)Hmi<_r;9>hEcC>>Wu&|%&*|{Y@ z@U5_pd$3oSVLx`~7;W|R(PICq=ce@*7R#x*$|=Qjl|P(JaKB>627DleO*$u0wXAC& z2KD2tls9Vw>)Rra1Sek Eo9Ow9*)oh<}tndOKe7+u}V7nkKi*ahgR1JDer!tH`O{ z67Y^$RYQv+fhg?wmZAk}l-A$UxH3a>LY8uBMbf0Aw>EozkCb2q;XcSO@O$1zhx@-` zXT6U9@i>d&TFS_psZzI$fqb`GX_lc4FS#!!@gIM)_e1ja>a_xA{4m6o2wRJ-TT4_Q z^6TDP9)xMnrN$v22*V(gj@DysGS)41unI(?za8vgiA{HHo4kt|V(lf={5ePvU<{*i zP;w%%XMXyXeBsVDc#5V1O&+0PP!Gz2o9P<|?N(8%l+qlcI;*wdLi)069VhkE9iSX8 zEJ$;xxdZQ4kkMfNN^TXYgqdB_QH+;t$t9g@c2t65buSP_3Rwy>g1UH$oq}!}f0v52 zg^D) )Sgu_P bf_hJ+R->St+svNiXB;&D)hXR zE#I{+e_jw%9+zVpKD=DGM4Sx13fWMY+k7n#-`4IaNT;}XwbMJ?JG=GonfHN|>ZgrP z181_u=NTURkdp}WAS29Ky_};>eWhO5{j24o%pyc4dX)QRGaZlv7?T%j#ac&EN6B=J z%P!7SoI4RD+q!T4`*>AtjfeR^^VuMN&x+bj#cU^sr@9P!io*nb^YgpJA@qcC^R*}O z4_&E#AbY-2;V-$+d&K?}+#gh_JPjqsIP>UCL5sujGGMGb(d9NsmP91&Y%$u%j32HU zpH>i>P!W&_IV~(K`n|cW$?!a=g_t^wwwAtc_B+26W;I7&I(=Nl7)-S2D8fW&6_)7e zKq5Q^JI|7I{;t~J$LUY2w*QM<)%nK31k(q9_S )!UMm8tp0X4-O zuWc=qUOs^1W>}GWeqC%2y8A}Fmyd^jJ(3axT*?HU%gd`98J9@=Qb(u8{Q;SPn+jsK z$S@8GJ(BFUV-ReKsz#=m(Hj*acYq|{PV?{lLxY=cg!y?%)JZLLXWUtKw4f>I8%Qto zf=5TCzbIJK5XC)K@U}op<*-`CA!wB%Ad{$kA#(}~Ckm~E=s!i-Wqmz1WPvlUyGY{f zPm@MNDM&Pps>ty(0`LAh@z-#ir_+ZCBQgKx@wC{?9VP2I0;Qv$*VvKQ1TVWwT=sP+ zF1&r0G`ye!O1~7LgeWaDr4(iwE2)Jop^;1po|(+9l_|bgk>6y)Me1{c (A3>-3hiYJlvcD~#M{73oXGA*o3 R*#hRI^*B>Pw1t7)$5Fy`oN+= z?_m@*Cp*VU=CrEn>Ck4w^s)Tm$ri@WIKoA5xC%V0@$*NTkA47M5~4S~?tWw^wglnW z94}tP_PMUopx$mp8-z9~NVH-C`bv2DFN%kX|Lz2W@&V!#4-HAqCq}Nugn--Xh%A}o zL9Rb} Z)}a)qp 8+f4eDkOOl_4cz1~`z(L!d;Z1Ui&YYfLRb2&95tSs0eGg~Sg*LktuxU@lX{ zs=(cN5%LdTOB&{XPBz%fWb%!iZFd(5nXP9_YkHGLKIwLj@twSz$9^fN@4A8W?+NdI z@$PVU8)5)m<%f^>N&dl<-tzu@&EX_|14+Lu{NzYEEoW;KB2N-q#xUblCVhYK=S-DX zyN}|T3;*Fk4}famn-sSQV4Q0$V~&&buiDmQz;3u>@d|SI(}TzZ370HEUXFW2F%|WU ztCq_mHUu0wZ%T8}ST zh_Q|ZNW89yw6+vMyTa=o8;KO8L8yoKZcf;hIMpprxuDRjLx1Yi(srXL;-3n^uwo6H zOBbgemL+KyCX)A?l;g!5z2?I4tK98h3!z84nifJQgpm62S;OjqP zlZ+DJ^%pYxcgYWyi`Ugj$BW8lo_60CYJrCT#W$YktXrM_#}wWSikNaE`h1hbzLyXR zT~8=&e~UBLdCB*Iw5bw3Gd(rk+t=3!$lgxUnlWb+__&m;)_-xepQo5ZMzA1(l+d}D zI|GOo<{1e*l3JuL5m4+LqRlASQN1QcKpr4TXif=iHw_`AmJtmaf!TaxhTTF&MyA8d z0`0*;aRrw?VXBN#2JExnkM2$&t)><_A7v$e#ZNSb5Q(FOgn2q Z=Tl#VKGag(rhN zsr`s!I`cs^Ai1qwoIN)o=qodadfusu(MVWnI~-WN1F!CT>(|mK|KH~ghhSFLc1KMf zKtzgUm{~A%bRM#?EZM2}5*c)iDK;#&7dGs-dC}~&X}p0=d7^1V{OI4Ov7xlVxFRu4 z@KR!jknN5X0^TzIzJrpZ9+&TMuY(tFj4zM~foP9Remh)`sZ9QOf+9Ub`z;5@=Ug`4 zo}+IUU6Tf{|NQ&+`r%~zv)=p^VC64X_eee#KTzzuABf9jX4xALYY*+|&_%>@v?@pP zbkE? @nK zY}#}ns(BU!zEilMXO{VWc*$1BQpLE=EPG;m*PSzR4-ucR53D%Md*d73-|9j`gz-D% z8vHwG1X>OO6a?SA9O?qe!+Yt{0|lXJC7HL8cmV-Y4DK&(Y$43$OUMvTm~UzyoDfM7 z?Y#?&H0mAk9=oboWyR6}ZD&P3Wg_L+^&~~3fTv_UQBF$79a~lY?k}~XCEyB?9CV{l z2YTppc7|rLzeAuR%~1DM%pvRdv{Jqx5bj8sCcL7*c{onTe+H%+WWWVh#_qlo%^$l8 zPk%Q)eD&LX!>QoSaBFhIyAB#Q$Y%ozASN)+{C<@|%@vCu*73z^je#<1L90Z(W@GF` z#(txrR?Wjh=nSD57@irp;aRm8sbN{{vISP(ijOvBxrf=!(}~i=La_*)85Q-GK+;eu z@TMpfg;^TW(xF)2Bm |h#veS{4 z5oDA>nYcD-=hg<4whP9P4U|6eC_^ccXK9`)r5Y n O5;aO3hx!7Pq@ATX`ESfUa&C8eEf@xX0XX)|^dA|E2|a42)x zSSb&lLB=LkzOheDTkpvC=L$ai{&XceTwUInGYUM{bo)*F(d5CSfMAcmvuR!H4wVCR z=o9}?K~Q2LIMkZLcKR?jm} 86onMnPCk1<=o z%-i?u{11yUY5d$qy&kRZ!MH1}E$wL#3rr!d)M$wSNyyLD@juRM!`#nrG2TrRKc3P% ztL$z+>K@Fy>r9tDH|#4r-GQhFtGQHeN^+5F46y;Fk fjp`v?N?}ay#->jZD73HOwvUH0sjCLGk za3>_7^SKQ?S6=+>kqOa>PKfvd2Ku;OjUDpfQ;OqxBj3Y!dMeA`tnVu7;;P9z@1(%N z1rjK2IFgX5m-3<9-+|!Z%G=lq<}yE Q~2PA7anzmVcQ#t)Gx@h33`=2*S&D79S_7jwCNM~kN|y`X>lCA|F?9D z=mC0uF}5A%{oh3h5~Upb#&2@?(<^kg^F{gwxKe@c?!?B~y7>TCv=-a{CO{Ymkx~%& z8>60zidI%T#mPuMvJ63ka&I6dq!C_&O4mpiDsDi_J8tyo4xEu8!hjf!G0j9bEs&Ks zAh%TkaY~U(i8}(yt E6 _75L)+#^~jg2Bzlx}&! z>f x2jOCTE=21nGWVJX`-X%t^N>wk$a;1W`4Tb zQVP~K!ZMSR0fVCzbxfLM%1{;og+sZ_1>^h^1)fxtW)GG2*RNl?!1e#UyKY92vM%mr zdo=v^Egr`vU&p_kwLFRNia)yzhw@Gmy7LLX-#0%kX!s}jzY4v@t@=F*>RZ@doO8=! zYS?%88@xtlZ_-)B{-eKc5p_a^3(3f9Np=Rh2>_sQ0t_PsV}qohP2xn}lL|l>^U?p- zAlkixiXfz8*|y+mizA%pc{0w%M~|b;D<-sBv-5U(r18bKltNI(uxqeQq|mwk5JeG) zG4UUu!cTI0lbNGuI69VHI>cMe {`*?~GW_cTzwVx_!=cu2OW41z@4LqaB%ub5&}GH9oe&84Qx9J{Wtr13+y2 zH5LD^`LIjUENNFm3fe(sOHhy1IMR_)dm^A2^69~Ls2pL8m~FCy?s?fh(qX82hk6I@ zx+o8BZmLkF&}13{5LZ|NS2%}8qE>ohx{?l)Ur`A4VB$<$QerU{O9q*g49EzWB)F9I zpMSZK!h(p`#T3k!Nt^Q}$mP56d3^Nt$^>Aantj@Gr^jgX`(*c|&}+N@ACiw+lAQ_a zxK{l*{&m|{{TSQuzIZrxvl^bw4zbV`%>){%67+=LM&$#%bPMed>sdm^fQhAzb)`7T zfxhJyaPkv3%cRQp=B9wQRpZ#4sPe2$p&P*4RJ7DL!hKO^Be&fB@eC(+eM4Dxs*u!( z^Fq^WYYO{?L+f3`m^IyHB*G+SO0#>Q>!2bKah)g?$Y)-NG8$EMK1AW?#L8wcv`!3> z9#ElLPB<7po1u)$&PIz&1VCmM5KJ;+EFi1+#p-%#oJG&n^^T(ddVg_s`otjgr18!w z^oHbr#y 5g`CKw-1h_Va$lo}0xYMPPH(%&(?L>M|hM`_Ucj zBdcrT^W~!v=+Gyocof2v3BLL@-fwh%XU1I?IY&Ua9dhx;Em*DD6Y3X*Qspb}{wz|q9X4#dslJvwS8x7KW*Wi26F;;bvqk2xnG{4ms9`wuN*NG3Mw z#<4m4VeM2ZlkqWbi?OnA<$du`_xRt_lxEm(uK6~$P7L1YUL5;P!PT#o-FL0L1*_4X z%{#OH_mi7XNL`nQ=&hUucu EgXD9r q1~T=nR!iIuaO24biC#-M }hRn+h`@X;6(%%zk53KQS6wzb#)9SI0?w+V)P4D2in(tRliedG`#8rH(B>%ieU zln?w1)F=L~OL2eJLdBt4!S^PTNnO#X84iPih3iCmFh@Yv4>6@WdIH5;A;P}BaW zNj{Z;z3&k{|678)=j*~h *AcVpHJ`6}&83CLBb2eDSx6f*u2oiffo#JKty%BUc zzoiT>jLaKmjX0Z-r~cvMyJxycal@1i(-~4R0!MZZ?UY2O<)@@TOQ=OrsF&HQF45UC z)Jkt b8N%ZSJCkP7b zUSs#uX{tH%P&aD~vlA$H_g~vLg83=~t5ItN$;xGjB^Eq$Dw_xw78~XnK;AM+>X0X} zVrq#rWHKrxMeGVG4K(bo@JyvDx4HpQ)o-ZYa1i-y`lWIXm}n=13pDfv#F?1K-3((i zp{;nszLbp-MXR6z!=MF;HNH8T^F1uCy;%$vIwgu zE<3q|a|a8eTRt)@>{wdTyp-P6U(`CTMW}ZX;t+~uES}uoqg!j}LX{DNY2b1^ksc)Z zpyaJ{%(1W+XqB8ulS7L7T%!A4)*Sop;bOy~PA2xly}t=4f}eKZn>Wrp-cRxTFVhY7 z_AWk%Z|a41ao)H8&=@?E&87Cg3;#rs3EX(6+jtK4AL|YIlQcahwXR?5_Z(8*yuN$& z&))Ivme!0TYg5!FW+fT~VvVifB52akK#%l^#EXG%nUAst|N2v1V&54YOPeDs48(IW zEDR;bG-t5(+1GTEh{gs-(I{%T*KrIH&o?TW(Sy}wD#C$oq_cTw77|wuMQm#3Uz%f& zW2N0eWZQRS*UgePLLTb{{%3~p(5qDI{l05TCyXAV1NlGTKx Hafb~F|&`%oag@MK=pNgT+7oVrk&t>NPC=+`NQ<^_@u$5rS6rB_u%XVhlbf^ z^&X1Q%gG1A@EXw!9c8GE6EA+-zl6#J{xl}z@7Nfr{co|n6Ak8bR>o=6`&Q;@v2&hz za%`?ySLz81OKWRv3Mznr^_m4zaT_Aj)0_x+s;I)~LX6GkaDsBu96XBb)wprWyg~6) z;F8If=ua?(JZ4}4h&87irGl&AE`s>}@hZYABTg1Zdgj1m3(x{&Fn3IZ*D@Nxm@bi~ zl}5+b#s1@L+n#UPES6;6(mRK*NxlW4SUd-TL!LVHV$Y^c-9X#VUBhbObT%PDzoNNh zk37yz90zjr325>~rHucPyXWE*>3TyfVzWiFcJ`p#=KQeTcXrt+VTW``?YAE-_zN=8 zbBbtc?=Ok>Ba>6Cr~tV##7cJ)>$xu@#v(c!f56*wzX2Rz()suK WY?vxL64mA*ab2CCh;(^_t1i#`qqh>E x-_C7m#tU{tVYY=yt2QyPxZQ%RVPt@PL<+xDswZUB{Yj zfv&;))c)M#=@c`z`rODG;^+Q&L0=^wlh5aH;q_|l>P(752cqZ+3Z;zUY%XAL`}x_W z;^|9}<>aJ6I>`%O#m}C(bXQ{@-_-TBH_iJ(H>ZccKY7pMLY-A)McOgl;{JYJinzSD zHl596>c3J`KwXZs{3i3Zfn{WOK$Y$MM?Qn#$S_BY`*&KB4$!l_cl2a7b6;Q@aOmMp zqQEOd&mwBrDLsRA42g1|uWux@F}+KyIzl|G=0;6#s<;1&4rfc}0gh*@A_9Q0hV|)k zQs?4$Dbw6-$2FD8CR#Y4sZk>NDV${H>b7fQAFhw=KTtPT`TIC-OoW~=ZAtVDbYDI{ ziT_dp|B(Z6nt#d`{?~Z`N_TwOhH0M6QWAQO7`Er%L+?2!MrD)5bV^CFJLg#^E|G*% zk;UMkM5T4C9;-y;3*}h>)2884)MA(cm-B3~Iq_@L$_K4-+v!V$Y5U^6d&MB9q-lwH zC@BUr^_il~dS!wfb9C*O_*bqUM>*oMbZa};F3!fsT=w>$EbP@zd3{Gd^iXCAcXl5 zHH#w{`UVFnjJ+Y%PpbU4w<5MM9E;CO=tp&yT)v|+eFYme;`G$fc}8|&rJ%$f6RM?% zUlCVottm#Aa=7hB6Awm!Flec 6-ymVAw+LhnpQytyNX#mU-O zOQ=we8zy-dxfTAh_OQQ`(0(xK`2^Q3`L-$0G%RpoyRZvu9;5Bl<6kyTB4}a|^Jd$F zCJ(ohX7xteoX+twkrp=;NCkGxT2_!O^4!<7I7fx+x^@;Cu6}>6mSp(|Y#iPm|AyrH zY$3gdeRVA97sB*fm~AqJ@l9I>BAFBf!lhvI;D%uY7$yxJf|nqAM)O)!T^yk~7H9}U z<$~le5+#kwHcbtgE#l8_Y5Q`}`TlK+v^@lm7;H5jY`x>yrJL8yEw=wPhy$G4acY4m zoan$rYmnnQWOpHpBErwOQ;TLz_r7+5$7|Cwljv=I+f_J<`dE*BwdQ!09roT{ggM`_ zTns+CA`RS;`78fq5FseU7B1WX_zoi!fxHzM%zN>y2nf_d&F7$!t2eCN9x99;Ak+CY z`S@jkzw*bbL`Wq?llGE~`7fvW5H+MjZJgiV23t$M?rkRXrMK1(F+_Sp57GO*|M3g- zKlxm8`~7h&z`x$V+c@6N`is>1K)mC^D$6u1Jg)g)et8Vuc$MV$a+xqEG_hSft6j@- z>n=WZ(_LHZx0^I~H|+Q);wSzi6_TITB#pj7#*SrD+Rl=#0IW#w5-`CR(%J1fc;zsV z?wCPcWM!OXQRJDokjkr}{masDJY}D}a>0S-Hl>+ihY @x%WADo4i-@>A)=t5R;E4V-YiGgiz#sYCO2%E#SDeT9v{Asm-LDc zNP(_nuj@-;Gm%Gbg$h`6eUU9eGwBYBG}O2H>iBsLqddNH4^63e5jMzltBqYDIfGhx zw8E)KW?M5 W$+1By}sy$t&X>l?8#8D++MlVajG5uVVt)uZgWcdJTZOhIP*3N?Q z;N|yIaM$}uMS4rdKIjVs_3PF(l;QxC=os~*{Zkjerum0>-0buBzVCm#x&!>)8oSp^ zY5)NfB)qWCp6|PVv1gxNl0v+F_$J(+Gg=h 7 $TC9xuB|1ueC$2>hF>6-lYSq|D0QZGm+EI^Jm z;W~e57kFT@Z}EP|sNRy0VI&l9ao=fG6STsd{J9@Cl*_eFBhQu0=PPmDLwSK!K5_B_ zQ@re8FbQYCm+$4Y&zTddcL&vcfjZEt@*?Q5{_)zlv>tv^BOGvW7wPLn-{%-cPiCz7 zhkF$j5SDMI%S4HeCD7}SR736Lwh;S*xn)^Nvz(bM!V(wOI~%Z9d 5ZBusN;ktA0$sLH62pf3Bl6xRNc0?Fcn?f;K(IB* zi$(a+2_X!Vj>ROZa;c7&UW>i=_|DdK kzK`M3`n);lsz3THZtlgqNaJDrL9zm|D77q9Z0uBd zTRm9=@j*I;3@0)#l5A{ 3~W&!Y_-V+s}CId++GJVcGLv-nc;S>dLI0~8C zLYfXkfa%$8+_GNd*RXe$#PF}2!z@`O(~VpC;v&V)fMsKK`+;vvmrq!ET1-5a&8cE! zOga(wZ;xB!P?JVMxxjG0EQ GlX{PH%(c9_SZ-I$SrN% z;pewoRDi^^)in)sSdwIm3J_@7QkMcWY8L Y+{oCbbg&>6`bwbM@Yl1||9utxIi zcpJ=q_JvTtBd5b>v`H-s8S3N-{zc$tGx@|BmZM8aGN)PxkHSKnQZ@5MDc6H+rBe#^ zc`;OTI1$&2x7|IT+ib!c|IPFS{c*X*>vr`!U3-6m$*4or-7iQfVpyk7>|@B?E|- 7aGIAejf*=8PdD7j zg)GaZg9dAyBkLAcq-A3ayhdUxSv_gJn~|;jk>O{W`fpT-g2~b4<{<_)E>6cE`-YLM z=6+B1@9nRJ25)9V^N91mUN*%2IrorKW=(t*OeDh(zBaR!W80wb(4$K8K{69P?F&7= zyxM=f`48i)`=vK$^KVU*(`W4lmh)e>AR|+%$Q1E=%ChEgo;t)$#=JT96-QQtsQiJo z{Y{jp1$-uso7+h^@;I&XP5zgz6FW?PKBQ`~-^#j}x`N;Md40i5&1H>NfBQ`Wl9Y_) zu~L{kJ5z}=ha*#JCYAX_3v_{Po)ox%HGY^Q4T%ap+1uNHa-zx+E4S4cC~Hs5S|OoX z8Se-jPS9nQ<}eoC!a~sEn5Hn%ekLR({&i!dWJD9mLOnzXXr$;(%rMcL@6B7zA(bUY z4Qqr6q1@grC^)wZL&~>lIT%B$iVTlb!_zzpu-e`PpT<&dO Qk zTtxk`qi9K)jdHh2&e+D$AvrO-)g7jIbnc%qnYqDd@*)U-36~JGadY!7P>n;q*}{G# z2k2^0aA7X-ADY4Ip;YH`c%MR$(k{v%?$)8)=Sv!a3cnu2K07^ihXw5Q>Xv>WBfTzW zM*BMQxSJoL=`9FWBf{NaW}9}^NFJC0%4%as?9i?*936tsyUbS`BYP1p 1Xw zkTwy 0ESay`jy*#GKbo8?0lgvhh4??-&kq+h4gr$4#- zjgYIoV>pxnP0M3wRzEpWYihpQ-L`eP6@J;v)}%npRx )<4zee3shZ(&mL#~V=h{l9^_`;eTI5B*g>FY^31$}i$Nje7 zk5IU$d!b~4lVZ6ApDcS+3WBMW@84&;iC_Q5Uw_@J9&GG+oEo@&UqncwYw{-l2Du&s zzYy&&eFI!`Zb=JJbhf~;PEBF_3h349 E$UuF*&N?uw_Th8nN`d+V3Pe+3`^ zPu9R2u@MSj*RM8wUzGWNUcj6S`F!ONKOAKzyj4m2zTtfT&pEo ha1lfh|cBmTI>RSj#$+zJRYl$34pL#5rUZhh{sv@{o9j z5?Q+hLV+0KnrDlsrA?J_D#HpZ(gz0p@f>)2EFm%M$lch=8=@+>B`7&6+zUL9Y3PH| zt;$zn>it1*af`C@J1&E`LF#k8j>K~@v&?a9B8UQj *rbj|OHrEy%T;l@&&no-aPt zpU}br>yv4;Yf3zU7FCrs-%;)~2vVkY2jthR8?S_?W+>tlm)p-%;UN}z-PqdcAb$sU zJ|u`f((Tf|ypG|Yh`fc8dtD<}pgq1}*q_C2kVOM$Nh*L7L@Sw%s8JFf8=uSKM`g%R z(t(DEkkerCHjp-*+jW1Z7A-FUqEw>q)%Vw>b#jdP!Wvzw4D>!|*(J0FdPww&O33Hf zj!f7aP7zr#Ezue0Eg{~yU5US-JSXC7aCu#8C*&X0Z}MKm27VZ9E=A!44I|5jWsWh> z@=(t2?+aj>CIAJ{0QQAPX#A4xc^?XT{Ss`7rs?g`NMT7x1~EDt$iCTpz%_PY+3v&` z;>rI2!8#+T5>(;O%#`{!!0EcXd?O;VD@>%_jsCHq1be^j#bO$@%jt (}rR9n6xT2p7Ar8;D z|N5ifCkQn(9tV*-zVIx3-gm3-pFGEUpW=uOg3V616$~MIH^rzPP+zktzGZeixW8O3 z@)>dDk9Zym3qreNuG9HomGZi*c}f%mKaw3+j_!9m&zt|>md@oZ5`KpN?WQ^(;Ym>V z{PMQ#+3U=(WA_ab{JKH s@SWxK49{S+IQ4E;vjkjQ+$Cf*~ z0gQXNiqX-uDB!4P>KhLmZ+SL8Q3@i3M`1C5h`ZN3{H~$iM(n