nmarshall commited on
Commit
8fb42db
·
1 Parent(s): a58128c

gameplay: port bomb defuse cancellation

Browse files
crates/urt-gameplay/src/bin/urt-defuse.rs CHANGED
@@ -74,6 +74,11 @@ fn main() {
74
  let e = begin_defuse(&mut s, i).unwrap();
75
  println!("{{{}}}", fields(s, &e));
76
  }
 
 
 
 
 
77
  _ => panic!("unknown policy"),
78
  }
79
  }
 
74
  let e = begin_defuse(&mut s, i).unwrap();
75
  println!("{{{}}}", fields(s, &e));
76
  }
77
+ "cancel" => {
78
+ let (mut s, i) = decode(&w);
79
+ let e = cancel_defuse(&mut s, i).unwrap();
80
+ println!("{{{}}}", fields(s, &e));
81
+ }
82
  _ => panic!("unknown policy"),
83
  }
84
  }
crates/urt-gameplay/src/defuse.rs CHANGED
@@ -119,3 +119,92 @@ mod begin_tests {
119
  assert_eq!(s, old);
120
  }
121
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  assert_eq!(s, old);
120
  }
121
  }
122
+
123
+ /// Original153927/154008: inactive state does not clean stale flags or time.
124
+ pub fn cancel_defuse(
125
+ state: &mut DefuseState,
126
+ input: DefuseInput,
127
+ ) -> Result<Vec<DefuseEffect>, Error> {
128
+ if state.busy == 0 {
129
+ return Ok(vec![]);
130
+ }
131
+ if !(0..64).contains(&input.slot) {
132
+ return Err(Error::InvalidIndex);
133
+ }
134
+ state.clock = 0;
135
+ state.busy = 0;
136
+ state.flags &= !4;
137
+ state.flags104 &= !16;
138
+ state.event[0] = 0;
139
+ state.event[1] |= 32;
140
+ Ok(vec![DefuseEffect::Allocate { event: 84 }])
141
+ }
142
+ #[cfg(test)]
143
+ mod cancel_tests {
144
+ use super::*;
145
+ fn state() -> DefuseState {
146
+ DefuseState {
147
+ flags: u32::MAX,
148
+ flags104: u32::MAX,
149
+ busy: u32::MAX,
150
+ clock: 0x80000000,
151
+ complete: 0,
152
+ animation: 99,
153
+ weapon: 0x1234000d,
154
+ event: [7, 0x80000001],
155
+ }
156
+ }
157
+ fn input() -> DefuseInput {
158
+ DefuseInput {
159
+ tick: 10000,
160
+ duration: 5,
161
+ index: 3,
162
+ slot: 2,
163
+ }
164
+ }
165
+ #[test]
166
+ fn busy_cancel_clears_only_owned_fields() {
167
+ let mut s = state();
168
+ let e = cancel_defuse(&mut s, input()).unwrap();
169
+ assert_eq!(s.flags, u32::MAX & !4);
170
+ assert_eq!(s.flags104, u32::MAX & !16);
171
+ assert_eq!(
172
+ (s.busy, s.clock, s.animation, s.weapon),
173
+ (0, 0, 99, 0x1234000d)
174
+ );
175
+ assert_eq!(s.event, [0, 0x80000021]);
176
+ assert_eq!(e, vec![DefuseEffect::Allocate { event: 84 }]);
177
+ assert!(cancel_defuse(&mut s, input()).unwrap().is_empty());
178
+ }
179
+ #[test]
180
+ fn inactive_stale_state_and_active_errors_preserve_state() {
181
+ let mut s = state();
182
+ s.busy = 0;
183
+ let old = s;
184
+ assert!(
185
+ cancel_defuse(
186
+ &mut s,
187
+ DefuseInput {
188
+ slot: 64,
189
+ ..input()
190
+ }
191
+ )
192
+ .unwrap()
193
+ .is_empty()
194
+ );
195
+ assert_eq!(s, old);
196
+ s.busy = 1;
197
+ let old = s;
198
+ assert!(
199
+ cancel_defuse(
200
+ &mut s,
201
+ DefuseInput {
202
+ slot: 64,
203
+ ..input()
204
+ }
205
+ )
206
+ .is_err()
207
+ );
208
+ assert_eq!(s, old);
209
+ }
210
+ }
docs/FINDINGS.md CHANGED
@@ -1971,3 +1971,5 @@ RE-1014: Seventy-two original-QVM probes recover defuse start after near/eligibl
1971
  RE-1015: Rust ports start-state masks, animation selection, shared clock, duration payload and event83-before-sound7 ordering across72 source cases. Raw weapon/duration/tick words remain bit-exact. Typed weapon/client indices reject before mutation; unit tests distinguish flag32 from flag64-only behavior and preserve neighboring fields by ownership. Native allocation and sound remain effect plans. [Evidence](research/RUST_DEFUSE_BEGIN.md).
1972
 
1973
  RE-1016: Forty-eight original-QVM cases compare far-target and unflagged cancellation. Any nonzero busy6164 clears busy, shared clock35000484, client mask4 and flag104 mask16, then allocates event84 with payload0 and event mask32. Zero busy leaves all fields unchanged, even stale flags or clock. Weapon/animation and unrelated bits survive. Both branches match; native event allocation and caller routing remain excluded. [Evidence](research/QVM_DEFUSE_CANCEL.md).
 
 
 
1971
  RE-1015: Rust ports start-state masks, animation selection, shared clock, duration payload and event83-before-sound7 ordering across72 source cases. Raw weapon/duration/tick words remain bit-exact. Typed weapon/client indices reject before mutation; unit tests distinguish flag32 from flag64-only behavior and preserve neighboring fields by ownership. Native allocation and sound remain effect plans. [Evidence](research/RUST_DEFUSE_BEGIN.md).
1972
 
1973
  RE-1016: Forty-eight original-QVM cases compare far-target and unflagged cancellation. Any nonzero busy6164 clears busy, shared clock35000484, client mask4 and flag104 mask16, then allocates event84 with payload0 and event mask32. Zero busy leaves all fields unchanged, even stale flags or clock. Weapon/animation and unrelated bits survive. Both branches match; native event allocation and caller routing remain excluded. [Evidence](research/QVM_DEFUSE_CANCEL.md).
1974
+
1975
+ RE-1017: Rust matches48 far/unflagged cancellation cases. Any nonzero busy state clears the shared clock and owned flags and emits event84 payload0; inactive stale state remains untouched. Weapon/animation words and unrelated bits survive. Unit tests verify idempotence, nonzero high-bit busy values, inactive unused-index preservation and active error atomicity. Native allocation remains a plan. [Evidence](research/RUST_DEFUSE_CANCEL.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -2030,3 +2030,5 @@ RE-974–983 completed routing, command rewrite, inactivity, movement-parameter
2030
  - [x] RE-1015 Port bomb-defuse start and effect ordering ([evidence](research/RUST_DEFUSE_BEGIN.md)).
2031
 
2032
  - [x] RE-1016 Recover bomb-defuse cancellation branches ([evidence](research/QVM_DEFUSE_CANCEL.md)).
 
 
 
2030
  - [x] RE-1015 Port bomb-defuse start and effect ordering ([evidence](research/RUST_DEFUSE_BEGIN.md)).
2031
 
2032
  - [x] RE-1016 Recover bomb-defuse cancellation branches ([evidence](research/QVM_DEFUSE_CANCEL.md)).
2033
+
2034
+ - [x] RE-1017 Port conditional bomb-defuse cancellation ([evidence](research/RUST_DEFUSE_CANCEL.md)).
docs/RESEARCH_LEDGER.md CHANGED
@@ -2739,3 +2739,7 @@ Rust ports start-state masks, animation selection, shared clock, duration payloa
2739
  ## 2026-10-29 — RE-1016 Recover bomb-defuse cancellation branches
2740
 
2741
  Forty-eight original-QVM cases compare far-target and unflagged cancellation. Any nonzero busy6164 clears busy, shared clock35000484, client mask4 and flag104 mask16, then allocates event84 with payload0 and event mask32. Zero busy leaves all fields unchanged, even stale flags or clock. Weapon/animation and unrelated bits survive. Both branches match; native event allocation and caller routing remain excluded. Focused `cargo xtask test-group qvm-defuse-cancel` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
 
 
 
 
 
2739
  ## 2026-10-29 — RE-1016 Recover bomb-defuse cancellation branches
2740
 
2741
  Forty-eight original-QVM cases compare far-target and unflagged cancellation. Any nonzero busy6164 clears busy, shared clock35000484, client mask4 and flag104 mask16, then allocates event84 with payload0 and event mask32. Zero busy leaves all fields unchanged, even stale flags or clock. Weapon/animation and unrelated bits survive. Both branches match; native event allocation and caller routing remain excluded. Focused `cargo xtask test-group qvm-defuse-cancel` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
2742
+
2743
+ ## 2026-10-29 — RE-1017 Port conditional bomb-defuse cancellation
2744
+
2745
+ Rust matches48 far/unflagged cancellation cases. Any nonzero busy state clears the shared clock and owned flags and emits event84 payload0; inactive stale state remains untouched. Weapon/animation words and unrelated bits survive. Unit tests verify idempotence, nonzero high-bit busy values, inactive unused-index preservation and active error atomicity. Native allocation remains a plan. Focused `cargo xtask test-group rust-defuse-cancel` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -2067,3 +2067,5 @@ RE-974–983 recover routing, command rewriting, inactivity and composed setup t
2067
  - [x] RE-1015 Port bomb-defuse start and effect ordering ([evidence](research/RUST_DEFUSE_BEGIN.md)).
2068
 
2069
  - [x] RE-1016 Recover bomb-defuse cancellation branches ([evidence](research/QVM_DEFUSE_CANCEL.md)).
 
 
 
2067
  - [x] RE-1015 Port bomb-defuse start and effect ordering ([evidence](research/RUST_DEFUSE_BEGIN.md)).
2068
 
2069
  - [x] RE-1016 Recover bomb-defuse cancellation branches ([evidence](research/QVM_DEFUSE_CANCEL.md)).
2070
+
2071
+ - [x] RE-1017 Port conditional bomb-defuse cancellation ([evidence](research/RUST_DEFUSE_CANCEL.md)).
docs/research/README.md CHANGED
@@ -1599,3 +1599,5 @@ The extension collector adds five focused tests for native tail calls, command-r
1599
  - [RE-1015: Port bomb-defuse start and effect ordering](RUST_DEFUSE_BEGIN.md).
1600
 
1601
  - [RE-1016: Recover bomb-defuse cancellation branches](QVM_DEFUSE_CANCEL.md).
 
 
 
1599
  - [RE-1015: Port bomb-defuse start and effect ordering](RUST_DEFUSE_BEGIN.md).
1600
 
1601
  - [RE-1016: Recover bomb-defuse cancellation branches](QVM_DEFUSE_CANCEL.md).
1602
+
1603
+ - [RE-1017: Port conditional bomb-defuse cancellation](RUST_DEFUSE_CANCEL.md).
docs/research/RUST_DEFUSE_CANCEL.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # Port conditional bomb-defuse cancellation
2
+
3
+ RE-1017. Focused validation: `cargo xtask test-group rust-defuse-cancel`. [Machine report](rust-defuse-cancel.json).
4
+
5
+ Rust matches48 far/unflagged cancellation cases. Any nonzero busy state clears the shared clock and owned flags and emits event84 payload0; inactive stale state remains untouched. Weapon/animation words and unrelated bits survive. Unit tests verify idempotence, nonzero high-bit busy values, inactive unused-index preservation and active error atomicity. Native allocation remains a plan.
docs/research/rust-defuse-cancel.json ADDED
@@ -0,0 +1,2151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Finite source/Rust contract parity; native time/file/network replies remain supplied or captured.",
3
+ "probes": [
4
+ {
5
+ "rust": {
6
+ "animation": 99,
7
+ "busy": 0,
8
+ "clock": 0,
9
+ "complete": 0,
10
+ "event": [
11
+ 7,
12
+ 2147483649
13
+ ],
14
+ "events": [],
15
+ "flags": 0,
16
+ "flags104": 2147483650,
17
+ "guards": [
18
+ 2864434397,
19
+ 287454020
20
+ ],
21
+ "weapon": 305397771
22
+ },
23
+ "source": {
24
+ "animation": 99,
25
+ "busy": 0,
26
+ "clock": 0,
27
+ "complete": 0,
28
+ "event": [
29
+ 7,
30
+ 2147483649
31
+ ],
32
+ "events": [],
33
+ "flags": 0,
34
+ "flags104": 2147483650,
35
+ "guards": [
36
+ 2864434397,
37
+ 287454020
38
+ ],
39
+ "weapon": 305397771
40
+ }
41
+ },
42
+ {
43
+ "rust": {
44
+ "animation": 99,
45
+ "busy": 0,
46
+ "clock": 0,
47
+ "complete": 0,
48
+ "event": [
49
+ 7,
50
+ 2147483649
51
+ ],
52
+ "events": [],
53
+ "flags": 0,
54
+ "flags104": 2147483650,
55
+ "guards": [
56
+ 2864434397,
57
+ 287454020
58
+ ],
59
+ "weapon": 305397771
60
+ },
61
+ "source": {
62
+ "animation": 99,
63
+ "busy": 0,
64
+ "clock": 0,
65
+ "complete": 0,
66
+ "event": [
67
+ 7,
68
+ 2147483649
69
+ ],
70
+ "events": [],
71
+ "flags": 0,
72
+ "flags104": 2147483650,
73
+ "guards": [
74
+ 2864434397,
75
+ 287454020
76
+ ],
77
+ "weapon": 305397771
78
+ }
79
+ },
80
+ {
81
+ "rust": {
82
+ "animation": 99,
83
+ "busy": 0,
84
+ "clock": 2147483648,
85
+ "complete": 0,
86
+ "event": [
87
+ 7,
88
+ 2147483649
89
+ ],
90
+ "events": [],
91
+ "flags": 0,
92
+ "flags104": 2147483650,
93
+ "guards": [
94
+ 2864434397,
95
+ 287454020
96
+ ],
97
+ "weapon": 305397771
98
+ },
99
+ "source": {
100
+ "animation": 99,
101
+ "busy": 0,
102
+ "clock": 2147483648,
103
+ "complete": 0,
104
+ "event": [
105
+ 7,
106
+ 2147483649
107
+ ],
108
+ "events": [],
109
+ "flags": 0,
110
+ "flags104": 2147483650,
111
+ "guards": [
112
+ 2864434397,
113
+ 287454020
114
+ ],
115
+ "weapon": 305397771
116
+ }
117
+ },
118
+ {
119
+ "rust": {
120
+ "animation": 99,
121
+ "busy": 0,
122
+ "clock": 2147483648,
123
+ "complete": 0,
124
+ "event": [
125
+ 7,
126
+ 2147483649
127
+ ],
128
+ "events": [],
129
+ "flags": 0,
130
+ "flags104": 2147483650,
131
+ "guards": [
132
+ 2864434397,
133
+ 287454020
134
+ ],
135
+ "weapon": 305397771
136
+ },
137
+ "source": {
138
+ "animation": 99,
139
+ "busy": 0,
140
+ "clock": 2147483648,
141
+ "complete": 0,
142
+ "event": [
143
+ 7,
144
+ 2147483649
145
+ ],
146
+ "events": [],
147
+ "flags": 0,
148
+ "flags104": 2147483650,
149
+ "guards": [
150
+ 2864434397,
151
+ 287454020
152
+ ],
153
+ "weapon": 305397771
154
+ }
155
+ },
156
+ {
157
+ "rust": {
158
+ "animation": 99,
159
+ "busy": 0,
160
+ "clock": 0,
161
+ "complete": 0,
162
+ "event": [
163
+ 0,
164
+ 2147483681
165
+ ],
166
+ "events": [
167
+ {
168
+ "event": 84,
169
+ "op": "allocate"
170
+ }
171
+ ],
172
+ "flags": 0,
173
+ "flags104": 2147483650,
174
+ "guards": [
175
+ 2864434397,
176
+ 287454020
177
+ ],
178
+ "weapon": 305397771
179
+ },
180
+ "source": {
181
+ "animation": 99,
182
+ "busy": 0,
183
+ "clock": 0,
184
+ "complete": 0,
185
+ "event": [
186
+ 0,
187
+ 2147483681
188
+ ],
189
+ "events": [
190
+ {
191
+ "event": 84,
192
+ "op": "allocate"
193
+ }
194
+ ],
195
+ "flags": 0,
196
+ "flags104": 2147483650,
197
+ "guards": [
198
+ 2864434397,
199
+ 287454020
200
+ ],
201
+ "weapon": 305397771
202
+ }
203
+ },
204
+ {
205
+ "rust": {
206
+ "animation": 99,
207
+ "busy": 0,
208
+ "clock": 0,
209
+ "complete": 0,
210
+ "event": [
211
+ 0,
212
+ 2147483681
213
+ ],
214
+ "events": [
215
+ {
216
+ "event": 84,
217
+ "op": "allocate"
218
+ }
219
+ ],
220
+ "flags": 0,
221
+ "flags104": 2147483650,
222
+ "guards": [
223
+ 2864434397,
224
+ 287454020
225
+ ],
226
+ "weapon": 305397771
227
+ },
228
+ "source": {
229
+ "animation": 99,
230
+ "busy": 0,
231
+ "clock": 0,
232
+ "complete": 0,
233
+ "event": [
234
+ 0,
235
+ 2147483681
236
+ ],
237
+ "events": [
238
+ {
239
+ "event": 84,
240
+ "op": "allocate"
241
+ }
242
+ ],
243
+ "flags": 0,
244
+ "flags104": 2147483650,
245
+ "guards": [
246
+ 2864434397,
247
+ 287454020
248
+ ],
249
+ "weapon": 305397771
250
+ }
251
+ },
252
+ {
253
+ "rust": {
254
+ "animation": 99,
255
+ "busy": 0,
256
+ "clock": 0,
257
+ "complete": 0,
258
+ "event": [
259
+ 0,
260
+ 2147483681
261
+ ],
262
+ "events": [
263
+ {
264
+ "event": 84,
265
+ "op": "allocate"
266
+ }
267
+ ],
268
+ "flags": 0,
269
+ "flags104": 2147483650,
270
+ "guards": [
271
+ 2864434397,
272
+ 287454020
273
+ ],
274
+ "weapon": 305397771
275
+ },
276
+ "source": {
277
+ "animation": 99,
278
+ "busy": 0,
279
+ "clock": 0,
280
+ "complete": 0,
281
+ "event": [
282
+ 0,
283
+ 2147483681
284
+ ],
285
+ "events": [
286
+ {
287
+ "event": 84,
288
+ "op": "allocate"
289
+ }
290
+ ],
291
+ "flags": 0,
292
+ "flags104": 2147483650,
293
+ "guards": [
294
+ 2864434397,
295
+ 287454020
296
+ ],
297
+ "weapon": 305397771
298
+ }
299
+ },
300
+ {
301
+ "rust": {
302
+ "animation": 99,
303
+ "busy": 0,
304
+ "clock": 0,
305
+ "complete": 0,
306
+ "event": [
307
+ 0,
308
+ 2147483681
309
+ ],
310
+ "events": [
311
+ {
312
+ "event": 84,
313
+ "op": "allocate"
314
+ }
315
+ ],
316
+ "flags": 0,
317
+ "flags104": 2147483650,
318
+ "guards": [
319
+ 2864434397,
320
+ 287454020
321
+ ],
322
+ "weapon": 305397771
323
+ },
324
+ "source": {
325
+ "animation": 99,
326
+ "busy": 0,
327
+ "clock": 0,
328
+ "complete": 0,
329
+ "event": [
330
+ 0,
331
+ 2147483681
332
+ ],
333
+ "events": [
334
+ {
335
+ "event": 84,
336
+ "op": "allocate"
337
+ }
338
+ ],
339
+ "flags": 0,
340
+ "flags104": 2147483650,
341
+ "guards": [
342
+ 2864434397,
343
+ 287454020
344
+ ],
345
+ "weapon": 305397771
346
+ }
347
+ },
348
+ {
349
+ "rust": {
350
+ "animation": 99,
351
+ "busy": 0,
352
+ "clock": 0,
353
+ "complete": 0,
354
+ "event": [
355
+ 0,
356
+ 2147483681
357
+ ],
358
+ "events": [
359
+ {
360
+ "event": 84,
361
+ "op": "allocate"
362
+ }
363
+ ],
364
+ "flags": 0,
365
+ "flags104": 2147483650,
366
+ "guards": [
367
+ 2864434397,
368
+ 287454020
369
+ ],
370
+ "weapon": 305397771
371
+ },
372
+ "source": {
373
+ "animation": 99,
374
+ "busy": 0,
375
+ "clock": 0,
376
+ "complete": 0,
377
+ "event": [
378
+ 0,
379
+ 2147483681
380
+ ],
381
+ "events": [
382
+ {
383
+ "event": 84,
384
+ "op": "allocate"
385
+ }
386
+ ],
387
+ "flags": 0,
388
+ "flags104": 2147483650,
389
+ "guards": [
390
+ 2864434397,
391
+ 287454020
392
+ ],
393
+ "weapon": 305397771
394
+ }
395
+ },
396
+ {
397
+ "rust": {
398
+ "animation": 99,
399
+ "busy": 0,
400
+ "clock": 0,
401
+ "complete": 0,
402
+ "event": [
403
+ 0,
404
+ 2147483681
405
+ ],
406
+ "events": [
407
+ {
408
+ "event": 84,
409
+ "op": "allocate"
410
+ }
411
+ ],
412
+ "flags": 0,
413
+ "flags104": 2147483650,
414
+ "guards": [
415
+ 2864434397,
416
+ 287454020
417
+ ],
418
+ "weapon": 305397771
419
+ },
420
+ "source": {
421
+ "animation": 99,
422
+ "busy": 0,
423
+ "clock": 0,
424
+ "complete": 0,
425
+ "event": [
426
+ 0,
427
+ 2147483681
428
+ ],
429
+ "events": [
430
+ {
431
+ "event": 84,
432
+ "op": "allocate"
433
+ }
434
+ ],
435
+ "flags": 0,
436
+ "flags104": 2147483650,
437
+ "guards": [
438
+ 2864434397,
439
+ 287454020
440
+ ],
441
+ "weapon": 305397771
442
+ }
443
+ },
444
+ {
445
+ "rust": {
446
+ "animation": 99,
447
+ "busy": 0,
448
+ "clock": 0,
449
+ "complete": 0,
450
+ "event": [
451
+ 0,
452
+ 2147483681
453
+ ],
454
+ "events": [
455
+ {
456
+ "event": 84,
457
+ "op": "allocate"
458
+ }
459
+ ],
460
+ "flags": 0,
461
+ "flags104": 2147483650,
462
+ "guards": [
463
+ 2864434397,
464
+ 287454020
465
+ ],
466
+ "weapon": 305397771
467
+ },
468
+ "source": {
469
+ "animation": 99,
470
+ "busy": 0,
471
+ "clock": 0,
472
+ "complete": 0,
473
+ "event": [
474
+ 0,
475
+ 2147483681
476
+ ],
477
+ "events": [
478
+ {
479
+ "event": 84,
480
+ "op": "allocate"
481
+ }
482
+ ],
483
+ "flags": 0,
484
+ "flags104": 2147483650,
485
+ "guards": [
486
+ 2864434397,
487
+ 287454020
488
+ ],
489
+ "weapon": 305397771
490
+ }
491
+ },
492
+ {
493
+ "rust": {
494
+ "animation": 99,
495
+ "busy": 0,
496
+ "clock": 0,
497
+ "complete": 0,
498
+ "event": [
499
+ 0,
500
+ 2147483681
501
+ ],
502
+ "events": [
503
+ {
504
+ "event": 84,
505
+ "op": "allocate"
506
+ }
507
+ ],
508
+ "flags": 0,
509
+ "flags104": 2147483650,
510
+ "guards": [
511
+ 2864434397,
512
+ 287454020
513
+ ],
514
+ "weapon": 305397771
515
+ },
516
+ "source": {
517
+ "animation": 99,
518
+ "busy": 0,
519
+ "clock": 0,
520
+ "complete": 0,
521
+ "event": [
522
+ 0,
523
+ 2147483681
524
+ ],
525
+ "events": [
526
+ {
527
+ "event": 84,
528
+ "op": "allocate"
529
+ }
530
+ ],
531
+ "flags": 0,
532
+ "flags104": 2147483650,
533
+ "guards": [
534
+ 2864434397,
535
+ 287454020
536
+ ],
537
+ "weapon": 305397771
538
+ }
539
+ },
540
+ {
541
+ "rust": {
542
+ "animation": 99,
543
+ "busy": 0,
544
+ "clock": 0,
545
+ "complete": 0,
546
+ "event": [
547
+ 7,
548
+ 2147483649
549
+ ],
550
+ "events": [],
551
+ "flags": 4,
552
+ "flags104": 2147483650,
553
+ "guards": [
554
+ 2864434397,
555
+ 287454020
556
+ ],
557
+ "weapon": 305397771
558
+ },
559
+ "source": {
560
+ "animation": 99,
561
+ "busy": 0,
562
+ "clock": 0,
563
+ "complete": 0,
564
+ "event": [
565
+ 7,
566
+ 2147483649
567
+ ],
568
+ "events": [],
569
+ "flags": 4,
570
+ "flags104": 2147483650,
571
+ "guards": [
572
+ 2864434397,
573
+ 287454020
574
+ ],
575
+ "weapon": 305397771
576
+ }
577
+ },
578
+ {
579
+ "rust": {
580
+ "animation": 99,
581
+ "busy": 0,
582
+ "clock": 0,
583
+ "complete": 0,
584
+ "event": [
585
+ 7,
586
+ 2147483649
587
+ ],
588
+ "events": [],
589
+ "flags": 4,
590
+ "flags104": 2147483650,
591
+ "guards": [
592
+ 2864434397,
593
+ 287454020
594
+ ],
595
+ "weapon": 305397771
596
+ },
597
+ "source": {
598
+ "animation": 99,
599
+ "busy": 0,
600
+ "clock": 0,
601
+ "complete": 0,
602
+ "event": [
603
+ 7,
604
+ 2147483649
605
+ ],
606
+ "events": [],
607
+ "flags": 4,
608
+ "flags104": 2147483650,
609
+ "guards": [
610
+ 2864434397,
611
+ 287454020
612
+ ],
613
+ "weapon": 305397771
614
+ }
615
+ },
616
+ {
617
+ "rust": {
618
+ "animation": 99,
619
+ "busy": 0,
620
+ "clock": 2147483648,
621
+ "complete": 0,
622
+ "event": [
623
+ 7,
624
+ 2147483649
625
+ ],
626
+ "events": [],
627
+ "flags": 4,
628
+ "flags104": 2147483650,
629
+ "guards": [
630
+ 2864434397,
631
+ 287454020
632
+ ],
633
+ "weapon": 305397771
634
+ },
635
+ "source": {
636
+ "animation": 99,
637
+ "busy": 0,
638
+ "clock": 2147483648,
639
+ "complete": 0,
640
+ "event": [
641
+ 7,
642
+ 2147483649
643
+ ],
644
+ "events": [],
645
+ "flags": 4,
646
+ "flags104": 2147483650,
647
+ "guards": [
648
+ 2864434397,
649
+ 287454020
650
+ ],
651
+ "weapon": 305397771
652
+ }
653
+ },
654
+ {
655
+ "rust": {
656
+ "animation": 99,
657
+ "busy": 0,
658
+ "clock": 2147483648,
659
+ "complete": 0,
660
+ "event": [
661
+ 7,
662
+ 2147483649
663
+ ],
664
+ "events": [],
665
+ "flags": 4,
666
+ "flags104": 2147483650,
667
+ "guards": [
668
+ 2864434397,
669
+ 287454020
670
+ ],
671
+ "weapon": 305397771
672
+ },
673
+ "source": {
674
+ "animation": 99,
675
+ "busy": 0,
676
+ "clock": 2147483648,
677
+ "complete": 0,
678
+ "event": [
679
+ 7,
680
+ 2147483649
681
+ ],
682
+ "events": [],
683
+ "flags": 4,
684
+ "flags104": 2147483650,
685
+ "guards": [
686
+ 2864434397,
687
+ 287454020
688
+ ],
689
+ "weapon": 305397771
690
+ }
691
+ },
692
+ {
693
+ "rust": {
694
+ "animation": 99,
695
+ "busy": 0,
696
+ "clock": 0,
697
+ "complete": 0,
698
+ "event": [
699
+ 0,
700
+ 2147483681
701
+ ],
702
+ "events": [
703
+ {
704
+ "event": 84,
705
+ "op": "allocate"
706
+ }
707
+ ],
708
+ "flags": 0,
709
+ "flags104": 2147483650,
710
+ "guards": [
711
+ 2864434397,
712
+ 287454020
713
+ ],
714
+ "weapon": 305397771
715
+ },
716
+ "source": {
717
+ "animation": 99,
718
+ "busy": 0,
719
+ "clock": 0,
720
+ "complete": 0,
721
+ "event": [
722
+ 0,
723
+ 2147483681
724
+ ],
725
+ "events": [
726
+ {
727
+ "event": 84,
728
+ "op": "allocate"
729
+ }
730
+ ],
731
+ "flags": 0,
732
+ "flags104": 2147483650,
733
+ "guards": [
734
+ 2864434397,
735
+ 287454020
736
+ ],
737
+ "weapon": 305397771
738
+ }
739
+ },
740
+ {
741
+ "rust": {
742
+ "animation": 99,
743
+ "busy": 0,
744
+ "clock": 0,
745
+ "complete": 0,
746
+ "event": [
747
+ 0,
748
+ 2147483681
749
+ ],
750
+ "events": [
751
+ {
752
+ "event": 84,
753
+ "op": "allocate"
754
+ }
755
+ ],
756
+ "flags": 0,
757
+ "flags104": 2147483650,
758
+ "guards": [
759
+ 2864434397,
760
+ 287454020
761
+ ],
762
+ "weapon": 305397771
763
+ },
764
+ "source": {
765
+ "animation": 99,
766
+ "busy": 0,
767
+ "clock": 0,
768
+ "complete": 0,
769
+ "event": [
770
+ 0,
771
+ 2147483681
772
+ ],
773
+ "events": [
774
+ {
775
+ "event": 84,
776
+ "op": "allocate"
777
+ }
778
+ ],
779
+ "flags": 0,
780
+ "flags104": 2147483650,
781
+ "guards": [
782
+ 2864434397,
783
+ 287454020
784
+ ],
785
+ "weapon": 305397771
786
+ }
787
+ },
788
+ {
789
+ "rust": {
790
+ "animation": 99,
791
+ "busy": 0,
792
+ "clock": 0,
793
+ "complete": 0,
794
+ "event": [
795
+ 0,
796
+ 2147483681
797
+ ],
798
+ "events": [
799
+ {
800
+ "event": 84,
801
+ "op": "allocate"
802
+ }
803
+ ],
804
+ "flags": 0,
805
+ "flags104": 2147483650,
806
+ "guards": [
807
+ 2864434397,
808
+ 287454020
809
+ ],
810
+ "weapon": 305397771
811
+ },
812
+ "source": {
813
+ "animation": 99,
814
+ "busy": 0,
815
+ "clock": 0,
816
+ "complete": 0,
817
+ "event": [
818
+ 0,
819
+ 2147483681
820
+ ],
821
+ "events": [
822
+ {
823
+ "event": 84,
824
+ "op": "allocate"
825
+ }
826
+ ],
827
+ "flags": 0,
828
+ "flags104": 2147483650,
829
+ "guards": [
830
+ 2864434397,
831
+ 287454020
832
+ ],
833
+ "weapon": 305397771
834
+ }
835
+ },
836
+ {
837
+ "rust": {
838
+ "animation": 99,
839
+ "busy": 0,
840
+ "clock": 0,
841
+ "complete": 0,
842
+ "event": [
843
+ 0,
844
+ 2147483681
845
+ ],
846
+ "events": [
847
+ {
848
+ "event": 84,
849
+ "op": "allocate"
850
+ }
851
+ ],
852
+ "flags": 0,
853
+ "flags104": 2147483650,
854
+ "guards": [
855
+ 2864434397,
856
+ 287454020
857
+ ],
858
+ "weapon": 305397771
859
+ },
860
+ "source": {
861
+ "animation": 99,
862
+ "busy": 0,
863
+ "clock": 0,
864
+ "complete": 0,
865
+ "event": [
866
+ 0,
867
+ 2147483681
868
+ ],
869
+ "events": [
870
+ {
871
+ "event": 84,
872
+ "op": "allocate"
873
+ }
874
+ ],
875
+ "flags": 0,
876
+ "flags104": 2147483650,
877
+ "guards": [
878
+ 2864434397,
879
+ 287454020
880
+ ],
881
+ "weapon": 305397771
882
+ }
883
+ },
884
+ {
885
+ "rust": {
886
+ "animation": 99,
887
+ "busy": 0,
888
+ "clock": 0,
889
+ "complete": 0,
890
+ "event": [
891
+ 0,
892
+ 2147483681
893
+ ],
894
+ "events": [
895
+ {
896
+ "event": 84,
897
+ "op": "allocate"
898
+ }
899
+ ],
900
+ "flags": 0,
901
+ "flags104": 2147483650,
902
+ "guards": [
903
+ 2864434397,
904
+ 287454020
905
+ ],
906
+ "weapon": 305397771
907
+ },
908
+ "source": {
909
+ "animation": 99,
910
+ "busy": 0,
911
+ "clock": 0,
912
+ "complete": 0,
913
+ "event": [
914
+ 0,
915
+ 2147483681
916
+ ],
917
+ "events": [
918
+ {
919
+ "event": 84,
920
+ "op": "allocate"
921
+ }
922
+ ],
923
+ "flags": 0,
924
+ "flags104": 2147483650,
925
+ "guards": [
926
+ 2864434397,
927
+ 287454020
928
+ ],
929
+ "weapon": 305397771
930
+ }
931
+ },
932
+ {
933
+ "rust": {
934
+ "animation": 99,
935
+ "busy": 0,
936
+ "clock": 0,
937
+ "complete": 0,
938
+ "event": [
939
+ 0,
940
+ 2147483681
941
+ ],
942
+ "events": [
943
+ {
944
+ "event": 84,
945
+ "op": "allocate"
946
+ }
947
+ ],
948
+ "flags": 0,
949
+ "flags104": 2147483650,
950
+ "guards": [
951
+ 2864434397,
952
+ 287454020
953
+ ],
954
+ "weapon": 305397771
955
+ },
956
+ "source": {
957
+ "animation": 99,
958
+ "busy": 0,
959
+ "clock": 0,
960
+ "complete": 0,
961
+ "event": [
962
+ 0,
963
+ 2147483681
964
+ ],
965
+ "events": [
966
+ {
967
+ "event": 84,
968
+ "op": "allocate"
969
+ }
970
+ ],
971
+ "flags": 0,
972
+ "flags104": 2147483650,
973
+ "guards": [
974
+ 2864434397,
975
+ 287454020
976
+ ],
977
+ "weapon": 305397771
978
+ }
979
+ },
980
+ {
981
+ "rust": {
982
+ "animation": 99,
983
+ "busy": 0,
984
+ "clock": 0,
985
+ "complete": 0,
986
+ "event": [
987
+ 0,
988
+ 2147483681
989
+ ],
990
+ "events": [
991
+ {
992
+ "event": 84,
993
+ "op": "allocate"
994
+ }
995
+ ],
996
+ "flags": 0,
997
+ "flags104": 2147483650,
998
+ "guards": [
999
+ 2864434397,
1000
+ 287454020
1001
+ ],
1002
+ "weapon": 305397771
1003
+ },
1004
+ "source": {
1005
+ "animation": 99,
1006
+ "busy": 0,
1007
+ "clock": 0,
1008
+ "complete": 0,
1009
+ "event": [
1010
+ 0,
1011
+ 2147483681
1012
+ ],
1013
+ "events": [
1014
+ {
1015
+ "event": 84,
1016
+ "op": "allocate"
1017
+ }
1018
+ ],
1019
+ "flags": 0,
1020
+ "flags104": 2147483650,
1021
+ "guards": [
1022
+ 2864434397,
1023
+ 287454020
1024
+ ],
1025
+ "weapon": 305397771
1026
+ }
1027
+ },
1028
+ {
1029
+ "rust": {
1030
+ "animation": 99,
1031
+ "busy": 0,
1032
+ "clock": 0,
1033
+ "complete": 0,
1034
+ "event": [
1035
+ 0,
1036
+ 2147483681
1037
+ ],
1038
+ "events": [
1039
+ {
1040
+ "event": 84,
1041
+ "op": "allocate"
1042
+ }
1043
+ ],
1044
+ "flags": 0,
1045
+ "flags104": 2147483650,
1046
+ "guards": [
1047
+ 2864434397,
1048
+ 287454020
1049
+ ],
1050
+ "weapon": 305397771
1051
+ },
1052
+ "source": {
1053
+ "animation": 99,
1054
+ "busy": 0,
1055
+ "clock": 0,
1056
+ "complete": 0,
1057
+ "event": [
1058
+ 0,
1059
+ 2147483681
1060
+ ],
1061
+ "events": [
1062
+ {
1063
+ "event": 84,
1064
+ "op": "allocate"
1065
+ }
1066
+ ],
1067
+ "flags": 0,
1068
+ "flags104": 2147483650,
1069
+ "guards": [
1070
+ 2864434397,
1071
+ 287454020
1072
+ ],
1073
+ "weapon": 305397771
1074
+ }
1075
+ },
1076
+ {
1077
+ "rust": {
1078
+ "animation": 99,
1079
+ "busy": 0,
1080
+ "clock": 0,
1081
+ "complete": 0,
1082
+ "event": [
1083
+ 7,
1084
+ 2147483649
1085
+ ],
1086
+ "events": [],
1087
+ "flags": 2147516420,
1088
+ "flags104": 2147483650,
1089
+ "guards": [
1090
+ 2864434397,
1091
+ 287454020
1092
+ ],
1093
+ "weapon": 305397771
1094
+ },
1095
+ "source": {
1096
+ "animation": 99,
1097
+ "busy": 0,
1098
+ "clock": 0,
1099
+ "complete": 0,
1100
+ "event": [
1101
+ 7,
1102
+ 2147483649
1103
+ ],
1104
+ "events": [],
1105
+ "flags": 2147516420,
1106
+ "flags104": 2147483650,
1107
+ "guards": [
1108
+ 2864434397,
1109
+ 287454020
1110
+ ],
1111
+ "weapon": 305397771
1112
+ }
1113
+ },
1114
+ {
1115
+ "rust": {
1116
+ "animation": 99,
1117
+ "busy": 0,
1118
+ "clock": 0,
1119
+ "complete": 0,
1120
+ "event": [
1121
+ 7,
1122
+ 2147483649
1123
+ ],
1124
+ "events": [],
1125
+ "flags": 2147516420,
1126
+ "flags104": 2147483650,
1127
+ "guards": [
1128
+ 2864434397,
1129
+ 287454020
1130
+ ],
1131
+ "weapon": 305397771
1132
+ },
1133
+ "source": {
1134
+ "animation": 99,
1135
+ "busy": 0,
1136
+ "clock": 0,
1137
+ "complete": 0,
1138
+ "event": [
1139
+ 7,
1140
+ 2147483649
1141
+ ],
1142
+ "events": [],
1143
+ "flags": 2147516420,
1144
+ "flags104": 2147483650,
1145
+ "guards": [
1146
+ 2864434397,
1147
+ 287454020
1148
+ ],
1149
+ "weapon": 305397771
1150
+ }
1151
+ },
1152
+ {
1153
+ "rust": {
1154
+ "animation": 99,
1155
+ "busy": 0,
1156
+ "clock": 2147483648,
1157
+ "complete": 0,
1158
+ "event": [
1159
+ 7,
1160
+ 2147483649
1161
+ ],
1162
+ "events": [],
1163
+ "flags": 2147516420,
1164
+ "flags104": 2147483650,
1165
+ "guards": [
1166
+ 2864434397,
1167
+ 287454020
1168
+ ],
1169
+ "weapon": 305397771
1170
+ },
1171
+ "source": {
1172
+ "animation": 99,
1173
+ "busy": 0,
1174
+ "clock": 2147483648,
1175
+ "complete": 0,
1176
+ "event": [
1177
+ 7,
1178
+ 2147483649
1179
+ ],
1180
+ "events": [],
1181
+ "flags": 2147516420,
1182
+ "flags104": 2147483650,
1183
+ "guards": [
1184
+ 2864434397,
1185
+ 287454020
1186
+ ],
1187
+ "weapon": 305397771
1188
+ }
1189
+ },
1190
+ {
1191
+ "rust": {
1192
+ "animation": 99,
1193
+ "busy": 0,
1194
+ "clock": 2147483648,
1195
+ "complete": 0,
1196
+ "event": [
1197
+ 7,
1198
+ 2147483649
1199
+ ],
1200
+ "events": [],
1201
+ "flags": 2147516420,
1202
+ "flags104": 2147483650,
1203
+ "guards": [
1204
+ 2864434397,
1205
+ 287454020
1206
+ ],
1207
+ "weapon": 305397771
1208
+ },
1209
+ "source": {
1210
+ "animation": 99,
1211
+ "busy": 0,
1212
+ "clock": 2147483648,
1213
+ "complete": 0,
1214
+ "event": [
1215
+ 7,
1216
+ 2147483649
1217
+ ],
1218
+ "events": [],
1219
+ "flags": 2147516420,
1220
+ "flags104": 2147483650,
1221
+ "guards": [
1222
+ 2864434397,
1223
+ 287454020
1224
+ ],
1225
+ "weapon": 305397771
1226
+ }
1227
+ },
1228
+ {
1229
+ "rust": {
1230
+ "animation": 99,
1231
+ "busy": 0,
1232
+ "clock": 0,
1233
+ "complete": 0,
1234
+ "event": [
1235
+ 0,
1236
+ 2147483681
1237
+ ],
1238
+ "events": [
1239
+ {
1240
+ "event": 84,
1241
+ "op": "allocate"
1242
+ }
1243
+ ],
1244
+ "flags": 2147516416,
1245
+ "flags104": 2147483650,
1246
+ "guards": [
1247
+ 2864434397,
1248
+ 287454020
1249
+ ],
1250
+ "weapon": 305397771
1251
+ },
1252
+ "source": {
1253
+ "animation": 99,
1254
+ "busy": 0,
1255
+ "clock": 0,
1256
+ "complete": 0,
1257
+ "event": [
1258
+ 0,
1259
+ 2147483681
1260
+ ],
1261
+ "events": [
1262
+ {
1263
+ "event": 84,
1264
+ "op": "allocate"
1265
+ }
1266
+ ],
1267
+ "flags": 2147516416,
1268
+ "flags104": 2147483650,
1269
+ "guards": [
1270
+ 2864434397,
1271
+ 287454020
1272
+ ],
1273
+ "weapon": 305397771
1274
+ }
1275
+ },
1276
+ {
1277
+ "rust": {
1278
+ "animation": 99,
1279
+ "busy": 0,
1280
+ "clock": 0,
1281
+ "complete": 0,
1282
+ "event": [
1283
+ 0,
1284
+ 2147483681
1285
+ ],
1286
+ "events": [
1287
+ {
1288
+ "event": 84,
1289
+ "op": "allocate"
1290
+ }
1291
+ ],
1292
+ "flags": 2147516416,
1293
+ "flags104": 2147483650,
1294
+ "guards": [
1295
+ 2864434397,
1296
+ 287454020
1297
+ ],
1298
+ "weapon": 305397771
1299
+ },
1300
+ "source": {
1301
+ "animation": 99,
1302
+ "busy": 0,
1303
+ "clock": 0,
1304
+ "complete": 0,
1305
+ "event": [
1306
+ 0,
1307
+ 2147483681
1308
+ ],
1309
+ "events": [
1310
+ {
1311
+ "event": 84,
1312
+ "op": "allocate"
1313
+ }
1314
+ ],
1315
+ "flags": 2147516416,
1316
+ "flags104": 2147483650,
1317
+ "guards": [
1318
+ 2864434397,
1319
+ 287454020
1320
+ ],
1321
+ "weapon": 305397771
1322
+ }
1323
+ },
1324
+ {
1325
+ "rust": {
1326
+ "animation": 99,
1327
+ "busy": 0,
1328
+ "clock": 0,
1329
+ "complete": 0,
1330
+ "event": [
1331
+ 0,
1332
+ 2147483681
1333
+ ],
1334
+ "events": [
1335
+ {
1336
+ "event": 84,
1337
+ "op": "allocate"
1338
+ }
1339
+ ],
1340
+ "flags": 2147516416,
1341
+ "flags104": 2147483650,
1342
+ "guards": [
1343
+ 2864434397,
1344
+ 287454020
1345
+ ],
1346
+ "weapon": 305397771
1347
+ },
1348
+ "source": {
1349
+ "animation": 99,
1350
+ "busy": 0,
1351
+ "clock": 0,
1352
+ "complete": 0,
1353
+ "event": [
1354
+ 0,
1355
+ 2147483681
1356
+ ],
1357
+ "events": [
1358
+ {
1359
+ "event": 84,
1360
+ "op": "allocate"
1361
+ }
1362
+ ],
1363
+ "flags": 2147516416,
1364
+ "flags104": 2147483650,
1365
+ "guards": [
1366
+ 2864434397,
1367
+ 287454020
1368
+ ],
1369
+ "weapon": 305397771
1370
+ }
1371
+ },
1372
+ {
1373
+ "rust": {
1374
+ "animation": 99,
1375
+ "busy": 0,
1376
+ "clock": 0,
1377
+ "complete": 0,
1378
+ "event": [
1379
+ 0,
1380
+ 2147483681
1381
+ ],
1382
+ "events": [
1383
+ {
1384
+ "event": 84,
1385
+ "op": "allocate"
1386
+ }
1387
+ ],
1388
+ "flags": 2147516416,
1389
+ "flags104": 2147483650,
1390
+ "guards": [
1391
+ 2864434397,
1392
+ 287454020
1393
+ ],
1394
+ "weapon": 305397771
1395
+ },
1396
+ "source": {
1397
+ "animation": 99,
1398
+ "busy": 0,
1399
+ "clock": 0,
1400
+ "complete": 0,
1401
+ "event": [
1402
+ 0,
1403
+ 2147483681
1404
+ ],
1405
+ "events": [
1406
+ {
1407
+ "event": 84,
1408
+ "op": "allocate"
1409
+ }
1410
+ ],
1411
+ "flags": 2147516416,
1412
+ "flags104": 2147483650,
1413
+ "guards": [
1414
+ 2864434397,
1415
+ 287454020
1416
+ ],
1417
+ "weapon": 305397771
1418
+ }
1419
+ },
1420
+ {
1421
+ "rust": {
1422
+ "animation": 99,
1423
+ "busy": 0,
1424
+ "clock": 0,
1425
+ "complete": 0,
1426
+ "event": [
1427
+ 0,
1428
+ 2147483681
1429
+ ],
1430
+ "events": [
1431
+ {
1432
+ "event": 84,
1433
+ "op": "allocate"
1434
+ }
1435
+ ],
1436
+ "flags": 2147516416,
1437
+ "flags104": 2147483650,
1438
+ "guards": [
1439
+ 2864434397,
1440
+ 287454020
1441
+ ],
1442
+ "weapon": 305397771
1443
+ },
1444
+ "source": {
1445
+ "animation": 99,
1446
+ "busy": 0,
1447
+ "clock": 0,
1448
+ "complete": 0,
1449
+ "event": [
1450
+ 0,
1451
+ 2147483681
1452
+ ],
1453
+ "events": [
1454
+ {
1455
+ "event": 84,
1456
+ "op": "allocate"
1457
+ }
1458
+ ],
1459
+ "flags": 2147516416,
1460
+ "flags104": 2147483650,
1461
+ "guards": [
1462
+ 2864434397,
1463
+ 287454020
1464
+ ],
1465
+ "weapon": 305397771
1466
+ }
1467
+ },
1468
+ {
1469
+ "rust": {
1470
+ "animation": 99,
1471
+ "busy": 0,
1472
+ "clock": 0,
1473
+ "complete": 0,
1474
+ "event": [
1475
+ 0,
1476
+ 2147483681
1477
+ ],
1478
+ "events": [
1479
+ {
1480
+ "event": 84,
1481
+ "op": "allocate"
1482
+ }
1483
+ ],
1484
+ "flags": 2147516416,
1485
+ "flags104": 2147483650,
1486
+ "guards": [
1487
+ 2864434397,
1488
+ 287454020
1489
+ ],
1490
+ "weapon": 305397771
1491
+ },
1492
+ "source": {
1493
+ "animation": 99,
1494
+ "busy": 0,
1495
+ "clock": 0,
1496
+ "complete": 0,
1497
+ "event": [
1498
+ 0,
1499
+ 2147483681
1500
+ ],
1501
+ "events": [
1502
+ {
1503
+ "event": 84,
1504
+ "op": "allocate"
1505
+ }
1506
+ ],
1507
+ "flags": 2147516416,
1508
+ "flags104": 2147483650,
1509
+ "guards": [
1510
+ 2864434397,
1511
+ 287454020
1512
+ ],
1513
+ "weapon": 305397771
1514
+ }
1515
+ },
1516
+ {
1517
+ "rust": {
1518
+ "animation": 99,
1519
+ "busy": 0,
1520
+ "clock": 0,
1521
+ "complete": 0,
1522
+ "event": [
1523
+ 0,
1524
+ 2147483681
1525
+ ],
1526
+ "events": [
1527
+ {
1528
+ "event": 84,
1529
+ "op": "allocate"
1530
+ }
1531
+ ],
1532
+ "flags": 2147516416,
1533
+ "flags104": 2147483650,
1534
+ "guards": [
1535
+ 2864434397,
1536
+ 287454020
1537
+ ],
1538
+ "weapon": 305397771
1539
+ },
1540
+ "source": {
1541
+ "animation": 99,
1542
+ "busy": 0,
1543
+ "clock": 0,
1544
+ "complete": 0,
1545
+ "event": [
1546
+ 0,
1547
+ 2147483681
1548
+ ],
1549
+ "events": [
1550
+ {
1551
+ "event": 84,
1552
+ "op": "allocate"
1553
+ }
1554
+ ],
1555
+ "flags": 2147516416,
1556
+ "flags104": 2147483650,
1557
+ "guards": [
1558
+ 2864434397,
1559
+ 287454020
1560
+ ],
1561
+ "weapon": 305397771
1562
+ }
1563
+ },
1564
+ {
1565
+ "rust": {
1566
+ "animation": 99,
1567
+ "busy": 0,
1568
+ "clock": 0,
1569
+ "complete": 0,
1570
+ "event": [
1571
+ 0,
1572
+ 2147483681
1573
+ ],
1574
+ "events": [
1575
+ {
1576
+ "event": 84,
1577
+ "op": "allocate"
1578
+ }
1579
+ ],
1580
+ "flags": 2147516416,
1581
+ "flags104": 2147483650,
1582
+ "guards": [
1583
+ 2864434397,
1584
+ 287454020
1585
+ ],
1586
+ "weapon": 305397771
1587
+ },
1588
+ "source": {
1589
+ "animation": 99,
1590
+ "busy": 0,
1591
+ "clock": 0,
1592
+ "complete": 0,
1593
+ "event": [
1594
+ 0,
1595
+ 2147483681
1596
+ ],
1597
+ "events": [
1598
+ {
1599
+ "event": 84,
1600
+ "op": "allocate"
1601
+ }
1602
+ ],
1603
+ "flags": 2147516416,
1604
+ "flags104": 2147483650,
1605
+ "guards": [
1606
+ 2864434397,
1607
+ 287454020
1608
+ ],
1609
+ "weapon": 305397771
1610
+ }
1611
+ },
1612
+ {
1613
+ "rust": {
1614
+ "animation": 99,
1615
+ "busy": 0,
1616
+ "clock": 0,
1617
+ "complete": 0,
1618
+ "event": [
1619
+ 7,
1620
+ 2147483649
1621
+ ],
1622
+ "events": [],
1623
+ "flags": 4294967295,
1624
+ "flags104": 2147483650,
1625
+ "guards": [
1626
+ 2864434397,
1627
+ 287454020
1628
+ ],
1629
+ "weapon": 305397771
1630
+ },
1631
+ "source": {
1632
+ "animation": 99,
1633
+ "busy": 0,
1634
+ "clock": 0,
1635
+ "complete": 0,
1636
+ "event": [
1637
+ 7,
1638
+ 2147483649
1639
+ ],
1640
+ "events": [],
1641
+ "flags": 4294967295,
1642
+ "flags104": 2147483650,
1643
+ "guards": [
1644
+ 2864434397,
1645
+ 287454020
1646
+ ],
1647
+ "weapon": 305397771
1648
+ }
1649
+ },
1650
+ {
1651
+ "rust": {
1652
+ "animation": 99,
1653
+ "busy": 0,
1654
+ "clock": 0,
1655
+ "complete": 0,
1656
+ "event": [
1657
+ 7,
1658
+ 2147483649
1659
+ ],
1660
+ "events": [],
1661
+ "flags": 4294967295,
1662
+ "flags104": 2147483650,
1663
+ "guards": [
1664
+ 2864434397,
1665
+ 287454020
1666
+ ],
1667
+ "weapon": 305397771
1668
+ },
1669
+ "source": {
1670
+ "animation": 99,
1671
+ "busy": 0,
1672
+ "clock": 0,
1673
+ "complete": 0,
1674
+ "event": [
1675
+ 7,
1676
+ 2147483649
1677
+ ],
1678
+ "events": [],
1679
+ "flags": 4294967295,
1680
+ "flags104": 2147483650,
1681
+ "guards": [
1682
+ 2864434397,
1683
+ 287454020
1684
+ ],
1685
+ "weapon": 305397771
1686
+ }
1687
+ },
1688
+ {
1689
+ "rust": {
1690
+ "animation": 99,
1691
+ "busy": 0,
1692
+ "clock": 2147483648,
1693
+ "complete": 0,
1694
+ "event": [
1695
+ 7,
1696
+ 2147483649
1697
+ ],
1698
+ "events": [],
1699
+ "flags": 4294967295,
1700
+ "flags104": 2147483650,
1701
+ "guards": [
1702
+ 2864434397,
1703
+ 287454020
1704
+ ],
1705
+ "weapon": 305397771
1706
+ },
1707
+ "source": {
1708
+ "animation": 99,
1709
+ "busy": 0,
1710
+ "clock": 2147483648,
1711
+ "complete": 0,
1712
+ "event": [
1713
+ 7,
1714
+ 2147483649
1715
+ ],
1716
+ "events": [],
1717
+ "flags": 4294967295,
1718
+ "flags104": 2147483650,
1719
+ "guards": [
1720
+ 2864434397,
1721
+ 287454020
1722
+ ],
1723
+ "weapon": 305397771
1724
+ }
1725
+ },
1726
+ {
1727
+ "rust": {
1728
+ "animation": 99,
1729
+ "busy": 0,
1730
+ "clock": 2147483648,
1731
+ "complete": 0,
1732
+ "event": [
1733
+ 7,
1734
+ 2147483649
1735
+ ],
1736
+ "events": [],
1737
+ "flags": 4294967295,
1738
+ "flags104": 2147483650,
1739
+ "guards": [
1740
+ 2864434397,
1741
+ 287454020
1742
+ ],
1743
+ "weapon": 305397771
1744
+ },
1745
+ "source": {
1746
+ "animation": 99,
1747
+ "busy": 0,
1748
+ "clock": 2147483648,
1749
+ "complete": 0,
1750
+ "event": [
1751
+ 7,
1752
+ 2147483649
1753
+ ],
1754
+ "events": [],
1755
+ "flags": 4294967295,
1756
+ "flags104": 2147483650,
1757
+ "guards": [
1758
+ 2864434397,
1759
+ 287454020
1760
+ ],
1761
+ "weapon": 305397771
1762
+ }
1763
+ },
1764
+ {
1765
+ "rust": {
1766
+ "animation": 99,
1767
+ "busy": 0,
1768
+ "clock": 0,
1769
+ "complete": 0,
1770
+ "event": [
1771
+ 0,
1772
+ 2147483681
1773
+ ],
1774
+ "events": [
1775
+ {
1776
+ "event": 84,
1777
+ "op": "allocate"
1778
+ }
1779
+ ],
1780
+ "flags": 4294967291,
1781
+ "flags104": 2147483650,
1782
+ "guards": [
1783
+ 2864434397,
1784
+ 287454020
1785
+ ],
1786
+ "weapon": 305397771
1787
+ },
1788
+ "source": {
1789
+ "animation": 99,
1790
+ "busy": 0,
1791
+ "clock": 0,
1792
+ "complete": 0,
1793
+ "event": [
1794
+ 0,
1795
+ 2147483681
1796
+ ],
1797
+ "events": [
1798
+ {
1799
+ "event": 84,
1800
+ "op": "allocate"
1801
+ }
1802
+ ],
1803
+ "flags": 4294967291,
1804
+ "flags104": 2147483650,
1805
+ "guards": [
1806
+ 2864434397,
1807
+ 287454020
1808
+ ],
1809
+ "weapon": 305397771
1810
+ }
1811
+ },
1812
+ {
1813
+ "rust": {
1814
+ "animation": 99,
1815
+ "busy": 0,
1816
+ "clock": 0,
1817
+ "complete": 0,
1818
+ "event": [
1819
+ 0,
1820
+ 2147483681
1821
+ ],
1822
+ "events": [
1823
+ {
1824
+ "event": 84,
1825
+ "op": "allocate"
1826
+ }
1827
+ ],
1828
+ "flags": 4294967291,
1829
+ "flags104": 2147483650,
1830
+ "guards": [
1831
+ 2864434397,
1832
+ 287454020
1833
+ ],
1834
+ "weapon": 305397771
1835
+ },
1836
+ "source": {
1837
+ "animation": 99,
1838
+ "busy": 0,
1839
+ "clock": 0,
1840
+ "complete": 0,
1841
+ "event": [
1842
+ 0,
1843
+ 2147483681
1844
+ ],
1845
+ "events": [
1846
+ {
1847
+ "event": 84,
1848
+ "op": "allocate"
1849
+ }
1850
+ ],
1851
+ "flags": 4294967291,
1852
+ "flags104": 2147483650,
1853
+ "guards": [
1854
+ 2864434397,
1855
+ 287454020
1856
+ ],
1857
+ "weapon": 305397771
1858
+ }
1859
+ },
1860
+ {
1861
+ "rust": {
1862
+ "animation": 99,
1863
+ "busy": 0,
1864
+ "clock": 0,
1865
+ "complete": 0,
1866
+ "event": [
1867
+ 0,
1868
+ 2147483681
1869
+ ],
1870
+ "events": [
1871
+ {
1872
+ "event": 84,
1873
+ "op": "allocate"
1874
+ }
1875
+ ],
1876
+ "flags": 4294967291,
1877
+ "flags104": 2147483650,
1878
+ "guards": [
1879
+ 2864434397,
1880
+ 287454020
1881
+ ],
1882
+ "weapon": 305397771
1883
+ },
1884
+ "source": {
1885
+ "animation": 99,
1886
+ "busy": 0,
1887
+ "clock": 0,
1888
+ "complete": 0,
1889
+ "event": [
1890
+ 0,
1891
+ 2147483681
1892
+ ],
1893
+ "events": [
1894
+ {
1895
+ "event": 84,
1896
+ "op": "allocate"
1897
+ }
1898
+ ],
1899
+ "flags": 4294967291,
1900
+ "flags104": 2147483650,
1901
+ "guards": [
1902
+ 2864434397,
1903
+ 287454020
1904
+ ],
1905
+ "weapon": 305397771
1906
+ }
1907
+ },
1908
+ {
1909
+ "rust": {
1910
+ "animation": 99,
1911
+ "busy": 0,
1912
+ "clock": 0,
1913
+ "complete": 0,
1914
+ "event": [
1915
+ 0,
1916
+ 2147483681
1917
+ ],
1918
+ "events": [
1919
+ {
1920
+ "event": 84,
1921
+ "op": "allocate"
1922
+ }
1923
+ ],
1924
+ "flags": 4294967291,
1925
+ "flags104": 2147483650,
1926
+ "guards": [
1927
+ 2864434397,
1928
+ 287454020
1929
+ ],
1930
+ "weapon": 305397771
1931
+ },
1932
+ "source": {
1933
+ "animation": 99,
1934
+ "busy": 0,
1935
+ "clock": 0,
1936
+ "complete": 0,
1937
+ "event": [
1938
+ 0,
1939
+ 2147483681
1940
+ ],
1941
+ "events": [
1942
+ {
1943
+ "event": 84,
1944
+ "op": "allocate"
1945
+ }
1946
+ ],
1947
+ "flags": 4294967291,
1948
+ "flags104": 2147483650,
1949
+ "guards": [
1950
+ 2864434397,
1951
+ 287454020
1952
+ ],
1953
+ "weapon": 305397771
1954
+ }
1955
+ },
1956
+ {
1957
+ "rust": {
1958
+ "animation": 99,
1959
+ "busy": 0,
1960
+ "clock": 0,
1961
+ "complete": 0,
1962
+ "event": [
1963
+ 0,
1964
+ 2147483681
1965
+ ],
1966
+ "events": [
1967
+ {
1968
+ "event": 84,
1969
+ "op": "allocate"
1970
+ }
1971
+ ],
1972
+ "flags": 4294967291,
1973
+ "flags104": 2147483650,
1974
+ "guards": [
1975
+ 2864434397,
1976
+ 287454020
1977
+ ],
1978
+ "weapon": 305397771
1979
+ },
1980
+ "source": {
1981
+ "animation": 99,
1982
+ "busy": 0,
1983
+ "clock": 0,
1984
+ "complete": 0,
1985
+ "event": [
1986
+ 0,
1987
+ 2147483681
1988
+ ],
1989
+ "events": [
1990
+ {
1991
+ "event": 84,
1992
+ "op": "allocate"
1993
+ }
1994
+ ],
1995
+ "flags": 4294967291,
1996
+ "flags104": 2147483650,
1997
+ "guards": [
1998
+ 2864434397,
1999
+ 287454020
2000
+ ],
2001
+ "weapon": 305397771
2002
+ }
2003
+ },
2004
+ {
2005
+ "rust": {
2006
+ "animation": 99,
2007
+ "busy": 0,
2008
+ "clock": 0,
2009
+ "complete": 0,
2010
+ "event": [
2011
+ 0,
2012
+ 2147483681
2013
+ ],
2014
+ "events": [
2015
+ {
2016
+ "event": 84,
2017
+ "op": "allocate"
2018
+ }
2019
+ ],
2020
+ "flags": 4294967291,
2021
+ "flags104": 2147483650,
2022
+ "guards": [
2023
+ 2864434397,
2024
+ 287454020
2025
+ ],
2026
+ "weapon": 305397771
2027
+ },
2028
+ "source": {
2029
+ "animation": 99,
2030
+ "busy": 0,
2031
+ "clock": 0,
2032
+ "complete": 0,
2033
+ "event": [
2034
+ 0,
2035
+ 2147483681
2036
+ ],
2037
+ "events": [
2038
+ {
2039
+ "event": 84,
2040
+ "op": "allocate"
2041
+ }
2042
+ ],
2043
+ "flags": 4294967291,
2044
+ "flags104": 2147483650,
2045
+ "guards": [
2046
+ 2864434397,
2047
+ 287454020
2048
+ ],
2049
+ "weapon": 305397771
2050
+ }
2051
+ },
2052
+ {
2053
+ "rust": {
2054
+ "animation": 99,
2055
+ "busy": 0,
2056
+ "clock": 0,
2057
+ "complete": 0,
2058
+ "event": [
2059
+ 0,
2060
+ 2147483681
2061
+ ],
2062
+ "events": [
2063
+ {
2064
+ "event": 84,
2065
+ "op": "allocate"
2066
+ }
2067
+ ],
2068
+ "flags": 4294967291,
2069
+ "flags104": 2147483650,
2070
+ "guards": [
2071
+ 2864434397,
2072
+ 287454020
2073
+ ],
2074
+ "weapon": 305397771
2075
+ },
2076
+ "source": {
2077
+ "animation": 99,
2078
+ "busy": 0,
2079
+ "clock": 0,
2080
+ "complete": 0,
2081
+ "event": [
2082
+ 0,
2083
+ 2147483681
2084
+ ],
2085
+ "events": [
2086
+ {
2087
+ "event": 84,
2088
+ "op": "allocate"
2089
+ }
2090
+ ],
2091
+ "flags": 4294967291,
2092
+ "flags104": 2147483650,
2093
+ "guards": [
2094
+ 2864434397,
2095
+ 287454020
2096
+ ],
2097
+ "weapon": 305397771
2098
+ }
2099
+ },
2100
+ {
2101
+ "rust": {
2102
+ "animation": 99,
2103
+ "busy": 0,
2104
+ "clock": 0,
2105
+ "complete": 0,
2106
+ "event": [
2107
+ 0,
2108
+ 2147483681
2109
+ ],
2110
+ "events": [
2111
+ {
2112
+ "event": 84,
2113
+ "op": "allocate"
2114
+ }
2115
+ ],
2116
+ "flags": 4294967291,
2117
+ "flags104": 2147483650,
2118
+ "guards": [
2119
+ 2864434397,
2120
+ 287454020
2121
+ ],
2122
+ "weapon": 305397771
2123
+ },
2124
+ "source": {
2125
+ "animation": 99,
2126
+ "busy": 0,
2127
+ "clock": 0,
2128
+ "complete": 0,
2129
+ "event": [
2130
+ 0,
2131
+ 2147483681
2132
+ ],
2133
+ "events": [
2134
+ {
2135
+ "event": 84,
2136
+ "op": "allocate"
2137
+ }
2138
+ ],
2139
+ "flags": 4294967291,
2140
+ "flags104": 2147483650,
2141
+ "guards": [
2142
+ 2864434397,
2143
+ 287454020
2144
+ ],
2145
+ "weapon": 305397771
2146
+ }
2147
+ }
2148
+ ],
2149
+ "source_report": "docs/research/qvm-defuse-cancel.json",
2150
+ "source_report_sha256": "26383b6541112985964cdae4ac9c0aec7cbbefc4cdbd3846c78f3a1edf058747"
2151
+ }
docs/research/rust-health-impulse.json CHANGED
@@ -2985,7 +2985,7 @@
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
- "rust_unit_tests": 271,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
 
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
+ "rust_unit_tests": 273,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
scripts/analyze_rust_defuse_cancel.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Compare recovered Rust policy with original QVM fixtures."""
2
+ import hashlib,json,os,subprocess
3
+ from pathlib import Path
4
+ from analyze_qvm import write_json
5
+ from rust_lifecycle_support import result
6
+
7
+ def main():
8
+ subprocess.run(['cargo','build','--offline','--package','urt-gameplay','--bin','urt-defuse'],check=True,capture_output=True)
9
+ binary=Path(os.environ.get('CARGO_TARGET_DIR','target'))/'debug'/'urt-defuse'
10
+ path=Path('docs/research/qvm-defuse-cancel.json');data=path.read_bytes();probes=[]
11
+ for p in json.loads(data)['probes']:
12
+ probes.append(dict(source={k:p[k] for k in ['flags', 'flags104', 'busy', 'clock', 'complete', 'animation', 'weapon', 'event', 'guards', 'events']},rust=result(binary,'cancel',encode(p['input']))))
13
+ write_json(Path('docs/research/rust-defuse-cancel.json'),dict(source_report=str(path),source_report_sha256=hashlib.sha256(data).hexdigest(),probes=probes,limits='Finite source/Rust contract parity; native time/file/network replies remain supplied or captured.'))
14
+
15
+ from analyze_rust_defuse_begin import encode
16
+ if __name__=='__main__':main()
scripts/test_rust_defuse_cancel.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import hashlib,json,unittest
2
+ from pathlib import Path
3
+ class PortTests(unittest.TestCase):
4
+ def test_original_parity(self):
5
+ r=json.loads(Path('docs/research/rust-defuse-cancel.json').read_text());self.assertGreaterEqual(len(r['probes']),12)
6
+ for p in r['probes']:self.assertEqual(p['source'],p['rust'])
7
+ def test_identity(self):
8
+ r=json.loads(Path('docs/research/rust-defuse-cancel.json').read_text());self.assertEqual(hashlib.sha256(Path(r['source_report']).read_bytes()).hexdigest(),r['source_report_sha256'])
9
+ if __name__=='__main__':unittest.main()
xtask/checks.tsv CHANGED
@@ -4174,3 +4174,35 @@ report scripts/analyze_qvm_defuse_cancel.py docs/research/qvm-defuse-cancel.json
4174
  edge docs/research/qvm-defuse-cancel.json scripts/test_qvm_defuse_cancel.py
4175
  group qvm-defuse-cancel scripts/analyze_qvm_defuse_cancel.py
4176
  edge scripts/analyze_qvm_defuse_cancel.py scripts/analyze_qvm_resumer_audit.py
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4174
  edge docs/research/qvm-defuse-cancel.json scripts/test_qvm_defuse_cancel.py
4175
  group qvm-defuse-cancel scripts/analyze_qvm_defuse_cancel.py
4176
  edge scripts/analyze_qvm_defuse_cancel.py scripts/analyze_qvm_resumer_audit.py
4177
+ report scripts/analyze_rust_defuse_cancel.py docs/research/rust-defuse-cancel.json
4178
+ edge docs/research/rust-defuse-cancel.json scripts/test_rust_defuse_cancel.py
4179
+ group rust-defuse-cancel scripts/analyze_rust_defuse_cancel.py
4180
+ edge scripts/analyze_rust_defuse_cancel.py scripts/analyze_qvm_resumer_audit.py
4181
+ edge Cargo.toml scripts/analyze_rust_defuse_cancel.py
4182
+ edge Cargo.lock scripts/analyze_rust_defuse_cancel.py
4183
+ edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_defuse_cancel.py
4184
+ edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_defuse_cancel.py
4185
+ edge crates/urt-gameplay/src/filter_loading.rs scripts/analyze_rust_defuse_cancel.py
4186
+ edge crates/urt-gameplay/src/filter_lifecycle.rs scripts/analyze_rust_defuse_cancel.py
4187
+ edge crates/urt-gameplay/src/native_policy.rs scripts/analyze_rust_defuse_cancel.py
4188
+ edge crates/urt-gameplay/src/bin/urt-filter-loading.rs scripts/analyze_rust_defuse_cancel.py
4189
+ edge crates/urt-gameplay/src/qvm_format.rs scripts/analyze_rust_defuse_cancel.py
4190
+ edge docs/research/qvm-defuse-cancel.json scripts/analyze_rust_defuse_cancel.py
4191
+ group rust-defuse-cancel scripts/analyze_rust_health_impulse.py
4192
+ group gameplay scripts/analyze_rust_defuse_cancel.py
4193
+ edge crates/urt-gameplay/src/filter_commands.rs scripts/analyze_rust_defuse_cancel.py
4194
+ edge crates/urt-gameplay/src/bin/urt-filter-commands.rs scripts/analyze_rust_defuse_cancel.py
4195
+ edge crates/urt-gameplay/src/client_timer.rs scripts/analyze_rust_defuse_cancel.py
4196
+ edge crates/urt-gameplay/src/bin/urt-client-timer.rs scripts/analyze_rust_defuse_cancel.py
4197
+ edge crates/urt-gameplay/src/client_processing.rs scripts/analyze_rust_defuse_cancel.py
4198
+ edge crates/urt-gameplay/src/bin/urt-client-processing.rs scripts/analyze_rust_defuse_cancel.py
4199
+ edge crates/urt-gameplay/src/client_move_context.rs scripts/analyze_rust_defuse_cancel.py
4200
+ edge crates/urt-gameplay/src/bin/urt-client-move-context.rs scripts/analyze_rust_defuse_cancel.py
4201
+ edge crates/urt-gameplay/src/move_callbacks.rs scripts/analyze_rust_defuse_cancel.py
4202
+ edge crates/urt-gameplay/src/bin/urt-move-callbacks.rs scripts/analyze_rust_defuse_cancel.py
4203
+ edge crates/urt-gameplay/src/assistance.rs scripts/analyze_rust_defuse_cancel.py
4204
+ edge crates/urt-gameplay/src/bin/urt-assistance.rs scripts/analyze_rust_defuse_cancel.py
4205
+ edge crates/urt-gameplay/src/move_callbacks.rs scripts/analyze_rust_defuse_cancel.py
4206
+ edge crates/urt-gameplay/src/defuse.rs scripts/analyze_rust_defuse_cancel.py
4207
+ edge crates/urt-gameplay/src/bin/urt-defuse.rs scripts/analyze_rust_defuse_cancel.py
4208
+ edge crates/urt-gameplay/src/move_callbacks.rs scripts/analyze_rust_defuse_cancel.py
xtask/src/lib.rs CHANGED
@@ -1154,6 +1154,8 @@ mod integration_tests {
1154
  ("move_callbacks", "assist_sequence"),
1155
  ("defuse", "defuse_begin"),
1156
  ("move_callbacks", "defuse_begin"),
 
 
1157
  ("client_move_context", "client_move_scratch"),
1158
  ("client_processing", "client_routing"),
1159
  ("client_timer", "client_routing"),
@@ -1383,6 +1385,7 @@ mod integration_tests {
1383
  ("qvm-assist-complete", "assist_complete"),
1384
  ("qvm-assist-sequence", "assist_sequence"),
1385
  ("qvm-defuse-begin", "defuse_begin"),
 
1386
  ("qvm-client-move-scratch", "client_move_scratch"),
1387
  ("qvm-client-routing", "client_routing"),
1388
  ("qvm-client-command-rewrite", "client_command_rewrite"),
 
1154
  ("move_callbacks", "assist_sequence"),
1155
  ("defuse", "defuse_begin"),
1156
  ("move_callbacks", "defuse_begin"),
1157
+ ("defuse", "defuse_cancel"),
1158
+ ("move_callbacks", "defuse_cancel"),
1159
  ("client_move_context", "client_move_scratch"),
1160
  ("client_processing", "client_routing"),
1161
  ("client_timer", "client_routing"),
 
1385
  ("qvm-assist-complete", "assist_complete"),
1386
  ("qvm-assist-sequence", "assist_sequence"),
1387
  ("qvm-defuse-begin", "defuse_begin"),
1388
+ ("qvm-defuse-cancel", "defuse_cancel"),
1389
  ("qvm-client-move-scratch", "client_move_scratch"),
1390
  ("qvm-client-routing", "client_routing"),
1391
  ("qvm-client-command-rewrite", "client_command_rewrite"),