@cssints/apg-specs 0.0.0-stage → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -2
  3. package/dist/apg/accordion.bridge.d.mts +35 -0
  4. package/dist/apg/accordion.bridge.mjs +326 -0
  5. package/dist/apg/accordion.model.json +8397 -0
  6. package/dist/apg/alert.bridge.d.mts +22 -0
  7. package/dist/apg/alert.bridge.mjs +86 -0
  8. package/dist/apg/alert.model.json +871 -0
  9. package/dist/apg/alertdialog.bridge.d.mts +21 -0
  10. package/dist/apg/alertdialog.bridge.mjs +221 -0
  11. package/dist/apg/alertdialog.model.json +5232 -0
  12. package/dist/apg/breadcrumb.bridge.d.mts +26 -0
  13. package/dist/apg/breadcrumb.bridge.mjs +120 -0
  14. package/dist/apg/breadcrumb.model.json +574 -0
  15. package/dist/apg/button.bridge.d.mts +35 -0
  16. package/dist/apg/button.bridge.mjs +208 -0
  17. package/dist/apg/button.model.json +5814 -0
  18. package/dist/apg/carousel.bridge.d.mts +44 -0
  19. package/dist/apg/carousel.bridge.mjs +262 -0
  20. package/dist/apg/carousel.model.json +8963 -0
  21. package/dist/apg/checkbox-group.bridge.d.mts +25 -0
  22. package/dist/apg/checkbox-group.bridge.mjs +276 -0
  23. package/dist/apg/checkbox-group.model.json +3863 -0
  24. package/dist/apg/checkbox.bridge.d.mts +34 -0
  25. package/dist/apg/checkbox.bridge.mjs +253 -0
  26. package/dist/apg/checkbox.model.json +3158 -0
  27. package/dist/apg/combobox-autocomplete.bridge.d.mts +14 -0
  28. package/dist/apg/combobox-autocomplete.bridge.mjs +326 -0
  29. package/dist/apg/combobox-autocomplete.model.json +11586 -0
  30. package/dist/apg/combobox-dialog.bridge.d.mts +17 -0
  31. package/dist/apg/combobox-dialog.bridge.mjs +250 -0
  32. package/dist/apg/combobox-dialog.model.json +8981 -0
  33. package/dist/apg/combobox-grid.bridge.d.mts +17 -0
  34. package/dist/apg/combobox-grid.bridge.mjs +227 -0
  35. package/dist/apg/combobox-grid.model.json +8554 -0
  36. package/dist/apg/combobox-select-only.bridge.d.mts +24 -0
  37. package/dist/apg/combobox-select-only.bridge.mjs +304 -0
  38. package/dist/apg/combobox-select-only.model.json +7846 -0
  39. package/dist/apg/combobox-tree.bridge.d.mts +17 -0
  40. package/dist/apg/combobox-tree.bridge.mjs +211 -0
  41. package/dist/apg/combobox-tree.model.json +9345 -0
  42. package/dist/apg/dialog-modal.bridge.d.mts +35 -0
  43. package/dist/apg/dialog-modal.bridge.mjs +186 -0
  44. package/dist/apg/dialog-modal.model.json +7580 -0
  45. package/dist/apg/disclosure.bridge.d.mts +25 -0
  46. package/dist/apg/disclosure.bridge.mjs +202 -0
  47. package/dist/apg/disclosure.model.json +4703 -0
  48. package/dist/apg/feed.bridge.d.mts +31 -0
  49. package/dist/apg/feed.bridge.mjs +246 -0
  50. package/dist/apg/feed.model.json +4523 -0
  51. package/dist/apg/grid-selection.bridge.d.mts +13 -0
  52. package/dist/apg/grid-selection.bridge.mjs +160 -0
  53. package/dist/apg/grid-selection.model.json +6974 -0
  54. package/dist/apg/grid-sort.bridge.d.mts +12 -0
  55. package/dist/apg/grid-sort.bridge.mjs +138 -0
  56. package/dist/apg/grid-sort.model.json +3799 -0
  57. package/dist/apg/grid.bridge.d.mts +54 -0
  58. package/dist/apg/grid.bridge.mjs +441 -0
  59. package/dist/apg/grid.model.json +3802 -0
  60. package/dist/apg/link.bridge.d.mts +24 -0
  61. package/dist/apg/link.bridge.mjs +126 -0
  62. package/dist/apg/link.model.json +694 -0
  63. package/dist/apg/listbox-multi.bridge.d.mts +10 -0
  64. package/dist/apg/listbox-multi.bridge.mjs +261 -0
  65. package/dist/apg/listbox-multi.model.json +10893 -0
  66. package/dist/apg/listbox-rearrangeable.bridge.d.mts +20 -0
  67. package/dist/apg/listbox-rearrangeable.bridge.mjs +237 -0
  68. package/dist/apg/listbox-rearrangeable.model.json +17592 -0
  69. package/dist/apg/listbox-shared.d.mts +58 -0
  70. package/dist/apg/listbox-shared.mjs +171 -0
  71. package/dist/apg/listbox-single.bridge.d.mts +10 -0
  72. package/dist/apg/listbox-single.bridge.mjs +196 -0
  73. package/dist/apg/listbox-single.model.json +8024 -0
  74. package/dist/apg/listbox-typeahead.bridge.d.mts +10 -0
  75. package/dist/apg/listbox-typeahead.bridge.mjs +153 -0
  76. package/dist/apg/listbox-typeahead.model.json +5615 -0
  77. package/dist/apg/menu-button.bridge.d.mts +29 -0
  78. package/dist/apg/menu-button.bridge.mjs +259 -0
  79. package/dist/apg/menu-button.model.json +5706 -0
  80. package/dist/apg/menu-checkable.bridge.d.mts +25 -0
  81. package/dist/apg/menu-checkable.bridge.mjs +226 -0
  82. package/dist/apg/menu-checkable.model.json +4277 -0
  83. package/dist/apg/menu-menubar.bridge.d.mts +27 -0
  84. package/dist/apg/menu-menubar.bridge.mjs +273 -0
  85. package/dist/apg/menu-menubar.model.json +9540 -0
  86. package/dist/apg/meter.bridge.d.mts +28 -0
  87. package/dist/apg/meter.bridge.mjs +159 -0
  88. package/dist/apg/meter.model.json +1185 -0
  89. package/dist/apg/player.bridge.d.mts +24 -0
  90. package/dist/apg/player.bridge.mjs +342 -0
  91. package/dist/apg/player.model.json +11013 -0
  92. package/dist/apg/radio.bridge.d.mts +35 -0
  93. package/dist/apg/radio.bridge.mjs +371 -0
  94. package/dist/apg/radio.model.json +5011 -0
  95. package/dist/apg/slider-multithumb.bridge.d.mts +34 -0
  96. package/dist/apg/slider-multithumb.bridge.mjs +365 -0
  97. package/dist/apg/slider-multithumb.model.json +5774 -0
  98. package/dist/apg/slider.bridge.d.mts +54 -0
  99. package/dist/apg/slider.bridge.mjs +359 -0
  100. package/dist/apg/slider.model.json +4881 -0
  101. package/dist/apg/spinbutton.bridge.d.mts +41 -0
  102. package/dist/apg/spinbutton.bridge.mjs +327 -0
  103. package/dist/apg/spinbutton.model.json +7571 -0
  104. package/dist/apg/switch.bridge.d.mts +30 -0
  105. package/dist/apg/switch.bridge.mjs +243 -0
  106. package/dist/apg/switch.model.json +3159 -0
  107. package/dist/apg/tabs.bridge.d.mts +41 -0
  108. package/dist/apg/tabs.bridge.mjs +294 -0
  109. package/dist/apg/tabs.model.json +7659 -0
  110. package/dist/apg/timeline.bridge.d.mts +36 -0
  111. package/dist/apg/timeline.bridge.mjs +265 -0
  112. package/dist/apg/timeline.model.json +6189 -0
  113. package/dist/apg/toolbar.bridge.d.mts +25 -0
  114. package/dist/apg/toolbar.bridge.mjs +307 -0
  115. package/dist/apg/toolbar.model.json +6616 -0
  116. package/dist/apg/tooltip.bridge.d.mts +36 -0
  117. package/dist/apg/tooltip.bridge.mjs +208 -0
  118. package/dist/apg/tooltip.model.json +8295 -0
  119. package/dist/apg/treegrid.bridge.d.mts +28 -0
  120. package/dist/apg/treegrid.bridge.mjs +311 -0
  121. package/dist/apg/treegrid.model.json +17358 -0
  122. package/dist/apg/treeview.bridge.d.mts +26 -0
  123. package/dist/apg/treeview.bridge.mjs +396 -0
  124. package/dist/apg/treeview.model.json +13745 -0
  125. package/dist/apg/windowsplitter.bridge.d.mts +36 -0
  126. package/dist/apg/windowsplitter.bridge.mjs +242 -0
  127. package/dist/apg/windowsplitter.model.json +6253 -0
  128. package/dist/canvas/camera.model.json +6568 -0
  129. package/dist/canvas/canvas.bridge.d.mts +190 -0
  130. package/dist/canvas/canvas.bridge.mjs +729 -0
  131. package/dist/canvas/pointer.model.json +17095 -0
  132. package/dist/scenario.d.mts +233 -0
  133. package/dist/scenario.mjs +313 -0
  134. package/package.json +57 -4
  135. package/scenarios/apg/README.md +221 -0
  136. package/scenarios/apg/accordion.base-ui.json +1005 -0
  137. package/scenarios/apg/accordion.react-aria.json +929 -0
  138. package/scenarios/apg/alert.base-ui.json +81 -0
  139. package/scenarios/apg/alert.react-aria.json +98 -0
  140. package/scenarios/apg/alertdialog.base-ui.json +331 -0
  141. package/scenarios/apg/alertdialog.react-aria.json +225 -0
  142. package/scenarios/apg/breadcrumb.react-aria.json +312 -0
  143. package/scenarios/apg/button.ariakit.json +136 -0
  144. package/scenarios/apg/button.base-ui.json +747 -0
  145. package/scenarios/apg/button.react-aria.json +443 -0
  146. package/scenarios/apg/carousel.apg.json +909 -0
  147. package/scenarios/apg/checkbox.ariakit.json +299 -0
  148. package/scenarios/apg/checkbox.base-ui.json +1126 -0
  149. package/scenarios/apg/checkbox.react-aria.json +518 -0
  150. package/scenarios/apg/combobox.ariakit.json +945 -0
  151. package/scenarios/apg/combobox.base-ui.json +2444 -0
  152. package/scenarios/apg/combobox.react-aria.json +845 -0
  153. package/scenarios/apg/dialog-modal.ariakit.json +1102 -0
  154. package/scenarios/apg/dialog-modal.base-ui.json +775 -0
  155. package/scenarios/apg/dialog-modal.react-aria.json +638 -0
  156. package/scenarios/apg/disclosure.apg.json +349 -0
  157. package/scenarios/apg/disclosure.ariakit.json +163 -0
  158. package/scenarios/apg/disclosure.base-ui.json +451 -0
  159. package/scenarios/apg/disclosure.react-aria.json +643 -0
  160. package/scenarios/apg/feed.apg.json +442 -0
  161. package/scenarios/apg/grid.ariakit.json +197 -0
  162. package/scenarios/apg/grid.base-ui.json +720 -0
  163. package/scenarios/apg/grid.react-aria.json +969 -0
  164. package/scenarios/apg/landmarks.ariakit.json +93 -0
  165. package/scenarios/apg/landmarks.react-aria.json +330 -0
  166. package/scenarios/apg/link.ariakit.json +83 -0
  167. package/scenarios/apg/link.base-ui.json +88 -0
  168. package/scenarios/apg/link.react-aria.json +186 -0
  169. package/scenarios/apg/listbox.ariakit.json +78 -0
  170. package/scenarios/apg/listbox.base-ui.json +163 -0
  171. package/scenarios/apg/listbox.react-aria.json +1118 -0
  172. package/scenarios/apg/menu-button.ariakit.json +924 -0
  173. package/scenarios/apg/menu-button.base-ui.json +1155 -0
  174. package/scenarios/apg/menu-button.react-aria.json +1080 -0
  175. package/scenarios/apg/menubar.ariakit.json +758 -0
  176. package/scenarios/apg/menubar.base-ui.json +673 -0
  177. package/scenarios/apg/meter.base-ui.json +243 -0
  178. package/scenarios/apg/meter.react-aria.json +201 -0
  179. package/scenarios/apg/radio.ariakit.json +459 -0
  180. package/scenarios/apg/radio.base-ui.json +581 -0
  181. package/scenarios/apg/radio.react-aria.json +576 -0
  182. package/scenarios/apg/slider-multithumb.base-ui.json +316 -0
  183. package/scenarios/apg/slider-multithumb.react-aria.json +363 -0
  184. package/scenarios/apg/slider.base-ui.json +544 -0
  185. package/scenarios/apg/slider.react-aria.json +456 -0
  186. package/scenarios/apg/spinbutton.base-ui.json +1688 -0
  187. package/scenarios/apg/spinbutton.react-aria.json +426 -0
  188. package/scenarios/apg/switch.base-ui.json +456 -0
  189. package/scenarios/apg/switch.react-aria.json +303 -0
  190. package/scenarios/apg/table.ariakit.json +65 -0
  191. package/scenarios/apg/table.react-aria.json +221 -0
  192. package/scenarios/apg/tabs.ariakit.json +329 -0
  193. package/scenarios/apg/tabs.base-ui.json +875 -0
  194. package/scenarios/apg/tabs.react-aria.json +644 -0
  195. package/scenarios/apg/toolbar.ariakit.json +595 -0
  196. package/scenarios/apg/toolbar.base-ui.json +1189 -0
  197. package/scenarios/apg/toolbar.react-aria.json +383 -0
  198. package/scenarios/apg/tooltip.ariakit.json +441 -0
  199. package/scenarios/apg/tooltip.base-ui.json +411 -0
  200. package/scenarios/apg/tooltip.react-aria.json +454 -0
  201. package/scenarios/apg/treegrid.apg.json +2558 -0
  202. package/scenarios/apg/treegrid.react-aria.json +5094 -0
  203. package/scenarios/apg/treeview.apg.json +928 -0
  204. package/scenarios/apg/windowsplitter.apg.json +557 -0
  205. package/scenarios/canvas/README.md +69 -0
  206. package/scenarios/canvas/camera.contract.json +237 -0
  207. package/scenarios/canvas/camera.excalidraw.json +57 -0
  208. package/scenarios/canvas/marquee.excalidraw.json +122 -0
  209. package/scenarios/canvas/pan.excalidraw.json +46 -0
  210. package/scenarios/canvas/pointer.contract.json +528 -0
  211. package/scenarios/parts.json +291 -0
  212. package/shared/aria.qnt +186 -0
  213. package/shared/details-group.qnt +50 -0
  214. package/shared/focusgroup.qnt +152 -0
  215. package/shared/invokers.qnt +81 -0
  216. package/shared/popover.qnt +71 -0
  217. package/specs/apg/STATIC.md +103 -0
  218. package/specs/apg/accordion.qnt +578 -0
  219. package/specs/apg/alert.qnt +131 -0
  220. package/specs/apg/alertdialog.qnt +455 -0
  221. package/specs/apg/breadcrumb.qnt +88 -0
  222. package/specs/apg/button.qnt +445 -0
  223. package/specs/apg/carousel.qnt +732 -0
  224. package/specs/apg/checkbox-group.qnt +388 -0
  225. package/specs/apg/checkbox.qnt +394 -0
  226. package/specs/apg/combobox-autocomplete.qnt +764 -0
  227. package/specs/apg/combobox-dialog.qnt +627 -0
  228. package/specs/apg/combobox-grid.qnt +632 -0
  229. package/specs/apg/combobox-select-only.qnt +626 -0
  230. package/specs/apg/combobox-tree.qnt +633 -0
  231. package/specs/apg/dialog-modal.qnt +499 -0
  232. package/specs/apg/disclosure.qnt +309 -0
  233. package/specs/apg/feed.qnt +485 -0
  234. package/specs/apg/grid-selection.qnt +512 -0
  235. package/specs/apg/grid-sort.qnt +330 -0
  236. package/specs/apg/grid.qnt +360 -0
  237. package/specs/apg/link.qnt +119 -0
  238. package/specs/apg/listbox-multi.qnt +799 -0
  239. package/specs/apg/listbox-rearrangeable.qnt +801 -0
  240. package/specs/apg/listbox-single.qnt +511 -0
  241. package/specs/apg/listbox-typeahead.qnt +396 -0
  242. package/specs/apg/menu-button.qnt +363 -0
  243. package/specs/apg/menu-checkable.qnt +304 -0
  244. package/specs/apg/menu-menubar.qnt +531 -0
  245. package/specs/apg/meter.qnt +129 -0
  246. package/specs/apg/player.qnt +1081 -0
  247. package/specs/apg/radio.qnt +394 -0
  248. package/specs/apg/slider-multithumb.qnt +441 -0
  249. package/specs/apg/slider.qnt +396 -0
  250. package/specs/apg/spinbutton.qnt +494 -0
  251. package/specs/apg/switch.qnt +389 -0
  252. package/specs/apg/tabs.qnt +412 -0
  253. package/specs/apg/timeline.qnt +612 -0
  254. package/specs/apg/toolbar.qnt +364 -0
  255. package/specs/apg/tooltip.qnt +553 -0
  256. package/specs/apg/treegrid.qnt +983 -0
  257. package/specs/apg/treeview.qnt +1004 -0
  258. package/specs/apg/windowsplitter.qnt +487 -0
  259. package/specs/canvas/camera.qnt +407 -0
  260. package/specs/canvas/pointer.qnt +841 -0
@@ -0,0 +1,3158 @@
1
+ {
2
+ "generatedFrom": "../../specs/apg/checkbox.qnt",
3
+ "specHash": "2271bb2b3904aff05c85e834abe88ae556300c2b69a4c31ff86ce9c24c0d2bd0",
4
+ "module": "apg_checkbox",
5
+ "vars": [
6
+ {
7
+ "name": "focused",
8
+ "type": "bool"
9
+ },
10
+ {
11
+ "name": "disabled",
12
+ "type": "bool"
13
+ },
14
+ {
15
+ "name": "state",
16
+ "type": "str"
17
+ },
18
+ {
19
+ "name": "allowMixed",
20
+ "type": "bool"
21
+ },
22
+ {
23
+ "name": "spaceArmed",
24
+ "type": "bool"
25
+ },
26
+ {
27
+ "name": "pointerArmed",
28
+ "type": "bool"
29
+ },
30
+ {
31
+ "name": "requests",
32
+ "type": "int"
33
+ },
34
+ {
35
+ "name": "controlled",
36
+ "type": "bool"
37
+ },
38
+ {
39
+ "name": "accepting",
40
+ "type": "bool"
41
+ },
42
+ {
43
+ "name": "valueProp",
44
+ "type": "str"
45
+ },
46
+ {
47
+ "name": "requested",
48
+ "type": "str"
49
+ },
50
+ {
51
+ "name": "outcome",
52
+ "type": "str"
53
+ },
54
+ {
55
+ "name": "base",
56
+ "type": "str"
57
+ }
58
+ ],
59
+ "defs": {
60
+ "nextState": {
61
+ "kind": "function",
62
+ "params": [
63
+ "state"
64
+ ],
65
+ "body": {
66
+ "kind": "app",
67
+ "opcode": "ite",
68
+ "args": [
69
+ {
70
+ "kind": "app",
71
+ "opcode": "eq",
72
+ "args": [
73
+ {
74
+ "kind": "name",
75
+ "name": "state"
76
+ },
77
+ {
78
+ "kind": "str",
79
+ "value": "true"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "kind": "str",
85
+ "value": "false"
86
+ },
87
+ {
88
+ "kind": "str",
89
+ "value": "true"
90
+ }
91
+ ]
92
+ }
93
+ },
94
+ "spaceArms": {
95
+ "kind": "function",
96
+ "params": [
97
+ "focused",
98
+ "disabled",
99
+ "key"
100
+ ],
101
+ "body": {
102
+ "kind": "app",
103
+ "opcode": "and",
104
+ "args": [
105
+ {
106
+ "kind": "name",
107
+ "name": "focused"
108
+ },
109
+ {
110
+ "kind": "app",
111
+ "opcode": "not",
112
+ "args": [
113
+ {
114
+ "kind": "name",
115
+ "name": "disabled"
116
+ }
117
+ ]
118
+ },
119
+ {
120
+ "kind": "app",
121
+ "opcode": "eq",
122
+ "args": [
123
+ {
124
+ "kind": "name",
125
+ "name": "key"
126
+ },
127
+ {
128
+ "kind": "str",
129
+ "value": "Space"
130
+ }
131
+ ]
132
+ }
133
+ ]
134
+ }
135
+ },
136
+ "spaceReleaseFires": {
137
+ "kind": "function",
138
+ "params": [
139
+ "armed",
140
+ "disabled",
141
+ "key"
142
+ ],
143
+ "body": {
144
+ "kind": "app",
145
+ "opcode": "and",
146
+ "args": [
147
+ {
148
+ "kind": "name",
149
+ "name": "armed"
150
+ },
151
+ {
152
+ "kind": "app",
153
+ "opcode": "not",
154
+ "args": [
155
+ {
156
+ "kind": "name",
157
+ "name": "disabled"
158
+ }
159
+ ]
160
+ },
161
+ {
162
+ "kind": "app",
163
+ "opcode": "eq",
164
+ "args": [
165
+ {
166
+ "kind": "name",
167
+ "name": "key"
168
+ },
169
+ {
170
+ "kind": "str",
171
+ "value": "Space"
172
+ }
173
+ ]
174
+ }
175
+ ]
176
+ }
177
+ },
178
+ "pointerReleaseFires": {
179
+ "kind": "function",
180
+ "params": [
181
+ "armed",
182
+ "disabled"
183
+ ],
184
+ "body": {
185
+ "kind": "app",
186
+ "opcode": "and",
187
+ "args": [
188
+ {
189
+ "kind": "name",
190
+ "name": "armed"
191
+ },
192
+ {
193
+ "kind": "app",
194
+ "opcode": "not",
195
+ "args": [
196
+ {
197
+ "kind": "name",
198
+ "name": "disabled"
199
+ }
200
+ ]
201
+ }
202
+ ]
203
+ }
204
+ },
205
+ "ariaChecked": {
206
+ "kind": "function",
207
+ "params": [
208
+ "state",
209
+ "allowMixed"
210
+ ],
211
+ "body": {
212
+ "kind": "app",
213
+ "opcode": "ite",
214
+ "args": [
215
+ {
216
+ "kind": "app",
217
+ "opcode": "eq",
218
+ "args": [
219
+ {
220
+ "kind": "name",
221
+ "name": "state"
222
+ },
223
+ {
224
+ "kind": "str",
225
+ "value": "true"
226
+ }
227
+ ]
228
+ },
229
+ {
230
+ "kind": "str",
231
+ "value": "true"
232
+ },
233
+ {
234
+ "kind": "app",
235
+ "opcode": "ite",
236
+ "args": [
237
+ {
238
+ "kind": "app",
239
+ "opcode": "and",
240
+ "args": [
241
+ {
242
+ "kind": "app",
243
+ "opcode": "eq",
244
+ "args": [
245
+ {
246
+ "kind": "name",
247
+ "name": "state"
248
+ },
249
+ {
250
+ "kind": "str",
251
+ "value": "mixed"
252
+ }
253
+ ]
254
+ },
255
+ {
256
+ "kind": "name",
257
+ "name": "allowMixed"
258
+ }
259
+ ]
260
+ },
261
+ {
262
+ "kind": "str",
263
+ "value": "mixed"
264
+ },
265
+ {
266
+ "kind": "str",
267
+ "value": "false"
268
+ }
269
+ ]
270
+ }
271
+ ]
272
+ }
273
+ },
274
+ "holds": {
275
+ "kind": "function",
276
+ "params": [],
277
+ "body": {
278
+ "kind": "app",
279
+ "opcode": "and",
280
+ "args": [
281
+ {
282
+ "kind": "name",
283
+ "name": "controlled"
284
+ },
285
+ {
286
+ "kind": "app",
287
+ "opcode": "not",
288
+ "args": [
289
+ {
290
+ "kind": "name",
291
+ "name": "accepting"
292
+ }
293
+ ]
294
+ }
295
+ ]
296
+ }
297
+ },
298
+ "follows": {
299
+ "kind": "function",
300
+ "params": [],
301
+ "body": {
302
+ "kind": "app",
303
+ "opcode": "and",
304
+ "args": [
305
+ {
306
+ "kind": "name",
307
+ "name": "controlled"
308
+ },
309
+ {
310
+ "kind": "name",
311
+ "name": "accepting"
312
+ }
313
+ ]
314
+ }
315
+ },
316
+ "verdict": {
317
+ "kind": "function",
318
+ "params": [],
319
+ "body": {
320
+ "kind": "app",
321
+ "opcode": "ite",
322
+ "args": [
323
+ {
324
+ "kind": "name",
325
+ "name": "holds"
326
+ },
327
+ {
328
+ "kind": "str",
329
+ "value": "rejected"
330
+ },
331
+ {
332
+ "kind": "str",
333
+ "value": "accepted"
334
+ }
335
+ ]
336
+ }
337
+ },
338
+ "landed": {
339
+ "kind": "function",
340
+ "params": [
341
+ "h",
342
+ "c",
343
+ "want"
344
+ ],
345
+ "body": {
346
+ "kind": "app",
347
+ "opcode": "ite",
348
+ "args": [
349
+ {
350
+ "kind": "name",
351
+ "name": "h"
352
+ },
353
+ {
354
+ "kind": "name",
355
+ "name": "c"
356
+ },
357
+ {
358
+ "kind": "name",
359
+ "name": "want"
360
+ }
361
+ ]
362
+ }
363
+ },
364
+ "propAfter": {
365
+ "kind": "function",
366
+ "params": [
367
+ "f",
368
+ "p",
369
+ "want"
370
+ ],
371
+ "body": {
372
+ "kind": "app",
373
+ "opcode": "ite",
374
+ "args": [
375
+ {
376
+ "kind": "name",
377
+ "name": "f"
378
+ },
379
+ {
380
+ "kind": "name",
381
+ "name": "want"
382
+ },
383
+ {
384
+ "kind": "name",
385
+ "name": "p"
386
+ }
387
+ ]
388
+ }
389
+ },
390
+ "StateValid": {
391
+ "kind": "invariant",
392
+ "params": [],
393
+ "body": {
394
+ "kind": "app",
395
+ "opcode": "or",
396
+ "args": [
397
+ {
398
+ "kind": "app",
399
+ "opcode": "eq",
400
+ "args": [
401
+ {
402
+ "kind": "name",
403
+ "name": "state"
404
+ },
405
+ {
406
+ "kind": "str",
407
+ "value": "true"
408
+ }
409
+ ]
410
+ },
411
+ {
412
+ "kind": "app",
413
+ "opcode": "or",
414
+ "args": [
415
+ {
416
+ "kind": "app",
417
+ "opcode": "eq",
418
+ "args": [
419
+ {
420
+ "kind": "name",
421
+ "name": "state"
422
+ },
423
+ {
424
+ "kind": "str",
425
+ "value": "false"
426
+ }
427
+ ]
428
+ },
429
+ {
430
+ "kind": "app",
431
+ "opcode": "eq",
432
+ "args": [
433
+ {
434
+ "kind": "name",
435
+ "name": "state"
436
+ },
437
+ {
438
+ "kind": "str",
439
+ "value": "mixed"
440
+ }
441
+ ]
442
+ }
443
+ ]
444
+ }
445
+ ]
446
+ }
447
+ },
448
+ "DualStateNeverMixed": {
449
+ "kind": "invariant",
450
+ "params": [],
451
+ "body": {
452
+ "kind": "app",
453
+ "opcode": "or",
454
+ "args": [
455
+ {
456
+ "kind": "name",
457
+ "name": "allowMixed"
458
+ },
459
+ {
460
+ "kind": "app",
461
+ "opcode": "neq",
462
+ "args": [
463
+ {
464
+ "kind": "name",
465
+ "name": "state"
466
+ },
467
+ {
468
+ "kind": "str",
469
+ "value": "mixed"
470
+ }
471
+ ]
472
+ }
473
+ ]
474
+ }
475
+ },
476
+ "AriaCheckedContract": {
477
+ "kind": "invariant",
478
+ "params": [],
479
+ "body": {
480
+ "kind": "app",
481
+ "opcode": "and",
482
+ "args": [
483
+ {
484
+ "kind": "app",
485
+ "opcode": "eq",
486
+ "args": [
487
+ {
488
+ "kind": "app",
489
+ "opcode": "eq",
490
+ "args": [
491
+ {
492
+ "kind": "app",
493
+ "opcode": "ariaChecked",
494
+ "args": [
495
+ {
496
+ "kind": "name",
497
+ "name": "state"
498
+ },
499
+ {
500
+ "kind": "name",
501
+ "name": "allowMixed"
502
+ }
503
+ ]
504
+ },
505
+ {
506
+ "kind": "str",
507
+ "value": "mixed"
508
+ }
509
+ ]
510
+ },
511
+ {
512
+ "kind": "app",
513
+ "opcode": "and",
514
+ "args": [
515
+ {
516
+ "kind": "name",
517
+ "name": "allowMixed"
518
+ },
519
+ {
520
+ "kind": "app",
521
+ "opcode": "eq",
522
+ "args": [
523
+ {
524
+ "kind": "name",
525
+ "name": "state"
526
+ },
527
+ {
528
+ "kind": "str",
529
+ "value": "mixed"
530
+ }
531
+ ]
532
+ }
533
+ ]
534
+ }
535
+ ]
536
+ },
537
+ {
538
+ "kind": "app",
539
+ "opcode": "eq",
540
+ "args": [
541
+ {
542
+ "kind": "app",
543
+ "opcode": "eq",
544
+ "args": [
545
+ {
546
+ "kind": "app",
547
+ "opcode": "ariaChecked",
548
+ "args": [
549
+ {
550
+ "kind": "name",
551
+ "name": "state"
552
+ },
553
+ {
554
+ "kind": "name",
555
+ "name": "allowMixed"
556
+ }
557
+ ]
558
+ },
559
+ {
560
+ "kind": "str",
561
+ "value": "true"
562
+ }
563
+ ]
564
+ },
565
+ {
566
+ "kind": "app",
567
+ "opcode": "eq",
568
+ "args": [
569
+ {
570
+ "kind": "name",
571
+ "name": "state"
572
+ },
573
+ {
574
+ "kind": "str",
575
+ "value": "true"
576
+ }
577
+ ]
578
+ }
579
+ ]
580
+ },
581
+ {
582
+ "kind": "app",
583
+ "opcode": "eq",
584
+ "args": [
585
+ {
586
+ "kind": "app",
587
+ "opcode": "eq",
588
+ "args": [
589
+ {
590
+ "kind": "app",
591
+ "opcode": "ariaChecked",
592
+ "args": [
593
+ {
594
+ "kind": "name",
595
+ "name": "state"
596
+ },
597
+ {
598
+ "kind": "name",
599
+ "name": "allowMixed"
600
+ }
601
+ ]
602
+ },
603
+ {
604
+ "kind": "str",
605
+ "value": "false"
606
+ }
607
+ ]
608
+ },
609
+ {
610
+ "kind": "app",
611
+ "opcode": "eq",
612
+ "args": [
613
+ {
614
+ "kind": "name",
615
+ "name": "state"
616
+ },
617
+ {
618
+ "kind": "str",
619
+ "value": "false"
620
+ }
621
+ ]
622
+ }
623
+ ]
624
+ }
625
+ ]
626
+ }
627
+ },
628
+ "SpaceArmedImpliesFocusedEnabled": {
629
+ "kind": "invariant",
630
+ "params": [],
631
+ "body": {
632
+ "kind": "app",
633
+ "opcode": "or",
634
+ "args": [
635
+ {
636
+ "kind": "app",
637
+ "opcode": "not",
638
+ "args": [
639
+ {
640
+ "kind": "name",
641
+ "name": "spaceArmed"
642
+ }
643
+ ]
644
+ },
645
+ {
646
+ "kind": "app",
647
+ "opcode": "and",
648
+ "args": [
649
+ {
650
+ "kind": "name",
651
+ "name": "focused"
652
+ },
653
+ {
654
+ "kind": "app",
655
+ "opcode": "not",
656
+ "args": [
657
+ {
658
+ "kind": "name",
659
+ "name": "disabled"
660
+ }
661
+ ]
662
+ }
663
+ ]
664
+ }
665
+ ]
666
+ }
667
+ },
668
+ "PointerArmedImpliesEnabled": {
669
+ "kind": "invariant",
670
+ "params": [],
671
+ "body": {
672
+ "kind": "app",
673
+ "opcode": "or",
674
+ "args": [
675
+ {
676
+ "kind": "app",
677
+ "opcode": "not",
678
+ "args": [
679
+ {
680
+ "kind": "name",
681
+ "name": "pointerArmed"
682
+ }
683
+ ]
684
+ },
685
+ {
686
+ "kind": "app",
687
+ "opcode": "not",
688
+ "args": [
689
+ {
690
+ "kind": "name",
691
+ "name": "disabled"
692
+ }
693
+ ]
694
+ }
695
+ ]
696
+ }
697
+ },
698
+ "ControlledFollowsProp": {
699
+ "kind": "invariant",
700
+ "params": [],
701
+ "body": {
702
+ "kind": "app",
703
+ "opcode": "or",
704
+ "args": [
705
+ {
706
+ "kind": "app",
707
+ "opcode": "not",
708
+ "args": [
709
+ {
710
+ "kind": "name",
711
+ "name": "controlled"
712
+ }
713
+ ]
714
+ },
715
+ {
716
+ "kind": "app",
717
+ "opcode": "eq",
718
+ "args": [
719
+ {
720
+ "kind": "name",
721
+ "name": "state"
722
+ },
723
+ {
724
+ "kind": "name",
725
+ "name": "valueProp"
726
+ }
727
+ ]
728
+ }
729
+ ]
730
+ }
731
+ },
732
+ "RejectedRequestUntouched": {
733
+ "kind": "invariant",
734
+ "params": [],
735
+ "body": {
736
+ "kind": "app",
737
+ "opcode": "or",
738
+ "args": [
739
+ {
740
+ "kind": "app",
741
+ "opcode": "not",
742
+ "args": [
743
+ {
744
+ "kind": "app",
745
+ "opcode": "eq",
746
+ "args": [
747
+ {
748
+ "kind": "name",
749
+ "name": "outcome"
750
+ },
751
+ {
752
+ "kind": "str",
753
+ "value": "rejected"
754
+ }
755
+ ]
756
+ }
757
+ ]
758
+ },
759
+ {
760
+ "kind": "app",
761
+ "opcode": "eq",
762
+ "args": [
763
+ {
764
+ "kind": "name",
765
+ "name": "state"
766
+ },
767
+ {
768
+ "kind": "name",
769
+ "name": "base"
770
+ }
771
+ ]
772
+ }
773
+ ]
774
+ }
775
+ },
776
+ "AcceptedRequestCommits": {
777
+ "kind": "invariant",
778
+ "params": [],
779
+ "body": {
780
+ "kind": "app",
781
+ "opcode": "or",
782
+ "args": [
783
+ {
784
+ "kind": "app",
785
+ "opcode": "not",
786
+ "args": [
787
+ {
788
+ "kind": "app",
789
+ "opcode": "eq",
790
+ "args": [
791
+ {
792
+ "kind": "name",
793
+ "name": "outcome"
794
+ },
795
+ {
796
+ "kind": "str",
797
+ "value": "accepted"
798
+ }
799
+ ]
800
+ }
801
+ ]
802
+ },
803
+ {
804
+ "kind": "app",
805
+ "opcode": "eq",
806
+ "args": [
807
+ {
808
+ "kind": "name",
809
+ "name": "state"
810
+ },
811
+ {
812
+ "kind": "name",
813
+ "name": "requested"
814
+ }
815
+ ]
816
+ }
817
+ ]
818
+ }
819
+ }
820
+ },
821
+ "actions": [
822
+ {
823
+ "name": "init",
824
+ "assignments": [
825
+ {
826
+ "field": "focused",
827
+ "rhs": {
828
+ "kind": "bool",
829
+ "value": false
830
+ }
831
+ },
832
+ {
833
+ "field": "disabled",
834
+ "rhs": {
835
+ "kind": "bool",
836
+ "value": false
837
+ }
838
+ },
839
+ {
840
+ "field": "state",
841
+ "rhs": {
842
+ "kind": "str",
843
+ "value": "false"
844
+ }
845
+ },
846
+ {
847
+ "field": "allowMixed",
848
+ "rhs": {
849
+ "kind": "bool",
850
+ "value": false
851
+ }
852
+ },
853
+ {
854
+ "field": "spaceArmed",
855
+ "rhs": {
856
+ "kind": "bool",
857
+ "value": false
858
+ }
859
+ },
860
+ {
861
+ "field": "pointerArmed",
862
+ "rhs": {
863
+ "kind": "bool",
864
+ "value": false
865
+ }
866
+ },
867
+ {
868
+ "field": "requests",
869
+ "rhs": {
870
+ "kind": "int",
871
+ "value": "0"
872
+ }
873
+ },
874
+ {
875
+ "field": "controlled",
876
+ "rhs": {
877
+ "kind": "bool",
878
+ "value": false
879
+ }
880
+ },
881
+ {
882
+ "field": "accepting",
883
+ "rhs": {
884
+ "kind": "bool",
885
+ "value": false
886
+ }
887
+ },
888
+ {
889
+ "field": "valueProp",
890
+ "rhs": {
891
+ "kind": "str",
892
+ "value": "false"
893
+ }
894
+ },
895
+ {
896
+ "field": "requested",
897
+ "rhs": {
898
+ "kind": "str",
899
+ "value": "false"
900
+ }
901
+ },
902
+ {
903
+ "field": "outcome",
904
+ "rhs": {
905
+ "kind": "str",
906
+ "value": "none"
907
+ }
908
+ },
909
+ {
910
+ "field": "base",
911
+ "rhs": {
912
+ "kind": "str",
913
+ "value": "false"
914
+ }
915
+ }
916
+ ]
917
+ },
918
+ {
919
+ "name": "focus",
920
+ "assignments": [
921
+ {
922
+ "field": "focused",
923
+ "rhs": {
924
+ "kind": "bool",
925
+ "value": true
926
+ }
927
+ },
928
+ {
929
+ "field": "disabled",
930
+ "rhs": {
931
+ "kind": "name",
932
+ "name": "disabled"
933
+ }
934
+ },
935
+ {
936
+ "field": "state",
937
+ "rhs": {
938
+ "kind": "name",
939
+ "name": "state"
940
+ }
941
+ },
942
+ {
943
+ "field": "allowMixed",
944
+ "rhs": {
945
+ "kind": "name",
946
+ "name": "allowMixed"
947
+ }
948
+ },
949
+ {
950
+ "field": "spaceArmed",
951
+ "rhs": {
952
+ "kind": "name",
953
+ "name": "spaceArmed"
954
+ }
955
+ },
956
+ {
957
+ "field": "pointerArmed",
958
+ "rhs": {
959
+ "kind": "name",
960
+ "name": "pointerArmed"
961
+ }
962
+ },
963
+ {
964
+ "field": "requests",
965
+ "rhs": {
966
+ "kind": "name",
967
+ "name": "requests"
968
+ }
969
+ },
970
+ {
971
+ "field": "controlled",
972
+ "rhs": {
973
+ "kind": "name",
974
+ "name": "controlled"
975
+ }
976
+ },
977
+ {
978
+ "field": "accepting",
979
+ "rhs": {
980
+ "kind": "name",
981
+ "name": "accepting"
982
+ }
983
+ },
984
+ {
985
+ "field": "valueProp",
986
+ "rhs": {
987
+ "kind": "name",
988
+ "name": "valueProp"
989
+ }
990
+ },
991
+ {
992
+ "field": "requested",
993
+ "rhs": {
994
+ "kind": "name",
995
+ "name": "requested"
996
+ }
997
+ },
998
+ {
999
+ "field": "outcome",
1000
+ "rhs": {
1001
+ "kind": "name",
1002
+ "name": "outcome"
1003
+ }
1004
+ },
1005
+ {
1006
+ "field": "base",
1007
+ "rhs": {
1008
+ "kind": "name",
1009
+ "name": "base"
1010
+ }
1011
+ }
1012
+ ]
1013
+ },
1014
+ {
1015
+ "name": "blur",
1016
+ "assignments": [
1017
+ {
1018
+ "field": "focused",
1019
+ "rhs": {
1020
+ "kind": "bool",
1021
+ "value": false
1022
+ }
1023
+ },
1024
+ {
1025
+ "field": "disabled",
1026
+ "rhs": {
1027
+ "kind": "name",
1028
+ "name": "disabled"
1029
+ }
1030
+ },
1031
+ {
1032
+ "field": "state",
1033
+ "rhs": {
1034
+ "kind": "name",
1035
+ "name": "state"
1036
+ }
1037
+ },
1038
+ {
1039
+ "field": "allowMixed",
1040
+ "rhs": {
1041
+ "kind": "name",
1042
+ "name": "allowMixed"
1043
+ }
1044
+ },
1045
+ {
1046
+ "field": "spaceArmed",
1047
+ "rhs": {
1048
+ "kind": "bool",
1049
+ "value": false
1050
+ }
1051
+ },
1052
+ {
1053
+ "field": "pointerArmed",
1054
+ "rhs": {
1055
+ "kind": "name",
1056
+ "name": "pointerArmed"
1057
+ }
1058
+ },
1059
+ {
1060
+ "field": "requests",
1061
+ "rhs": {
1062
+ "kind": "name",
1063
+ "name": "requests"
1064
+ }
1065
+ },
1066
+ {
1067
+ "field": "controlled",
1068
+ "rhs": {
1069
+ "kind": "name",
1070
+ "name": "controlled"
1071
+ }
1072
+ },
1073
+ {
1074
+ "field": "accepting",
1075
+ "rhs": {
1076
+ "kind": "name",
1077
+ "name": "accepting"
1078
+ }
1079
+ },
1080
+ {
1081
+ "field": "valueProp",
1082
+ "rhs": {
1083
+ "kind": "name",
1084
+ "name": "valueProp"
1085
+ }
1086
+ },
1087
+ {
1088
+ "field": "requested",
1089
+ "rhs": {
1090
+ "kind": "name",
1091
+ "name": "requested"
1092
+ }
1093
+ },
1094
+ {
1095
+ "field": "outcome",
1096
+ "rhs": {
1097
+ "kind": "name",
1098
+ "name": "outcome"
1099
+ }
1100
+ },
1101
+ {
1102
+ "field": "base",
1103
+ "rhs": {
1104
+ "kind": "name",
1105
+ "name": "base"
1106
+ }
1107
+ }
1108
+ ]
1109
+ },
1110
+ {
1111
+ "name": "key_down",
1112
+ "nondet": {
1113
+ "name": "key",
1114
+ "kind": "str",
1115
+ "pool": [
1116
+ "Space",
1117
+ "Enter",
1118
+ "Other"
1119
+ ]
1120
+ },
1121
+ "assignments": [
1122
+ {
1123
+ "field": "focused",
1124
+ "rhs": {
1125
+ "kind": "name",
1126
+ "name": "focused"
1127
+ }
1128
+ },
1129
+ {
1130
+ "field": "disabled",
1131
+ "rhs": {
1132
+ "kind": "name",
1133
+ "name": "disabled"
1134
+ }
1135
+ },
1136
+ {
1137
+ "field": "state",
1138
+ "rhs": {
1139
+ "kind": "name",
1140
+ "name": "state"
1141
+ }
1142
+ },
1143
+ {
1144
+ "field": "allowMixed",
1145
+ "rhs": {
1146
+ "kind": "name",
1147
+ "name": "allowMixed"
1148
+ }
1149
+ },
1150
+ {
1151
+ "field": "spaceArmed",
1152
+ "rhs": {
1153
+ "kind": "app",
1154
+ "opcode": "ite",
1155
+ "args": [
1156
+ {
1157
+ "kind": "app",
1158
+ "opcode": "spaceArms",
1159
+ "args": [
1160
+ {
1161
+ "kind": "name",
1162
+ "name": "focused"
1163
+ },
1164
+ {
1165
+ "kind": "name",
1166
+ "name": "disabled"
1167
+ },
1168
+ {
1169
+ "kind": "name",
1170
+ "name": "key"
1171
+ }
1172
+ ]
1173
+ },
1174
+ {
1175
+ "kind": "bool",
1176
+ "value": true
1177
+ },
1178
+ {
1179
+ "kind": "name",
1180
+ "name": "spaceArmed"
1181
+ }
1182
+ ]
1183
+ }
1184
+ },
1185
+ {
1186
+ "field": "pointerArmed",
1187
+ "rhs": {
1188
+ "kind": "name",
1189
+ "name": "pointerArmed"
1190
+ }
1191
+ },
1192
+ {
1193
+ "field": "requests",
1194
+ "rhs": {
1195
+ "kind": "name",
1196
+ "name": "requests"
1197
+ }
1198
+ },
1199
+ {
1200
+ "field": "controlled",
1201
+ "rhs": {
1202
+ "kind": "name",
1203
+ "name": "controlled"
1204
+ }
1205
+ },
1206
+ {
1207
+ "field": "accepting",
1208
+ "rhs": {
1209
+ "kind": "name",
1210
+ "name": "accepting"
1211
+ }
1212
+ },
1213
+ {
1214
+ "field": "valueProp",
1215
+ "rhs": {
1216
+ "kind": "name",
1217
+ "name": "valueProp"
1218
+ }
1219
+ },
1220
+ {
1221
+ "field": "requested",
1222
+ "rhs": {
1223
+ "kind": "name",
1224
+ "name": "requested"
1225
+ }
1226
+ },
1227
+ {
1228
+ "field": "outcome",
1229
+ "rhs": {
1230
+ "kind": "name",
1231
+ "name": "outcome"
1232
+ }
1233
+ },
1234
+ {
1235
+ "field": "base",
1236
+ "rhs": {
1237
+ "kind": "name",
1238
+ "name": "base"
1239
+ }
1240
+ }
1241
+ ]
1242
+ },
1243
+ {
1244
+ "name": "key_up",
1245
+ "nondet": {
1246
+ "name": "key",
1247
+ "kind": "str",
1248
+ "pool": [
1249
+ "Space",
1250
+ "Enter",
1251
+ "Other"
1252
+ ]
1253
+ },
1254
+ "assignments": [
1255
+ {
1256
+ "field": "focused",
1257
+ "rhs": {
1258
+ "kind": "name",
1259
+ "name": "focused"
1260
+ }
1261
+ },
1262
+ {
1263
+ "field": "disabled",
1264
+ "rhs": {
1265
+ "kind": "name",
1266
+ "name": "disabled"
1267
+ }
1268
+ },
1269
+ {
1270
+ "field": "state",
1271
+ "rhs": {
1272
+ "kind": "app",
1273
+ "opcode": "ite",
1274
+ "args": [
1275
+ {
1276
+ "kind": "app",
1277
+ "opcode": "spaceReleaseFires",
1278
+ "args": [
1279
+ {
1280
+ "kind": "name",
1281
+ "name": "spaceArmed"
1282
+ },
1283
+ {
1284
+ "kind": "name",
1285
+ "name": "disabled"
1286
+ },
1287
+ {
1288
+ "kind": "name",
1289
+ "name": "key"
1290
+ }
1291
+ ]
1292
+ },
1293
+ {
1294
+ "kind": "app",
1295
+ "opcode": "landed",
1296
+ "args": [
1297
+ {
1298
+ "kind": "name",
1299
+ "name": "holds"
1300
+ },
1301
+ {
1302
+ "kind": "name",
1303
+ "name": "state"
1304
+ },
1305
+ {
1306
+ "kind": "app",
1307
+ "opcode": "nextState",
1308
+ "args": [
1309
+ {
1310
+ "kind": "name",
1311
+ "name": "state"
1312
+ }
1313
+ ]
1314
+ }
1315
+ ]
1316
+ },
1317
+ {
1318
+ "kind": "name",
1319
+ "name": "state"
1320
+ }
1321
+ ]
1322
+ }
1323
+ },
1324
+ {
1325
+ "field": "allowMixed",
1326
+ "rhs": {
1327
+ "kind": "name",
1328
+ "name": "allowMixed"
1329
+ }
1330
+ },
1331
+ {
1332
+ "field": "spaceArmed",
1333
+ "rhs": {
1334
+ "kind": "app",
1335
+ "opcode": "ite",
1336
+ "args": [
1337
+ {
1338
+ "kind": "app",
1339
+ "opcode": "eq",
1340
+ "args": [
1341
+ {
1342
+ "kind": "name",
1343
+ "name": "key"
1344
+ },
1345
+ {
1346
+ "kind": "str",
1347
+ "value": "Space"
1348
+ }
1349
+ ]
1350
+ },
1351
+ {
1352
+ "kind": "bool",
1353
+ "value": false
1354
+ },
1355
+ {
1356
+ "kind": "name",
1357
+ "name": "spaceArmed"
1358
+ }
1359
+ ]
1360
+ }
1361
+ },
1362
+ {
1363
+ "field": "pointerArmed",
1364
+ "rhs": {
1365
+ "kind": "name",
1366
+ "name": "pointerArmed"
1367
+ }
1368
+ },
1369
+ {
1370
+ "field": "requests",
1371
+ "rhs": {
1372
+ "kind": "app",
1373
+ "opcode": "ite",
1374
+ "args": [
1375
+ {
1376
+ "kind": "app",
1377
+ "opcode": "spaceReleaseFires",
1378
+ "args": [
1379
+ {
1380
+ "kind": "name",
1381
+ "name": "spaceArmed"
1382
+ },
1383
+ {
1384
+ "kind": "name",
1385
+ "name": "disabled"
1386
+ },
1387
+ {
1388
+ "kind": "name",
1389
+ "name": "key"
1390
+ }
1391
+ ]
1392
+ },
1393
+ {
1394
+ "kind": "app",
1395
+ "opcode": "iadd",
1396
+ "args": [
1397
+ {
1398
+ "kind": "name",
1399
+ "name": "requests"
1400
+ },
1401
+ {
1402
+ "kind": "int",
1403
+ "value": "1"
1404
+ }
1405
+ ]
1406
+ },
1407
+ {
1408
+ "kind": "name",
1409
+ "name": "requests"
1410
+ }
1411
+ ]
1412
+ }
1413
+ },
1414
+ {
1415
+ "field": "controlled",
1416
+ "rhs": {
1417
+ "kind": "name",
1418
+ "name": "controlled"
1419
+ }
1420
+ },
1421
+ {
1422
+ "field": "accepting",
1423
+ "rhs": {
1424
+ "kind": "name",
1425
+ "name": "accepting"
1426
+ }
1427
+ },
1428
+ {
1429
+ "field": "valueProp",
1430
+ "rhs": {
1431
+ "kind": "app",
1432
+ "opcode": "ite",
1433
+ "args": [
1434
+ {
1435
+ "kind": "app",
1436
+ "opcode": "spaceReleaseFires",
1437
+ "args": [
1438
+ {
1439
+ "kind": "name",
1440
+ "name": "spaceArmed"
1441
+ },
1442
+ {
1443
+ "kind": "name",
1444
+ "name": "disabled"
1445
+ },
1446
+ {
1447
+ "kind": "name",
1448
+ "name": "key"
1449
+ }
1450
+ ]
1451
+ },
1452
+ {
1453
+ "kind": "app",
1454
+ "opcode": "propAfter",
1455
+ "args": [
1456
+ {
1457
+ "kind": "name",
1458
+ "name": "follows"
1459
+ },
1460
+ {
1461
+ "kind": "name",
1462
+ "name": "valueProp"
1463
+ },
1464
+ {
1465
+ "kind": "app",
1466
+ "opcode": "nextState",
1467
+ "args": [
1468
+ {
1469
+ "kind": "name",
1470
+ "name": "state"
1471
+ }
1472
+ ]
1473
+ }
1474
+ ]
1475
+ },
1476
+ {
1477
+ "kind": "name",
1478
+ "name": "valueProp"
1479
+ }
1480
+ ]
1481
+ }
1482
+ },
1483
+ {
1484
+ "field": "requested",
1485
+ "rhs": {
1486
+ "kind": "app",
1487
+ "opcode": "ite",
1488
+ "args": [
1489
+ {
1490
+ "kind": "app",
1491
+ "opcode": "spaceReleaseFires",
1492
+ "args": [
1493
+ {
1494
+ "kind": "name",
1495
+ "name": "spaceArmed"
1496
+ },
1497
+ {
1498
+ "kind": "name",
1499
+ "name": "disabled"
1500
+ },
1501
+ {
1502
+ "kind": "name",
1503
+ "name": "key"
1504
+ }
1505
+ ]
1506
+ },
1507
+ {
1508
+ "kind": "app",
1509
+ "opcode": "nextState",
1510
+ "args": [
1511
+ {
1512
+ "kind": "name",
1513
+ "name": "state"
1514
+ }
1515
+ ]
1516
+ },
1517
+ {
1518
+ "kind": "name",
1519
+ "name": "requested"
1520
+ }
1521
+ ]
1522
+ }
1523
+ },
1524
+ {
1525
+ "field": "outcome",
1526
+ "rhs": {
1527
+ "kind": "app",
1528
+ "opcode": "ite",
1529
+ "args": [
1530
+ {
1531
+ "kind": "app",
1532
+ "opcode": "spaceReleaseFires",
1533
+ "args": [
1534
+ {
1535
+ "kind": "name",
1536
+ "name": "spaceArmed"
1537
+ },
1538
+ {
1539
+ "kind": "name",
1540
+ "name": "disabled"
1541
+ },
1542
+ {
1543
+ "kind": "name",
1544
+ "name": "key"
1545
+ }
1546
+ ]
1547
+ },
1548
+ {
1549
+ "kind": "name",
1550
+ "name": "verdict"
1551
+ },
1552
+ {
1553
+ "kind": "name",
1554
+ "name": "outcome"
1555
+ }
1556
+ ]
1557
+ }
1558
+ },
1559
+ {
1560
+ "field": "base",
1561
+ "rhs": {
1562
+ "kind": "app",
1563
+ "opcode": "ite",
1564
+ "args": [
1565
+ {
1566
+ "kind": "app",
1567
+ "opcode": "spaceReleaseFires",
1568
+ "args": [
1569
+ {
1570
+ "kind": "name",
1571
+ "name": "spaceArmed"
1572
+ },
1573
+ {
1574
+ "kind": "name",
1575
+ "name": "disabled"
1576
+ },
1577
+ {
1578
+ "kind": "name",
1579
+ "name": "key"
1580
+ }
1581
+ ]
1582
+ },
1583
+ {
1584
+ "kind": "name",
1585
+ "name": "state"
1586
+ },
1587
+ {
1588
+ "kind": "name",
1589
+ "name": "base"
1590
+ }
1591
+ ]
1592
+ }
1593
+ }
1594
+ ]
1595
+ },
1596
+ {
1597
+ "name": "pointer_down",
1598
+ "assignments": [
1599
+ {
1600
+ "field": "focused",
1601
+ "rhs": {
1602
+ "kind": "bool",
1603
+ "value": true
1604
+ }
1605
+ },
1606
+ {
1607
+ "field": "disabled",
1608
+ "rhs": {
1609
+ "kind": "name",
1610
+ "name": "disabled"
1611
+ }
1612
+ },
1613
+ {
1614
+ "field": "state",
1615
+ "rhs": {
1616
+ "kind": "name",
1617
+ "name": "state"
1618
+ }
1619
+ },
1620
+ {
1621
+ "field": "allowMixed",
1622
+ "rhs": {
1623
+ "kind": "name",
1624
+ "name": "allowMixed"
1625
+ }
1626
+ },
1627
+ {
1628
+ "field": "spaceArmed",
1629
+ "rhs": {
1630
+ "kind": "name",
1631
+ "name": "spaceArmed"
1632
+ }
1633
+ },
1634
+ {
1635
+ "field": "pointerArmed",
1636
+ "rhs": {
1637
+ "kind": "app",
1638
+ "opcode": "not",
1639
+ "args": [
1640
+ {
1641
+ "kind": "name",
1642
+ "name": "disabled"
1643
+ }
1644
+ ]
1645
+ }
1646
+ },
1647
+ {
1648
+ "field": "requests",
1649
+ "rhs": {
1650
+ "kind": "name",
1651
+ "name": "requests"
1652
+ }
1653
+ },
1654
+ {
1655
+ "field": "controlled",
1656
+ "rhs": {
1657
+ "kind": "name",
1658
+ "name": "controlled"
1659
+ }
1660
+ },
1661
+ {
1662
+ "field": "accepting",
1663
+ "rhs": {
1664
+ "kind": "name",
1665
+ "name": "accepting"
1666
+ }
1667
+ },
1668
+ {
1669
+ "field": "valueProp",
1670
+ "rhs": {
1671
+ "kind": "name",
1672
+ "name": "valueProp"
1673
+ }
1674
+ },
1675
+ {
1676
+ "field": "requested",
1677
+ "rhs": {
1678
+ "kind": "name",
1679
+ "name": "requested"
1680
+ }
1681
+ },
1682
+ {
1683
+ "field": "outcome",
1684
+ "rhs": {
1685
+ "kind": "name",
1686
+ "name": "outcome"
1687
+ }
1688
+ },
1689
+ {
1690
+ "field": "base",
1691
+ "rhs": {
1692
+ "kind": "name",
1693
+ "name": "base"
1694
+ }
1695
+ }
1696
+ ]
1697
+ },
1698
+ {
1699
+ "name": "pointer_up",
1700
+ "assignments": [
1701
+ {
1702
+ "field": "focused",
1703
+ "rhs": {
1704
+ "kind": "name",
1705
+ "name": "focused"
1706
+ }
1707
+ },
1708
+ {
1709
+ "field": "disabled",
1710
+ "rhs": {
1711
+ "kind": "name",
1712
+ "name": "disabled"
1713
+ }
1714
+ },
1715
+ {
1716
+ "field": "state",
1717
+ "rhs": {
1718
+ "kind": "app",
1719
+ "opcode": "ite",
1720
+ "args": [
1721
+ {
1722
+ "kind": "app",
1723
+ "opcode": "pointerReleaseFires",
1724
+ "args": [
1725
+ {
1726
+ "kind": "name",
1727
+ "name": "pointerArmed"
1728
+ },
1729
+ {
1730
+ "kind": "name",
1731
+ "name": "disabled"
1732
+ }
1733
+ ]
1734
+ },
1735
+ {
1736
+ "kind": "app",
1737
+ "opcode": "landed",
1738
+ "args": [
1739
+ {
1740
+ "kind": "name",
1741
+ "name": "holds"
1742
+ },
1743
+ {
1744
+ "kind": "name",
1745
+ "name": "state"
1746
+ },
1747
+ {
1748
+ "kind": "app",
1749
+ "opcode": "nextState",
1750
+ "args": [
1751
+ {
1752
+ "kind": "name",
1753
+ "name": "state"
1754
+ }
1755
+ ]
1756
+ }
1757
+ ]
1758
+ },
1759
+ {
1760
+ "kind": "name",
1761
+ "name": "state"
1762
+ }
1763
+ ]
1764
+ }
1765
+ },
1766
+ {
1767
+ "field": "allowMixed",
1768
+ "rhs": {
1769
+ "kind": "name",
1770
+ "name": "allowMixed"
1771
+ }
1772
+ },
1773
+ {
1774
+ "field": "spaceArmed",
1775
+ "rhs": {
1776
+ "kind": "name",
1777
+ "name": "spaceArmed"
1778
+ }
1779
+ },
1780
+ {
1781
+ "field": "pointerArmed",
1782
+ "rhs": {
1783
+ "kind": "bool",
1784
+ "value": false
1785
+ }
1786
+ },
1787
+ {
1788
+ "field": "requests",
1789
+ "rhs": {
1790
+ "kind": "app",
1791
+ "opcode": "ite",
1792
+ "args": [
1793
+ {
1794
+ "kind": "app",
1795
+ "opcode": "pointerReleaseFires",
1796
+ "args": [
1797
+ {
1798
+ "kind": "name",
1799
+ "name": "pointerArmed"
1800
+ },
1801
+ {
1802
+ "kind": "name",
1803
+ "name": "disabled"
1804
+ }
1805
+ ]
1806
+ },
1807
+ {
1808
+ "kind": "app",
1809
+ "opcode": "iadd",
1810
+ "args": [
1811
+ {
1812
+ "kind": "name",
1813
+ "name": "requests"
1814
+ },
1815
+ {
1816
+ "kind": "int",
1817
+ "value": "1"
1818
+ }
1819
+ ]
1820
+ },
1821
+ {
1822
+ "kind": "name",
1823
+ "name": "requests"
1824
+ }
1825
+ ]
1826
+ }
1827
+ },
1828
+ {
1829
+ "field": "controlled",
1830
+ "rhs": {
1831
+ "kind": "name",
1832
+ "name": "controlled"
1833
+ }
1834
+ },
1835
+ {
1836
+ "field": "accepting",
1837
+ "rhs": {
1838
+ "kind": "name",
1839
+ "name": "accepting"
1840
+ }
1841
+ },
1842
+ {
1843
+ "field": "valueProp",
1844
+ "rhs": {
1845
+ "kind": "app",
1846
+ "opcode": "ite",
1847
+ "args": [
1848
+ {
1849
+ "kind": "app",
1850
+ "opcode": "pointerReleaseFires",
1851
+ "args": [
1852
+ {
1853
+ "kind": "name",
1854
+ "name": "pointerArmed"
1855
+ },
1856
+ {
1857
+ "kind": "name",
1858
+ "name": "disabled"
1859
+ }
1860
+ ]
1861
+ },
1862
+ {
1863
+ "kind": "app",
1864
+ "opcode": "propAfter",
1865
+ "args": [
1866
+ {
1867
+ "kind": "name",
1868
+ "name": "follows"
1869
+ },
1870
+ {
1871
+ "kind": "name",
1872
+ "name": "valueProp"
1873
+ },
1874
+ {
1875
+ "kind": "app",
1876
+ "opcode": "nextState",
1877
+ "args": [
1878
+ {
1879
+ "kind": "name",
1880
+ "name": "state"
1881
+ }
1882
+ ]
1883
+ }
1884
+ ]
1885
+ },
1886
+ {
1887
+ "kind": "name",
1888
+ "name": "valueProp"
1889
+ }
1890
+ ]
1891
+ }
1892
+ },
1893
+ {
1894
+ "field": "requested",
1895
+ "rhs": {
1896
+ "kind": "app",
1897
+ "opcode": "ite",
1898
+ "args": [
1899
+ {
1900
+ "kind": "app",
1901
+ "opcode": "pointerReleaseFires",
1902
+ "args": [
1903
+ {
1904
+ "kind": "name",
1905
+ "name": "pointerArmed"
1906
+ },
1907
+ {
1908
+ "kind": "name",
1909
+ "name": "disabled"
1910
+ }
1911
+ ]
1912
+ },
1913
+ {
1914
+ "kind": "app",
1915
+ "opcode": "nextState",
1916
+ "args": [
1917
+ {
1918
+ "kind": "name",
1919
+ "name": "state"
1920
+ }
1921
+ ]
1922
+ },
1923
+ {
1924
+ "kind": "name",
1925
+ "name": "requested"
1926
+ }
1927
+ ]
1928
+ }
1929
+ },
1930
+ {
1931
+ "field": "outcome",
1932
+ "rhs": {
1933
+ "kind": "app",
1934
+ "opcode": "ite",
1935
+ "args": [
1936
+ {
1937
+ "kind": "app",
1938
+ "opcode": "pointerReleaseFires",
1939
+ "args": [
1940
+ {
1941
+ "kind": "name",
1942
+ "name": "pointerArmed"
1943
+ },
1944
+ {
1945
+ "kind": "name",
1946
+ "name": "disabled"
1947
+ }
1948
+ ]
1949
+ },
1950
+ {
1951
+ "kind": "name",
1952
+ "name": "verdict"
1953
+ },
1954
+ {
1955
+ "kind": "name",
1956
+ "name": "outcome"
1957
+ }
1958
+ ]
1959
+ }
1960
+ },
1961
+ {
1962
+ "field": "base",
1963
+ "rhs": {
1964
+ "kind": "app",
1965
+ "opcode": "ite",
1966
+ "args": [
1967
+ {
1968
+ "kind": "app",
1969
+ "opcode": "pointerReleaseFires",
1970
+ "args": [
1971
+ {
1972
+ "kind": "name",
1973
+ "name": "pointerArmed"
1974
+ },
1975
+ {
1976
+ "kind": "name",
1977
+ "name": "disabled"
1978
+ }
1979
+ ]
1980
+ },
1981
+ {
1982
+ "kind": "name",
1983
+ "name": "state"
1984
+ },
1985
+ {
1986
+ "kind": "name",
1987
+ "name": "base"
1988
+ }
1989
+ ]
1990
+ }
1991
+ }
1992
+ ]
1993
+ },
1994
+ {
1995
+ "name": "pointer_cancel",
1996
+ "assignments": [
1997
+ {
1998
+ "field": "focused",
1999
+ "rhs": {
2000
+ "kind": "name",
2001
+ "name": "focused"
2002
+ }
2003
+ },
2004
+ {
2005
+ "field": "disabled",
2006
+ "rhs": {
2007
+ "kind": "name",
2008
+ "name": "disabled"
2009
+ }
2010
+ },
2011
+ {
2012
+ "field": "state",
2013
+ "rhs": {
2014
+ "kind": "name",
2015
+ "name": "state"
2016
+ }
2017
+ },
2018
+ {
2019
+ "field": "allowMixed",
2020
+ "rhs": {
2021
+ "kind": "name",
2022
+ "name": "allowMixed"
2023
+ }
2024
+ },
2025
+ {
2026
+ "field": "spaceArmed",
2027
+ "rhs": {
2028
+ "kind": "name",
2029
+ "name": "spaceArmed"
2030
+ }
2031
+ },
2032
+ {
2033
+ "field": "pointerArmed",
2034
+ "rhs": {
2035
+ "kind": "bool",
2036
+ "value": false
2037
+ }
2038
+ },
2039
+ {
2040
+ "field": "requests",
2041
+ "rhs": {
2042
+ "kind": "name",
2043
+ "name": "requests"
2044
+ }
2045
+ },
2046
+ {
2047
+ "field": "controlled",
2048
+ "rhs": {
2049
+ "kind": "name",
2050
+ "name": "controlled"
2051
+ }
2052
+ },
2053
+ {
2054
+ "field": "accepting",
2055
+ "rhs": {
2056
+ "kind": "name",
2057
+ "name": "accepting"
2058
+ }
2059
+ },
2060
+ {
2061
+ "field": "valueProp",
2062
+ "rhs": {
2063
+ "kind": "name",
2064
+ "name": "valueProp"
2065
+ }
2066
+ },
2067
+ {
2068
+ "field": "requested",
2069
+ "rhs": {
2070
+ "kind": "name",
2071
+ "name": "requested"
2072
+ }
2073
+ },
2074
+ {
2075
+ "field": "outcome",
2076
+ "rhs": {
2077
+ "kind": "name",
2078
+ "name": "outcome"
2079
+ }
2080
+ },
2081
+ {
2082
+ "field": "base",
2083
+ "rhs": {
2084
+ "kind": "name",
2085
+ "name": "base"
2086
+ }
2087
+ }
2088
+ ]
2089
+ },
2090
+ {
2091
+ "name": "setValue",
2092
+ "nondet": {
2093
+ "name": "incoming",
2094
+ "kind": "str",
2095
+ "pool": [
2096
+ "true",
2097
+ "false",
2098
+ "mixed"
2099
+ ]
2100
+ },
2101
+ "assignments": [
2102
+ {
2103
+ "field": "focused",
2104
+ "rhs": {
2105
+ "kind": "name",
2106
+ "name": "focused"
2107
+ }
2108
+ },
2109
+ {
2110
+ "field": "disabled",
2111
+ "rhs": {
2112
+ "kind": "name",
2113
+ "name": "disabled"
2114
+ }
2115
+ },
2116
+ {
2117
+ "field": "state",
2118
+ "rhs": {
2119
+ "kind": "app",
2120
+ "opcode": "ite",
2121
+ "args": [
2122
+ {
2123
+ "kind": "app",
2124
+ "opcode": "and",
2125
+ "args": [
2126
+ {
2127
+ "kind": "name",
2128
+ "name": "controlled"
2129
+ },
2130
+ {
2131
+ "kind": "app",
2132
+ "opcode": "or",
2133
+ "args": [
2134
+ {
2135
+ "kind": "app",
2136
+ "opcode": "not",
2137
+ "args": [
2138
+ {
2139
+ "kind": "app",
2140
+ "opcode": "eq",
2141
+ "args": [
2142
+ {
2143
+ "kind": "name",
2144
+ "name": "incoming"
2145
+ },
2146
+ {
2147
+ "kind": "str",
2148
+ "value": "mixed"
2149
+ }
2150
+ ]
2151
+ }
2152
+ ]
2153
+ },
2154
+ {
2155
+ "kind": "name",
2156
+ "name": "allowMixed"
2157
+ }
2158
+ ]
2159
+ }
2160
+ ]
2161
+ },
2162
+ {
2163
+ "kind": "name",
2164
+ "name": "incoming"
2165
+ },
2166
+ {
2167
+ "kind": "name",
2168
+ "name": "state"
2169
+ }
2170
+ ]
2171
+ }
2172
+ },
2173
+ {
2174
+ "field": "allowMixed",
2175
+ "rhs": {
2176
+ "kind": "name",
2177
+ "name": "allowMixed"
2178
+ }
2179
+ },
2180
+ {
2181
+ "field": "spaceArmed",
2182
+ "rhs": {
2183
+ "kind": "name",
2184
+ "name": "spaceArmed"
2185
+ }
2186
+ },
2187
+ {
2188
+ "field": "pointerArmed",
2189
+ "rhs": {
2190
+ "kind": "name",
2191
+ "name": "pointerArmed"
2192
+ }
2193
+ },
2194
+ {
2195
+ "field": "requests",
2196
+ "rhs": {
2197
+ "kind": "name",
2198
+ "name": "requests"
2199
+ }
2200
+ },
2201
+ {
2202
+ "field": "controlled",
2203
+ "rhs": {
2204
+ "kind": "name",
2205
+ "name": "controlled"
2206
+ }
2207
+ },
2208
+ {
2209
+ "field": "accepting",
2210
+ "rhs": {
2211
+ "kind": "name",
2212
+ "name": "accepting"
2213
+ }
2214
+ },
2215
+ {
2216
+ "field": "valueProp",
2217
+ "rhs": {
2218
+ "kind": "app",
2219
+ "opcode": "ite",
2220
+ "args": [
2221
+ {
2222
+ "kind": "app",
2223
+ "opcode": "and",
2224
+ "args": [
2225
+ {
2226
+ "kind": "name",
2227
+ "name": "controlled"
2228
+ },
2229
+ {
2230
+ "kind": "app",
2231
+ "opcode": "or",
2232
+ "args": [
2233
+ {
2234
+ "kind": "app",
2235
+ "opcode": "not",
2236
+ "args": [
2237
+ {
2238
+ "kind": "app",
2239
+ "opcode": "eq",
2240
+ "args": [
2241
+ {
2242
+ "kind": "name",
2243
+ "name": "incoming"
2244
+ },
2245
+ {
2246
+ "kind": "str",
2247
+ "value": "mixed"
2248
+ }
2249
+ ]
2250
+ }
2251
+ ]
2252
+ },
2253
+ {
2254
+ "kind": "name",
2255
+ "name": "allowMixed"
2256
+ }
2257
+ ]
2258
+ }
2259
+ ]
2260
+ },
2261
+ {
2262
+ "kind": "name",
2263
+ "name": "incoming"
2264
+ },
2265
+ {
2266
+ "kind": "name",
2267
+ "name": "valueProp"
2268
+ }
2269
+ ]
2270
+ }
2271
+ },
2272
+ {
2273
+ "field": "requested",
2274
+ "rhs": {
2275
+ "kind": "name",
2276
+ "name": "requested"
2277
+ }
2278
+ },
2279
+ {
2280
+ "field": "outcome",
2281
+ "rhs": {
2282
+ "kind": "app",
2283
+ "opcode": "ite",
2284
+ "args": [
2285
+ {
2286
+ "kind": "name",
2287
+ "name": "controlled"
2288
+ },
2289
+ {
2290
+ "kind": "str",
2291
+ "value": "none"
2292
+ },
2293
+ {
2294
+ "kind": "name",
2295
+ "name": "outcome"
2296
+ }
2297
+ ]
2298
+ }
2299
+ },
2300
+ {
2301
+ "field": "base",
2302
+ "rhs": {
2303
+ "kind": "name",
2304
+ "name": "base"
2305
+ }
2306
+ }
2307
+ ]
2308
+ },
2309
+ {
2310
+ "name": "hostToggle",
2311
+ "assignments": [
2312
+ {
2313
+ "field": "focused",
2314
+ "rhs": {
2315
+ "kind": "name",
2316
+ "name": "focused"
2317
+ }
2318
+ },
2319
+ {
2320
+ "field": "disabled",
2321
+ "rhs": {
2322
+ "kind": "name",
2323
+ "name": "disabled"
2324
+ }
2325
+ },
2326
+ {
2327
+ "field": "state",
2328
+ "rhs": {
2329
+ "kind": "app",
2330
+ "opcode": "ite",
2331
+ "args": [
2332
+ {
2333
+ "kind": "name",
2334
+ "name": "controlled"
2335
+ },
2336
+ {
2337
+ "kind": "app",
2338
+ "opcode": "nextState",
2339
+ "args": [
2340
+ {
2341
+ "kind": "name",
2342
+ "name": "valueProp"
2343
+ }
2344
+ ]
2345
+ },
2346
+ {
2347
+ "kind": "name",
2348
+ "name": "state"
2349
+ }
2350
+ ]
2351
+ }
2352
+ },
2353
+ {
2354
+ "field": "allowMixed",
2355
+ "rhs": {
2356
+ "kind": "name",
2357
+ "name": "allowMixed"
2358
+ }
2359
+ },
2360
+ {
2361
+ "field": "spaceArmed",
2362
+ "rhs": {
2363
+ "kind": "name",
2364
+ "name": "spaceArmed"
2365
+ }
2366
+ },
2367
+ {
2368
+ "field": "pointerArmed",
2369
+ "rhs": {
2370
+ "kind": "name",
2371
+ "name": "pointerArmed"
2372
+ }
2373
+ },
2374
+ {
2375
+ "field": "requests",
2376
+ "rhs": {
2377
+ "kind": "name",
2378
+ "name": "requests"
2379
+ }
2380
+ },
2381
+ {
2382
+ "field": "controlled",
2383
+ "rhs": {
2384
+ "kind": "name",
2385
+ "name": "controlled"
2386
+ }
2387
+ },
2388
+ {
2389
+ "field": "accepting",
2390
+ "rhs": {
2391
+ "kind": "name",
2392
+ "name": "accepting"
2393
+ }
2394
+ },
2395
+ {
2396
+ "field": "valueProp",
2397
+ "rhs": {
2398
+ "kind": "app",
2399
+ "opcode": "ite",
2400
+ "args": [
2401
+ {
2402
+ "kind": "name",
2403
+ "name": "controlled"
2404
+ },
2405
+ {
2406
+ "kind": "app",
2407
+ "opcode": "nextState",
2408
+ "args": [
2409
+ {
2410
+ "kind": "name",
2411
+ "name": "valueProp"
2412
+ }
2413
+ ]
2414
+ },
2415
+ {
2416
+ "kind": "name",
2417
+ "name": "valueProp"
2418
+ }
2419
+ ]
2420
+ }
2421
+ },
2422
+ {
2423
+ "field": "requested",
2424
+ "rhs": {
2425
+ "kind": "name",
2426
+ "name": "requested"
2427
+ }
2428
+ },
2429
+ {
2430
+ "field": "outcome",
2431
+ "rhs": {
2432
+ "kind": "app",
2433
+ "opcode": "ite",
2434
+ "args": [
2435
+ {
2436
+ "kind": "name",
2437
+ "name": "controlled"
2438
+ },
2439
+ {
2440
+ "kind": "str",
2441
+ "value": "none"
2442
+ },
2443
+ {
2444
+ "kind": "name",
2445
+ "name": "outcome"
2446
+ }
2447
+ ]
2448
+ }
2449
+ },
2450
+ {
2451
+ "field": "base",
2452
+ "rhs": {
2453
+ "kind": "name",
2454
+ "name": "base"
2455
+ }
2456
+ }
2457
+ ]
2458
+ },
2459
+ {
2460
+ "name": "control",
2461
+ "assignments": [
2462
+ {
2463
+ "field": "focused",
2464
+ "rhs": {
2465
+ "kind": "name",
2466
+ "name": "focused"
2467
+ }
2468
+ },
2469
+ {
2470
+ "field": "disabled",
2471
+ "rhs": {
2472
+ "kind": "name",
2473
+ "name": "disabled"
2474
+ }
2475
+ },
2476
+ {
2477
+ "field": "state",
2478
+ "rhs": {
2479
+ "kind": "name",
2480
+ "name": "state"
2481
+ }
2482
+ },
2483
+ {
2484
+ "field": "allowMixed",
2485
+ "rhs": {
2486
+ "kind": "name",
2487
+ "name": "allowMixed"
2488
+ }
2489
+ },
2490
+ {
2491
+ "field": "spaceArmed",
2492
+ "rhs": {
2493
+ "kind": "name",
2494
+ "name": "spaceArmed"
2495
+ }
2496
+ },
2497
+ {
2498
+ "field": "pointerArmed",
2499
+ "rhs": {
2500
+ "kind": "name",
2501
+ "name": "pointerArmed"
2502
+ }
2503
+ },
2504
+ {
2505
+ "field": "requests",
2506
+ "rhs": {
2507
+ "kind": "name",
2508
+ "name": "requests"
2509
+ }
2510
+ },
2511
+ {
2512
+ "field": "controlled",
2513
+ "rhs": {
2514
+ "kind": "bool",
2515
+ "value": true
2516
+ }
2517
+ },
2518
+ {
2519
+ "field": "accepting",
2520
+ "rhs": {
2521
+ "kind": "name",
2522
+ "name": "accepting"
2523
+ }
2524
+ },
2525
+ {
2526
+ "field": "valueProp",
2527
+ "rhs": {
2528
+ "kind": "name",
2529
+ "name": "state"
2530
+ }
2531
+ },
2532
+ {
2533
+ "field": "requested",
2534
+ "rhs": {
2535
+ "kind": "name",
2536
+ "name": "requested"
2537
+ }
2538
+ },
2539
+ {
2540
+ "field": "outcome",
2541
+ "rhs": {
2542
+ "kind": "name",
2543
+ "name": "outcome"
2544
+ }
2545
+ },
2546
+ {
2547
+ "field": "base",
2548
+ "rhs": {
2549
+ "kind": "name",
2550
+ "name": "base"
2551
+ }
2552
+ }
2553
+ ]
2554
+ },
2555
+ {
2556
+ "name": "acceptRequests",
2557
+ "assignments": [
2558
+ {
2559
+ "field": "focused",
2560
+ "rhs": {
2561
+ "kind": "name",
2562
+ "name": "focused"
2563
+ }
2564
+ },
2565
+ {
2566
+ "field": "disabled",
2567
+ "rhs": {
2568
+ "kind": "name",
2569
+ "name": "disabled"
2570
+ }
2571
+ },
2572
+ {
2573
+ "field": "state",
2574
+ "rhs": {
2575
+ "kind": "name",
2576
+ "name": "state"
2577
+ }
2578
+ },
2579
+ {
2580
+ "field": "allowMixed",
2581
+ "rhs": {
2582
+ "kind": "name",
2583
+ "name": "allowMixed"
2584
+ }
2585
+ },
2586
+ {
2587
+ "field": "spaceArmed",
2588
+ "rhs": {
2589
+ "kind": "name",
2590
+ "name": "spaceArmed"
2591
+ }
2592
+ },
2593
+ {
2594
+ "field": "pointerArmed",
2595
+ "rhs": {
2596
+ "kind": "name",
2597
+ "name": "pointerArmed"
2598
+ }
2599
+ },
2600
+ {
2601
+ "field": "requests",
2602
+ "rhs": {
2603
+ "kind": "name",
2604
+ "name": "requests"
2605
+ }
2606
+ },
2607
+ {
2608
+ "field": "controlled",
2609
+ "rhs": {
2610
+ "kind": "name",
2611
+ "name": "controlled"
2612
+ }
2613
+ },
2614
+ {
2615
+ "field": "accepting",
2616
+ "rhs": {
2617
+ "kind": "bool",
2618
+ "value": true
2619
+ }
2620
+ },
2621
+ {
2622
+ "field": "valueProp",
2623
+ "rhs": {
2624
+ "kind": "name",
2625
+ "name": "valueProp"
2626
+ }
2627
+ },
2628
+ {
2629
+ "field": "requested",
2630
+ "rhs": {
2631
+ "kind": "name",
2632
+ "name": "requested"
2633
+ }
2634
+ },
2635
+ {
2636
+ "field": "outcome",
2637
+ "rhs": {
2638
+ "kind": "name",
2639
+ "name": "outcome"
2640
+ }
2641
+ },
2642
+ {
2643
+ "field": "base",
2644
+ "rhs": {
2645
+ "kind": "name",
2646
+ "name": "base"
2647
+ }
2648
+ }
2649
+ ]
2650
+ },
2651
+ {
2652
+ "name": "seed",
2653
+ "nondet": {
2654
+ "name": "incoming",
2655
+ "kind": "str",
2656
+ "pool": [
2657
+ "true",
2658
+ "false",
2659
+ "mixed"
2660
+ ]
2661
+ },
2662
+ "assignments": [
2663
+ {
2664
+ "field": "focused",
2665
+ "rhs": {
2666
+ "kind": "name",
2667
+ "name": "focused"
2668
+ }
2669
+ },
2670
+ {
2671
+ "field": "disabled",
2672
+ "rhs": {
2673
+ "kind": "name",
2674
+ "name": "disabled"
2675
+ }
2676
+ },
2677
+ {
2678
+ "field": "state",
2679
+ "rhs": {
2680
+ "kind": "app",
2681
+ "opcode": "ite",
2682
+ "args": [
2683
+ {
2684
+ "kind": "name",
2685
+ "name": "controlled"
2686
+ },
2687
+ {
2688
+ "kind": "name",
2689
+ "name": "state"
2690
+ },
2691
+ {
2692
+ "kind": "app",
2693
+ "opcode": "ite",
2694
+ "args": [
2695
+ {
2696
+ "kind": "app",
2697
+ "opcode": "and",
2698
+ "args": [
2699
+ {
2700
+ "kind": "app",
2701
+ "opcode": "eq",
2702
+ "args": [
2703
+ {
2704
+ "kind": "name",
2705
+ "name": "incoming"
2706
+ },
2707
+ {
2708
+ "kind": "str",
2709
+ "value": "mixed"
2710
+ }
2711
+ ]
2712
+ },
2713
+ {
2714
+ "kind": "app",
2715
+ "opcode": "not",
2716
+ "args": [
2717
+ {
2718
+ "kind": "name",
2719
+ "name": "allowMixed"
2720
+ }
2721
+ ]
2722
+ }
2723
+ ]
2724
+ },
2725
+ {
2726
+ "kind": "name",
2727
+ "name": "state"
2728
+ },
2729
+ {
2730
+ "kind": "name",
2731
+ "name": "incoming"
2732
+ }
2733
+ ]
2734
+ }
2735
+ ]
2736
+ }
2737
+ },
2738
+ {
2739
+ "field": "allowMixed",
2740
+ "rhs": {
2741
+ "kind": "name",
2742
+ "name": "allowMixed"
2743
+ }
2744
+ },
2745
+ {
2746
+ "field": "spaceArmed",
2747
+ "rhs": {
2748
+ "kind": "name",
2749
+ "name": "spaceArmed"
2750
+ }
2751
+ },
2752
+ {
2753
+ "field": "pointerArmed",
2754
+ "rhs": {
2755
+ "kind": "name",
2756
+ "name": "pointerArmed"
2757
+ }
2758
+ },
2759
+ {
2760
+ "field": "requests",
2761
+ "rhs": {
2762
+ "kind": "name",
2763
+ "name": "requests"
2764
+ }
2765
+ },
2766
+ {
2767
+ "field": "controlled",
2768
+ "rhs": {
2769
+ "kind": "name",
2770
+ "name": "controlled"
2771
+ }
2772
+ },
2773
+ {
2774
+ "field": "accepting",
2775
+ "rhs": {
2776
+ "kind": "name",
2777
+ "name": "accepting"
2778
+ }
2779
+ },
2780
+ {
2781
+ "field": "valueProp",
2782
+ "rhs": {
2783
+ "kind": "name",
2784
+ "name": "valueProp"
2785
+ }
2786
+ },
2787
+ {
2788
+ "field": "requested",
2789
+ "rhs": {
2790
+ "kind": "name",
2791
+ "name": "requested"
2792
+ }
2793
+ },
2794
+ {
2795
+ "field": "outcome",
2796
+ "rhs": {
2797
+ "kind": "str",
2798
+ "value": "none"
2799
+ }
2800
+ },
2801
+ {
2802
+ "field": "base",
2803
+ "rhs": {
2804
+ "kind": "name",
2805
+ "name": "base"
2806
+ }
2807
+ }
2808
+ ]
2809
+ },
2810
+ {
2811
+ "name": "set_disabled",
2812
+ "nondet": {
2813
+ "name": "value",
2814
+ "kind": "bool",
2815
+ "pool": [
2816
+ true,
2817
+ false
2818
+ ]
2819
+ },
2820
+ "assignments": [
2821
+ {
2822
+ "field": "focused",
2823
+ "rhs": {
2824
+ "kind": "name",
2825
+ "name": "focused"
2826
+ }
2827
+ },
2828
+ {
2829
+ "field": "disabled",
2830
+ "rhs": {
2831
+ "kind": "name",
2832
+ "name": "value"
2833
+ }
2834
+ },
2835
+ {
2836
+ "field": "state",
2837
+ "rhs": {
2838
+ "kind": "name",
2839
+ "name": "state"
2840
+ }
2841
+ },
2842
+ {
2843
+ "field": "allowMixed",
2844
+ "rhs": {
2845
+ "kind": "name",
2846
+ "name": "allowMixed"
2847
+ }
2848
+ },
2849
+ {
2850
+ "field": "spaceArmed",
2851
+ "rhs": {
2852
+ "kind": "app",
2853
+ "opcode": "ite",
2854
+ "args": [
2855
+ {
2856
+ "kind": "name",
2857
+ "name": "value"
2858
+ },
2859
+ {
2860
+ "kind": "bool",
2861
+ "value": false
2862
+ },
2863
+ {
2864
+ "kind": "name",
2865
+ "name": "spaceArmed"
2866
+ }
2867
+ ]
2868
+ }
2869
+ },
2870
+ {
2871
+ "field": "pointerArmed",
2872
+ "rhs": {
2873
+ "kind": "app",
2874
+ "opcode": "ite",
2875
+ "args": [
2876
+ {
2877
+ "kind": "name",
2878
+ "name": "value"
2879
+ },
2880
+ {
2881
+ "kind": "bool",
2882
+ "value": false
2883
+ },
2884
+ {
2885
+ "kind": "name",
2886
+ "name": "pointerArmed"
2887
+ }
2888
+ ]
2889
+ }
2890
+ },
2891
+ {
2892
+ "field": "requests",
2893
+ "rhs": {
2894
+ "kind": "name",
2895
+ "name": "requests"
2896
+ }
2897
+ },
2898
+ {
2899
+ "field": "controlled",
2900
+ "rhs": {
2901
+ "kind": "name",
2902
+ "name": "controlled"
2903
+ }
2904
+ },
2905
+ {
2906
+ "field": "accepting",
2907
+ "rhs": {
2908
+ "kind": "name",
2909
+ "name": "accepting"
2910
+ }
2911
+ },
2912
+ {
2913
+ "field": "valueProp",
2914
+ "rhs": {
2915
+ "kind": "name",
2916
+ "name": "valueProp"
2917
+ }
2918
+ },
2919
+ {
2920
+ "field": "requested",
2921
+ "rhs": {
2922
+ "kind": "name",
2923
+ "name": "requested"
2924
+ }
2925
+ },
2926
+ {
2927
+ "field": "outcome",
2928
+ "rhs": {
2929
+ "kind": "name",
2930
+ "name": "outcome"
2931
+ }
2932
+ },
2933
+ {
2934
+ "field": "base",
2935
+ "rhs": {
2936
+ "kind": "name",
2937
+ "name": "base"
2938
+ }
2939
+ }
2940
+ ]
2941
+ },
2942
+ {
2943
+ "name": "set_allow_mixed",
2944
+ "nondet": {
2945
+ "name": "value",
2946
+ "kind": "bool",
2947
+ "pool": [
2948
+ true,
2949
+ false
2950
+ ]
2951
+ },
2952
+ "assignments": [
2953
+ {
2954
+ "field": "focused",
2955
+ "rhs": {
2956
+ "kind": "name",
2957
+ "name": "focused"
2958
+ }
2959
+ },
2960
+ {
2961
+ "field": "disabled",
2962
+ "rhs": {
2963
+ "kind": "name",
2964
+ "name": "disabled"
2965
+ }
2966
+ },
2967
+ {
2968
+ "field": "state",
2969
+ "rhs": {
2970
+ "kind": "app",
2971
+ "opcode": "ite",
2972
+ "args": [
2973
+ {
2974
+ "kind": "app",
2975
+ "opcode": "and",
2976
+ "args": [
2977
+ {
2978
+ "kind": "app",
2979
+ "opcode": "not",
2980
+ "args": [
2981
+ {
2982
+ "kind": "name",
2983
+ "name": "value"
2984
+ }
2985
+ ]
2986
+ },
2987
+ {
2988
+ "kind": "app",
2989
+ "opcode": "eq",
2990
+ "args": [
2991
+ {
2992
+ "kind": "name",
2993
+ "name": "state"
2994
+ },
2995
+ {
2996
+ "kind": "str",
2997
+ "value": "mixed"
2998
+ }
2999
+ ]
3000
+ }
3001
+ ]
3002
+ },
3003
+ {
3004
+ "kind": "str",
3005
+ "value": "false"
3006
+ },
3007
+ {
3008
+ "kind": "name",
3009
+ "name": "state"
3010
+ }
3011
+ ]
3012
+ }
3013
+ },
3014
+ {
3015
+ "field": "allowMixed",
3016
+ "rhs": {
3017
+ "kind": "name",
3018
+ "name": "value"
3019
+ }
3020
+ },
3021
+ {
3022
+ "field": "spaceArmed",
3023
+ "rhs": {
3024
+ "kind": "name",
3025
+ "name": "spaceArmed"
3026
+ }
3027
+ },
3028
+ {
3029
+ "field": "pointerArmed",
3030
+ "rhs": {
3031
+ "kind": "name",
3032
+ "name": "pointerArmed"
3033
+ }
3034
+ },
3035
+ {
3036
+ "field": "requests",
3037
+ "rhs": {
3038
+ "kind": "name",
3039
+ "name": "requests"
3040
+ }
3041
+ },
3042
+ {
3043
+ "field": "controlled",
3044
+ "rhs": {
3045
+ "kind": "name",
3046
+ "name": "controlled"
3047
+ }
3048
+ },
3049
+ {
3050
+ "field": "accepting",
3051
+ "rhs": {
3052
+ "kind": "name",
3053
+ "name": "accepting"
3054
+ }
3055
+ },
3056
+ {
3057
+ "field": "valueProp",
3058
+ "rhs": {
3059
+ "kind": "app",
3060
+ "opcode": "ite",
3061
+ "args": [
3062
+ {
3063
+ "kind": "name",
3064
+ "name": "controlled"
3065
+ },
3066
+ {
3067
+ "kind": "app",
3068
+ "opcode": "ite",
3069
+ "args": [
3070
+ {
3071
+ "kind": "app",
3072
+ "opcode": "and",
3073
+ "args": [
3074
+ {
3075
+ "kind": "app",
3076
+ "opcode": "not",
3077
+ "args": [
3078
+ {
3079
+ "kind": "name",
3080
+ "name": "value"
3081
+ }
3082
+ ]
3083
+ },
3084
+ {
3085
+ "kind": "app",
3086
+ "opcode": "eq",
3087
+ "args": [
3088
+ {
3089
+ "kind": "name",
3090
+ "name": "valueProp"
3091
+ },
3092
+ {
3093
+ "kind": "str",
3094
+ "value": "mixed"
3095
+ }
3096
+ ]
3097
+ }
3098
+ ]
3099
+ },
3100
+ {
3101
+ "kind": "str",
3102
+ "value": "false"
3103
+ },
3104
+ {
3105
+ "kind": "name",
3106
+ "name": "valueProp"
3107
+ }
3108
+ ]
3109
+ },
3110
+ {
3111
+ "kind": "name",
3112
+ "name": "valueProp"
3113
+ }
3114
+ ]
3115
+ }
3116
+ },
3117
+ {
3118
+ "field": "requested",
3119
+ "rhs": {
3120
+ "kind": "name",
3121
+ "name": "requested"
3122
+ }
3123
+ },
3124
+ {
3125
+ "field": "outcome",
3126
+ "rhs": {
3127
+ "kind": "str",
3128
+ "value": "none"
3129
+ }
3130
+ },
3131
+ {
3132
+ "field": "base",
3133
+ "rhs": {
3134
+ "kind": "name",
3135
+ "name": "base"
3136
+ }
3137
+ }
3138
+ ]
3139
+ }
3140
+ ],
3141
+ "step": [
3142
+ "init",
3143
+ "focus",
3144
+ "blur",
3145
+ "key_down",
3146
+ "key_up",
3147
+ "pointer_down",
3148
+ "pointer_up",
3149
+ "pointer_cancel",
3150
+ "setValue",
3151
+ "hostToggle",
3152
+ "control",
3153
+ "acceptRequests",
3154
+ "seed",
3155
+ "set_disabled",
3156
+ "set_allow_mixed"
3157
+ ]
3158
+ }