[INFO] updating cached repository hfcredidio/chip8rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/hfcredidio/chip8rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/hfcredidio/chip8rs" "work/ex/pr-56896/sources/master#adbfec229ce07ff4b2a7bf2d6dec2d13cb224980/gh/hfcredidio/chip8rs"` [INFO] [stderr] Cloning into 'work/ex/pr-56896/sources/master#adbfec229ce07ff4b2a7bf2d6dec2d13cb224980/gh/hfcredidio/chip8rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/hfcredidio/chip8rs" "work/ex/pr-56896/sources/try#bad365140e1e8233b42b21af70a407f14ce5fec5/gh/hfcredidio/chip8rs"` [INFO] [stderr] Cloning into 'work/ex/pr-56896/sources/try#bad365140e1e8233b42b21af70a407f14ce5fec5/gh/hfcredidio/chip8rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] c63136ba8d45a6c4bc689b0bb3a95cbb36632422 [INFO] sha for GitHub repo hfcredidio/chip8rs: c63136ba8d45a6c4bc689b0bb3a95cbb36632422 [INFO] validating manifest of hfcredidio/chip8rs on toolchain master#adbfec229ce07ff4b2a7bf2d6dec2d13cb224980 [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+adbfec229ce07ff4b2a7bf2d6dec2d13cb224980-alt" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of hfcredidio/chip8rs on toolchain try#bad365140e1e8233b42b21af70a407f14ce5fec5 [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+bad365140e1e8233b42b21af70a407f14ce5fec5-alt" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing hfcredidio/chip8rs [INFO] finished frobbing hfcredidio/chip8rs [INFO] frobbed toml for hfcredidio/chip8rs written to work/ex/pr-56896/sources/master#adbfec229ce07ff4b2a7bf2d6dec2d13cb224980/gh/hfcredidio/chip8rs/Cargo.toml [INFO] started frobbing hfcredidio/chip8rs [INFO] finished frobbing hfcredidio/chip8rs [INFO] frobbed toml for hfcredidio/chip8rs written to work/ex/pr-56896/sources/try#bad365140e1e8233b42b21af70a407f14ce5fec5/gh/hfcredidio/chip8rs/Cargo.toml [INFO] crate hfcredidio/chip8rs has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+adbfec229ce07ff4b2a7bf2d6dec2d13cb224980-alt" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+bad365140e1e8233b42b21af70a407f14ce5fec5-alt" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] checking hfcredidio/chip8rs against try#bad365140e1e8233b42b21af70a407f14ce5fec5 for pr-56896 [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/pr-56896/worker-7/try#bad365140e1e8233b42b21af70a407f14ce5fec5:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/pr-56896/sources/try#bad365140e1e8233b42b21af70a407f14ce5fec5/gh/hfcredidio/chip8rs:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+bad365140e1e8233b42b21af70a407f14ce5fec5-alt" "check" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 41d9aebee93a552e9619457370197f8fbf54168c2a1031b47d94223400959ced [INFO] running `"docker" "start" "-a" "41d9aebee93a552e9619457370197f8fbf54168c2a1031b47d94223400959ced"` [INFO] [stderr] Checking chip8rs v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused variable: `addr` [INFO] [stderr] --> src/cpu.rs:109:19 [INFO] [stderr] | [INFO] [stderr] 109 | fn SYS(&self, addr: u16) {} [INFO] [stderr] | ^^^^ help: consider using `_addr` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:218:23 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `y` [INFO] [stderr] --> src/cpu.rs:218:30 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^ help: consider using `_y` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `nibble` [INFO] [stderr] --> src/cpu.rs:218:37 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^^^^^^ help: consider using `_nibble` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:221:23 [INFO] [stderr] | [INFO] [stderr] 221 | fn SKP(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:224:24 [INFO] [stderr] | [INFO] [stderr] 224 | fn SKNP(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:231:23 [INFO] [stderr] | [INFO] [stderr] 231 | fn LDK(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:243:23 [INFO] [stderr] | [INFO] [stderr] 243 | fn LDD(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `addr` [INFO] [stderr] --> src/cpu.rs:109:19 [INFO] [stderr] | [INFO] [stderr] 109 | fn SYS(&self, addr: u16) {} [INFO] [stderr] | ^^^^ help: consider using `_addr` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:218:23 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `y` [INFO] [stderr] --> src/cpu.rs:218:30 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^ help: consider using `_y` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `nibble` [INFO] [stderr] --> src/cpu.rs:218:37 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^^^^^^ help: consider using `_nibble` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:221:23 [INFO] [stderr] | [INFO] [stderr] 221 | fn SKP(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:224:24 [INFO] [stderr] | [INFO] [stderr] 224 | fn SKNP(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:231:23 [INFO] [stderr] | [INFO] [stderr] 231 | fn LDK(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:243:23 [INFO] [stderr] | [INFO] [stderr] 243 | fn LDD(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: variable `Vx` should have a snake case name such as `vx` [INFO] [stderr] --> src/cpu.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `Vy` should have a snake case name such as `vy` [INFO] [stderr] --> src/cpu.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: method `SYS` should have a snake case name such as `sys` [INFO] [stderr] --> src/cpu.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | fn SYS(&self, addr: u16) {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `CLS` should have a snake case name such as `cls` [INFO] [stderr] --> src/cpu.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | fn CLS(&self) {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `RET` should have a snake case name such as `ret` [INFO] [stderr] --> src/cpu.rs:111:5 [INFO] [stderr] | [INFO] [stderr] 111 | / fn RET(&mut self) { [INFO] [stderr] 112 | | self.pc = self.pop_stack(); [INFO] [stderr] 113 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `JP` should have a snake case name such as `jp` [INFO] [stderr] --> src/cpu.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | / fn JP(&mut self, addr: u16) { [INFO] [stderr] 115 | | self.pc = addr - 2; [INFO] [stderr] 116 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `CALL` should have a snake case name such as `call` [INFO] [stderr] --> src/cpu.rs:117:5 [INFO] [stderr] | [INFO] [stderr] 117 | / fn CALL(&mut self, addr: u16) { [INFO] [stderr] 118 | | let pc = self.pc; [INFO] [stderr] 119 | | self.push_stack(pc); [INFO] [stderr] 120 | | self.pc = addr - 2; [INFO] [stderr] 121 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SE` should have a snake case name such as `se` [INFO] [stderr] --> src/cpu.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | / fn SE(&mut self, x: u8, byte: u8) { [INFO] [stderr] 123 | | let xval = self.read_register(x); [INFO] [stderr] 124 | | if xval == byte { [INFO] [stderr] 125 | | self.pc += 2; [INFO] [stderr] 126 | | } [INFO] [stderr] 127 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SNE` should have a snake case name such as `sne` [INFO] [stderr] --> src/cpu.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / fn SNE(&mut self, x: u8, byte: u8) { [INFO] [stderr] 129 | | let xval = self.read_register(x); [INFO] [stderr] 130 | | if xval != byte { [INFO] [stderr] 131 | | self.pc += 2; [INFO] [stderr] 132 | | } [INFO] [stderr] 133 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SE2` should have a snake case name such as `se2` [INFO] [stderr] --> src/cpu.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 134 | / fn SE2(&mut self, x: u8, y: u8) { [INFO] [stderr] 135 | | let xval = self.read_register(x); [INFO] [stderr] 136 | | let yval = self.read_register(y); [INFO] [stderr] 137 | | if xval == yval { [INFO] [stderr] 138 | | self.pc += 2; [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LD` should have a snake case name such as `ld` [INFO] [stderr] --> src/cpu.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | / fn LD(&mut self, x: u8, byte: u8) { [INFO] [stderr] 142 | | self.write_register(x, byte); [INFO] [stderr] 143 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADD` should have a snake case name such as `add` [INFO] [stderr] --> src/cpu.rs:144:5 [INFO] [stderr] | [INFO] [stderr] 144 | / fn ADD(&mut self, x: u8, byte: u8) { [INFO] [stderr] 145 | | let xval = self.read_register(x); [INFO] [stderr] 146 | | self.write_register(x, xval + byte); [INFO] [stderr] 147 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LD2` should have a snake case name such as `ld2` [INFO] [stderr] --> src/cpu.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | / fn LD2(&mut self, x: u8, y: u8) { [INFO] [stderr] 149 | | let yval = self.read_register(y); [INFO] [stderr] 150 | | self.write_register(x, yval); [INFO] [stderr] 151 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `OR` should have a snake case name such as `or` [INFO] [stderr] --> src/cpu.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | / fn OR(&mut self, x: u8, y: u8) { [INFO] [stderr] 153 | | let xval = self.read_register(x); [INFO] [stderr] 154 | | let yval = self.read_register(y); [INFO] [stderr] 155 | | self.write_register(x, xval | yval); [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `AND` should have a snake case name such as `and` [INFO] [stderr] --> src/cpu.rs:157:5 [INFO] [stderr] | [INFO] [stderr] 157 | / fn AND(&mut self, x: u8, y: u8) { [INFO] [stderr] 158 | | let xval = self.read_register(x); [INFO] [stderr] 159 | | let yval = self.read_register(y); [INFO] [stderr] 160 | | self.write_register(x, xval & yval); [INFO] [stderr] 161 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `XOR` should have a snake case name such as `xor` [INFO] [stderr] --> src/cpu.rs:162:5 [INFO] [stderr] | [INFO] [stderr] 162 | / fn XOR(&mut self, x: u8, y: u8) { [INFO] [stderr] 163 | | let xval = self.read_register(x); [INFO] [stderr] 164 | | let yval = self.read_register(y); [INFO] [stderr] 165 | | self.write_register(x, xval ^ yval); [INFO] [stderr] 166 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADD2` should have a snake case name such as `add2` [INFO] [stderr] --> src/cpu.rs:167:5 [INFO] [stderr] | [INFO] [stderr] 167 | / fn ADD2(&mut self, x: u8, y: u8) { [INFO] [stderr] 168 | | let xval = self.read_register(x); [INFO] [stderr] 169 | | let yval = self.read_register(y); [INFO] [stderr] 170 | | let res: u16 = (xval as u16) + (yval as u16); [INFO] [stderr] ... | [INFO] [stderr] 173 | | self.write_register(0xF, (carry != 0) as u8); [INFO] [stderr] 174 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SUB` should have a snake case name such as `sub` [INFO] [stderr] --> src/cpu.rs:175:5 [INFO] [stderr] | [INFO] [stderr] 175 | / fn SUB(&mut self, x: u8, y: u8) { [INFO] [stderr] 176 | | let xval = self.read_register(x); [INFO] [stderr] 177 | | let yval = self.read_register(y); [INFO] [stderr] 178 | | let res = xval - yval; [INFO] [stderr] ... | [INFO] [stderr] 181 | | self.write_register(0xF, borrow); [INFO] [stderr] 182 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SHR` should have a snake case name such as `shr` [INFO] [stderr] --> src/cpu.rs:183:5 [INFO] [stderr] | [INFO] [stderr] 183 | / fn SHR(&mut self, x: u8, y: u8) { [INFO] [stderr] 184 | | let yval = self.read_register(y); [INFO] [stderr] 185 | | self.write_register(x, yval >> 1); [INFO] [stderr] 186 | | self.write_register(0xF, yval & 0x01); [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SUBN` should have a snake case name such as `subn` [INFO] [stderr] --> src/cpu.rs:188:5 [INFO] [stderr] | [INFO] [stderr] 188 | / fn SUBN(&mut self, x: u8, y: u8) { [INFO] [stderr] 189 | | let xval = self.read_register(x); [INFO] [stderr] 190 | | let yval = self.read_register(y); [INFO] [stderr] 191 | | let res = yval - xval; [INFO] [stderr] ... | [INFO] [stderr] 194 | | self.write_register(0xF, borrow); [INFO] [stderr] 195 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SHL` should have a snake case name such as `shl` [INFO] [stderr] --> src/cpu.rs:196:5 [INFO] [stderr] | [INFO] [stderr] 196 | / fn SHL(&mut self, x: u8, y: u8) { [INFO] [stderr] 197 | | let yval = self.read_register(y); [INFO] [stderr] 198 | | self.write_register(x, yval << 1); [INFO] [stderr] 199 | | self.write_register(0xF, yval >> 7); [INFO] [stderr] 200 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SNE2` should have a snake case name such as `sne2` [INFO] [stderr] --> src/cpu.rs:201:5 [INFO] [stderr] | [INFO] [stderr] 201 | / fn SNE2(&mut self, x: u8, y: u8) { [INFO] [stderr] 202 | | let xval = self.read_register(x); [INFO] [stderr] 203 | | let yval = self.read_register(y); [INFO] [stderr] 204 | | if xval != yval { [INFO] [stderr] 205 | | self.pc += 2; [INFO] [stderr] 206 | | } [INFO] [stderr] 207 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDI` should have a snake case name such as `ldi` [INFO] [stderr] --> src/cpu.rs:208:5 [INFO] [stderr] | [INFO] [stderr] 208 | / fn LDI(&mut self, addr: u16) { [INFO] [stderr] 209 | | self.i = addr; [INFO] [stderr] 210 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `JPV0` should have a snake case name such as `jpv0` [INFO] [stderr] --> src/cpu.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | / fn JPV0(&mut self, addr: u16) { [INFO] [stderr] 212 | | self.pc = self.read_register(0x0) as u16 + addr - 2; [INFO] [stderr] 213 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `RND` should have a snake case name such as `rnd` [INFO] [stderr] --> src/cpu.rs:214:5 [INFO] [stderr] | [INFO] [stderr] 214 | / fn RND(&mut self, x: u8, byte: u8) { [INFO] [stderr] 215 | | let rnd = 0; [INFO] [stderr] 216 | | self.write_register(x, rnd & byte); [INFO] [stderr] 217 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `DRW` should have a snake case name such as `drw` [INFO] [stderr] --> src/cpu.rs:218:5 [INFO] [stderr] | [INFO] [stderr] 218 | / fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] 219 | | // todo [INFO] [stderr] 220 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SKP` should have a snake case name such as `skp` [INFO] [stderr] --> src/cpu.rs:221:5 [INFO] [stderr] | [INFO] [stderr] 221 | / fn SKP(&mut self, x: u8) { [INFO] [stderr] 222 | | // todo [INFO] [stderr] 223 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SKNP` should have a snake case name such as `sknp` [INFO] [stderr] --> src/cpu.rs:224:5 [INFO] [stderr] | [INFO] [stderr] 224 | / fn SKNP(&mut self, x: u8) { [INFO] [stderr] 225 | | // todo [INFO] [stderr] 226 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDT` should have a snake case name such as `ldt` [INFO] [stderr] --> src/cpu.rs:227:5 [INFO] [stderr] | [INFO] [stderr] 227 | / fn LDT(&mut self, x: u8) { [INFO] [stderr] 228 | | let dt = self.dt; [INFO] [stderr] 229 | | self.write_register(x, dt); [INFO] [stderr] 230 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDK` should have a snake case name such as `ldk` [INFO] [stderr] --> src/cpu.rs:231:5 [INFO] [stderr] | [INFO] [stderr] 231 | / fn LDK(&mut self, x: u8) { [INFO] [stderr] 232 | | // toddo [INFO] [stderr] 233 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDT2` should have a snake case name such as `ldt2` [INFO] [stderr] --> src/cpu.rs:234:5 [INFO] [stderr] | [INFO] [stderr] 234 | / fn LDT2(&mut self, x: u8) { [INFO] [stderr] 235 | | self.dt = self.read_register(x); [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDS` should have a snake case name such as `lds` [INFO] [stderr] --> src/cpu.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | / fn LDS(&mut self, x: u8) { [INFO] [stderr] 238 | | self.st = self.read_register(x); [INFO] [stderr] 239 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADDI` should have a snake case name such as `addi` [INFO] [stderr] --> src/cpu.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | / fn ADDI(&mut self, x: u8) { [INFO] [stderr] 241 | | self.i += self.read_register(x) as u16; [INFO] [stderr] 242 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDD` should have a snake case name such as `ldd` [INFO] [stderr] --> src/cpu.rs:243:5 [INFO] [stderr] | [INFO] [stderr] 243 | / fn LDD(&mut self, x: u8) { [INFO] [stderr] 244 | | // todo [INFO] [stderr] 245 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDB` should have a snake case name such as `ldb` [INFO] [stderr] --> src/cpu.rs:246:5 [INFO] [stderr] | [INFO] [stderr] 246 | / fn LDB(&mut self, x: u8) { [INFO] [stderr] 247 | | let xval = self.read_register(x); [INFO] [stderr] 248 | | let c = xval / 100; [INFO] [stderr] 249 | | let d = (xval - c * 100) / 10; [INFO] [stderr] ... | [INFO] [stderr] 255 | | self.i += 2; [INFO] [stderr] 256 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `STR` should have a snake case name such as `str` [INFO] [stderr] --> src/cpu.rs:257:5 [INFO] [stderr] | [INFO] [stderr] 257 | / fn STR(&mut self, x: u8) { [INFO] [stderr] 258 | | let addr = self.i; [INFO] [stderr] 259 | | for reg in 0..x { [INFO] [stderr] 260 | | let val = self.read_register(reg); [INFO] [stderr] ... | [INFO] [stderr] 263 | | self.i += x as u16 + 1; [INFO] [stderr] 264 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDR` should have a snake case name such as `ldr` [INFO] [stderr] --> src/cpu.rs:265:5 [INFO] [stderr] | [INFO] [stderr] 265 | / fn LDR(&mut self, x: u8) { [INFO] [stderr] 266 | | for reg in 0..x { [INFO] [stderr] 267 | | let val = self.read_memory(self.i + x as u16); [INFO] [stderr] 268 | | self.write_register(reg, val); [INFO] [stderr] 269 | | } [INFO] [stderr] 270 | | self.i += x as u16; [INFO] [stderr] 271 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: variable `Vx` should have a snake case name such as `vx` [INFO] [stderr] --> src/cpu.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: variable `Vy` should have a snake case name such as `vy` [INFO] [stderr] --> src/cpu.rs:287:17 [INFO] [stderr] | [INFO] [stderr] 287 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: denote infinite loops with `loop { ... }` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | while true { [INFO] [stderr] | ^^^^^^^^^^ help: use `loop` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(while_true)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `Vx` should have a snake case name such as `vx` [INFO] [stderr] --> src/cpu.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `Vy` should have a snake case name such as `vy` [INFO] [stderr] --> src/cpu.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: method `SYS` should have a snake case name such as `sys` [INFO] [stderr] --> src/cpu.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | fn SYS(&self, addr: u16) {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `CLS` should have a snake case name such as `cls` [INFO] [stderr] --> src/cpu.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | fn CLS(&self) {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `RET` should have a snake case name such as `ret` [INFO] [stderr] --> src/cpu.rs:111:5 [INFO] [stderr] | [INFO] [stderr] 111 | / fn RET(&mut self) { [INFO] [stderr] 112 | | self.pc = self.pop_stack(); [INFO] [stderr] 113 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `JP` should have a snake case name such as `jp` [INFO] [stderr] --> src/cpu.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | / fn JP(&mut self, addr: u16) { [INFO] [stderr] 115 | | self.pc = addr - 2; [INFO] [stderr] 116 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `CALL` should have a snake case name such as `call` [INFO] [stderr] --> src/cpu.rs:117:5 [INFO] [stderr] | [INFO] [stderr] 117 | / fn CALL(&mut self, addr: u16) { [INFO] [stderr] 118 | | let pc = self.pc; [INFO] [stderr] 119 | | self.push_stack(pc); [INFO] [stderr] 120 | | self.pc = addr - 2; [INFO] [stderr] 121 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SE` should have a snake case name such as `se` [INFO] [stderr] --> src/cpu.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | / fn SE(&mut self, x: u8, byte: u8) { [INFO] [stderr] 123 | | let xval = self.read_register(x); [INFO] [stderr] 124 | | if xval == byte { [INFO] [stderr] 125 | | self.pc += 2; [INFO] [stderr] 126 | | } [INFO] [stderr] 127 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SNE` should have a snake case name such as `sne` [INFO] [stderr] --> src/cpu.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / fn SNE(&mut self, x: u8, byte: u8) { [INFO] [stderr] 129 | | let xval = self.read_register(x); [INFO] [stderr] 130 | | if xval != byte { [INFO] [stderr] 131 | | self.pc += 2; [INFO] [stderr] 132 | | } [INFO] [stderr] 133 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SE2` should have a snake case name such as `se2` [INFO] [stderr] --> src/cpu.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 134 | / fn SE2(&mut self, x: u8, y: u8) { [INFO] [stderr] 135 | | let xval = self.read_register(x); [INFO] [stderr] 136 | | let yval = self.read_register(y); [INFO] [stderr] 137 | | if xval == yval { [INFO] [stderr] 138 | | self.pc += 2; [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LD` should have a snake case name such as `ld` [INFO] [stderr] --> src/cpu.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | / fn LD(&mut self, x: u8, byte: u8) { [INFO] [stderr] 142 | | self.write_register(x, byte); [INFO] [stderr] 143 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADD` should have a snake case name such as `add` [INFO] [stderr] --> src/cpu.rs:144:5 [INFO] [stderr] | [INFO] [stderr] 144 | / fn ADD(&mut self, x: u8, byte: u8) { [INFO] [stderr] 145 | | let xval = self.read_register(x); [INFO] [stderr] 146 | | self.write_register(x, xval + byte); [INFO] [stderr] 147 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LD2` should have a snake case name such as `ld2` [INFO] [stderr] --> src/cpu.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | / fn LD2(&mut self, x: u8, y: u8) { [INFO] [stderr] 149 | | let yval = self.read_register(y); [INFO] [stderr] 150 | | self.write_register(x, yval); [INFO] [stderr] 151 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `OR` should have a snake case name such as `or` [INFO] [stderr] --> src/cpu.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | / fn OR(&mut self, x: u8, y: u8) { [INFO] [stderr] 153 | | let xval = self.read_register(x); [INFO] [stderr] 154 | | let yval = self.read_register(y); [INFO] [stderr] 155 | | self.write_register(x, xval | yval); [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `AND` should have a snake case name such as `and` [INFO] [stderr] --> src/cpu.rs:157:5 [INFO] [stderr] | [INFO] [stderr] 157 | / fn AND(&mut self, x: u8, y: u8) { [INFO] [stderr] 158 | | let xval = self.read_register(x); [INFO] [stderr] 159 | | let yval = self.read_register(y); [INFO] [stderr] 160 | | self.write_register(x, xval & yval); [INFO] [stderr] 161 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `XOR` should have a snake case name such as `xor` [INFO] [stderr] --> src/cpu.rs:162:5 [INFO] [stderr] | [INFO] [stderr] 162 | / fn XOR(&mut self, x: u8, y: u8) { [INFO] [stderr] 163 | | let xval = self.read_register(x); [INFO] [stderr] 164 | | let yval = self.read_register(y); [INFO] [stderr] 165 | | self.write_register(x, xval ^ yval); [INFO] [stderr] 166 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADD2` should have a snake case name such as `add2` [INFO] [stderr] --> src/cpu.rs:167:5 [INFO] [stderr] | [INFO] [stderr] 167 | / fn ADD2(&mut self, x: u8, y: u8) { [INFO] [stderr] 168 | | let xval = self.read_register(x); [INFO] [stderr] 169 | | let yval = self.read_register(y); [INFO] [stderr] 170 | | let res: u16 = (xval as u16) + (yval as u16); [INFO] [stderr] ... | [INFO] [stderr] 173 | | self.write_register(0xF, (carry != 0) as u8); [INFO] [stderr] 174 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SUB` should have a snake case name such as `sub` [INFO] [stderr] --> src/cpu.rs:175:5 [INFO] [stderr] | [INFO] [stderr] 175 | / fn SUB(&mut self, x: u8, y: u8) { [INFO] [stderr] 176 | | let xval = self.read_register(x); [INFO] [stderr] 177 | | let yval = self.read_register(y); [INFO] [stderr] 178 | | let res = xval - yval; [INFO] [stderr] ... | [INFO] [stderr] 181 | | self.write_register(0xF, borrow); [INFO] [stderr] 182 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SHR` should have a snake case name such as `shr` [INFO] [stderr] --> src/cpu.rs:183:5 [INFO] [stderr] | [INFO] [stderr] 183 | / fn SHR(&mut self, x: u8, y: u8) { [INFO] [stderr] 184 | | let yval = self.read_register(y); [INFO] [stderr] 185 | | self.write_register(x, yval >> 1); [INFO] [stderr] 186 | | self.write_register(0xF, yval & 0x01); [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SUBN` should have a snake case name such as `subn` [INFO] [stderr] --> src/cpu.rs:188:5 [INFO] [stderr] | [INFO] [stderr] 188 | / fn SUBN(&mut self, x: u8, y: u8) { [INFO] [stderr] 189 | | let xval = self.read_register(x); [INFO] [stderr] 190 | | let yval = self.read_register(y); [INFO] [stderr] 191 | | let res = yval - xval; [INFO] [stderr] ... | [INFO] [stderr] 194 | | self.write_register(0xF, borrow); [INFO] [stderr] 195 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SHL` should have a snake case name such as `shl` [INFO] [stderr] --> src/cpu.rs:196:5 [INFO] [stderr] | [INFO] [stderr] 196 | / fn SHL(&mut self, x: u8, y: u8) { [INFO] [stderr] 197 | | let yval = self.read_register(y); [INFO] [stderr] 198 | | self.write_register(x, yval << 1); [INFO] [stderr] 199 | | self.write_register(0xF, yval >> 7); [INFO] [stderr] 200 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SNE2` should have a snake case name such as `sne2` [INFO] [stderr] --> src/cpu.rs:201:5 [INFO] [stderr] | [INFO] [stderr] 201 | / fn SNE2(&mut self, x: u8, y: u8) { [INFO] [stderr] 202 | | let xval = self.read_register(x); [INFO] [stderr] 203 | | let yval = self.read_register(y); [INFO] [stderr] 204 | | if xval != yval { [INFO] [stderr] 205 | | self.pc += 2; [INFO] [stderr] 206 | | } [INFO] [stderr] 207 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDI` should have a snake case name such as `ldi` [INFO] [stderr] --> src/cpu.rs:208:5 [INFO] [stderr] | [INFO] [stderr] 208 | / fn LDI(&mut self, addr: u16) { [INFO] [stderr] 209 | | self.i = addr; [INFO] [stderr] 210 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `JPV0` should have a snake case name such as `jpv0` [INFO] [stderr] --> src/cpu.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | / fn JPV0(&mut self, addr: u16) { [INFO] [stderr] 212 | | self.pc = self.read_register(0x0) as u16 + addr - 2; [INFO] [stderr] 213 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `RND` should have a snake case name such as `rnd` [INFO] [stderr] --> src/cpu.rs:214:5 [INFO] [stderr] | [INFO] [stderr] 214 | / fn RND(&mut self, x: u8, byte: u8) { [INFO] [stderr] 215 | | let rnd = 0; [INFO] [stderr] 216 | | self.write_register(x, rnd & byte); [INFO] [stderr] 217 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `DRW` should have a snake case name such as `drw` [INFO] [stderr] --> src/cpu.rs:218:5 [INFO] [stderr] | [INFO] [stderr] 218 | / fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] 219 | | // todo [INFO] [stderr] 220 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SKP` should have a snake case name such as `skp` [INFO] [stderr] --> src/cpu.rs:221:5 [INFO] [stderr] | [INFO] [stderr] 221 | / fn SKP(&mut self, x: u8) { [INFO] [stderr] 222 | | // todo [INFO] [stderr] 223 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SKNP` should have a snake case name such as `sknp` [INFO] [stderr] --> src/cpu.rs:224:5 [INFO] [stderr] | [INFO] [stderr] 224 | / fn SKNP(&mut self, x: u8) { [INFO] [stderr] 225 | | // todo [INFO] [stderr] 226 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDT` should have a snake case name such as `ldt` [INFO] [stderr] --> src/cpu.rs:227:5 [INFO] [stderr] | [INFO] [stderr] 227 | / fn LDT(&mut self, x: u8) { [INFO] [stderr] 228 | | let dt = self.dt; [INFO] [stderr] 229 | | self.write_register(x, dt); [INFO] [stderr] 230 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDK` should have a snake case name such as `ldk` [INFO] [stderr] --> src/cpu.rs:231:5 [INFO] [stderr] | [INFO] [stderr] 231 | / fn LDK(&mut self, x: u8) { [INFO] [stderr] 232 | | // toddo [INFO] [stderr] 233 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDT2` should have a snake case name such as `ldt2` [INFO] [stderr] --> src/cpu.rs:234:5 [INFO] [stderr] | [INFO] [stderr] 234 | / fn LDT2(&mut self, x: u8) { [INFO] [stderr] 235 | | self.dt = self.read_register(x); [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDS` should have a snake case name such as `lds` [INFO] [stderr] --> src/cpu.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | / fn LDS(&mut self, x: u8) { [INFO] [stderr] 238 | | self.st = self.read_register(x); [INFO] [stderr] 239 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADDI` should have a snake case name such as `addi` [INFO] [stderr] --> src/cpu.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | / fn ADDI(&mut self, x: u8) { [INFO] [stderr] 241 | | self.i += self.read_register(x) as u16; [INFO] [stderr] 242 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDD` should have a snake case name such as `ldd` [INFO] [stderr] --> src/cpu.rs:243:5 [INFO] [stderr] | [INFO] [stderr] 243 | / fn LDD(&mut self, x: u8) { [INFO] [stderr] 244 | | // todo [INFO] [stderr] 245 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDB` should have a snake case name such as `ldb` [INFO] [stderr] --> src/cpu.rs:246:5 [INFO] [stderr] | [INFO] [stderr] 246 | / fn LDB(&mut self, x: u8) { [INFO] [stderr] 247 | | let xval = self.read_register(x); [INFO] [stderr] 248 | | let c = xval / 100; [INFO] [stderr] 249 | | let d = (xval - c * 100) / 10; [INFO] [stderr] ... | [INFO] [stderr] 255 | | self.i += 2; [INFO] [stderr] 256 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `STR` should have a snake case name such as `str` [INFO] [stderr] --> src/cpu.rs:257:5 [INFO] [stderr] | [INFO] [stderr] 257 | / fn STR(&mut self, x: u8) { [INFO] [stderr] 258 | | let addr = self.i; [INFO] [stderr] 259 | | for reg in 0..x { [INFO] [stderr] 260 | | let val = self.read_register(reg); [INFO] [stderr] ... | [INFO] [stderr] 263 | | self.i += x as u16 + 1; [INFO] [stderr] 264 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDR` should have a snake case name such as `ldr` [INFO] [stderr] --> src/cpu.rs:265:5 [INFO] [stderr] | [INFO] [stderr] 265 | / fn LDR(&mut self, x: u8) { [INFO] [stderr] 266 | | for reg in 0..x { [INFO] [stderr] 267 | | let val = self.read_memory(self.i + x as u16); [INFO] [stderr] 268 | | self.write_register(reg, val); [INFO] [stderr] 269 | | } [INFO] [stderr] 270 | | self.i += x as u16; [INFO] [stderr] 271 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: variable `Vx` should have a snake case name such as `vx` [INFO] [stderr] --> src/cpu.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: variable `Vy` should have a snake case name such as `vy` [INFO] [stderr] --> src/cpu.rs:287:17 [INFO] [stderr] | [INFO] [stderr] 287 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: denote infinite loops with `loop { ... }` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | while true { [INFO] [stderr] | ^^^^^^^^^^ help: use `loop` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(while_true)] on by default [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.34s [INFO] running `"docker" "inspect" "41d9aebee93a552e9619457370197f8fbf54168c2a1031b47d94223400959ced"` [INFO] running `"docker" "rm" "-f" "41d9aebee93a552e9619457370197f8fbf54168c2a1031b47d94223400959ced"` [INFO] [stdout] 41d9aebee93a552e9619457370197f8fbf54168c2a1031b47d94223400959ced