@aztec/simulator 0.32.1 → 0.33.0

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 (118) hide show
  1. package/README.md +5 -3
  2. package/dest/acvm/oracle/index.d.ts +0 -1
  3. package/dest/acvm/oracle/index.d.ts.map +1 -1
  4. package/dest/acvm/oracle/index.js +1 -2
  5. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  6. package/dest/acvm/oracle/oracle.js +2 -3
  7. package/dest/avm/avm_context.d.ts +4 -14
  8. package/dest/avm/avm_context.d.ts.map +1 -1
  9. package/dest/avm/avm_context.js +10 -22
  10. package/dest/avm/avm_gas.d.ts +71 -0
  11. package/dest/avm/avm_gas.d.ts.map +1 -0
  12. package/dest/avm/avm_gas.js +161 -0
  13. package/dest/avm/avm_machine_state.d.ts +4 -2
  14. package/dest/avm/avm_machine_state.d.ts.map +1 -1
  15. package/dest/avm/avm_machine_state.js +8 -2
  16. package/dest/avm/avm_memory_types.d.ts +53 -1
  17. package/dest/avm/avm_memory_types.d.ts.map +1 -1
  18. package/dest/avm/avm_memory_types.js +95 -2
  19. package/dest/avm/avm_simulator.d.ts.map +1 -1
  20. package/dest/avm/avm_simulator.js +10 -8
  21. package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
  22. package/dest/avm/opcodes/accrued_substate.js +44 -16
  23. package/dest/avm/opcodes/addressing_mode.d.ts +5 -3
  24. package/dest/avm/opcodes/addressing_mode.d.ts.map +1 -1
  25. package/dest/avm/opcodes/addressing_mode.js +5 -1
  26. package/dest/avm/opcodes/arithmetic.d.ts +7 -3
  27. package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
  28. package/dest/avm/opcodes/arithmetic.js +27 -16
  29. package/dest/avm/opcodes/bitwise.d.ts +21 -20
  30. package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
  31. package/dest/avm/opcodes/bitwise.js +43 -65
  32. package/dest/avm/opcodes/comparators.d.ts +12 -9
  33. package/dest/avm/opcodes/comparators.d.ts.map +1 -1
  34. package/dest/avm/opcodes/comparators.js +22 -32
  35. package/dest/avm/opcodes/context_getters.d.ts +20 -0
  36. package/dest/avm/opcodes/context_getters.d.ts.map +1 -0
  37. package/dest/avm/opcodes/context_getters.js +26 -0
  38. package/dest/avm/opcodes/contract.d.ts +14 -0
  39. package/dest/avm/opcodes/contract.d.ts.map +1 -0
  40. package/dest/avm/opcodes/contract.js +49 -0
  41. package/dest/avm/opcodes/control_flow.d.ts.map +1 -1
  42. package/dest/avm/opcodes/control_flow.js +12 -2
  43. package/dest/avm/opcodes/environment_getters.d.ts +30 -33
  44. package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
  45. package/dest/avm/opcodes/environment_getters.js +34 -43
  46. package/dest/avm/opcodes/external_calls.d.ts +13 -19
  47. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  48. package/dest/avm/opcodes/external_calls.js +50 -68
  49. package/dest/avm/opcodes/hashing.d.ts +2 -1
  50. package/dest/avm/opcodes/hashing.d.ts.map +1 -1
  51. package/dest/avm/opcodes/hashing.js +37 -18
  52. package/dest/avm/opcodes/index.d.ts +1 -0
  53. package/dest/avm/opcodes/index.d.ts.map +1 -1
  54. package/dest/avm/opcodes/index.js +2 -1
  55. package/dest/avm/opcodes/instruction.d.ts +10 -15
  56. package/dest/avm/opcodes/instruction.d.ts.map +1 -1
  57. package/dest/avm/opcodes/instruction.js +12 -22
  58. package/dest/avm/opcodes/instruction_impl.d.ts +14 -0
  59. package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
  60. package/dest/avm/opcodes/instruction_impl.js +37 -16
  61. package/dest/avm/opcodes/memory.d.ts +4 -3
  62. package/dest/avm/opcodes/memory.d.ts.map +1 -1
  63. package/dest/avm/opcodes/memory.js +38 -19
  64. package/dest/avm/opcodes/storage.d.ts +5 -0
  65. package/dest/avm/opcodes/storage.d.ts.map +1 -1
  66. package/dest/avm/opcodes/storage.js +21 -7
  67. package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  68. package/dest/avm/serialization/bytecode_serialization.js +7 -5
  69. package/dest/avm/serialization/instruction_serialization.d.ts +12 -11
  70. package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
  71. package/dest/avm/serialization/instruction_serialization.js +13 -12
  72. package/dest/avm/temporary_executor_migration.d.ts +2 -0
  73. package/dest/avm/temporary_executor_migration.d.ts.map +1 -1
  74. package/dest/avm/temporary_executor_migration.js +14 -3
  75. package/dest/client/private_execution.d.ts.map +1 -1
  76. package/dest/client/private_execution.js +6 -2
  77. package/dest/public/executor.d.ts +10 -2
  78. package/dest/public/executor.d.ts.map +1 -1
  79. package/dest/public/executor.js +59 -20
  80. package/dest/public/index.d.ts +1 -1
  81. package/dest/public/index.d.ts.map +1 -1
  82. package/package.json +15 -9
  83. package/src/acvm/oracle/index.ts +0 -1
  84. package/src/acvm/oracle/oracle.ts +1 -2
  85. package/src/avm/avm_context.ts +11 -33
  86. package/src/avm/{avm_gas_cost.ts → avm_gas.ts} +75 -21
  87. package/src/avm/avm_machine_state.ts +9 -2
  88. package/src/avm/avm_memory_types.ts +130 -2
  89. package/src/avm/avm_simulator.ts +9 -7
  90. package/src/avm/opcodes/accrued_substate.ts +57 -22
  91. package/src/avm/opcodes/addressing_mode.ts +8 -3
  92. package/src/avm/opcodes/arithmetic.ts +32 -22
  93. package/src/avm/opcodes/bitwise.ts +49 -83
  94. package/src/avm/opcodes/comparators.ts +28 -43
  95. package/src/avm/opcodes/context_getters.ts +32 -0
  96. package/src/avm/opcodes/contract.ts +58 -0
  97. package/src/avm/opcodes/control_flow.ts +23 -5
  98. package/src/avm/opcodes/environment_getters.ts +35 -44
  99. package/src/avm/opcodes/external_calls.ts +65 -84
  100. package/src/avm/opcodes/hashing.ts +45 -22
  101. package/src/avm/opcodes/index.ts +1 -0
  102. package/src/avm/opcodes/instruction.ts +14 -26
  103. package/src/avm/opcodes/instruction_impl.ts +45 -15
  104. package/src/avm/opcodes/memory.ts +48 -28
  105. package/src/avm/opcodes/storage.ts +26 -12
  106. package/src/avm/serialization/bytecode_serialization.ts +6 -3
  107. package/src/avm/serialization/instruction_serialization.ts +1 -0
  108. package/src/avm/temporary_executor_migration.ts +16 -2
  109. package/src/client/private_execution.ts +8 -2
  110. package/src/public/executor.ts +75 -22
  111. package/src/public/index.ts +2 -2
  112. package/dest/acvm/oracle/debug.d.ts +0 -19
  113. package/dest/acvm/oracle/debug.d.ts.map +0 -1
  114. package/dest/acvm/oracle/debug.js +0 -95
  115. package/dest/avm/avm_gas_cost.d.ts +0 -322
  116. package/dest/avm/avm_gas_cost.d.ts.map +0 -1
  117. package/dest/avm/avm_gas_cost.js +0 -118
  118. package/src/acvm/oracle/debug.ts +0 -109
package/README.md CHANGED
@@ -28,13 +28,15 @@ They are run with the assistance of an oracle that provides any value read from
28
28
 
29
29
  Public functions can call other public function, but no private functions.
30
30
 
31
- ### Unconstrained (view) Functions
31
+ ### Unconstrained Functions
32
32
 
33
- Unconstrained functions are used to extract useful data for users, such as the user balance. They are not proved, and are simulated client-side.
33
+ Unconstrained functions are useful to extract useful data for users that could produce very large execution traces - such as the summed balance of all a users notes
34
+ They are not proved, and are simulated client-side.
34
35
 
35
36
  They are run with the assistance of a DB oracle that provides any private data requested by the function.
36
37
 
37
- At the moment, unconstrained functions cannot call any other function. It would be possible to allow them to call other unconstrained functions.
38
+ At the moment, unconstrained functions cannot call any other function.
39
+ It would be possible to allow them to call other unconstrained functions.
38
40
 
39
41
  ## Usage
40
42
 
@@ -1,5 +1,4 @@
1
1
  import { type Oracle } from './oracle.js';
2
- export * from './debug.js';
3
2
  export * from './oracle.js';
4
3
  export * from './typed_oracle.js';
5
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/acvm/oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAElC;;GAEG;AACH,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK;CACjE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/acvm/oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAElC;;GAEG;AACH,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK;CACjE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC"}
@@ -1,4 +1,3 @@
1
- export * from './debug.js';
2
1
  export * from './oracle.js';
3
2
  export * from './typed_oracle.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN2bS9vcmFjbGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxtQkFBbUIsQ0FBQyJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN2bS9vcmFjbGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxtQkFBbUIsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../../src/acvm/oracle/oracle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../../src/acvm/oracle/oracle.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { MerkleTreeId, UnencryptedL2Log } from '@aztec/circuit-types';
2
- import { RETURN_VALUES_LENGTH } from '@aztec/circuits.js';
2
+ import { RETURN_VALUES_LENGTH, acvmFieldMessageToString, oracleDebugCallToFormattedStr } from '@aztec/circuits.js';
3
3
  import { EventSelector, FunctionSelector } from '@aztec/foundation/abi';
4
4
  import { AztecAddress } from '@aztec/foundation/aztec-address';
5
5
  import { padArrayEnd } from '@aztec/foundation/collection';
@@ -7,7 +7,6 @@ import { Fr, Point } from '@aztec/foundation/fields';
7
7
  import { createDebugLogger } from '@aztec/foundation/log';
8
8
  import { frToBoolean, frToNumber, fromACVMField } from '../deserialize.js';
9
9
  import { toACVMField, toAcvmEnqueuePublicFunctionResult } from '../serialize.js';
10
- import { acvmFieldMessageToString, oracleDebugCallToFormattedStr } from './debug.js';
11
10
  /**
12
11
  * A data source that has all the apis required by Aztec.nr.
13
12
  */
@@ -201,4 +200,4 @@ export class Oracle {
201
200
  return toAcvmEnqueuePublicFunctionResult(enqueuedRequest);
202
201
  }
203
202
  }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JhY2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Fjdm0vb3JhY2xlL29yYWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3JGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLE1BQU07SUFDakIsWUFBb0IsV0FBd0IsRUFBVSxNQUFNLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDO1FBQW5GLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBOEM7SUFBRyxDQUFDO0lBRTNHLGNBQWM7UUFDWixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzlDLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFL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QVMsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUMvQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQzFCLENBQUMsVUFBVSxFQUNYLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM1QixlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDNUIsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzVCLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQy9CLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlCLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMxQixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDMUIsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN0QixDQUFDLEtBQUssRUFDTixDQUFDLE1BQU0sRUFDUCxDQUFDLE1BQU0sQ0FDUixDQUFDO1FBRUYsTUFBTSxVQUFVLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyRSxNQUFNLElBQUksS0FBSyxDQUFDLHND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
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JhY2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Fjdm0vb3JhY2xlL29yYWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkgsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHakY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sTUFBTTtJQUNqQixZQUFvQixXQUF3QixFQUFVLE1BQU0saUJBQWlCLENBQUMsd0JBQXdCLENBQUM7UUFBbkYsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUE4QztJQUFHLENBQUM7SUFFM0csY0FBYztRQUNaLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDOUMsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBaUI7UUFDbkMsTUFB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
@@ -1,6 +1,7 @@
1
1
  import { type AztecAddress, FunctionSelector } from '@aztec/circuits.js';
2
2
  import { type Fr } from '@aztec/foundation/fields';
3
3
  import { type AvmExecutionEnvironment } from './avm_execution_environment.js';
4
+ import { type Gas } from './avm_gas.js';
4
5
  import { AvmMachineState } from './avm_machine_state.js';
5
6
  import { type AvmPersistableStateManager } from './journal/journal.js';
6
7
  /**
@@ -29,21 +30,10 @@ export declare class AvmContext {
29
30
  *
30
31
  * @param address - The contract instance to initialize a context for
31
32
  * @param calldata - Data/arguments for nested call
33
+ * @param allocatedGas - Gas allocated for the nested call
34
+ * @param callType - Type of call (CALL or STATICCALL)
32
35
  * @returns new AvmContext instance
33
36
  */
34
- createNestedContractCallContext(address: AztecAddress, calldata: Fr[], temporaryFunctionSelector?: FunctionSelector): AvmContext;
35
- /**
36
- * Prepare a new AVM context that will be ready for an external/nested static call
37
- * - Fork the world state journal
38
- * - Derive a machine state from the current state
39
- * - E.g., gas metering is preserved but pc is reset
40
- * - Derive an execution environment from the caller/parent
41
- * - Alter both address and storageAddress
42
- *
43
- * @param address - The contract instance to initialize a context for
44
- * @param calldata - Data/arguments for nested call
45
- * @returns new AvmContext instance
46
- */
47
- createNestedContractStaticCallContext(address: AztecAddress, calldata: Fr[], temporaryFunctionSelector?: FunctionSelector): AvmContext;
37
+ createNestedContractCallContext(address: AztecAddress, calldata: Fr[], allocatedGas: Gas, callType: 'CALL' | 'STATICCALL', temporaryFunctionSelector?: FunctionSelector): AvmContext;
48
38
  }
49
39
  //# sourceMappingURL=avm_context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"avm_context.d.ts","sourceRoot":"","sources":["../../src/avm/avm_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;;GAGG;AACH,qBAAa,UAAU;IASZ,gBAAgB,EAAE,0BAA0B;IAC5C,WAAW,EAAE,uBAAuB;IACpC,YAAY,EAAE,eAAe;IAVtC;;;;;;OAMG;gBAEM,gBAAgB,EAAE,0BAA0B,EAC5C,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,eAAe;IAGtC;;;;;;;;;;;OAWG;IACI,+BAA+B,CACpC,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,EAAE,EAAE,EACd,yBAAyB,GAAE,gBAA2C,GACrE,UAAU;IAWb;;;;;;;;;;;OAWG;IACI,qCAAqC,CAC1C,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,EAAE,EAAE,EACd,yBAAyB,GAAE,gBAA2C,GACrE,UAAU;CAUd"}
1
+ {"version":3,"file":"avm_context.d.ts","sourceRoot":"","sources":["../../src/avm/avm_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,KAAK,GAAG,EAAgB,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;;GAGG;AACH,qBAAa,UAAU;IASZ,gBAAgB,EAAE,0BAA0B;IAC5C,WAAW,EAAE,uBAAuB;IACpC,YAAY,EAAE,eAAe;IAVtC;;;;;;OAMG;gBAEM,gBAAgB,EAAE,0BAA0B,EAC5C,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,eAAe;IAGtC;;;;;;;;;;;;;OAaG;IACI,+BAA+B,CACpC,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,EAAE,EAAE,EACd,YAAY,EAAE,GAAG,EACjB,QAAQ,EAAE,MAAM,GAAG,YAAY,EAC/B,yBAAyB,GAAE,gBAA2C,GACrE,UAAU;CAUd"}
@@ -1,4 +1,5 @@
1
1
  import { FunctionSelector } from '@aztec/circuits.js';
2
+ import { gasToGasLeft } from './avm_gas.js';
2
3
  import { AvmMachineState } from './avm_machine_state.js';
3
4
  /**
4
5
  * An execution context includes the information necessary to initiate AVM
@@ -27,31 +28,18 @@ export class AvmContext {
27
28
  *
28
29
  * @param address - The contract instance to initialize a context for
29
30
  * @param calldata - Data/arguments for nested call
31
+ * @param allocatedGas - Gas allocated for the nested call
32
+ * @param callType - Type of call (CALL or STATICCALL)
30
33
  * @returns new AvmContext instance
31
34
  */
32
- createNestedContractCallContext(address, calldata, temporaryFunctionSelector = FunctionSelector.empty()) {
33
- const newExecutionEnvironment = this.environment.deriveEnvironmentForNestedCall(address, calldata, temporaryFunctionSelector);
35
+ createNestedContractCallContext(address, calldata, allocatedGas, callType, temporaryFunctionSelector = FunctionSelector.empty()) {
36
+ const deriveFn = callType === 'CALL'
37
+ ? this.environment.deriveEnvironmentForNestedCall
38
+ : this.environment.deriveEnvironmentForNestedStaticCall;
39
+ const newExecutionEnvironment = deriveFn.call(this.environment, address, calldata, temporaryFunctionSelector);
34
40
  const forkedWorldState = this.persistableState.fork();
35
- const machineState = AvmMachineState.fromState(this.machineState);
36
- return new AvmContext(forkedWorldState, newExecutionEnvironment, machineState);
37
- }
38
- /**
39
- * Prepare a new AVM context that will be ready for an external/nested static call
40
- * - Fork the world state journal
41
- * - Derive a machine state from the current state
42
- * - E.g., gas metering is preserved but pc is reset
43
- * - Derive an execution environment from the caller/parent
44
- * - Alter both address and storageAddress
45
- *
46
- * @param address - The contract instance to initialize a context for
47
- * @param calldata - Data/arguments for nested call
48
- * @returns new AvmContext instance
49
- */
50
- createNestedContractStaticCallContext(address, calldata, temporaryFunctionSelector = FunctionSelector.empty()) {
51
- const newExecutionEnvironment = this.environment.deriveEnvironmentForNestedStaticCall(address, calldata, temporaryFunctionSelector);
52
- const forkedWorldState = this.persistableState.fork();
53
- const machineState = AvmMachineState.fromState(this.machineState);
41
+ const machineState = AvmMachineState.fromState(gasToGasLeft(allocatedGas));
54
42
  return new AvmContext(forkedWorldState, newExecutionEnvironment, machineState);
55
43
  }
56
44
  }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2F2bV9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUl6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHekQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFDckI7Ozs7OztPQU1HO0lBQ0gsWUFDUyxnQkFBNEMsRUFDNUMsV0FBb0MsRUFDcEMsWUFBNkI7UUFGN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE0QjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQWlCO0lBQ25DLENBQUM7SUFFSjs7Ozs7Ozs7Ozs7T0FXRztJQUNJLCtCQUErQixDQUNwQyxPQUFxQixFQUNyQixRQUFjLEVBQ2QsNEJBQThDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtRQUV0RSxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsOEJBQThCLENBQzdFLE9BQU8sRUFDUCxRQUFRLEVBQ1IseUJBQXlCLENBQzFCLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRSxPQUFPLElBQUksVUFBVSxDQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNJLHFDQUFxQyxDQUMxQyxPQUFxQixFQUNyQixRQUFjLEVBQ2QsNEJBQThDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtRQUV0RSxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsb0NBQW9DLENBQ25GLE9BQU8sRUFDUCxRQUFRLEVBQ1IseUJBQXlCLENBQzFCLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRSxPQUFPLElBQUksVUFBVSxDQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Q0FDRiJ9
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2F2bV9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUl6RSxPQUFPLEVBQVksWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd6RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNyQjs7Ozs7O09BTUc7SUFDSCxZQUNTLGdCQUE0QyxFQUM1QyxXQUFvQyxFQUNwQyxZQUE2QjtRQUY3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTRCO1FBQzVDLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7SUFDbkMsQ0FBQztJQUVKOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSSwrQkFBK0IsQ0FDcEMsT0FBcUIsRUFDckIsUUFBYyxFQUNkLFlBQWlCLEVBQ2pCLFFBQStCLEVBQy9CLDRCQUE4QyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7UUFFdEUsTUFBTSxRQUFRLEdBQ1osUUFBUSxLQUFLLE1BQU07WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsOEJBQThCO1lBQ2pELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9DQUFvQyxDQUFDO1FBQzVELE1BQU0sdUJBQXVCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUM5RyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sSUFBSSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGIn0=
@@ -0,0 +1,71 @@
1
+ import { TypeTag } from './avm_memory_types.js';
2
+ import { Opcode } from './serialization/instruction_serialization.js';
3
+ /** Gas counters in L1, L2, and DA. */
4
+ export type Gas = {
5
+ l1Gas: number;
6
+ l2Gas: number;
7
+ daGas: number;
8
+ };
9
+ /** Maps a Gas struct to gasLeft properties. */
10
+ export declare function gasToGasLeft(gas: Gas): {
11
+ l1GasLeft: number;
12
+ l2GasLeft: number;
13
+ daGasLeft: number;
14
+ };
15
+ /** Maps gasLeft properties to a gas struct. */
16
+ export declare function gasLeftToGas(gasLeft: {
17
+ l1GasLeft: number;
18
+ l2GasLeft: number;
19
+ daGasLeft: number;
20
+ }): {
21
+ l1Gas: number;
22
+ l2Gas: number;
23
+ daGas: number;
24
+ };
25
+ /** Creates a new instance with all values set to zero except the ones set. */
26
+ export declare function makeGas(gasCost: Partial<Gas>): {
27
+ l1Gas: number;
28
+ l2Gas: number;
29
+ daGas: number;
30
+ };
31
+ /** Sums together multiple instances of Gas. */
32
+ export declare function sumGas(...gases: Partial<Gas>[]): Gas;
33
+ /** Multiplies a gas instance by a scalar. */
34
+ export declare function mulGas(gas: Partial<Gas>, scalar: number): {
35
+ l1Gas: number;
36
+ l2Gas: number;
37
+ daGas: number;
38
+ };
39
+ /** Zero gas across all gas dimensions. */
40
+ export declare const EmptyGas: Gas;
41
+ /** Dimensions of gas usage: L1, L2, and DA. */
42
+ export declare const GasDimensions: readonly ["l1Gas", "l2Gas", "daGas"];
43
+ /** Null object to represent a gas cost that's dynamic instead of fixed for a given instruction. */
44
+ export declare const DynamicGasCost: unique symbol;
45
+ /** Base gas costs for each instruction. Additional gas cost may be added on top due to memory or storage accesses, etc. */
46
+ export declare const GasCosts: Record<Opcode, Gas | typeof DynamicGasCost>;
47
+ /** Returns the fixed base gas cost for a given opcode, or throws if set to dynamic. */
48
+ export declare function getBaseGasCost(opcode: Opcode): Gas;
49
+ /** Returns the gas cost associated with the memory operations performed. */
50
+ export declare function getMemoryGasCost(args: {
51
+ reads?: number;
52
+ writes?: number;
53
+ indirect?: number;
54
+ }): {
55
+ l1Gas: number;
56
+ l2Gas: number;
57
+ daGas: number;
58
+ };
59
+ /** Constants used in base cost calculations. */
60
+ export declare const GasCostConstants: {
61
+ MEMORY_READ: number;
62
+ MEMORY_INDIRECT_READ_PENALTY: number;
63
+ MEMORY_WRITE: number;
64
+ };
65
+ /** Returns gas cost for an operation on a given type tag based on the base cost per byte. */
66
+ export declare function getGasCostForTypeTag(tag: TypeTag, baseCost: Gas): {
67
+ l1Gas: number;
68
+ l2Gas: number;
69
+ daGas: number;
70
+ };
71
+ //# sourceMappingURL=avm_gas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avm_gas.d.ts","sourceRoot":"","sources":["../../src/avm/avm_gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAEtE,sCAAsC;AACtC,MAAM,MAAM,GAAG,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG;;;;EAEpC;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;;;;EAEhG;AAED,8EAA8E;AAC9E,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;;;;EAE5C;AAED,+CAA+C;AAC/C,wBAAgB,MAAM,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,OAS9C;AAED,6CAA6C;AAC7C,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM;;;;EAEvD;AAED,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,GAItB,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,sCAAuC,CAAC;AAElE,mGAAmG;AACnG,eAAO,MAAM,cAAc,eAA2B,CAAC;AAKvD,2HAA2H;AAC3H,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,cAAc,CAuEhE,CAAC;AAEF,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAMlD;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;;;;EAQ5F;AAED,gDAAgD;AAChD,eAAO,MAAM,gBAAgB;;;;CAI5B,CAAC;AAEF,6FAA6F;AAC7F,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG;;;;EAE/D"}
@@ -0,0 +1,161 @@
1
+ import { TypeTag } from './avm_memory_types.js';
2
+ import { InstructionExecutionError } from './errors.js';
3
+ import { Addressing, AddressingMode } from './opcodes/addressing_mode.js';
4
+ import { Opcode } from './serialization/instruction_serialization.js';
5
+ /** Maps a Gas struct to gasLeft properties. */
6
+ export function gasToGasLeft(gas) {
7
+ return { l1GasLeft: gas.l1Gas, l2GasLeft: gas.l2Gas, daGasLeft: gas.daGas };
8
+ }
9
+ /** Maps gasLeft properties to a gas struct. */
10
+ export function gasLeftToGas(gasLeft) {
11
+ return { l1Gas: gasLeft.l1GasLeft, l2Gas: gasLeft.l2GasLeft, daGas: gasLeft.daGasLeft };
12
+ }
13
+ /** Creates a new instance with all values set to zero except the ones set. */
14
+ export function makeGas(gasCost) {
15
+ return { ...EmptyGas, ...gasCost };
16
+ }
17
+ /** Sums together multiple instances of Gas. */
18
+ export function sumGas(...gases) {
19
+ return gases.reduce((acc, gas) => ({
20
+ l1Gas: acc.l1Gas + (gas.l1Gas ?? 0),
21
+ l2Gas: acc.l2Gas + (gas.l2Gas ?? 0),
22
+ daGas: acc.daGas + (gas.daGas ?? 0),
23
+ }), EmptyGas);
24
+ }
25
+ /** Multiplies a gas instance by a scalar. */
26
+ export function mulGas(gas, scalar) {
27
+ return { l1Gas: (gas.l1Gas ?? 0) * scalar, l2Gas: (gas.l2Gas ?? 0) * scalar, daGas: (gas.daGas ?? 0) * scalar };
28
+ }
29
+ /** Zero gas across all gas dimensions. */
30
+ export const EmptyGas = {
31
+ l1Gas: 0,
32
+ l2Gas: 0,
33
+ daGas: 0,
34
+ };
35
+ /** Dimensions of gas usage: L1, L2, and DA. */
36
+ export const GasDimensions = ['l1Gas', 'l2Gas', 'daGas'];
37
+ /** Null object to represent a gas cost that's dynamic instead of fixed for a given instruction. */
38
+ export const DynamicGasCost = Symbol('DynamicGasCost');
39
+ /** Temporary default gas cost. We should eventually remove all usage of this variable in favor of actual gas for each opcode. */
40
+ const TemporaryDefaultGasCost = { l1Gas: 0, l2Gas: 10, daGas: 0 };
41
+ /** Base gas costs for each instruction. Additional gas cost may be added on top due to memory or storage accesses, etc. */
42
+ export const GasCosts = {
43
+ [Opcode.ADD]: TemporaryDefaultGasCost,
44
+ [Opcode.SUB]: TemporaryDefaultGasCost,
45
+ [Opcode.MUL]: TemporaryDefaultGasCost,
46
+ [Opcode.DIV]: TemporaryDefaultGasCost,
47
+ [Opcode.FDIV]: TemporaryDefaultGasCost,
48
+ [Opcode.EQ]: TemporaryDefaultGasCost,
49
+ [Opcode.LT]: TemporaryDefaultGasCost,
50
+ [Opcode.LTE]: TemporaryDefaultGasCost,
51
+ [Opcode.AND]: TemporaryDefaultGasCost,
52
+ [Opcode.OR]: TemporaryDefaultGasCost,
53
+ [Opcode.XOR]: TemporaryDefaultGasCost,
54
+ [Opcode.NOT]: TemporaryDefaultGasCost,
55
+ [Opcode.SHL]: TemporaryDefaultGasCost,
56
+ [Opcode.SHR]: TemporaryDefaultGasCost,
57
+ [Opcode.CAST]: TemporaryDefaultGasCost,
58
+ // Execution environment
59
+ [Opcode.ADDRESS]: TemporaryDefaultGasCost,
60
+ [Opcode.STORAGEADDRESS]: TemporaryDefaultGasCost,
61
+ [Opcode.ORIGIN]: TemporaryDefaultGasCost,
62
+ [Opcode.SENDER]: TemporaryDefaultGasCost,
63
+ [Opcode.PORTAL]: TemporaryDefaultGasCost,
64
+ [Opcode.FEEPERL1GAS]: TemporaryDefaultGasCost,
65
+ [Opcode.FEEPERL2GAS]: TemporaryDefaultGasCost,
66
+ [Opcode.FEEPERDAGAS]: TemporaryDefaultGasCost,
67
+ [Opcode.CONTRACTCALLDEPTH]: TemporaryDefaultGasCost,
68
+ [Opcode.CHAINID]: TemporaryDefaultGasCost,
69
+ [Opcode.VERSION]: TemporaryDefaultGasCost,
70
+ [Opcode.BLOCKNUMBER]: TemporaryDefaultGasCost,
71
+ [Opcode.TIMESTAMP]: TemporaryDefaultGasCost,
72
+ [Opcode.COINBASE]: TemporaryDefaultGasCost,
73
+ [Opcode.BLOCKL1GASLIMIT]: TemporaryDefaultGasCost,
74
+ [Opcode.BLOCKL2GASLIMIT]: TemporaryDefaultGasCost,
75
+ [Opcode.BLOCKDAGASLIMIT]: TemporaryDefaultGasCost,
76
+ [Opcode.CALLDATACOPY]: TemporaryDefaultGasCost,
77
+ // Gas
78
+ [Opcode.L1GASLEFT]: TemporaryDefaultGasCost,
79
+ [Opcode.L2GASLEFT]: TemporaryDefaultGasCost,
80
+ [Opcode.DAGASLEFT]: TemporaryDefaultGasCost,
81
+ // Control flow
82
+ [Opcode.JUMP]: TemporaryDefaultGasCost,
83
+ [Opcode.JUMPI]: TemporaryDefaultGasCost,
84
+ [Opcode.INTERNALCALL]: TemporaryDefaultGasCost,
85
+ [Opcode.INTERNALRETURN]: TemporaryDefaultGasCost,
86
+ // Memory
87
+ [Opcode.SET]: TemporaryDefaultGasCost,
88
+ [Opcode.MOV]: TemporaryDefaultGasCost,
89
+ [Opcode.CMOV]: TemporaryDefaultGasCost,
90
+ // World state
91
+ [Opcode.SLOAD]: TemporaryDefaultGasCost,
92
+ [Opcode.SSTORE]: TemporaryDefaultGasCost,
93
+ [Opcode.NOTEHASHEXISTS]: TemporaryDefaultGasCost,
94
+ [Opcode.EMITNOTEHASH]: TemporaryDefaultGasCost,
95
+ [Opcode.NULLIFIEREXISTS]: TemporaryDefaultGasCost,
96
+ [Opcode.EMITNULLIFIER]: TemporaryDefaultGasCost,
97
+ [Opcode.L1TOL2MSGEXISTS]: TemporaryDefaultGasCost,
98
+ [Opcode.HEADERMEMBER]: TemporaryDefaultGasCost,
99
+ [Opcode.EMITUNENCRYPTEDLOG]: TemporaryDefaultGasCost,
100
+ [Opcode.SENDL2TOL1MSG]: TemporaryDefaultGasCost,
101
+ [Opcode.GETCONTRACTINSTANCE]: TemporaryDefaultGasCost,
102
+ // External calls
103
+ [Opcode.CALL]: TemporaryDefaultGasCost,
104
+ [Opcode.STATICCALL]: TemporaryDefaultGasCost,
105
+ [Opcode.DELEGATECALL]: TemporaryDefaultGasCost,
106
+ [Opcode.RETURN]: TemporaryDefaultGasCost,
107
+ [Opcode.REVERT]: TemporaryDefaultGasCost,
108
+ // Gadgets
109
+ [Opcode.KECCAK]: TemporaryDefaultGasCost,
110
+ [Opcode.POSEIDON]: TemporaryDefaultGasCost,
111
+ [Opcode.SHA256]: TemporaryDefaultGasCost, // temp - may be removed, but alot of contracts rely on i: TemporaryDefaultGasCost,
112
+ [Opcode.PEDERSEN]: TemporaryDefaultGasCost, // temp - may be removed, but alot of contracts rely on i: TemporaryDefaultGasCost,t
113
+ };
114
+ /** Returns the fixed base gas cost for a given opcode, or throws if set to dynamic. */
115
+ export function getBaseGasCost(opcode) {
116
+ const cost = GasCosts[opcode];
117
+ if (cost === DynamicGasCost) {
118
+ throw new Error(`Opcode ${Opcode[opcode]} has dynamic gas cost`);
119
+ }
120
+ return cost;
121
+ }
122
+ /** Returns the gas cost associated with the memory operations performed. */
123
+ export function getMemoryGasCost(args) {
124
+ const { reads, writes, indirect } = args;
125
+ const indirectCount = Addressing.fromWire(indirect ?? 0).count(AddressingMode.INDIRECT);
126
+ const l2MemoryGasCost = (reads ?? 0) * GasCostConstants.MEMORY_READ +
127
+ (writes ?? 0) * GasCostConstants.MEMORY_WRITE +
128
+ indirectCount * GasCostConstants.MEMORY_INDIRECT_READ_PENALTY;
129
+ return makeGas({ l2Gas: l2MemoryGasCost });
130
+ }
131
+ /** Constants used in base cost calculations. */
132
+ export const GasCostConstants = {
133
+ MEMORY_READ: 10,
134
+ MEMORY_INDIRECT_READ_PENALTY: 10,
135
+ MEMORY_WRITE: 100,
136
+ };
137
+ /** Returns gas cost for an operation on a given type tag based on the base cost per byte. */
138
+ export function getGasCostForTypeTag(tag, baseCost) {
139
+ return mulGas(baseCost, getGasCostMultiplierFromTypeTag(tag));
140
+ }
141
+ /** Returns a multiplier based on the size of the type represented by the tag. Throws on uninitialized or invalid. */
142
+ function getGasCostMultiplierFromTypeTag(tag) {
143
+ switch (tag) {
144
+ case TypeTag.UINT8:
145
+ return 1;
146
+ case TypeTag.UINT16:
147
+ return 2;
148
+ case TypeTag.UINT32:
149
+ return 4;
150
+ case TypeTag.UINT64:
151
+ return 8;
152
+ case TypeTag.UINT128:
153
+ return 16;
154
+ case TypeTag.FIELD:
155
+ return 32;
156
+ case TypeTag.INVALID:
157
+ case TypeTag.UNINITIALIZED:
158
+ throw new InstructionExecutionError(`Invalid tag type for gas cost multiplier: ${TypeTag[tag]}`);
159
+ }
160
+ }
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2dhcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX2dhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBU3RFLCtDQUErQztBQUMvQyxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQVE7SUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDOUUsQ0FBQztBQUVELCtDQUErQztBQUMvQyxNQUFNLFVBQVUsWUFBWSxDQUFDLE9BQW9FO0lBQy9GLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQzFGLENBQUM7QUFFRCw4RUFBOEU7QUFDOUUsTUFBTSxVQUFVLE9BQU8sQ0FBQyxPQUFxQjtJQUMzQyxPQUFPLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sVUFBVSxNQUFNLENBQUMsR0FBRyxLQUFxQjtJQUM3QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQ2pCLENBQUMsR0FBUSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FB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
@@ -1,5 +1,5 @@
1
1
  import { type Fr } from '@aztec/circuits.js';
2
- import { type GasCost } from './avm_gas_cost.js';
2
+ import { type Gas } from './avm_gas.js';
3
3
  import { TaggedMemory } from './avm_memory_types.js';
4
4
  import { AvmContractCallResults } from './avm_message_call_result.js';
5
5
  /**
@@ -43,7 +43,9 @@ export declare class AvmMachineState {
43
43
  * Should any of the gas dimensions get depleted, it sets all gas left to zero and triggers
44
44
  * an exceptional halt by throwing an OutOfGasError.
45
45
  */
46
- consumeGas(gasCost: Partial<GasCost>): void;
46
+ consumeGas(gasCost: Partial<Gas>): void;
47
+ /** Increases the gas left by the amounts specified. */
48
+ refundGas(gasRefund: Partial<Gas>): void;
47
49
  /**
48
50
  * Most instructions just increment PC before they complete
49
51
  */
@@ -1 +1 @@
1
- {"version":3,"file":"avm_machine_state.d.ts","sourceRoot":"","sources":["../../src/avm/avm_machine_state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,KAAK,OAAO,EAAiB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAGtE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAe;IACnB,SAAS,EAAE,MAAM,CAAC;IACzB,6DAA6D;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IACzB,sBAAsB;IACf,EAAE,EAAE,MAAM,CAAK;IAEtB;;;OAGG;IACI,iBAAiB,EAAE,MAAM,EAAE,CAAM;IAExC,qCAAqC;IACrC,SAAgB,MAAM,EAAE,YAAY,CAAsB;IAE1D;;;OAGG;IACI,MAAM,EAAE,OAAO,CAAS;IAC/B,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,CAAkB;IAClC,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAY;gBAEd,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;WAMrD,SAAS,CAAC,KAAK,EAAE,sBAAsB,GAAG,eAAe;IAIvE;;;;OAIG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAiB3C;;OAEG;IACI,WAAW;IAIlB;;;;OAIG;IACI,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE;IAK1B;;;;OAIG;IACI,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE;IAM1B;;OAEG;IACH,SAAS,CAAC,eAAe;IAMzB;;;OAGG;IACI,UAAU,IAAI,sBAAsB;CAM5C"}
1
+ {"version":3,"file":"avm_machine_state.d.ts","sourceRoot":"","sources":["../../src/avm/avm_machine_state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,KAAK,GAAG,EAAiB,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAGtE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAe;IACnB,SAAS,EAAE,MAAM,CAAC;IACzB,6DAA6D;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IACzB,sBAAsB;IACf,EAAE,EAAE,MAAM,CAAK;IAEtB;;;OAGG;IACI,iBAAiB,EAAE,MAAM,EAAE,CAAM;IAExC,qCAAqC;IACrC,SAAgB,MAAM,EAAE,YAAY,CAAsB;IAE1D;;;OAGG;IACI,MAAM,EAAE,OAAO,CAAS;IAC/B,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,CAAkB;IAClC,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAY;gBAEd,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;WAMrD,SAAS,CAAC,KAAK,EAAE,sBAAsB,GAAG,eAAe;IAIvE;;;;OAIG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;IAiBvC,uDAAuD;IAChD,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC;IAMxC;;OAEG;IACI,WAAW;IAIlB;;;;OAIG;IACI,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE;IAK1B;;;;OAIG;IACI,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE;IAM1B;;OAEG;IACH,SAAS,CAAC,eAAe;IAMzB;;;OAGG;IACI,UAAU,IAAI,sBAAsB;CAM5C"}
@@ -1,4 +1,4 @@
1
- import { GasDimensions } from './avm_gas_cost.js';
1
+ import { GasDimensions } from './avm_gas.js';
2
2
  import { TaggedMemory } from './avm_memory_types.js';
3
3
  import { AvmContractCallResults } from './avm_message_call_result.js';
4
4
  import { OutOfGasError } from './errors.js';
@@ -51,6 +51,12 @@ export class AvmMachineState {
51
51
  this[`${dimension}Left`] -= gasCost[dimension] ?? 0;
52
52
  }
53
53
  }
54
+ /** Increases the gas left by the amounts specified. */
55
+ refundGas(gasRefund) {
56
+ for (const dimension of GasDimensions) {
57
+ this[`${dimension}Left`] += gasRefund[dimension] ?? 0;
58
+ }
59
+ }
54
60
  /**
55
61
  * Most instructions just increment PC before they complete
56
62
  */
@@ -95,4 +101,4 @@ export class AvmMachineState {
95
101
  return new AvmContractCallResults(this.reverted, this.output);
96
102
  }
97
103
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX21hY2hpbmVfc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2F2bV9tYWNoaW5lX3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFXNUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQTJCMUIsWUFBWSxTQUFpQixFQUFFLFNBQWlCLEVBQUUsU0FBaUI7UUF0Qm5FLHNCQUFzQjtRQUNmLE9BQUUsR0FBVyxDQUFDLENBQUM7UUFFdEI7OztXQUdHO1FBQ0ksc0JBQWlCLEdBQWEsRUFBRSxDQUFDO1FBRXhDLHFDQUFxQztRQUNyQixXQUFNLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUQ7OztXQUdHO1FBQ0ksV0FBTSxHQUFZLEtBQUssQ0FBQztRQUMvQiwyRkFBMkY7UUFDbkYsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUNsQyxzREFBc0Q7UUFDOUMsV0FBTSxHQUFTLEVBQUUsQ0FBQztRQUd4QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUE2QjtRQUNuRCxPQUFPLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsT0FBeUI7UUFDekMsaURBQWlEO1FBQ2pELE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FDN0MsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDdEUsQ0FBQztRQUNGLHVDQUF1QztRQUN2QyxvRkFBb0Y7UUFDcEYsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsMENBQTBDO1FBQzFDLEtBQUssTUFBTSxTQUFTLElBQUksYUFBYSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLEdBQUcsU0FBUyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQVk7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBWTtRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxlQUFlO1FBQ3ZCLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxPQUFPLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGIn0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX21hY2hpbmVfc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2F2bV9tYWNoaW5lX3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBWSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFXNUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQTJCMUIsWUFBWSxTQUFpQixFQUFFLFNBQWlCLEVBQUUsU0FBaUI7UUF0Qm5FLHNCQUFzQjtRQUNmLE9BQUUsR0FBVyxDQUFDLENBQUM7UUFFdEI7OztXQUdHO1FBQ0ksc0JBQWlCLEdBQWEsRUFBRSxDQUFDO1FBRXhDLHFDQUFxQztRQUNyQixXQUFNLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUQ7OztXQUdHO1FBQ0ksV0FBTSxHQUFZLEtBQUssQ0FBQztRQUMvQiwyRkFBMkY7UUFDbkYsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUNsQyxzREFBc0Q7UUFDOUMsV0FBTSxHQUFTLEVBQUUsQ0FBQztRQUd4QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUE2QjtRQUNuRCxPQUFPLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsT0FBcUI7UUFDckMsaURBQWlEO1FBQ2pELE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FDN0MsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDdEUsQ0FBQztRQUNGLHVDQUF1QztRQUN2QyxvRkFBb0Y7UUFDcEYsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsMENBQTBDO1FBQzFDLEtBQUssTUFBTSxTQUFTLElBQUksYUFBYSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLEdBQUcsU0FBUyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsdURBQXVEO0lBQ2hELFNBQVMsQ0FBQyxTQUF1QjtRQUN0QyxLQUFLLE1BQU0sU0FBUyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxHQUFHLFNBQVMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxNQUFZO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQVk7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ08sZUFBZTtRQUN2QixhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFVBQVU7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRiJ9