@layerzerolabs/protocol-stellar-v2 0.2.19 → 0.2.21

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 (249) hide show
  1. package/.turbo/turbo-build.log +795 -791
  2. package/.turbo/turbo-lint.log +325 -155
  3. package/.turbo/turbo-test.log +1398 -1277
  4. package/Cargo.lock +122 -111
  5. package/Cargo.toml +32 -16
  6. package/contracts/common-macros/Cargo.toml +7 -7
  7. package/contracts/common-macros/src/auth.rs +18 -37
  8. package/contracts/common-macros/src/contract_ttl.rs +18 -7
  9. package/contracts/common-macros/src/lib.rs +31 -14
  10. package/contracts/common-macros/src/lz_contract.rs +38 -7
  11. package/contracts/common-macros/src/storage.rs +251 -292
  12. package/contracts/common-macros/src/tests/contract_ttl.rs +1 -1
  13. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +6 -12
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +12 -17
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +2 -1
  16. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +2 -7
  17. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +20 -14
  18. package/contracts/common-macros/src/tests/upgradeable.rs +26 -4
  19. package/contracts/common-macros/src/ttl_configurable.rs +2 -10
  20. package/contracts/common-macros/src/ttl_extendable.rs +2 -10
  21. package/contracts/common-macros/src/upgradeable.rs +61 -26
  22. package/contracts/common-macros/src/utils.rs +0 -9
  23. package/contracts/endpoint-v2/src/lib.rs +3 -2
  24. package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +2 -2
  25. package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +3 -3
  26. package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +4 -4
  27. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +17 -5
  28. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
  29. package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +2 -2
  30. package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +2 -2
  31. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +6 -6
  32. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +67 -37
  33. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +5 -5
  34. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +44 -54
  35. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +7 -7
  36. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +8 -8
  37. package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +3 -3
  38. package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +4 -4
  39. package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +3 -3
  40. package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +2 -2
  41. package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +3 -3
  42. package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +2 -2
  43. package/contracts/layerzero-views/Cargo.toml +0 -1
  44. package/contracts/layerzero-views/src/layerzero_view.rs +1 -13
  45. package/contracts/macro-integration-tests/Cargo.toml +5 -15
  46. package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +48 -0
  47. package/contracts/macro-integration-tests/tests/runtime/oapp/oapp_core.rs +170 -0
  48. package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +154 -0
  49. package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +338 -0
  50. package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +435 -0
  51. package/contracts/macro-integration-tests/tests/runtime.rs +1 -0
  52. package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.rs +8 -0
  53. package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.stderr +5 -0
  54. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +8 -0
  55. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +71 -0
  56. package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.rs +10 -0
  57. package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.stderr +5 -0
  58. package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.rs +8 -0
  59. package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.stderr +5 -0
  60. package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.rs +8 -0
  61. package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.stderr +5 -0
  62. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +38 -0
  63. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +96 -0
  64. package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +64 -0
  65. package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +46 -0
  66. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +8 -0
  67. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +1 -1
  68. package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +1 -1
  69. package/contracts/macro-integration-tests/tests/ui_oapp.rs +11 -0
  70. package/contracts/message-libs/message-lib-common/Cargo.toml +0 -1
  71. package/contracts/message-libs/message-lib-common/src/errors.rs +1 -1
  72. package/contracts/message-libs/treasury/Cargo.toml +0 -2
  73. package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +2 -2
  74. package/contracts/message-libs/uln-302/src/events.rs +4 -0
  75. package/contracts/message-libs/uln-302/src/send_uln.rs +22 -6
  76. package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +2 -2
  77. package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +2 -2
  78. package/contracts/message-libs/uln-302/src/tests/receive_uln302/verify.rs +2 -2
  79. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_executor_config.rs +2 -2
  80. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +2 -2
  81. package/contracts/message-libs/uln-302/src/tests/send_uln302/send.rs +21 -67
  82. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
  83. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +2 -2
  84. package/contracts/oapps/counter/Cargo.toml +5 -6
  85. package/contracts/oapps/counter/integration_tests/setup_uln.rs +1 -1
  86. package/contracts/oapps/counter/integration_tests/utils.rs +19 -12
  87. package/contracts/oapps/oapp/src/errors.rs +1 -1
  88. package/contracts/oapps/oapp/src/interfaces/mod.rs +3 -0
  89. package/contracts/oapps/oapp/src/interfaces/oapp_msg_inspector.rs +47 -0
  90. package/contracts/oapps/oapp/src/lib.rs +1 -0
  91. package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +4 -4
  92. package/contracts/oapps/oapp/src/oapp_core.rs +5 -5
  93. package/contracts/oapps/oapp/src/oapp_options_type3.rs +12 -4
  94. package/contracts/oapps/oapp/src/oapp_receiver.rs +14 -9
  95. package/contracts/oapps/oapp/src/tests/mod.rs +4 -4
  96. package/contracts/oapps/oapp/src/tests/oapp_core.rs +223 -0
  97. package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +240 -0
  98. package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +381 -0
  99. package/contracts/oapps/oapp/src/tests/oapp_sender.rs +569 -0
  100. package/contracts/oapps/oapp-macros/Cargo.toml +8 -4
  101. package/contracts/oapps/oapp-macros/src/generators.rs +9 -34
  102. package/contracts/oapps/oapp-macros/src/lib.rs +3 -0
  103. package/contracts/oapps/oapp-macros/src/tests/mod.rs +2 -0
  104. package/contracts/oapps/oapp-macros/src/tests/oapp.rs +88 -0
  105. package/contracts/oapps/oapp-macros/src/tests/parse_custom_impls.rs +86 -0
  106. package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +103 -0
  107. package/contracts/oapps/oft/integration-tests/utils.rs +28 -8
  108. package/contracts/oapps/oft/src/extensions/oft_fee.rs +153 -75
  109. package/contracts/oapps/oft/src/extensions/pausable.rs +61 -12
  110. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +198 -134
  111. package/contracts/oapps/oft/src/oft.rs +45 -50
  112. package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
  113. package/contracts/oapps/oft/src/oft_types/mint_burn.rs +4 -26
  114. package/contracts/oapps/oft-core/Cargo.toml +1 -4
  115. package/contracts/oapps/oft-core/integration-tests/setup.rs +3 -3
  116. package/contracts/oapps/oft-core/integration-tests/utils.rs +21 -3
  117. package/contracts/oapps/oft-core/src/errors.rs +3 -2
  118. package/contracts/oapps/oft-core/src/events.rs +6 -0
  119. package/contracts/oapps/oft-core/src/lib.rs +1 -1
  120. package/contracts/oapps/oft-core/src/oft_core.rs +341 -246
  121. package/contracts/oapps/oft-core/src/storage.rs +7 -3
  122. package/contracts/oapps/oft-core/src/tests/mod.rs +1 -0
  123. package/contracts/oapps/oft-core/src/tests/test_decimals.rs +37 -2
  124. package/contracts/oapps/oft-core/src/tests/test_lz_receive.rs +2 -2
  125. package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +323 -0
  126. package/contracts/oapps/oft-core/src/tests/test_send.rs +2 -2
  127. package/contracts/oapps/oft-core/src/tests/test_utils.rs +61 -16
  128. package/contracts/upgrader/src/lib.rs +30 -57
  129. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
  130. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
  131. package/contracts/upgrader/src/tests/test_upgrader.rs +44 -35
  132. package/contracts/utils/Cargo.toml +0 -1
  133. package/contracts/utils/src/buffer_reader.rs +1 -0
  134. package/contracts/utils/src/errors.rs +4 -2
  135. package/contracts/utils/src/multisig.rs +17 -8
  136. package/contracts/utils/src/ownable.rs +6 -6
  137. package/contracts/utils/src/testing_utils.rs +124 -54
  138. package/contracts/utils/src/tests/multisig.rs +12 -12
  139. package/contracts/utils/src/tests/ownable.rs +6 -6
  140. package/contracts/utils/src/tests/testing_utils.rs +50 -167
  141. package/contracts/utils/src/tests/ttl_configurable.rs +5 -5
  142. package/contracts/utils/src/tests/upgradeable.rs +372 -175
  143. package/contracts/utils/src/ttl_configurable.rs +13 -7
  144. package/contracts/utils/src/upgradeable.rs +48 -23
  145. package/contracts/workers/dvn/Cargo.toml +6 -6
  146. package/contracts/workers/dvn/src/auth.rs +12 -42
  147. package/contracts/workers/dvn/src/dvn.rs +15 -40
  148. package/contracts/workers/dvn/src/errors.rs +0 -1
  149. package/contracts/workers/dvn/src/interfaces/dvn.rs +35 -0
  150. package/contracts/workers/dvn/src/lib.rs +4 -3
  151. package/contracts/workers/dvn/src/tests/auth.rs +1 -1
  152. package/contracts/workers/dvn/src/tests/dvn.rs +19 -15
  153. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -4
  154. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +1 -3
  155. package/contracts/workers/dvn/src/tests/setup.rs +5 -9
  156. package/contracts/workers/dvn-fee-lib/Cargo.toml +2 -2
  157. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +38 -22
  158. package/contracts/workers/dvn-fee-lib/src/lib.rs +12 -2
  159. package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +17 -16
  160. package/contracts/workers/executor/Cargo.toml +4 -0
  161. package/contracts/workers/executor/src/executor.rs +15 -36
  162. package/contracts/workers/executor/src/lib.rs +2 -2
  163. package/contracts/workers/executor/src/tests/auth.rs +394 -0
  164. package/contracts/workers/executor/src/tests/executor.rs +410 -0
  165. package/contracts/workers/executor/src/tests/mod.rs +3 -0
  166. package/contracts/workers/executor/src/tests/setup.rs +250 -0
  167. package/contracts/workers/executor-fee-lib/Cargo.toml +7 -1
  168. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +62 -15
  169. package/contracts/workers/executor-fee-lib/src/executor_option.rs +28 -1
  170. package/contracts/workers/executor-fee-lib/src/lib.rs +11 -2
  171. package/contracts/workers/executor-fee-lib/src/tests/executor_fee_lib.rs +701 -0
  172. package/contracts/workers/executor-fee-lib/src/tests/executor_option.rs +370 -0
  173. package/contracts/workers/executor-fee-lib/src/tests/mod.rs +4 -0
  174. package/contracts/workers/executor-fee-lib/src/tests/setup.rs +60 -0
  175. package/contracts/workers/executor-helper/Cargo.toml +0 -1
  176. package/contracts/workers/executor-helper/src/lib.rs +3 -0
  177. package/contracts/workers/executor-helper/src/tests/executor_helper.rs +184 -0
  178. package/contracts/workers/executor-helper/src/tests/mod.rs +2 -0
  179. package/contracts/workers/executor-helper/src/tests/setup.rs +366 -0
  180. package/contracts/workers/fee-lib-interfaces/Cargo.toml +14 -0
  181. package/contracts/workers/{worker/src/interfaces/mod.rs → fee-lib-interfaces/src/lib.rs} +4 -3
  182. package/contracts/workers/price-feed/Cargo.toml +7 -1
  183. package/contracts/workers/price-feed/src/events.rs +1 -1
  184. package/contracts/workers/price-feed/src/lib.rs +12 -4
  185. package/contracts/workers/price-feed/src/price_feed.rs +5 -21
  186. package/contracts/workers/price-feed/src/storage.rs +1 -1
  187. package/contracts/workers/price-feed/src/tests/mod.rs +2 -0
  188. package/contracts/workers/price-feed/src/tests/price_feed.rs +869 -0
  189. package/contracts/workers/price-feed/src/tests/setup.rs +70 -0
  190. package/contracts/workers/price-feed/src/types.rs +1 -1
  191. package/contracts/workers/worker/src/errors.rs +1 -4
  192. package/contracts/workers/worker/src/lib.rs +0 -2
  193. package/contracts/workers/worker/src/storage.rs +32 -29
  194. package/contracts/workers/worker/src/tests/setup.rs +2 -8
  195. package/contracts/workers/worker/src/tests/worker.rs +96 -74
  196. package/contracts/workers/worker/src/worker.rs +75 -75
  197. package/docs/error-spec.md +55 -0
  198. package/docs/layerzero-v2-on-stellar.md +447 -0
  199. package/docs/oapp-guide.md +212 -0
  200. package/docs/oft-guide.md +314 -0
  201. package/package.json +3 -3
  202. package/sdk/.turbo/turbo-test.log +268 -263
  203. package/sdk/dist/generated/bml.d.ts +12 -4
  204. package/sdk/dist/generated/bml.js +9 -7
  205. package/sdk/dist/generated/counter.d.ts +306 -298
  206. package/sdk/dist/generated/counter.js +48 -46
  207. package/sdk/dist/generated/dvn.d.ts +450 -411
  208. package/sdk/dist/generated/dvn.js +66 -64
  209. package/sdk/dist/generated/dvn_fee_lib.d.ts +294 -338
  210. package/sdk/dist/generated/dvn_fee_lib.js +33 -64
  211. package/sdk/dist/generated/endpoint.d.ts +108 -100
  212. package/sdk/dist/generated/endpoint.js +21 -19
  213. package/sdk/dist/generated/executor.d.ts +414 -370
  214. package/sdk/dist/generated/executor.js +58 -55
  215. package/sdk/dist/generated/executor_fee_lib.d.ts +333 -377
  216. package/sdk/dist/generated/executor_fee_lib.js +34 -65
  217. package/sdk/dist/generated/executor_helper.d.ts +26 -190
  218. package/sdk/dist/generated/executor_helper.js +23 -28
  219. package/sdk/dist/generated/layerzero_view.d.ts +1271 -0
  220. package/sdk/dist/generated/layerzero_view.js +294 -0
  221. package/sdk/dist/generated/oft.d.ts +408 -385
  222. package/sdk/dist/generated/oft.js +89 -92
  223. package/sdk/dist/generated/price_feed.d.ts +385 -429
  224. package/sdk/dist/generated/price_feed.js +50 -81
  225. package/sdk/dist/generated/sml.d.ts +108 -100
  226. package/sdk/dist/generated/sml.js +21 -19
  227. package/sdk/dist/generated/treasury.d.ts +108 -100
  228. package/sdk/dist/generated/treasury.js +21 -19
  229. package/sdk/dist/generated/uln302.d.ts +108 -100
  230. package/sdk/dist/generated/uln302.js +23 -21
  231. package/sdk/dist/generated/upgrader.d.ts +189 -18
  232. package/sdk/dist/generated/upgrader.js +84 -4
  233. package/sdk/dist/index.d.ts +1 -0
  234. package/sdk/dist/index.js +2 -0
  235. package/sdk/package.json +1 -1
  236. package/sdk/src/index.ts +3 -0
  237. package/sdk/test/oft-sml.test.ts +4 -4
  238. package/sdk/test/suites/localnet.ts +84 -20
  239. package/sdk/test/upgrader.test.ts +2 -3
  240. package/tools/ts-bindings-gen/src/main.rs +2 -1
  241. package/contracts/ERROR_SPEC.md +0 -44
  242. package/contracts/endpoint-v2/ARCHITECTURE.md +0 -233
  243. package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -175
  244. package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -212
  245. package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -153
  246. package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -294
  247. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/dvn_fee_lib.rs +0 -0
  248. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/executor_fee_lib.rs +0 -0
  249. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/price_feed.rs +0 -0
@@ -4,44 +4,21 @@ import type { u32, u64, u128, i128, Option } from '@stellar/stellar-sdk/contract
4
4
  export * from '@stellar/stellar-sdk';
5
5
  export * as contract from '@stellar/stellar-sdk/contract';
6
6
  export * as rpc from '@stellar/stellar-sdk/rpc';
7
- export type MigrationData = void;
8
7
  /**
9
8
  * Embedded WASM bytecode (base64-encoded)
10
- * Size: 34996 bytes (34.18 KB)
9
+ * Size: 33995 bytes (33.20 KB)
11
10
  */
12
- export declare const WASM_BASE64 = "AGFzbQEAAAABlgEaYAR+fn5+AX5gAn5+AX5gA35+fgF+YAF+AX5gAAF+YAN/f38AYAF/AX5gAn9/AGACfn4Bf2ACf34AYAN/fn4AYAABf2ABfwBgAABgAn5/AGABfgBgAn5/AX5gBH9/f38BfmAFf39/fn4AYAF/AX9gAn9/AX5gBX5/f39/AGABfgF/YAJ+fgBgBH9+fn8AYAV/fn5+fgACnQEaAWwBNwAAAWwBMQABAWwBXwACAWEBMAADAWIBOAADAWwBNgADAWkBNgABAWwBMgABAXgBMQABAXYBMwADAXYBMQABAXYBZwABAWIBagABAW0BOQACAW0BYQAAAXgBMAABAXgBMwAEAXgBOAAEAWwBMAABAWwBOAABAXgBNQADAWkBXwADAWkBMAADAWkBMwABAWkBNQADAWkBNAADA2ppBQYHCAkKAQsMBwYNBAQMDg0MDwYMBQkKEAkRBgcBDwwDDAMEBAEPABISEwcMDQwKBAMECQEUAwMDAxUBDwcBCQEDFgQMBAwDCAkBCQsFBgQHFAQEAQQEAxcBDQoEDQQNBQkFBxgYGRkZBQMBABEGIQR/AUGAgMAAC38AQZiDwAALfwBB0IbAAAt/AEHQhsAACweSBSIGbWVtb3J5AgAHdXBncmFkZQA6B21pZ3JhdGUAPAphdXRob3JpemVyAD4NX19jb25zdHJ1Y3RvcgA/E2VzdGltYXRlX2ZlZV9ieV9laWQAQRZuYXRpdmVfdG9rZW5fcHJpY2VfdXNkAEoJZ2V0X3ByaWNlAEsbZ2V0X3ByaWNlX3JhdGlvX2Rlbm9taW5hdG9yAEwRc2V0X3ByaWNlX3VwZGF0ZXIAThtzZXRfcHJpY2VfcmF0aW9fZGVub21pbmF0b3IAUSBzZXRfYXJiaXRydW1fY29tcHJlc3Npb25fcGVyY2VudABSFXNldF9laWRfdG9fbW9kZWxfdHlwZQBTCXNldF9wcmljZQBVFnNldF9wcmljZV9mb3JfYXJiaXRydW0AWBpzZXRfbmF0aXZlX3Rva2VuX3ByaWNlX3VzZABaEGlzX3ByaWNlX3VwZGF0ZXIAWxxhcmJpdHJ1bV9jb21wcmVzc2lvbl9wZXJjZW50AF0SYXJiaXRydW1fcHJpY2VfZXh0AF8RZWlkX3RvX21vZGVsX3R5cGUAYQ9zZXRfdHRsX2NvbmZpZ3MAZAt0dGxfY29uZmlncwBpEmZyZWV6ZV90dGxfY29uZmlncwBsFWlzX3R0bF9jb25maWdzX2Zyb3plbgBtE2V4dGVuZF9pbnN0YW5jZV90dGwAbgVvd25lcgBvDXBlbmRpbmdfb3duZXIAcBJ0cmFuc2Zlcl9vd25lcnNoaXAAcRpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgBzEGFjY2VwdF9vd25lcnNoaXAAdhJyZW5vdW5jZV9vd25lcnNoaXAAeAFfAwEKX19kYXRhX2VuZAMCC19faGVhcF9iYXNlAwMKkX5pJQAgABCbgICAAEIBIAGtQiCGQgSEIAKtQiCGQgSEEICAgIAAGguEAwIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgcAAQIDBAUGAAsgAUGAgMCAAEEVEK+AgIAAIAEoAgANByABIAEpAwgQsICAgAAMBgsgAUGVgMCAAEEMEK+AgIAAIAEoAgANBiABIAEpAwggACkDCBCxgICAAAwFCyABQaGAwIAAQREQr4CAgAAgASgCAA0FIAEgASkDCCAANQIEQiCGQgSEELGAgIAADAQLIAFBsoDAgABBEBCvgICAACABKAIADQQgASABKQMIELCAgIAADAMLIAFBwoDAgABBDhCvgICAACABKAIADQMgASABKQMIELCAgIAADAILIAFB0IDAgABBGhCvgICAACABKAIADQIgASABKQMIELCAgIAADAELIAFB6oDAgABBDhCvgICAACABKAIADQEgASABKQMIIAA1AgRCIIZCBIQQsYCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAguNAQIBfwF+I4CAgIAAQSBrIgIkgICAgAACQAJAAkAgARCbgICAACIDQgIQnYCAgAANAEIAIQMMAQsgAiADQgIQgYCAgAAQnoCAgAAgAigCAEEBRg0BIAIpAxAhAyAAIAIpAxg3AxggACADNwMQQgEhAwsgACADNwMAIABCADcDCCACQSBqJICAgIAADwsACw8AIAAgARCSgICAAEIBUQt7AgF/AX4CQAJAAkAgAadB/wFxIgJBxABGDQAgAkEKRw0BQgAhAyAAQgA3AxggACABQgiINwMQDAILIAEQmICAgAAhAyABEJmAgIAAIQEgACADNwMYIAAgATcDEEIAIQMMAQsgAEKDkICAgAE3AwhCASEDCyAAIAM3AwALHQAgABCbgICAACABIAIQoICAgABCAhCCgICAABoLQwEBfyOAgICAAEEQayICJICAgIAAIAIgACABEMmAgIAAAkAgAigCAEEBRw0AAAsgAikDCCEBIAJBEGokgICAgAAgAQuLAQICfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahCigICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQo4CAgAALQQAhAQJAQQAQpICAgAAiAkICEJ2AgIAARQ0AQQEhAQJAAkAgAkICEIGAgIAAp0H/AXEOAgECAAsAC0EAIQELIABBEGokgICAgAAgAQsMACAAQQEQ/YCAgAALGwAgAK1CIIZCBIQgAa1CIIZCBIQQk4CAgAAaC8IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAAkACQCAAQf8BcQ4DAAECAAsgAUGahcCAAEEGEK+AgIAAIAEoAgANAyABIAEpAwgQsICAgAAMAgsgAUGghcCAAEEIEK+AgIAAIAEoAgANAiABIAEpAwgQsICAgAAMAQsgAUGohcCAAEEKEK+AgIAAIAEoAgANASABIAEpAwgQsICAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgsPABCmgICAABCDgICAABoLZgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABCigICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQo4CAgAALIAAQqICAgAAgACkDCCEBIAApAwBBiggQqYCAgAAgAEEQaiSAgICAACABC0oCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQqICAgAAgACkDCCEBIAApAwBBiggQqYCAgAAgARCDgICAABogAEEQaiSAgICAACABC1ABAX8jgICAgABBEGsiASSAgICAACABQQRqEKKAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBCjgICAAAsgABCugICAACABQRBqJICAgIAACykAAkAgAKdBAXFFDQAPCyABQfp3aq1CIIZCg4CAgOCAAXwQrICAgAAAC0IBAX8jgICAgABBEGsiACSAgICAACAAEKuAgIAAAkAgACkDAFANAEKDgICAsIEBEKyAgIAAAAsgAEEQaiSAgICAAAuTAQIBfwJ+I4CAgIAAQRBrIgEkgICAgAAgAUEEahCigICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQo4CAgAALQgAhAgJAAkBBARCtgICAACIDQgAQnYCAgABFDQAgA0IAEIGAgIAAIgJC/wGDQs0AUg0BIAAgAjcDCEIBIQILIAAgAjcDACABQRBqJICAgIAADwsACwsAIAAQlICAgAAaC5IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAIABBAXFFDQAgAUGthMCAAEEMEK+AgIAAIAEoAgANAiABIAEpAwgQsICAgAAMAQsgAUGohMCAAEEFEK+AgIAAIAEoAgANASABIAEpAwgQsICAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgtNAQJ+QgAhAQJAAkBBABCtgICAACICQgIQnYCAgABFDQAgAkICEIGAgIAAIgFC/wGDQs0AUg0BIAAgATcDCEIBIQELIAAgATcDAA8LAAtRAgF/AX4jgICAgABBEGsiAySAgICAACADIAEgAhD6gICAAEIBIQQCQCADKAIADQAgACADKQMINwMIQgAhBAsgACAENwMAIANBEGokgICAgAALRAEBfyOAgICAAEEQayICJICAgIAAIAIgATcDCCACQQhqQQEQ64CAgAAhASAAQgA3AwAgACABNwMIIAJBEGokgICAgAALSAEBfyOAgICAAEEQayIDJICAgIAAIAMgAjcDCCADIAE3AwAgA0ECEOuAgIAAIQIgAEIANwMAIAAgAjcDCCADQRBqJICAgIAAC2kBAX8jgICAgABBIGsiAiSAgICAACACQRBqIAAQs4CAgAACQCACKAIQQQFHDQAACyACIAIpAxg3AwggAiABrUIghkIEhDcDAEG4gsCAAEECIAJBAhC0gICAACEAIAJBIGokgICAgAAgAAs7AAJAAkAgAUL//////////wBWDQAgAUIIhkIGhCEBDAELIAEQlYCAgAAhAQsgAEIANwMAIAAgATcDCAsuAAJAIAEgA0YNAAALIACtQiCGQgSEIAKtQiCGQgSEIAGtQiCGQgSEEI2AgIAAC0MCAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABC2gICAAAJAIAEoAgBBAUcNAAALIAEpAwghAiABQRBqJICAgIAAIAILrQEC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AAALIAAgBDcDECAAIAo3AwAgACADNwMYIAAgCTcDCCAFQYACaiSAgICAAAvPAQIBfwF+I4CAgIAAQSBrIgEkgICAgAAgARCigICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQo4CAgAALIAFBBjYCACABIAA2AgRBACEAAkAgARCbgICAACICQgEQnYCAgABFDQACQAJAAkAgAkIBEIGAgIAAIgJC/wGDQgRSDQAgAkKAgICAMFoNACACQiCIIQIgAUEUahC5gICAACABKAIUDQEMAgsACyABIAEoAhggASgCHBCagICAAAsgAqchAAsgAUEgaiSAgICAACAAC6ECAgF/AX4jgICAgABBwABrIgIkgICAgAAgAkEQahCigICAAAJAIAIoAhBBAUcNACACKAIUIAIoAhgQo4CAgAALIAJBAjYCACACIAE2AgQCQAJAAkAgAhCbgICAACIDQgEQnYCAgABFDQAgAkEQaiADQgEQgYCAgAAQzYCAgAAgAigCEEEBcUUNAQALIABCADcDCCAAQgA3AwAMAQsgACACKQMgNwMQIABBKGogAkEQakEoaikDADcDACAAQSBqIAJBEGpBIGopAwA3AwAgAEEYaiACQRBqQRhqKQMANwMAIABCADcDCCAAQgE3AwAgAkEQahC5gICAACACKAIQQQFHDQAgAiACKAIUIAIoAhgQmoCAgAALIAJBwABqJICAgIAAC/oDBAF/BX4BfwJ+I4CAgIAAQaABayIBJICAgIAAIAFBgAFqEKKAgIAAAkAgASgCgAFBAUcNACABKAKEASABKAKIARCjgICAAAsgAUEANgJwIAFBgAFqIAFB8ABqEJyAgIAAIAEpA5gBIQIgASkDkAEhAyABKQOAASEEQgohBUIBIQZBFCEHQgAhCEIAIQkCQAJAA0ACQCAHQQFLDQAgAUHAAGogCEIAIAVCABCCgYCAACABQdAAaiAJQgAgBkIAEIKBgIAAIAFB4ABqIAZCACAFQgAQgoGAgAAgCEIAUiAJQgBScSABKQNIQgBSciABKQNYQgBSciABKQNoIgUgASkDQCABKQNQfHwiCSAFVHJFDQIMAwsCQCAHQQFxRQ0AIAFBEGogCEIAIAVCABCCgYCAACABQSBqIAlCACAGQgAQgoGAgAAgAUEwaiAGQgAgBUIAEIKBgIAAIAhCAFIgCUIAUnEgASkDGEIAUnIgASkDKEIAUnIgASkDOCIGIAEpAxAgASkDIHx8IgggBlRyDQMgASkDMCEGCyABIAUgCSAFIAkQgoGAgAAgB0EBdiEHIAEpAwghCSABKQMAIQUMAAsLIAEpA2AhBSAAIAIgCSAEp0EBcSIHGzcDCCAAIAMgBSAHGzcDACABQaABaiSAgICAAA8LEMeAgIAAAAsJABD5gICAAAALigEDAX8BfgF/I4CAgIAAQTBrIgEkgICAgAAgAUEQahCigICAAAJAIAEoAhBBAUcNACABKAIUIAEoAhgQo4CAgAALIAFBBDYCACABQRBqIAEQnICAgAAgASkDICECIAAgASkDKEIAIAEoAhBBAXEiAxs3AwggACACQgAgAxs3AwAgAUEwaiSAgICAAAtGAAJAAkAgAUL//////////wBWIAJCAFIgAlAbDQAgAUIIhkIKhCECDAELIAIgARCXgICAACECCyAAQgA3AwAgACACNwMICz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQyICAgAAgACkDACAAKQMIEKCAgIAAIQEgAEEQaiSAgICAACABC3kBAX8jgICAgABBwABrIgEkgICAgAACQCAAQv8Bg0IEUg0AIAEgAEIgiKcQxYCAgAACQAJAIAEoAgBBAXENAEICIQAMAQsgAUEwaiABQRBqELaAgIAAIAEoAjBBAXENASABKQM4IQALIAFBwABqJICAgIAAIAAPCwALPgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABDGgICAACAAKQMAIAApAwgQoICAgAAhASAAQRBqJICAgIAAIAELgQICAn8DfiOAgICAAEHAAGsiAiSAgICAAEEAIQMCQANAIANBGEYNASACQQhqIANqQgI3AwAgA0EIaiEDDAALC0IAIQRCASEFAkAgAUL/AYNCzABSDQAgAUHkhcCAAEEDIAJBCGpBAxDUgICAACACKQMIIgFC/wGDQgRSDQAgAkEgaiACKQMQEOOAgIAAIAIoAiANACACKQMoIQYgAkEgaiACKQMYEJ6AgIAAIAIoAiBBAUYNACACKQMwIQQgACACKQM4NwMYIAAgBDcDECAAIAFCIIinNgIoIAAgBjcDIEIAIQVCACEECyAAIAU3AwAgACAENwMIIAJBwABqJICAgIAAC/IBAQJ/I4CAgIAAQRBrIgIkgICAgAACQCAAQv8Bg0LNAFINAEEBIAGnQf8BcSIDQQBHQQF0IANBAUYbIgNBAkYNABClgICAACACEKKAgIAAAkAgAigCAEEBRw0AIAIoAgQgAigCCBCjgICAAAsCQAJAIANBAXENACACQQE2AgAgAiAANwMIIAIQm4CAgABCARCHgICAABoMAQsgABC4gICAAAtB+IDAgABBERDPgICAABDQgICAACEBIAIgADcDCCACIAOtNwMAIAFBmIHAgABBAiACQQIQtICAgAAQiICAgAAaIAJBEGokgICAgABCAg8LAAtFAgF/AX4jgICAgABBEGsiAiSAgICAACACIAAgARD6gICAAAJAIAIoAgBBAUcNAAALIAIpAwghAyACQRBqJICAgIAAIAMLYwMBfwF+AX8jgICAgABBEGsiASSAgICAACABIAA3AwBCAiECQQEhAwJAA0AgA0UNASADQX9qIQMgACECDAALCyABIAI3AwggAUEIakEBEOuAgIAAIQAgAUEQaiSAgICAACAAC6MBAgF/AX4jgICAgABBIGsiASSAgICAACABIAAQnoCAgAACQAJAIAEoAgBBAUYNACABKQMYIQAgASkDECECEKWAgIAAIAEQooCAgAACQCABKAIAQQFHDQAgASgCBCABKAIIEKOAgIAACyACIACEQgBRDQEgAUEANgIAIAEgAiAAEJ+AgIAAIAFBIGokgICAgABCAg8LAAtCg4CAgBAQrICAgAAAC4kBAgF/AX4jgICAgABBIGsiASSAgICAACABIAAQnoCAgAACQCABKAIAQQFGDQAgASkDGCEAIAEpAxAhAhClgICAACABEKKAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBCjgICAAAsgAUEFNgIAIAEgAiAAEJ+AgIAAIAFBIGokgICAgABCAg8LAAuXAwUBfwN+AX8BfgF/I4CAgIAAQSBrIgEkgICAgAACQCAAQv8Bg0LLAFINABClgICAACABEKKAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBCjgICAAAsgABCJgICAAEIgiCECQgAhAwNAAkACQAJAIAMgAlENACAAIANCIIZCBIQQioCAgAAhBEEAIQUCQANAIAVBEEYNASABIAVqQgI3AwAgBUEIaiEFDAALC0EDIQUgBEL/AYNCzABSDQEgBEGIg8CAAEECIAFBAhDUgICAACABKQMAIgRC/wGDQgRSDQEgASkDCCIGQv8Bg0IEUg0CIARCIIinIQcgBkIgiKciBUEDIAVBA0kbIQUMAgsgAUEgaiSAgICAAEICDwsLAkAgA0L/////D1ENACAFQQNGDQAgAUEGNgIAIAEgBzYCBCABEJuAgIAAIAWtQiCGQgSEQgEQgoCAgAAaIAFBFGoQuYCAgAACQCABKAIUQQFHDQAgASABKAIYIAEoAhwQmoCAgAALIANCAXwhAwwBCwsQx4CAgAAACwALMQACQCACIARGDQAACyAAIAGtQiCGQgSEIAOtQiCGQgSEIAKtQiCGQgSEEI6AgIAAGguoBAUBfwF+An8BfgR/I4CAgIAAQYABayICJICAgIAAAkACQCAAQv8Bg0LNAFINACABQv8Bg0LLAFINACACQdAAahCigICAAAJAIAIoAlBBAUcNACACKAJUIAIoAlgQo4CAgAALIAAQ1oCAgAAgARCJgICAAEIgiCEDQgAhACACQdAAakEQaiIEQQhqIQUCQANAIAAgA1ENASABIABCIIZCBIQQioCAgAAhBkEAIQcCQANAIAdBEEYNASACQcAAaiAHakICNwMAIAdBCGohBwwACwtBASEIAkACQCAGQv8Bg0LMAFENAAwBCyAGQcyCwIAAQQIgAkHAAGpBAhDUgICAACACKQNAIgZC/wGDQgRSDQAgAkHQAGogAikDSBDNgICAACACKAJQIghBAXENACAGQiCIpyEHIAJBIGpBGGogBEEYaikDADcDACACQSBqQRBqIARBEGopAwA3AwAgAiAEKQMANwMgIAIgBSkDADcDKAsgAEL/////D1ENAyACQRhqIgkgAkEgakEYaikDADcDACACQRBqIgogAkEgakEQaikDADcDACACIAIpAyg3AwggAiACKQMgNwMAIAhBAXENAyACQdAAakEYaiAJKQMANwMAIAQgCikDADcDACACIAIpAwg3A1ggAiACKQMANwNQIAIgBzYCcCAHIAJB0ABqENeAgIAAIABCAXwhAAwACwsgAkGAAWokgICAgABCAg8LAAsQx4CAgAAAC20BAX8jgICAgABBEGsiASSAgICAACAAEIOAgIAAGiABEKiAgIAAAkACQAJAIAEoAgBBAUcNACABKQMIIAAQ4oCAgAANAQsgABDcgICAAEUNAQsgAUEQaiSAgICAAA8LQoOAgIDAABCsgICAAAALggICAX8BfiOAgICAAEHAAGsiAiSAgICAACACQQI2AgAgAiAANgIEIAIQm4CAgAAgARC1gICAAEIBEIKAgIAAGiACQTBqELmAgIAAAkAgAigCMEEBRw0AIAIgAigCNCACKAI4EJqAgIAACyACQRBqIAFBEGopAwA3AwAgAkEYaiABQRhqKQMANwMAIAIgASkDADcDACACIAFBCGopAwA3AwggAiAANgIgQaiBwIAAQQ0Qz4CAgAAQ0ICAgAAhAyACIAIQtYCAgAA3AzggAiAArUIghkIEhDcDMCADQcSBwIAAQQIgAkEwakECELSAgIAAEIiAgIAAGiACQcAAaiSAgICAAAvkAwMCfwF+AX8jgICAgABBkAFrIgIkgICAgAACQCAAQv8Bg0LNAFINAEEAIQMCQANAIANBGEYNASACQcgAaiADakICNwMAIANBCGohAwwACwsgAUL/AYNCzABSDQAgAUHkgsCAAEEDIAJByABqQQMQ1ICAgAAgAikDSCIEQv8Bg0IEUg0AIAIgAikDUBDZgICAACACKAIAQQFGDQAgAigCECEDIAIpAwghASACQeAAaiACKQNYEM2AgIAAIAIoAmBBAXENACACQRhqIAJBiAFqKQMANwMAIAJBEGogAkGAAWopAwA3AwAgAiACKQNwNwMAIAIgAkHgAGpBGGopAwA3AwggAiAEQiCIpyIFNgIwIAIgAzYCKCACIAE3AyAgAkHgAGoQooCAgAACQCACKAJgQQFHDQAgAigCZCACKAJoEKOAgIAACyAAENaAgIAAIAUgAhDXgICAACACQQM2AmAgAkHgAGoQm4CAgAAgASADELKAgIAAQgIQgoCAgAAaQdSBwIAAQRoQz4CAgAAQ0ICAgAAhACABIAMQsoCAgAAhASACIAWtQiCGQgSENwNoIAIgATcDYCAAQYCCwIAAQQIgAkHgAGpBAhC0gICAABCIgICAABogAkGQAWokgICAgABCAg8LAAu4AQICfwF+I4CAgIAAQSBrIgIkgICAgABBACEDAkADQCADQRBGDQEgAiADakICNwMAIANBCGohAwwACwtCASEEAkAgAUL/AYNCzABSDQAgAUG4gsCAAEECIAJBAhDUgICAACACKQMAIgFC/wGDQgRSDQAgAkEQaiACKQMIEOOAgIAAIAIoAhANACACKQMYIQQgACABQiCIpzYCECAAIAQ3AwhCACEECyAAIAQ3AwAgAkEgaiSAgICAAAuXAQIBfwF+I4CAgIAAQSBrIgIkgICAgAACQCAAQv8Bg0LNAFINACACIAEQnoCAgAAgAigCAEEBRg0AIAIpAxghASACKQMQIQMgAhCigICAAAJAIAIoAgBBAUcNACACKAIEIAIoAggQo4CAgAALIAAQ1oCAgAAgAkEENgIAIAIgAyABEJ+AgIAAIAJBIGokgICAgABCAg8LAAsbAAJAIABC/wGDQs0AUQ0AAAsgABDcgICAAK0LlAEBAn8jgICAgABBIGsiASSAgICAACABEKKAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBCjgICAAAsgAUEBNgIAIAEgADcDCAJAIAEQm4CAgABCARCdgICAACICRQ0AIAFBFGoQuYCAgAAgASgCFEEBRw0AIAEgASgCGCABKAIcEJqAgIAACyABQSBqJICAgIAAIAILPgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABDegICAACAAKQMAIAApAwgQoICAgAAhASAAQRBqJICAgIAAIAELigEDAX8BfgF/I4CAgIAAQTBrIgEkgICAgAAgAUEQahCigICAAAJAIAEoAhBBAUcNACABKAIUIAEoAhgQo4CAgAALIAFBBTYCACABQRBqIAEQnICAgAAgASkDICECIAAgASkDKEIAIAEoAhBBAXEiAxs3AwggACACQi8gAxs3AwAgAUEwaiSAgICAAAs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEOCAgIAAIAApAwAgACgCCBCygICAACEBIABBEGokgICAgAAgAQu6AQMBfwF+AX8jgICAgABBMGsiASSAgICAACABQRhqEKKAgIAAAkAgASgCGEEBRw0AIAEoAhwgASgCIBCjgICAAAsgAUEDNgIIAkACQAJAIAFBCGoQm4CAgAAiAkICEJ2AgIAADQBCACECQQAhAwwBCyABQRhqIAJCAhCBgICAABDZgICAACABKAIYQQFGDQEgASgCKCEDIAEpAyAhAgsgACADNgIIIAAgAjcDACABQTBqJICAgIAADwsACyQAAkAgAEL/AYNCBFENAAALIABCIIinEMSAgIAArUIghkIEhAsNACAAIAEQj4CAgABQC10CAX8BfgJAAkAgAadB/wFxIgJBwABGDQACQCACQQZGDQBCASEDQoOQgICAASEBDAILIAFCCIghAUIAIQMMAQtCACEDIAEQloCAgAAhAQsgACADNwMAIAAgATcDCAviBAEFfyOAgICAAEHQAGsiAiSAgICAACACQShqIAAQ5YCAgAACQCACKAIoQQJGDQAgAkEIakEIaiACQShqQQhqIgMoAgA2AgAgAiACKQIoNwMIIAJBKGogARDlgICAACACKAIoQQJGDQAgAkEYakEIaiADKAIANgIAIAIgAikCKDcDGCACQShqEKKAgIAAAkAgAigCKEEBRw0AIAIoAiwgAigCMBCjgICAAAsQpYCAgAACQAJAAkAQoYCAgAANABDmgICAACIDQYD7gAMgA0GA+4ADSRshBCACIAJBGGo2AiwgAiACQQhqNgIoQQAhAwNAIANBCEYNAwJAIAJBKGogA2ooAgAiBSgCAEEBcUUNACAFKAIIIgYgBEsNAyAFKAIEIAZLDQMLIANBBGohAwwACwtCg4CAgND/ABCsgICAAAALQoOAgIDA/wAQrICAgAAACwJAAkAgAigCCEEBRw0AQQEgAigCDCACKAIQEOeAgIAADAELQQEQpICAgABCAhCHgICAABoLAkACQCACKAIYQQFHDQBBAiACKAIcIAIoAiAQ54CAgAAMAQtBAhCkgICAAEICEIeAgIAAGgsgAkEoakEIaiACQQhqQQhqKAIANgIAIAJBPGogAkEYakEIaigCADYCACACIAIpAwg3AyggAiACKQMYNwI0QdSEwIAAQQ8Qz4CAgAAQ0ICAgAAhACACQShqEOiAgIAAIQEgAiACQTRqEOiAgIAANwNIIAIgATcDQCAAQfiEwIAAQQIgAkHAAGpBAhC0gICAABCIgICAABogAkHQAGokgICAgABCAg8LAAtoAQF/I4CAgIAAQRBrIgIkgICAgAACQAJAIAFCAlENACACQQRqIAEQ+4CAgAACQCACKAIERQ0AIABBAjYCAAwCCyAAIAIpAgg3AgQgAEEBNgIADAELIABBADYCAAsgAkEQaiSAgICAAAszAQJ+EJCAgIAAIQACQBCRgICAAEIgiCIBIABCIIgiAFQNACABpyAAp2sPCxDHgICAAAALVgIBfwF+I4CAgIAAQRBrIgMkgICAgAAgABCkgICAACEEIAMgASACEPyAgIAAAkAgAygCAEEBRw0AAAsgBCADKQMIQgIQgoCAgAAaIANBEGokgICAgAALQwIBfwF+I4CAgIAAQRBrIgEkgICAgAAgASAAEOqAgIAAAkAgASgCAEEBRw0AAAsgASkDCCECIAFBEGokgICAgAAgAgvCAQICfwF+I4CAgIAAQcAAayIAJICAgIAAIABBCGoQooCAgAACQCAAKAIIQQFHDQAgACgCDCAAKAIQEKOAgIAACyAAQQhqEKKAgIAAIABBFGoiARC5gICAACAAQTBqIABBCGoQ6oCAgAACQAJAIAAoAjANACAAKQM4IQIgAEEwaiABEOqAgIAAIAAoAjBBAUcNAQsACyAAIAApAzg3AyggACACNwMgIABBIGpBAhDrgICAACECIABBwABqJICAgIAAIAILMAACQCABKAIAQQFHDQAgACABKAIEIAEoAggQ/ICAgAAPCyAAQgA3AwAgAEICNwMICxoAIACtQiCGQgSEIAGtQiCGQgSEEIuAgIAAC6oBAQF/I4CAgIAAQSBrIgAkgICAgAAgAEEMahCigICAAAJAIAAoAgxBAUcNACAAKAIQIAAoAhQQo4CAgAALEKWAgIAAAkAQoYCAgABFDQBCg4CAgOD/ABCsgICAAAALQQAQpICAgABCAUICEIKAgIAAGkGIhcCAAEESEM+AgIAAENCAgIAAQQRBACAAQRhqQQAQtICAgAAQiICAgAAaIABBIGokgICAgABCAgsJABChgICAAK0LMQACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAEIgiKcgAUIgiKcQo4CAgABCAg8LAAs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEKiAgIAAIAApAwAgACkDCBC3gICAACEBIABBEGokgICAgAAgAQs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEKuAgIAAIAApAwAgACkDCBC3gICAACEBIABBEGokgICAgAAgAQt9AgF/AX4jgICAgABBEGsiASSAgICAAAJAIABC/wGDQs0AUg0AIAFBBGoQooCAgAACQCABKAIEQQFHDQAgASgCCCABKAIMEKOAgIAACxCngICAACECEKqAgIAAIAAQwICAgAAgAiAAEPKAgIAAIAFBEGokgICAgABCAg8LAAthAgF/AX4jgICAgABBEGsiAiSAgICAAEGhg8CAAEEVEM+AgIAA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gICAAEEgayIFJICAgIAAIAUgASACIAMgBBCAgYCAACAFKQMAIQQgACAFKQMINwMIIAAgBDcDACAFQSBqJICAgIAAC24BBn4gACADQv////8PgyIFIAFC/////w+DIgZ+IgcgA0IgiCIIIAZ+IgYgBSABQiCIIgl+fCIFQiCGfCIKNwMAIAAgCCAJfiAFIAZUrUIghiAFQiCIhHwgCiAHVK18IAQgAX4gAyACfnx8NwMICwvaBgEAQYCAwAAL0AZQcmljZVJhdGlvRGVub21pbmF0b3JQcmljZVVwZGF0ZXJEZWZhdWx0TW9kZWxQcmljZUFyYml0cnVtUHJpY2VFeHROYXRpdmVQcmljZVVTREFyYml0cnVtQ29tcHJlc3Npb25QZXJjZW50RWlkVG9Nb2RlbFR5cGVwcmljZV91cGRhdGVyX3NldGFjdGl2ZXVwZGF0ZXIAAIkAEAAGAAAAjwAQAAcAAABwcmljZV91cGRhdGVkZHN0X2VpZHByaWNlAAAAtQAQAAcAAAC8ABAABQAAAGFyYml0cnVtX3ByaWNlX2V4dF91cGRhdGVkYXJiaXRydW1fcHJpY2VfZXh07gAQABIAAAC1ABAABwAAAGdhc19wZXJfbDFfY2FsbGRhdGFfYnl0ZWdhc19wZXJfbDJfdHgAAAAQARAAGAAAACgBEAANAAAAZWlkAEgBEAADAAAAvAAQAAUAAABleHRlbmQAAEgBEAADAAAAXAEQAAYAAAC8ABAABQAAAG1vZGVsX3R5cGUAALUAEAAHAAAAfAEQAAoAAAB0aHJlc2hvbGRvd25lcnNoaXBfdHJhbnNmZXJyZWRuZXdfb3duZXJvbGRfb3duZXK2ARAACQAAAL8BEAAJAAAAb3duZXJzaGlwX3RyYW5zZmVycmluZ3R0bAAAALYBEAAJAAAAvwEQAAkAAADuARAAAwAAAG93bmVyc2hpcF9yZW5vdW5jZWQAvwEQAAkAAABPd25lclBlbmRpbmdPd25lcmV4dGVuZF90bwAAOQIQAAkAAACYARAACQAAAHR0bF9jb25maWdzX3NldGluc3RhbmNlcGVyc2lzdGVudAAAAGMCEAAIAAAAawIQAAoAAAB0dGxfY29uZmlnc19mcm96ZW5Gcm96ZW5JbnN0YW5jZVBlcnNpc3RlbnRNaWdyYXRpbmdnYXNfcGVyX2J5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dXMgKG93bmVyIG9ubHkpAAAAAAAAEXNldF9wcmljZV91cGRhdGVyAAAAAAAAAgAAAAAAAAAHdXBkYXRlcgAAAAATAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAAAAACxTZXQgdGhlIHByaWNlIHJhdGlvIGRlbm9taW5hdG9yIChvd25lciBvbmx5KQAAABtzZXRfcHJpY2VfcmF0aW9fZGVub21pbmF0b3IAAAAAAQAAAAAAAAALZGVub21pbmF0b3IAAAAACgAAAAAAAAAAAAAANFNldCB0aGUgQXJiaXRydW0gY29tcHJlc3Npb24gcGVyY2VudGFnZSAob3duZXIgb25seSkAAAAgc2V0X2FyYml0cnVtX2NvbXByZXNzaW9uX3BlcmNlbnQAAAABAAAAAAAAABNjb21wcmVzc2lvbl9wZXJjZW50AAAAAAoAAAAAAAAAAAAAADhTZXQgdGhlIGZlZSBtb2RlbCB0eXBlIGZvciBkZXN0aW5hdGlvbiBFSURzIChvd25lciBvbmx5KQAAABVzZXRfZWlkX3RvX21vZGVsX3R5cGUAAAAAAAABAAAAAAAAAAZwYXJhbXMAAAAAA+oAAAfQAAAAFlNldEVpZFRvTW9kZWxUeXBlUGFyYW0AAAAAAAAAAAAAAAAAPVNldCBwcmljZXMgZm9yIG11bHRpcGxlIGRlc3RpbmF0aW9ucyAocHJpY2UgdXBkYXRlciBvciBvd25lcikAAAAAAAAJc2V0X3ByaWNlAAAAAAAAAgAAAAAAAAANcHJpY2VfdXBkYXRlcgAAAAAAABMAAAAAAAAABnByaWNlcwAAAAAD6gAAB9AAAAALVXBkYXRlUHJpY2UAAAAAAAAAAAAAAAByU2V0IHByaWNlIGZvciBBcmJpdHJ1bSB3aXRoIGV4dGVuc2lvbiAocHJpY2UgdXBkYXRlciBvciBvd25lcikKQ29ycmVzcG9uZHMgdG8gc2V0UHJpY2VGb3JBcmJpdHJ1bSBpbiBQcmljZUZlZWQuc29sAAAAAAAWc2V0X3ByaWNlX2Zvcl9hcmJpdHJ1bQAAAAAAAgAAAAAAAAANcHJpY2VfdXBkYXRlcgAAAAAAABMAAAAAAAAABnVwZGF0ZQAAAAAH0AAAAA5VcGRhdGVQcmljZUV4dAAAAAAAAAAAAAAAAACoU2V0IHRoZSBuYXRpdmUgdG9rZW4gcHJpY2UgaW4gVVNEIChwcmljZSB1cGRhdGVyIG9yIG93bmVyKS4KCktlcHQgYXMgYSBzdGFuZGFsb25lIGNvbnRyYWN0IGZ1bmN0aW9uIChub3QgcGFydCBvZiB0aGUgY2Fub25pY2FsIGB3b3JrZXI6OklMYXllclplcm9QcmljZUZlZWRgIGludGVyZmFjZSkuAAAAGnNldF9uYXRpdmVfdG9rZW5fcHJpY2VfdXNkAAAAAAACAAAAAAAAAA1wcmljZV91cGRhdGVyAAAAAAAAEwAAAAAAAAAWbmF0aXZlX3Rva2VuX3ByaWNlX3VzZAAAAAAACgAAAAAAAAAAAAAALkNoZWNrIGlmIGFuIGFkZHJlc3MgaXMgYW4gYWN0aXZlIHByaWNlIHVwZGF0ZXIAAAAAABBpc19wcmljZV91cGRhdGVyAAAAAQAAAAAAAAAHdXBkYXRlcgAAAAATAAAAAQAAAAEAAAAAAAAAJEdldCB0aGUgQXJiaXRydW0gY29tcHJlc3Npb24gcGVyY2VudAAAABxhcmJpdHJ1bV9jb21wcmVzc2lvbl9wZXJjZW50AAAAAAAAAAEAAAAKAAAAAAAAACBHZXQgdGhlIEFyYml0cnVtIHByaWNlIGV4dGVuc2lvbgAAABJhcmJpdHJ1bV9wcmljZV9leHQAAAAAAAAAAAABAAAH0AAAABBBcmJpdHJ1bVByaWNlRXh0AAAAAAAAAChHZXQgdGhlIG1vZGVsIHR5cGUgZm9yIGEgZGVzdGluYXRpb24gRUlEAAAAEWVpZF90b19tb2RlbF90eXBlAAAAAAAAAQAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAQAAB9AAAAAJTW9kZWxUeXBlAAAAAAAAAQAAACFBcmJpdHJ1bS1zcGVjaWZpYyBwcmljZSBleHRlbnNpb24AAAAAAAAAAAAAEEFyYml0cnVtUHJpY2VFeHQAAAACAAAAQUdhcyBjb3N0IHBlciBieXRlIG9mIEwxIGNhbGxkYXRhIChmb3IgQXJiaXRydW0ncyBMMSBkYXRhIHBvc3RpbmcpAAAAAAAAGGdhc19wZXJfbDFfY2FsbGRhdGFfYnl0ZQAAAAQAAAAfR2FzIG92ZXJoZWFkIHBlciBMMiB0cmFuc2FjdGlvbgAAAAANZ2FzX3Blcl9sMl90eAAAAAAAAAYAAAABAAAAJVBhcmFtZXRlciBmb3IgdXBkYXRpbmcgYSBzaW5nbGUgcHJpY2UAAAAAAAAAAAAAC1VwZGF0ZVByaWNlAAAAAAIAAAAXRGVzdGluYXRpb24gZW5kcG9pbnQgSUQAAAAAA2VpZAAAAAAEAAAAJVByaWNlIGluZm9ybWF0aW9uIGZvciB0aGUgZGVzdGluYXRpb24AAAAAAAAFcHJpY2UAAAAAAAfQAAAABVByaWNlAAAAAAAAAQAAADRQYXJhbWV0ZXIgZm9yIHVwZGF0aW5nIEFyYml0cnVtIHByaWNlIHdpdGggZXh0ZW5zaW9uAAAAAAAAAA5VcGRhdGVQcmljZUV4dAAAAAAAAwAAADhEZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoc2hvdWxkIGJlIGFuIEFyYml0cnVtIGVuZHBvaW50KQAAAANlaWQAAAAABAAAACNBcmJpdHJ1bS1zcGVjaWZpYyBwcmljaW5nIGV4dGVuc2lvbgAAAAAGZXh0ZW5kAAAAAAfQAAAAEEFyYml0cnVtUHJpY2VFeHQAAAAlUHJpY2UgaW5mb3JtYXRpb24gZm9yIHRoZSBkZXN0aW5hdGlvbgAAAAAAAAVwcmljZQAAAAAAB9AAAAAFUHJpY2UAAAAAAAADAAAAMEZlZSBtb2RlbCB0eXBlIGZvciBkaWZmZXJlbnQgY2hhaW4gYXJjaGl0ZWN0dXJlcwAAAAAAAAAJTW9kZWxUeXBlAAAAAAAAAwAAAAAAAAAHRGVmYXVsdAAAAAAAAAAAAAAAAAhBcmJTdGFjawAAAAEAAAAAAAAAB09wU3RhY2sAAAAAAgAAAAEAAAAvUGFyYW1ldGVyIGZvciBzZXR0aW5nIEVJRCB0byBtb2RlbCB0eXBlIG1hcHBpbmcAAAAAAAAAABZTZXRFaWRUb01vZGVsVHlwZVBhcmFtAAAAAAACAAAAF0Rlc3RpbmF0aW9uIGVuZHBvaW50IElEAAAAAAdkc3RfZWlkAAAAAAQAAAAjRmVlIG1vZGVsIHR5cGUgZm9yIHRoaXMgZGVzdGluYXRpb24AAAAACm1vZGVsX3R5cGUAAAAAB9AAAAAJTW9kZWxUeXBlAAAAAAAAAAAAAY9TZXRzIFRUTCBjb25maWdzIGZvciBpbnN0YW5jZSBhbmQgcGVyc2lzdGVudCBzdG9yYWdlLgoKLSBgTm9uZWAgdmFsdWVzIHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBjb25maWcgKGRpc2FibGVzIGF1dG8tZXh0ZW5zaW9uIGZvciB0aGF0IHR5cGUpCi0gVmFsaWRhdGVzIHRoYXQgYHRocmVzaG9sZCA8PSBleHRlbmRfdG8gPD0gTUFYX1RUTGAKCiMgQXJndW1lbnRzCi0gYGluc3RhbmNlYCAtIFRUTCBjb25maWcgZm9yIGluc3RhbmNlIHN0b3JhZ2UKLSBgcGVyc2lzdGVudGAgLSBUVEwgY29uZmlnIGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UKCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0Zyb3plbmAgaWYgY29uZmlncyBhcmUgZnJvemVuCi0gYEludmFsaWRUdGxDb25maWdgIGlmIHZhbGlkYXRpb24gZmFpbHMAAAAAD3NldF90dGxfY29uZmlncwAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAABIUmV0dXJucyB0aGUgY3VycmVudCBUVEwgY29uZmlncyBhcyAoaW5zdGFuY2VfY29uZmlnLCBwZXJzaXN0ZW50X2NvbmZpZykuAAAAC3R0bF9jb25maWdzAAAAAAAAAAABAAAD7QAAAAIAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAA4VBlcm1hbmVudGx5IGZyZWV6ZXMgVFRMIGNvbmZpZ3MsIHByZXZlbnRpbmcgYW55IGZ1dHVyZSBtb2RpZmljYXRpb25zLgoKVGhpcyBpcyBpcnJldmVyc2libGUgYW5kIHByb3ZpZGVzIGltbXV0YWJpbGl0eSBndWFyYW50ZWVzIHRvIHVzZXJzLgpFbWl0cyBgVHRsQ29uZmlnc0Zyb3plbmAgZXZlbnQuCgojIFBhbmljcwotIGBUdGxDb25maWdBbHJlYWR5RnJvemVuYCBpZiBhbHJlYWR5IGZyb3plbgAAAAAAABJmcmVlemVfdHRsX2NvbmZpZ3MAAAAAAAAAAAAAAAAAAAAAACdSZXR1cm5zIHdoZXRoZXIgVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAFWlzX3R0bF9jb25maWdzX2Zyb3plbgAAAAAAAAAAAAABAAAAAQAAAAAAAAClRXh0ZW5kcyB0aGUgaW5zdGFuY2UgVFRMLgoKIyBBcmd1bWVudHMKCiogYHRocmVzaG9sZGAgLSBUaGUgdGhyZXNob2xkIHRvIGV4dGVuZCB0aGUgVFRMIChpZiBjdXJyZW50IFRUTCBpcyBiZWxvdyB0aGlzLCBleHRlbmQpLgoqIGBleHRlbmRfdG9gIC0gVGhlIFRUTCB0byBleHRlbmQgdG8uAAAAAAAAE2V4dGVuZF9pbnN0YW5jZV90dGwAAAAAAgAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAAJZXh0ZW5kX3RvAAAAAAAABAAAAAAAAAAAAAAAPlJldHVybnMgdGhlIGN1cnJlbnQgb3duZXIgYWRkcmVzcywgb3IgTm9uZSBpZiBubyBvd25lciBpcyBzZXQuAAAAAAAFb3duZXIAAAAAAAAAAAAAAQAAA+gAAAATAAAAAAAAAFlSZXR1cm5zIHRoZSBwZW5kaW5nIG93bmVyIGFkZHJlc3MgZm9yIDItc3RlcCB0cmFuc2Zlciwgb3IgTm9uZSBpZiBubyB0cmFuc2ZlciBpcyBwZW5kaW5nLgAAAAAAAA1wZW5kaW5nX293bmVyAAAAAAAAAAAAAAEAAAPoAAAAEwAAAAAAAAErVHJhbnNmZXJzIG93bmVyc2hpcCBpbW1lZGlhdGVseSB0byBhIG5ldyBhZGRyZXNzLgoKVXNlIHdpdGggY2F1dGlvbiAtIGlmIHlvdSB0cmFuc2ZlciB0byBhIHdyb25nIGFkZHJlc3MsIG93bmVyc2hpcCBpcyBsb3N0IGZvcmV2ZXIuCkNvbnNpZGVyIHVzaW5nIGBwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcmAgaW5zdGVhZC4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYFRyYW5zZmVySW5Qcm9ncmVzc2AgaWYgYSAyLXN0ZXAgdHJhbnNmZXIgaXMgaW4gcHJvZ3Jlc3MAAAAAEnRyYW5zZmVyX293bmVyc2hpcAAAAAAAAQAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAAAAAACXFByb3Bvc2VzIGFuIG93bmVyc2hpcCB0cmFuc2ZlciB0byBhIG5ldyBhZGRyZXNzLgoKVGhlIG5ldyBvd25lciBtdXN0IGNhbGwgYGFjY2VwdF9vd25lcnNoaXAoKWAgd2l0aGluIGB0dGxgIGxlZGdlcnMKdG8gY29tcGxldGUgdGhlIHRyYW5zZmVyLiBUaGUgcGVuZGluZyB0cmFuc2ZlciB3aWxsIGF1dG9tYXRpY2FsbHkgZXhwaXJlIGFmdGVyLgoKIyBBcmd1bWVudHMKLSBgbmV3X293bmVyYCAtIFRoZSBwcm9wb3NlZCBuZXcgb3duZXIKLSBgdHRsYCAtIE51bWJlciBvZiBsZWRnZXJzIHRoZSBuZXcgb3duZXIgaGFzIHRvIGFjY2VwdC4KVXNlIGAwYCB0byBjYW5jZWwgYSBwZW5kaW5nIHRyYW5zZmVyIChuZXdfb3duZXIgbXVzdCBtYXRjaCBwZW5kaW5nKS4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYE5vUGVuZGluZ1RyYW5zZmVyYCB3aGVuIGNhbmNlbGxpbmcgYW5kIG5vIHBlbmRpbmcgdHJhbnNmZXIgZXhpc3RzCi0gYEludmFsaWRUdGxgIGlmIHR0bCBleGNlZWRzIG1heCBUVEwKLSBgSW52YWxpZFBlbmRpbmdPd25lcmAgd2hlbiBjYW5jZWxsaW5nIHdpdGggd3JvbmcgbmV3X293bmVyIGFkZHJlc3MAAAAacHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXIAAAAAAAIAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAA3R0bAAAAAAEAAAAAAAAAAAAAAC5QWNjZXB0cyBhIHBlbmRpbmcgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2Zlci4KCk11c3QgYmUgY2FsbGVkIGJ5IHRoZSBwZW5kaW5nIG93bmVyIGJlZm9yZSB0aGUgVFRMIGV4cGlyZXMuCgojIFBhbmljcwotIGBOb1BlbmRpbmdUcmFuc2ZlcmAgaWYgdGhlcmUgaXMgbm8gcGVuZGluZyB0cmFuc2ZlciAob3IgaXQgZXhwaXJlZCkAAAAAAAAQYWNjZXB0X293bmVyc2hpcAAAAAAAAAAAAAAAAAAAAKRQZXJtYW5lbnRseSByZW5vdW5jZXMgb3duZXJzaGlwLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgVHJhbnNmZXJJblByb2dyZXNzYCBpZiBhIDItc3RlcCB0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcyAoY2FuY2VsIGl0IGZpcnN0KQAAABJyZW5vdW5jZV9vd25lcnNoaXAAAAAAAAAAAAAAAAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPpAAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/IAAAAEAAAAH1R0bENvbmZpZ3VyYWJsZUVycm9yOiAxMDIwLTEwMjkAAAAAAAAAABRUdGxDb25maWd1cmFibGVFcnJvcgAAAAMAAAAAAAAAEEludmFsaWRUdGxDb25maWcAAAP8AAAAAAAAAA9UdGxDb25maWdGcm96ZW4AAAAD/QAAAAAAAAAWVHRsQ29uZmlnQWxyZWFkeUZyb3plbgAAAAAD/gAAAAQAAAAXT3duYWJsZUVycm9yOiAxMDMwLTEwMzkAAAAAAAAAAAxPd25hYmxlRXJyb3IAAAAGAAAAAAAAABNJbnZhbGlkUGVuZGluZ093bmVyAAAABAYAAAAAAAAACkludmFsaWRUdGwAAAAABAcAAAAAAAAAEU5vUGVuZGluZ1RyYW5zZmVyAAAAAAAECAAAAAAAAAAPT3duZXJBbHJlYWR5U2V0AAAABAkAAAAAAAAAC093bmVyTm90U2V0AAAABAoAAAAAAAAAElRyYW5zZmVySW5Qcm9ncmVzcwAAAAAECwAAAAQAAAAYQnl0ZXNFeHRFcnJvcjogMTA0MC0xMDQ5AAAAAAAAAA1CeXRlc0V4dEVycm9yAAAAAAAAAQAAAAAAAAAOTGVuZ3RoTWlzbWF0Y2gAAAAABBAAAAAEAAAAG1VwZ3JhZGVhYmxlRXJyb3I6IDEwNTAtMTA1OQAAAAAAAAAAEFVwZ3JhZGVhYmxlRXJyb3IAAAABAAAAAAAAABNNaWdyYXRpb25Ob3RBbGxvd2VkAAAABBoAAAAEAAAAGE11bHRpc2lnRXJyb3I6IDEwNjAtMTA2OQAAAAAAAAANTXVsdGlzaWdFcnJvcgAAAAAAAAgAAAAAAAAAEkFscmVhZHlJbml0aWFsaXplZAAAAAAEJAAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCUAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQmAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCcAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQoAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCkAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQqAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAEKwAAAAUAAAAwRXZlbnQgZW1pdHRlZCB3aGVuIGEgc2lnbmVyIGlzIGFkZGVkIG9yIHJlbW92ZWQuAAAAAAAAAAlTaWduZXJTZXQAAAAAAAABAAAACnNpZ25lcl9zZXQAAAAAAAIAAAAAAAAABnNpZ25lcgAAAAAD7gAAABQAAAABAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAA2RXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzaWduYXR1cmUgdGhyZXNob2xkIGlzIGNoYW5nZWQuAAAAAAAAAAAADFRocmVzaG9sZFNldAAAAAEAAAANdGhyZXNob2xkX3NldAAAAAAAAAEAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA9NdWx0aXNpZ1N0b3JhZ2UAAAAAAgAAAAAAAAAAAAAAB1NpZ25lcnMAAAAAAAAAAAAAAAAJVGhyZXNob2xkAAAAAAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAgAAAAUAAAA7RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBwcm9wb3NlZC4AAAAAAAAAABVPd25lcnNoaXBUcmFuc2ZlcnJpbmcAAAAAAAABAAAAFm93bmVyc2hpcF90cmFuc2ZlcnJpbmcAAAAAAAMAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyByZW5vdW5jZWQuAAAAAAAAAAAAEk93bmVyc2hpcFJlbm91bmNlZAAAAAAAAQAAABNvd25lcnNoaXBfcmVub3VuY2VkAAAAAAEAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA5Pd25hYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABU93bmVyAAAAAAAAAAAAAAAAAAAMUGVuZGluZ093bmVyAAAAAQAAAElUVEwgY29uZmlndXJhdGlvbjogdGhyZXNob2xkICh3aGVuIHRvIGV4dGVuZCkgYW5kIGV4dGVuZF90byAodGFyZ2V0IFRUTCkuAAAAAAAAAAAAAAlUdGxDb25maWcAAAAAAAACAAAAKFRhcmdldCBUVEwgYWZ0ZXIgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAJZXh0ZW5kX3RvAAAAAAAABAAAADNUVEwgdGhyZXNob2xkIHRoYXQgdHJpZ2dlcnMgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAACXRocmVzaG9sZAAAAAAAAAQAAAAFAAAAJ0V2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgc2V0LgAAAAAAAAAADVR0bENvbmZpZ3NTZXQAAAAAAAABAAAAD3R0bF9jb25maWdzX3NldAAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAAAAAACnBlcnNpc3RlbnQAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAAAAAAAAQVHRsQ29uZmlnc0Zyb3plbgAAAAEAAAASdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAABBUdGxDb25maWdTdG9yYWdlAAAAAwAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAISW5zdGFuY2UAAAAAAAAAAAAAAApQZXJzaXN0ZW50AAAAAAACAAAAAAAAAAAAAAASVXBncmFkZWFibGVTdG9yYWdlAAAAAAABAAAAAAAAAAAAAAAJTWlncmF0aW5nAAAAAAAABAAAABZXb3JrZXJFcnJvcjogMTIwMC0xMjk5AAAAAAAAAAAAC1dvcmtlckVycm9yAAAAABMAAAAAAAAAEkFkbWluQWxyZWFkeUV4aXN0cwAAAAAEsAAAAAAAAAANQWRtaW5Ob3RGb3VuZAAAAAAABLEAAAAAAAAAEkFscmVhZHlPbkFsbG93bGlzdAAAAAAEsgAAAAAAAAARQWxyZWFkeU9uRGVueWxpc3QAAAAAAASzAAAAAAAAABtBdHRlbXB0aW5nVG9SZW1vdmVPbmx5QWRtaW4AAAAEtAAAAAAAAAAURGVwb3NpdEFkZHJlc3NOb3RTZXQAAAS1AAAAAAAAABpNZXNzYWdlTGliQWxyZWFkeVN1cHBvcnRlZAAAAAAEtgAAAAAAAAAWTWVzc2FnZUxpYk5vdFN1cHBvcnRlZAAAAAAEtwAAAAAAAAAQTm9BZG1pbnNQcm92aWRlZAAABLgAAAAAAAAACk5vdEFsbG93ZWQAAAAABLkAAAAAAAAADk5vdE9uQWxsb3dsaXN0AAAAAAS6AAAAAAAAAA1Ob3RPbkRlbnlsaXN0AAAAAAAEuwAAAAAAAAAUUGF1c2VTdGF0dXNVbmNoYW5nZWQAAAS8AAAAAAAAAA9QcmljZUZlZWROb3RTZXQAAAAEvQAAAAAAAAAMUmVJbml0aWFsaXplAAAEvgAAAAAAAAAMVW5hdXRob3JpemVkAAAEvwAAAAAAAAAVVW5zdXBwb3J0ZWRNZXNzYWdlTGliAAAAAAAEwAAAAAAAAAASV29ya2VyRmVlTGliTm90U2V0AAAAAATBAAAAAAAAAA5Xb3JrZXJJc1BhdXNlZAAAAAAEwgAAAAUAAAAAAAAAAAAAAAhTZXRBZG1pbgAAAAEAAAAJc2V0X2FkbWluAAAAAAAAAgAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAAAAAAGYWN0aXZlAAAAAAABAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAWU2V0U3VwcG9ydGVkTWVzc2FnZUxpYgAAAAAAAQAAABlzZXRfc3VwcG9ydGVkX21lc3NhZ2VfbGliAAAAAAAAAgAAAAAAAAALbWVzc2FnZV9saWIAAAAAEwAAAAAAAAAAAAAACXN1cHBvcnRlZAAAAAAAAAEAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAAxTZXRBbGxvd2xpc3QAAAABAAAADXNldF9hbGxvd2xpc3QAAAAAAAACAAAAAAAAAARvYXBwAAAAEwAAAAAAAAAAAAAAB2FsbG93ZWQAAAAAAQAAAAAAAAACAAAABQAAAAAAAAAAAAAAC1NldERlbnlsaXN0AAAAAAEAAAAMc2V0X2RlbnlsaXN0AAAAAgAAAAAAAAAEb2FwcAAAABMAAAAAAAAAAAAAAAZkZW5pZWQAAAAAAAEAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAAZQYXVzZWQAAAAAAAEAAAAGcGF1c2VkAAAAAAABAAAAAAAAAAZwYXVzZXIAAAAAABMAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAAhVbnBhdXNlZAAAAAEAAAAIdW5wYXVzZWQAAAABAAAAAAAAAAh1bnBhdXNlcgAAABMAAAAAAAAAAgAAAAUAAAAAAAAAAAAAABdTZXREZWZhdWx0TXVsdGlwbGllckJwcwAAAAABAAAAGnNldF9kZWZhdWx0X211bHRpcGxpZXJfYnBzAAAAAAABAAAAAAAAAA5tdWx0aXBsaWVyX2JwcwAAAAAABAAAAAAAAAACAAAABQAAAAAAAAAAAAAAEVNldERlcG9zaXRBZGRyZXNzAAAAAAAAAQAAABNzZXRfZGVwb3NpdF9hZGRyZXNzAAAAAAEAAAAAAAAAD2RlcG9zaXRfYWRkcmVzcwAAAAATAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAMU2V0UHJpY2VGZWVkAAAAAQAAAA5zZXRfcHJpY2VfZmVlZAAAAAAAAQAAAAAAAAAKcHJpY2VfZmVlZAAAAAAAEwAAAAAAAAACAAAABQAAAAAAAAAAAAAAF1NldFN1cHBvcnRlZE9wdGlvblR5cGVzAAAAAAEAAAAac2V0X3N1cHBvcnRlZF9vcHRpb25fdHlwZXMAAAAAAAIAAAAAAAAAB2RzdF9laWQAAAAABAAAAAAAAAAAAAAADG9wdGlvbl90eXBlcwAAAA4AAAAAAAAAAgAAAAUAAAAAAAAAAAAAAA9TZXRXb3JrZXJGZWVMaWIAAAAAAQAAABJzZXRfd29ya2VyX2ZlZV9saWIAAAAAAAEAAAAAAAAAB2ZlZV9saWIAAAAAEwAAAAAAAAACAAAAAQAAAOFQYXJhbWV0ZXJzIGZvciBEVk4gZmVlIGNhbGN1bGF0aW9uLgoKQ29udGFpbnMgYWxsIGlucHV0cyBuZWVkZWQgYnkgdGhlIGZlZSBsaWJyYXJ5IHRvIGNhbGN1bGF0ZSB2ZXJpZmljYXRpb24gZmVlcwpmb3IgY3Jvc3MtY2hhaW4gbWVzc2FnZXMuIEluY2x1ZGVzIG1lc3NhZ2UgcGFyYW1ldGVycywgY29tbW9uIGNvbmZpZ3VyYXRpb24sCmFuZCBkZXN0aW5hdGlvbi1zcGVjaWZpYyBzZXR0aW5ncy4AAAAAAAAAAAAADER2bkZlZVBhcmFtcwAAAAoAAAAnTnVtYmVyIG9mIGJsb2NrIGNvbmZpcm1hdGlvbnMgcmVxdWlyZWQuAAAAAA1jb25maXJtYXRpb25zAAAAAAAABgAAAExEZWZhdWx0IGZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cyAodXNlZCBpZiBubyBkc3Qtc3BlY2lmaWMgbXVsdGlwbGllcikuAAAAFmRlZmF1bHRfbXVsdGlwbGllcl9icHMAAAAAAAQAAAArRGVzdGluYXRpb24gZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAHZHN0X2VpZAAAAAAEAAAAI01pbmltdW0gZmVlIG1hcmdpbiBpbiBVU0QgKHNjYWxlZCkuAAAAABBmbG9vcl9tYXJnaW5fdXNkAAAACgAAARA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpEZXN0aW5hdGlvbi1TcGVjaWZpYyBDb25maWd1cmF0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkdhcyBlc3RpbWF0ZSBmb3IgdmVyaWZpY2F0aW9uIG9uIGRlc3RpbmF0aW9uIGNoYWluLgAAAANnYXMAAAAACgAAAEZEZXN0aW5hdGlvbi1zcGVjaWZpYyBmZWUgbXVsdGlwbGllciBpbiBiYXNpcyBwb2ludHMgKDAgPSB1c2UgZGVmYXVsdCkuAAAAAAAObXVsdGlwbGllcl9icHMAAAAAAAQAAAALRFZOIG9wdGlvbnMAAAAAB29wdGlvbnMAAAAADgAAARA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDb21tb24gQ29uZmlndXJhdGlvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQcmljZSBmZWVkIGNvbnRyYWN0IGFkZHJlc3MgZm9yIGdhcyBwcmljZSBhbmQgZXhjaGFuZ2UgcmF0ZSBkYXRhLgAAAApwcmljZV9mZWVkAAAAAAATAAAAJ051bWJlciBvZiByZXF1aXJlZCBzaWduYXR1cmVzIChxdW9ydW0pLgAAAAAGcXVvcnVtAAAAAAAEAAAA5T09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck1lc3NhZ2UgUGFyYW1ldGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgT0FwcCBzZW5kZXIgYWRkcmVzcy4AAAAAAAAGc2VuZGVyAAAAAAATAAAAAQAAAONQYXJhbWV0ZXJzIGZvciBleGVjdXRvciBmZWUgY2FsY3VsYXRpb24uCgpDb250YWlucyBhbGwgaW5wdXRzIG5lZWRlZCBieSB0aGUgZmVlIGxpYnJhcnkgdG8gY2FsY3VsYXRlIGV4ZWN1dGlvbiBmZWVzCmZvciBjcm9zcy1jaGFpbiBtZXNzYWdlcy4gSW5jbHVkZXMgbWVzc2FnZSBwYXJhbWV0ZXJzLCBjb21tb24gY29uZmlndXJhdGlvbiwKYW5kIGRlc3RpbmF0aW9uLXNwZWNpZmljIHNldHRpbmdzLgAAAAAAAAAACUZlZVBhcmFtcwAAAAAAAAsAAAAmU2l6ZSBvZiB0aGUgbWVzc2FnZSBjYWxsZGF0YSBpbiBieXRlcy4AAAAAAA1jYWxsZGF0YV9zaXplAAAAAAAABAAAAExEZWZhdWx0IGZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cyAodXNlZCBpZiBubyBkc3Qtc3BlY2lmaWMgbXVsdGlwbGllcikuAAAAFmRlZmF1bHRfbXVsdGlwbGllcl9icHMAAAAAAAQAAAArRGVzdGluYXRpb24gZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAHZHN0X2VpZAAAAAAEAAAAI01pbmltdW0gZmVlIG1hcmdpbiBpbiBVU0QgKHNjYWxlZCkuAAAAABBmbG9vcl9tYXJnaW5fdXNkAAAACgAAADZCYXNlIGdhcyBmb3IgZWFjaCBsekNvbXBvc2UgY2FsbCBvbiBkZXN0aW5hdGlvbiBjaGFpbi4AAAAAABNsel9jb21wb3NlX2Jhc2VfZ2FzAAAAAAYAAAETPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRGVzdGluYXRpb24tU3BlY2lmaWMgQ29uZmlndXJhdGlvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpCYXNlIGdhcyBmb3IgbHpSZWNlaXZlIGV4ZWN1dGlvbiBvbiBkZXN0aW5hdGlvbiBjaGFpbi4AAAAAE2x6X3JlY2VpdmVfYmFzZV9nYXMAAAAABgAAAEZEZXN0aW5hdGlvbi1zcGVjaWZpYyBmZWUgbXVsdGlwbGllciBpbiBiYXNpcyBwb2ludHMgKDAgPSB1c2UgZGVmYXVsdCkuAAAAAAAObXVsdGlwbGllcl9icHMAAAAAAAQAAAAsTWF4aW11bSBuYXRpdmUgdG9rZW4gdmFsdWUgdGhhdCBjYW4gYmUgc2VudC4AAAAKbmF0aXZlX2NhcAAAAAAACgAAAEZFbmNvZGVkIGV4ZWN1dG9yIG9wdGlvbnMgKGx6UmVjZWl2ZSBnYXMsIGx6Q29tcG9zZSwgbmF0aXZlRHJvcCwgZXRjLikuAAAAAAAHb3B0aW9ucwAAAAAOAAABED09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNvbW1vbiBDb25maWd1cmF0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClByaWNlIGZlZWQgY29udHJhY3QgYWRkcmVzcyBmb3IgZ2FzIHByaWNlIGFuZCBleGNoYW5nZSByYXRlIGRhdGEuAAAACnByaWNlX2ZlZWQAAAAAABMAAADlPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KTWVzc2FnZSBQYXJhbWV0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBPQXBwIHNlbmRlciBhZGRyZXNzLgAAAAAAAAZzZW5kZXIAAAAAABMAAAABAAAAhEdhcyBwcmljZSBpbmZvcm1hdGlvbiBmb3IgYSBkZXN0aW5hdGlvbiBlbmRwb2ludC4KCkNvbnRhaW5zIHRoZSBleGNoYW5nZSByYXRlIGFuZCBnYXMgY29zdHMgbmVlZGVkIGZvciBjcm9zcy1jaGFpbiBmZWUgY2FsY3VsYXRpb25zLgAAAAAAAAAFUHJpY2UAAAAAAAADAAAAN0dhcyBjb3N0IHBlciBieXRlIG9mIGNhbGxkYXRhIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi4AAAAADGdhc19wZXJfYnl0ZQAAAAQAAABCR2FzIHByaWNlIGluIHRoZSBzbWFsbGVzdCB1bml0ICh3ZWkgZm9yIEVWTSwgc3Ryb29wcyBmb3IgU3RlbGxhcikuAAAAAAARZ2FzX3ByaWNlX2luX3VuaXQAAAAAAAAGAAAAqVByaWNlIHJhdGlvID0gKHJlbW90ZSBuYXRpdmUgdG9rZW4gcHJpY2UgLyBsb2NhbCBuYXRpdmUgdG9rZW4gcHJpY2UpICogUFJJQ0VfUkFUSU9fREVOT01JTkFUT1IuClVzZWQgdG8gY29udmVydCBkZXN0aW5hdGlvbiBjaGFpbiBnYXMgY29zdHMgdG8gc291cmNlIGNoYWluIG5hdGl2ZSB0b2tlbi4AAAAAAAALcHJpY2VfcmF0aW8AAAAACgAAAAEAAACARmVlIGVzdGltYXRpb24gcmVzdWx0IHdpdGggZGV0YWlsZWQgYnJlYWtkb3duLgoKQ29udGFpbnMgdGhlIGNhbGN1bGF0ZWQgZmVlIGFuZCBhbGwgaW50ZXJtZWRpYXRlIHZhbHVlcyB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4AAAAAAAAAC0ZlZUVzdGltYXRlAAAAAAQAAAAwU291cmNlIGNoYWluIG5hdGl2ZSB0b2tlbiBwcmljZSBpbiBVU0QgKHNjYWxlZCkuAAAAEG5hdGl2ZV9wcmljZV91c2QAAAAKAAAAJVByaWNlIHJhdGlvIHVzZWQgZm9yIHRoZSBjYWxjdWxhdGlvbi4AAAAAAAALcHJpY2VfcmF0aW8AAAAACgAAADJEZW5vbWluYXRvciBmb3IgdGhlIHByaWNlIHJhdGlvICh0eXBpY2FsbHkgMTBeMjApLgAAAAAAF3ByaWNlX3JhdGlvX2Rlbm9taW5hdG9yAAAAAAoAAAAxVG90YWwgZ2FzIGZlZSBpbiBzb3VyY2UgY2hhaW4gbmF0aXZlIHRva2VuIHVuaXRzLgAAAAAAAA10b3RhbF9nYXNfZmVlAAAAAAAACwAAAAIAAAAAAAAAAAAAAA1Xb3JrZXJTdG9yYWdlAAAAAAAACwAAAAAAAAAAAAAABlBhdXNlZAAAAAAAAAAAAAAAAAAORGVwb3NpdEFkZHJlc3MAAAAAAAAAAAAAAAAACVByaWNlRmVlZAAAAAAAAAAAAAAAAAAADFdvcmtlckZlZUxpYgAAAAAAAAAAAAAAFERlZmF1bHRNdWx0aXBsaWVyQnBzAAAAAQAAAAAAAAAUU3VwcG9ydGVkT3B0aW9uVHlwZXMAAAABAAAABAAAAAAAAAAAAAAAC01lc3NhZ2VMaWJzAAAAAAEAAAAAAAAACUFsbG93bGlzdAAAAAAAAAEAAAATAAAAAQAAAAAAAAAIRGVueWxpc3QAAAABAAAAEwAAAAAAAAAAAAAADUFsbG93bGlzdFNpemUAAAAAAAAAAAAAAAAAAAZBZG1pbnMAAACLAQ5jb250cmFjdG1ldGF2MAAAAAAAAAAGYmludmVyAAAAAAAFMC4wLjEAAAAAAAAAAAAABXJzdmVyAAAAAAAABjEuOTAuMAAAAAAAAAAAAAhyc3Nka3ZlcgAAAC8yMy40LjAjNjczZDZjNGYyMzY4ZDI4MmQyNWRhMjliZGE1NWMyMWI4YmU2OWNhNgAAHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAXAAAAAA==";
11
+ export declare const WASM_BASE64 = "AGFzbQEAAAABlgEaYAR+fn5+AX5gAn5+AX5gA35+fgF+YAF+AX5gAAF+YAN/f38AYAF/AX5gAn9/AGACfn4Bf2ACf34AYAN/fn4AYAABf2ABfwBgAX8Bf2AAAGACfn8AYAF+AGACfn8BfmAEf39/fwF+YAV+f39/fwBgAn9/AX5gAX4Bf2AFf39/fn4AYAJ+fgBgBH9+fn8AYAV/fn5+fgACowEbAWwBNwAAAWwBMQABAWwBXwACAWEBMAADAWwBMgABAXgBMQABAXYBMwADAXYBMQABAWkBNgABAWIBOAADAWwBNgADAWIBMAADAWkBXwADAWkBMAADAWkBMwABAWkBNQADAWkBNAADAXYBZwABAWIBagABAW0BOQACAW0BYQAAAXgBMAABAXgBMwAEAXgBOAAEAWwBMAABAWwBOAABAXgBNQADA3FwBQYHCAkKAQsMBw0LBg4EBAwPDgwQBgwRCRIGBwEFCQoJEwkBEBQDAwMDDA4BEAkHAQEDFQQMBAwDDRYHDBYIAAwKBAMEAQcHEAMMAwQHBAQEBAMXAQ4LCgQOBAEBCQYEBxQEBA4FCQUGBwUYGBkZGQUDAQARBiEEfwFBgIDAAAt/AEGshMAAC38AQc+GwAALfwBB0IbAAAsHpwUkBm1lbW9yeQIAEXNldF9wcmljZV91cGRhdGVyAD4bc2V0X3ByaWNlX3JhdGlvX2Rlbm9taW5hdG9yAEIgc2V0X2FyYml0cnVtX2NvbXByZXNzaW9uX3BlcmNlbnQAQxVzZXRfZWlkX3RvX21vZGVsX3R5cGUARAlzZXRfcHJpY2UARxZzZXRfcHJpY2VfZm9yX2FyYml0cnVtAEsac2V0X25hdGl2ZV90b2tlbl9wcmljZV91c2QATBBpc19wcmljZV91cGRhdGVyAE0cYXJiaXRydW1fY29tcHJlc3Npb25fcGVyY2VudABPEmFyYml0cnVtX3ByaWNlX2V4dABREWVpZF90b19tb2RlbF90eXBlAFMTZXN0aW1hdGVfZmVlX2J5X2VpZABaFm5hdGl2ZV90b2tlbl9wcmljZV91c2QAXQlnZXRfcHJpY2UAXhtnZXRfcHJpY2VfcmF0aW9fZGVub21pbmF0b3IAXw1fX2NvbnN0cnVjdG9yAGAHdXBncmFkZQBkB21pZ3JhdGUAZgZmcmVlemUAZwlpc19mcm96ZW4AaQphdXRob3JpemVyAGoFb3duZXIAaw1wZW5kaW5nX293bmVyAGwSdHJhbnNmZXJfb3duZXJzaGlwAG0acHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXIAbxBhY2NlcHRfb3duZXJzaGlwAHMScmVub3VuY2Vfb3duZXJzaGlwAHUTZXh0ZW5kX2luc3RhbmNlX3R0bAB2D3NldF90dGxfY29uZmlncwB3C3R0bF9jb25maWdzAHoSZnJlZXplX3R0bF9jb25maWdzAH0VaXNfdHRsX2NvbmZpZ3NfZnJvemVuAH4BXwMBCl9fZGF0YV9lbmQDAgtfX2hlYXBfYmFzZQMDCrKBAXAlACAAEJyAgIAAQgEgAa1CIIZCBIQgAq1CIIZCBIQQgICAgAAaC4QDAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBwABAgMEBQYACyABQaCCwIAAQRUQuICAgAAgASgCAA0HIAEgASkDCBC5gICAAAwGCyABQbWCwIAAQQwQuICAgAAgASgCAA0GIAEgASkDCCAAKQMIELqAgIAADAULIAFBwYLAgABBERC4gICAACABKAIADQUgASABKQMIIAA1AgRCIIZCBIQQuoCAgAAMBAsgAUHSgsCAAEEQELiAgIAAIAEoAgANBCABIAEpAwgQuYCAgAAMAwsgAUHigsCAAEEOELiAgIAAIAEoAgANAyABIAEpAwgQuYCAgAAMAgsgAUHwgsCAAEEaELiAgIAAIAEoAgANAiABIAEpAwgQuYCAgAAMAQsgAUGKg8CAAEEOELiAgIAAIAEoAgANASABIAEpAwggADUCBEIghkIEhBC6gICAAAsgASkDCCECIAEpAwBQDQELAAsgAUEQaiSAgICAACACC40BAgF/AX4jgICAgABBIGsiAiSAgICAAAJAAkACQCABEJyAgIAAIgNCAhCegICAAA0AQgAhAwwBCyACIANCAhCBgICAABCfgICAACACKAIAQQFGDQEgAikDECEDIAAgAikDGDcDGCAAIAM3AxBCASEDCyAAIAM3AwAgAEIANwMIIAJBIGokgICAgAAPCwALDwAgACABEJiAgIAAQgFRC3sCAX8BfgJAAkACQCABp0H/AXEiAkHEAEYNACACQQpHDQFCACEDIABCADcDGCAAIAFCCIg3AxAMAgsgARCPgICAACEDIAEQkICAgAAhASAAIAM3AxggACABNwMQQgAhAwwBCyAAQoOQgICAATcDCEIBIQMLIAAgAzcDAAsdACAAEJyAgIAAIAEgAhChgICAAEICEIKAgIAAGgtDAQF/I4CAgIAAQRBrIgIkgICAgAAgAiAAIAEQ3ICAgAACQCACKAIAQQFHDQAACyACKQMIIQEgAkEQaiSAgICAACABC1gBAn8jgICAgABBEGsiACSAgICAACAAQQRqEKOAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBCkgICAAAtBABClgICAACEBIABBEGokgICAgAAgAUH9AXELDAAgAEEBEISBgIAACxsAIACtQiCGQgSEIAGtQiCGQgSEEJmAgIAAGgtHAgF/AX5BAiEBAkAgABCDgYCAACICQgIQnoCAgABFDQBBASEBAkACQCACQgIQgYCAgACnQf8BcQ4CAQIACwALQQAhAQsgAQuLAQICfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahCjgICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQpICAgAALQQAhAQJAQQAQp4CAgAAiAkICEJ6AgIAARQ0AQQEhAQJAAkAgAkICEIGAgIAAp0H/AXEOAgECAAsAC0EAIQELIABBEGokgICAgAAgAQvCAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQAJAAkAgAEH/AXEOAwABAgALIAFBrobAgABBBhC4gICAACABKAIADQMgASABKQMIELmAgIAADAILIAFBtIbAgABBCBC4gICAACABKAIADQIgASABKQMIELmAgIAADAELIAFBvIbAgABBChC4gICAACABKAIADQEgASABKQMIELmAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILDwAQqYCAgAAQg4CAgAAaC2YCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQo4CAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEKSAgIAACyAAEKuAgIAAIAApAwghASAAKQMAQYoIEKyAgIAAIABBEGokgICAgAAgAQtKAgF/AX4jgICAgABBEGsiACSAgICAACAAEKuAgIAAIAApAwghASAAKQMAQYoIEKyAgIAAIAEQg4CAgAAaIABBEGokgICAgAAgAQtQAQF/I4CAgIAAQRBrIgEkgICAgAAgAUEEahCjgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQpICAgAALIAAQsYCAgAAgAUEQaiSAgICAAAspAAJAIACnQQFxRQ0ADwsgAUH6d2qtQiCGQoOAgIDggAF8EK+AgIAAAAtCAQF/I4CAgIAAQRBrIgAkgICAgAAgABCugICAAAJAIAApAwBQDQBCg4CAgLCBARCvgICAAAALIABBEGokgICAgAALkwECAX8CfiOAgICAAEEQayIBJICAgIAAIAFBBGoQo4CAgAACQCABKAIEQQFHDQAgASgCCCABKAIMEKSAgIAAC0IAIQICQAJAQQEQsICAgAAiA0IAEJ6AgIAARQ0AIANCABCBgICAACICQv8Bg0LNAFINASAAIAI3AwhCASECCyAAIAI3AwAgAUEQaiSAgICAAA8LAAsLACAAEJqAgIAAGguSAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQCAAQQFxRQ0AIAFBwYXAgABBDBC4gICAACABKAIADQIgASABKQMIELmAgIAADAELIAFBvIXAgABBBRC4gICAACABKAIADQEgASABKQMIELmAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILTQECfkIAIQECQAJAQQAQsICAgAAiAkICEJ6AgIAARQ0AIAJCAhCBgICAACIBQv8Bg0LNAFINASAAIAE3AwhCASEBCyAAIAE3AwAPCwALaQEBfyOAgICAAEEgayICJICAgIAAIAJBEGogABCzgICAAAJAIAIoAhBBAUcNAAALIAIgAikDGDcDCCACIAGtQiCGQgSENwMAQcCBwIAAQQIgAkECELSAgIAAIQAgAkEgaiSAgICAACAACzsAAkACQCABQv//////////AFYNACABQgiGQgaEIQEMAQsgARCMgICAACEBCyAAQgA3AwAgACABNwMICy4AAkAgASADRg0AAAsgAK1CIIZCBIQgAq1CIIZCBIQgAa1CIIZCBIQQk4CAgAALQwIBfwF+I4CAgIAAQRBrIgEkgICAgAAgASAAELaAgIAAAkAgASgCAEEBRw0AAAsgASkDCCECIAFBEGokgICAgAAgAgutAQIBfwN+I4CAgIAAQSBrIgIkgICAgAAgATUCGCEDIAJBCGogASkDEBCzgICAAEIBIQQCQCACKAIIDQAgAikDECEFIAJBCGogASkDACABKQMIENyAgIAAIAIoAggNACACIAIpAxA3AxggAiAFNwMQIAIgA0IghkIEhDcDCCAAQcCDwIAAQQMgAkEIakEDELSAgIAANwMIQgAhBAsgACAENwMAIAJBIGokgICAgAALDQAgAUICIACnQQFxGwtRAgF/AX4jgICAgABBEGsiAySAgICAACADIAEgAhCAgYCAAEIBIQQCQCADKAIADQAgACADKQMINwMIQgAhBAsgACAENwMAIANBEGokgICAgAALRAEBfyOAgICAAEEQayICJICAgIAAIAIgATcDCCACQQhqQQEQ/ICAgAAhASAAQgA3AwAgACABNwMIIAJBEGokgICAgAALSAEBfyOAgICAAEEQayIDJICAgIAAIAMgAjcDCCADIAE3AwAgA0ECEPyAgIAAIQIgAEIANwMAIAAgAjcDCCADQRBqJICAgIAAC7gBAgJ/AX4jgICAgABBIGsiAiSAgICAAEEAIQMCQANAIANBEEYNASACIANqQgI3AwAgA0EIaiEDDAALC0IBIQQCQCABQv8Bg0LMAFINACABQcCBwIAAQQIgAkECELyAgIAAIAIpAwAiAUL/AYNCBFINACACQRBqIAIpAwgQvYCAgAAgAigCEA0AIAIpAxghBCAAIAFCIIinNgIQIAAgBDcDCEIAIQQLIAAgBDcDACACQSBqJICAgIAACzEAAkAgAiAERg0AAAsgACABrUIghkIEhCADrUIghkIEhCACrUIghkIEhBCUgICAABoLXQIBfwF+AkACQCABp0H/AXEiAkHAAEYNAAJAIAJBBkYNAEIBIQNCg5CAgIABIQEMAgsgAUIIiCEBQgAhAwwBC0IAIQMgARCNgICAACEBCyAAIAM3AwAgACABNwMIC/IBAQJ/I4CAgIAAQRBrIgIkgICAgAACQCAAQv8Bg0LNAFINAEEBIAGnQf8BcSIDQQBHQQF0IANBAUYbIgNBAkYNABCogICAACACEKOAgIAAAkAgAigCAEEBRw0AIAIoAgQgAigCCBCkgICAAAsCQAJAIANBAXENACACQQE2AgAgAiAANwMIIAIQnICAgABCARCEgICAABoMAQsgABC/gICAAAtBgIDAgABBERDAgICAABDBgICAACEBIAIgADcDCCACIAOtNwMAIAFBoIDAgABBAiACQQIQtICAgAAQhYCAgAAaIAJBEGokgICAgABCAg8LAAtrAQF/I4CAgIAAQSBrIgEkgICAgAAgASAANwMIIAFBATYCACABEJyAgIAAQgFCARCCgICAABogAUEUahDFgICAAAJAIAEoAhRBAUcNACABIAEoAhggASgCHBCbgICAAAsgAUEgaiSAgICAAAtFAgF/AX4jgICAgABBEGsiAiSAgICAACACIAAgARCAgYCAAAJAIAIoAgBBAUcNAAALIAIpAwghAyACQRBqJICAgIAAIAMLYwMBfwF+AX8jgICAgABBEGsiASSAgICAACABIAA3AwBCAiECQQEhAwJAA0AgA0UNASADQX9qIQMgACECDAALCyABIAI3AwggAUEIakEBEPyAgIAAIQAgAUEQaiSAgICAACAAC6MBAgF/AX4jgICAgABBIGsiASSAgICAACABIAAQn4CAgAACQAJAIAEoAgBBAUYNACABKQMYIQAgASkDECECEKiAgIAAIAEQo4CAgAACQCABKAIAQQFHDQAgASgCBCABKAIIEKSAgIAACyACIACEQgBRDQEgAUEANgIAIAEgAiAAEKCAgIAAIAFBIGokgICAgABCAg8LAAtCg4CAgBAQr4CAgAAAC4kBAgF/AX4jgICAgABBIGsiASSAgICAACABIAAQn4CAgAACQCABKAIAQQFGDQAgASkDGCEAIAEpAxAhAhCogICAACABEKOAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBCkgICAAAsgAUEFNgIAIAEgAiAAEKCAgIAAIAFBIGokgICAgABCAg8LAAuXAwUBfwN+AX8BfgF/I4CAgIAAQSBrIgEkgICAgAACQCAAQv8Bg0LLAFINABCogICAACABEKOAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBCkgICAAAsgABCGgICAAEIgiCECQgAhAwNAAkACQAJAIAMgAlENACAAIANCIIZCBIQQh4CAgAAhBEEAIQUCQANAIAVBEEYNASABIAVqQgI3AwAgBUEIaiEFDAALC0EDIQUgBEL/AYNCzABSDQEgBEGQgsCAAEECIAFBAhC8gICAACABKQMAIgRC/wGDQgRSDQEgASkDCCIGQv8Bg0IEUg0CIARCIIinIQcgBkIgiKciBUEDIAVBA0kbIQUMAgsgAUEgaiSAgICAAEICDwsLAkAgA0L/////D1ENACAFQQNGDQAgAUEGNgIAIAEgBzYCBCABEJyAgIAAIAWtQiCGQgSEQgEQgoCAgAAaIAFBFGoQxYCAgAACQCABKAIUQQFHDQAgASABKAIYIAEoAhwQm4CAgAALIANCAXwhAwwBCwsQxoCAgAAACwALDAAgAEECEISBgIAACwkAEP+AgIAAAAuoBAUBfwF+An8BfgR/I4CAgIAAQYABayICJICAgIAAAkACQCAAQv8Bg0LNAFINACABQv8Bg0LLAFINACACQdAAahCjgICAAAJAIAIoAlBBAUcNACACKAJUIAIoAlgQpICAgAALIAAQyICAgAAgARCGgICAAEIgiCEDQgAhACACQdAAakEQaiIEQQhqIQUCQANAIAAgA1ENASABIABCIIZCBIQQh4CAgAAhBkEAIQcCQANAIAdBEEYNASACQcAAaiAHakICNwMAIAdBCGohBwwACwtBASEIAkACQCAGQv8Bg0LMAFENAAwBCyAGQdSBwIAAQQIgAkHAAGpBAhC8gICAACACKQNAIgZC/wGDQgRSDQAgAkHQAGogAikDSBDJgICAACACKAJQIghBAXENACAGQiCIpyEHIAJBIGpBGGogBEEYaikDADcDACACQSBqQRBqIARBEGopAwA3AwAgAiAEKQMANwMgIAIgBSkDADcDKAsgAEL/////D1ENAyACQRhqIgkgAkEgakEYaikDADcDACACQRBqIgogAkEgakEQaikDADcDACACIAIpAyg3AwggAiACKQMgNwMAIAhBAXENAyACQdAAakEYaiAJKQMANwMAIAQgCikDADcDACACIAIpAwg3A1ggAiACKQMANwNQIAIgBzYCcCAHIAJB0ABqEMqAgIAAIABCAXwhAAwACwsgAkGAAWokgICAgABCAg8LAAsQxoCAgAAAC20BAX8jgICAgABBEGsiASSAgICAACAAEIOAgIAAGiABEKuAgIAAAkACQAJAIAEoAgBBAUcNACABKQMIIAAQ2YCAgAANAQsgABDOgICAAEUNAQsgAUEQaiSAgICAAA8LQoOAgIDAABCvgICAAAALgQICAn8DfiOAgICAAEHAAGsiAiSAgICAAEEAIQMCQANAIANBGEYNASACQQhqIANqQgI3AwAgA0EIaiEDDAALC0IAIQRCASEFAkAgAUL/AYNCzABSDQAgAUHAg8CAAEEDIAJBCGpBAxC8gICAACACKQMIIgFC/wGDQgRSDQAgAkEgaiACKQMQEL2AgIAAIAIoAiANACACKQMoIQYgAkEgaiACKQMYEJ+AgIAAIAIoAiBBAUYNACACKQMwIQQgACACKQM4NwMYIAAgBDcDECAAIAFCIIinNgIoIAAgBjcDIEIAIQVCACEECyAAIAU3AwAgACAENwMIIAJBwABqJICAgIAAC4ICAgF/AX4jgICAgABBwABrIgIkgICAgAAgAkECNgIAIAIgADYCBCACEJyAgIAAIAEQtYCAgABCARCCgICAABogAkEwahDFgICAAAJAIAIoAjBBAUcNACACIAIoAjQgAigCOBCbgICAAAsgAkEQaiABQRBqKQMANwMAIAJBGGogAUEYaikDADcDACACIAEpAwA3AwAgAiABQQhqKQMANwMIIAIgADYCIEGwgMCAAEENEMCAgIAAEMGAgIAAIQMgAiACELWAgIAANwM4IAIgAK1CIIZCBIQ3AzAgA0HMgMCAAEECIAJBMGpBAhC0gICAABCFgICAABogAkHAAGokgICAgAAL5AMDAn8BfgF/I4CAgIAAQZABayICJICAgIAAAkAgAEL/AYNCzQBSDQBBACEDAkADQCADQRhGDQEgAkHIAGogA2pCAjcDACADQQhqIQMMAAsLIAFC/wGDQswAUg0AIAFB7IHAgABBAyACQcgAakEDELyAgIAAIAIpA0giBEL/AYNCBFINACACIAIpA1AQu4CAgAAgAigCAEEBRg0AIAIoAhAhAyACKQMIIQEgAkHgAGogAikDWBDJgICAACACKAJgQQFxDQAgAkEYaiACQYgBaikDADcDACACQRBqIAJBgAFqKQMANwMAIAIgAikDcDcDACACIAJB4ABqQRhqKQMANwMIIAIgBEIgiKciBTYCMCACIAM2AiggAiABNwMgIAJB4ABqEKOAgIAAAkAgAigCYEEBRw0AIAIoAmQgAigCaBCkgICAAAsgABDIgICAACAFIAIQyoCAgAAgAkEDNgJgIAJB4ABqEJyAgIAAIAEgAxCygICAAEICEIKAgIAAGkHcgMCAAEEaEMCAgIAAEMGAgIAAIQAgASADELKAgIAAIQEgAiAFrUIghkIEhDcDaCACIAE3A2AgAEGIgcCAAEEC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IQIgBEGgAWogCCAHENyAgIAAIAQoAqABDQAgBCkDqAEhAwJAAkAgAEKAgICAgICAwAB8Qv//////////AFYNACAAIACFIAEgAEI/h4WEQgBSDQAgAEIIhkILhCEADAELIAEgABCIgICAACEACyAEIAA3A4gBIAQgAzcDgAEgBCACNwN4IAQgCTcDcEGMhMCAAEEEIARB8ABqQQQQtICAgAAhACAEQbABaiSAgICAACAADwsAC4oBAwF/AX4BfyOAgICAAEEwayIBJICAgIAAIAFBEGoQo4CAgAACQCABKAIQQQFHDQAgASgCFCABKAIYEKSAgIAACyABQQQ2AgAgAUEQaiABEJ2AgIAAIAEpAyAhAiAAIAEpAyhCACABKAIQQQFxIgMbNwMIIAAgAkIAIAMbNwMAIAFBMGokgICAgAALRgACQAJAIAFC//////////8AViACQgBSIAJQGw0AIAFCCIZCCoQhAgwBCyACIAEQjoCAgAAhAgsgAEIANwMAIAAgAjcDCAs+AgF/AX4jgICAgABBEGsiACSAgICAACAAENuAgIAAIAApAwAgACkDCBChgICAACEBIABBEGokgICAgAAgAQt5AQF/I4CAgIAAQcAAayIBJICAgIAAAkAgAEL/AYNCBFINACABIABCIIinENaAgIAAAkACQCABKAIAQQFxDQBCAiEADAELIAFBMGogAUEQahC2gICAACABKAIwQQFxDQEgASkDOCEACyABQcAAaiSAgICAACAADwsACz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQ14CAgAAgACkDACAAKQMIEKGAgIAAIQEgAEEQaiSAgICAACABC3EAAkACQCAAQv8Bg0LNAFINACABQv8Bg0LNAFINAEGAyx5BgNIfEOGAgIAAQYDLHkGA0h8Q4oCAgABBABCwgICAAEICEJ6AgIAADQEgABDjgICAACABEL+AgIAAQgIPCwALQoOAgICQgQEQr4CAgAAACw4AQQEgACABEIWBgIAACw4AQQIgACABEIWBgIAACw4AQQAgAEICEPKAgIAAC6UBAQF/I4CAgIAAQRBrIgEkgICAgAACQAJAIABC/wGDQsgAUg0AIAAQiYCAgABCgICAgHCDQoCAgICABFINACABQQRqEKOAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBCkgICAAAsQqICAgAAQooCAgAANAUEBEOWAgIAAIAAQioCAgAAaIAFBEGokgICAgABCAg8LAAtCg4CAgMCDARCvgICAAAALDABBASAAEOiAgIAAC60BAQF/I4CAgIAAQRBrIgEkgICAgAACQAJAAkAgAEL/AYNCyABSDQAgAUEEahCjgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQpICAgAALEKiAgIAAQQEQpYCAgABB/QFxRQ0BIAAQi4CAgABC/wGDQgJSDQJBABDlgICAACABQRBqJICAgIAAQgIPCwALQoOAgICwgwEQr4CAgAAAC0KDgICAoIMBEK+AgIAAAAtaAQF/I4CAgIAAQRBrIgAkgICAgAAgAEEEahCjgICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQpICAgAALEKiAgIAAQQBBARDogICAACAAQRBqJICAgIAAQgILGgAgABCDgYCAACABrUL/AYNCAhCCgICAABoLCQAQooCAgACtCwgAEKmAgIAACz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQq4CAgAAgACkDACAAKQMIELeAgIAAIQEgAEEQaiSAgICAACABCz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQroCAgAAgACkDACAAKQMIELeAgIAAIQEgAEEQaiSAgICAACABC30CAX8BfiOAgICAAEEQayIBJICAgIAAAkAgAEL/AYNCzQBSDQAgAUEEahCjgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQpICAgAALEKqAgIAAIQIQrYCAgAAgABDjgICAACACIAAQ7oCAgAAgAUEQaiSAgICAAEICDwsAC2ECAX8BfiOAgICAAEEQayICJICAgIAAQbWEwIAAQRUQwICAgAAQwYCAgAAhAyACIAA3AwggAiABNwMAIANB3ITAgABBAiACQQIQtICAgAAQhYCAgAAaIAJBEGokgICAgAAL3AICAX8CfiOAgICAAEEgayICJICAgIAAAkACQAJAIABC/wGDQs0AUg0AIAFC/wGDQgRSDQAgAkEIahCjgICAAAJAIAIoAghBAUcNACACKAIMIAIoAhAQpICAgAALEKqAgIAAIQMCQAJAIAFC/////w9WDQAgAkEIahCugICAACACKQMQIQEgAikDCEGICBCsgICAACABIAAQ2YCAgABFDQMQ8ICAgAAMAQsQ8YCAgAAgAUIgiKdJDQNBASAAQgAQ8oCAgABBARCwgICAAEIAIAFChICAgHCDIgEgARCAgICAABpB7ITAgABBFhDAgICAABDBgICAACEEIAIgATcDGCACIAM3AxAgAiAANwMIIARBiIXAgABBAyACQQhqQQMQtICAgAAQhYCAgAAaCyACQSBqJICAgIAAQgIPCwALQoOAgIDggAEQr4CAgAAAC0KDgICA8IABEK+AgIAAAAsTAEEBELCAgIAAQgAQhICAgAAaCzMBAn4QloCAgAAhAAJAEJeAgIAAQiCIIgEgAEIgiCIAVA0AIAGnIACnaw8LEMaAgIAAAAsVACAAELCAgIAAIAEgAhCCgICAABoLpwECAX8CfiOAgICAAEEQayIAJICAgIAAIAAQo4CAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEKSAgIAACyAAEK6AgIAAIAApAwghASAAKQMAQYgIEKyAgIAAIAEQg4CAgAAaIAAQsYCAgAACQCAAKAIADQAQ9ICAgAAACyAAKQMIIQIQ8ICAgAAgARDjgICAACACIAEQ7oCAgAAgAEEQaiSAgICAAEICCwkAEMaAgIAAAAugAQIBfwJ+I4CAgIAAQRBrIgAkgICAgAAgABCjgICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQpICAgAALEKqAgIAAIQEQrYCAgABBABCwgICAAEICEISAgIAAGkGghcCAAEETEMCAgIAAEMGAgIAAIQIgACABNwMAIAJBtIXAgABBASAAQQEQtICAgAAQhYCAgAAaIABBEGokgICAgABCAgsxAAJAIABC/wGDQgRSDQAgAUL/AYNCBFINACAAQiCIpyABQiCIpxCkgICAAEICDwsAC94EAQV/I4CAgIAAQdAAayICJICAgIAAIAJBKGogABD4gICAAAJAIAIoAihBAkYNACACQQhqQQhqIAJBKGpBCGoiAygCADYCACACIAIpAig3AwggAkEoaiABEPiAgIAAIAIoAihBAkYNACACQRhqQQhqIAMoAgA2AgAgAiACKQIoNwMYIAJBKGoQo4CAgAACQCACKAIoQQFHDQAgAigCLCACKAIwEKSAgIAACxCogICAAAJAAkACQBCmgICAAA0AEPGAgIAAIgNBgPuAAyADQYD7gANJGyEEIAIgAkEYajYCLCACIAJBCGo2AihBACEDA0AgA0EIRg0DAkAgAkEoaiADaigCACIFKAIAQQFxRQ0AIAUoAggiBiAESw0DIAUoAgQgBksNAwsgA0EEaiEDDAALC0KDgICA0P8AEK+AgIAAAAtCg4CAgMD/ABCvgICAAAALAkACQCACKAIIQQFHDQAgAigCDCACKAIQEOGAgIAADAELQQEQp4CAgABCAhCEgICAABoLAkACQCACKAIYQQFHDQAgAigCHCACKAIgEOKAgIAADAELQQIQp4CAgABCAhCEgICAABoLIAJBKGpBCGogAkEIakEIaigCADYCACACQTxqIAJBGGpBCGooAgA2AgAgAiACKQMINwMoIAIgAikDGDcCNEHohcCAAEEPEMCAgIAAEMGAgIAAIQAgAkEoahD5gICAACEBIAIgAkE0ahD5gICAADcDSCACIAE3A0AgAEGMhsCAAEECIAJBwABqQQIQtICAgAAQhYCAgAAaIAJB0ABqJICAgIAAQgIPCwALaAEBfyOAgICAAEEQayICJICAgIAAAkACQCABQgJRDQAgAkEEaiABEIGBgIAAAkAgAigCBEUNACAAQQI2AgAMAgsgACACKQIINwIEIABBATYCAAwBCyAAQQA2AgALIAJBEGokgICAgAALQwIBfwF+I4CAgIAAQRBrIgEkgICAgAAgASAAEPuAgIAAAkAgASgCAEEBRw0AAAsgASkDCCECIAFBEGokgICAgAAgAgvCAQICfwF+I4CAgIAAQcAAayIAJICAgIAAIABBCGoQo4CAgAACQCAAKAIIQQFHDQAgACgCDCAAKAIQEKSAgIAACyAAQQhqEKOAgIAAIABBFGoiARDFgICAACAAQTBqIABBCGoQ+4CAgAACQAJAIAAoAjANACAAKQM4IQIgAEEwaiABEPuAgIAAIAAoAjBBAUcNAQsACyAAIAApAzg3AyggACACNwMgIABBIGpBAhD8gICAACECIABBwABqJICAgIAAIAILMAACQCABKAIAQQFHDQAgACABKAIEIAEoAggQgoGAgAAPCyAAQgA3AwAgAEICNwMICxoAIACtQiCGQgSEIAGtQiCGQgSEEJGAgIAAC6oBAQF/I4CAgIAAQSBrIgAkgICAgAAgAEEMahCjgICAAAJAIAAoAgxBAUcNACAAKAIQIAAoAhQQpICAgAALEKiAgIAAAkAQ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AAAAbW9kZWxfdHlwZQAAPQAQAAcAAAAEARAACgAAAFByaWNlUmF0aW9EZW5vbWluYXRvclByaWNlVXBkYXRlckRlZmF1bHRNb2RlbFByaWNlQXJiaXRydW1QcmljZUV4dE5hdGl2ZVByaWNlVVNEQXJiaXRydW1Db21wcmVzc2lvblBlcmNlbnRFaWRUb01vZGVsVHlwZWdhc19wZXJfYnl0ZWdhc19wcmljZV9pbl91bml0cHJpY2VfcmF0aW+YARAADAAAAKQBEAARAAAAtQEQAAsAAABuYXRpdmVfcHJpY2VfdXNkcHJpY2VfcmF0aW9fZGVub21pbmF0b3J0b3RhbF9nYXNfZmVl2AEQABAAAAC1ARAACwAAAOgBEAAXAAAA/wEQAA0AAAB0aHJlc2hvbGRvd25lcnNoaXBfdHJhbnNmZXJyZWRuZXdfb3duZXJvbGRfb3duZXJKAhAACQAAAFMCEAAJAAAAb3duZXJzaGlwX3RyYW5zZmVycmluZ3R0bAAAAEoCEAAJAAAAUwIQAAkAAACCAhAAAwAAAG93bmVyc2hpcF9yZW5vdW5jZWQAUwIQAAkAAABPd25lclBlbmRpbmdPd25lcmV4dGVuZF90bwAAzQIQAAkAAAAsAhAACQAAAHR0bF9jb25maWdzX3NldGluc3RhbmNlcGVyc2lzdGVudAAAAPcCEAAIAAAA/wIQAAoAAAB0dGxfY29uZmlnc19mcm96ZW5Gcm96ZW5JbnN0YW5jZVBlcnNpc3RlbnRNaWdyYXRpbmcAp3YOY29udHJhY3RzcGVjdjAAAAAEAAAAAAAAAAAAAAAOUHJpY2VGZWVkRXJyb3IAAAAAAAUAAAAAAAAAEkludmFsaWREZW5vbWluYXRvcgAAAAAAAQAAAAAAAAAHTm9QcmljZQAAAAACAAAAAAAAAAxOb3RBbk9wU3RhY2sAAAADAAAAAAAAABBPbmx5UHJpY2VVcGRhdGVyAAAABAAAAAAAAAAIT3ZlcmZsb3cAAAAFAAAABQAAAAAAAAAAAAAAD1ByaWNlVXBkYXRlclNldAAAAAABAAAAEXByaWNlX3VwZGF0ZXJfc2V0AAAAAAAAAgAAAAAAAAAHdXBkYXRlcgAAAAATAAAAAAAAAAAAAAAGYWN0aXZlAAAAAAABAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAMUHJpY2VVcGRhdGVkAAAAAQAAAA1wcmljZV91cGRhdGVkAAAAAAAAAgAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAAAAAAFcHJpY2UAAAAAAAfQAAAABVByaWNlAAAAAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAXQXJiaXRydW1QcmljZUV4dFVwZGF0ZWQAAAAAAQAAABphcmJpdHJ1bV9wcmljZV9leHRfdXBkYXRlZAAAAAAAAgAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAAAAAASYXJiaXRydW1fcHJpY2VfZXh0AAAAAAfQAAAAEEFyYml0cnVtUHJpY2VFeHQAAAAAAAAAAgAAAAEAAAAhQXJiaXRydW0tc3BlY2lmaWMgcHJpY2UgZXh0ZW5zaW9uAAAAAAAAAAAAABBBcmJpdHJ1bVByaWNlRXh0AAAAAgAAAEFHYXMgY29zdCBwZXIgYnl0ZSBvZiBMMSBjYWxsZGF0YSAoZm9yIEFyYml0cnVtJ3MgTDEgZGF0YSBwb3N0aW5nKQAAAAAAABhnYXNfcGVyX2wxX2NhbGxkYXRhX2J5dGUAAAAEAAAAH0dhcyBvdmVyaGVhZCBwZXIgTDIgdHJhbnNhY3Rpb24AAAAADWdhc19wZXJfbDJfdHgAAAAAAAAGAAAAAQAAACVQYXJhbWV0ZXIgZm9yIHVwZGF0aW5nIGEgc2luZ2xlIHByaWNlAAAAAAAAAAAAAAtVcGRhdGVQcmljZQAAAAACAAAAF0Rlc3RpbmF0aW9uIGVuZHBvaW50IElEAAAAAANlaWQAAAAABAAAACVQcmljZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGRlc3RpbmF0aW9uAAAAAAAABXByaWNlAAAAAAAH0AAAAAVQcmljZQAAAAAAAAEAAAA0UGFyYW1ldGVyIGZvciB1cGRhdGluZyBBcmJpdHJ1bSBwcmljZSB3aXRoIGV4dGVuc2lvbgAAAAAAAAAOVXBkYXRlUHJpY2VFeHQAAAAAAAMAAAA4RGVzdGluYXRpb24gZW5kcG9pbnQgSUQgKHNob3VsZCBiZSBhbiBBcmJpdHJ1bSBlbmRwb2ludCkAAAADZWlkAAAAAAQAAAAjQXJiaXRydW0tc3BlY2lmaWMgcHJpY2luZyBleHRlbnNpb24AAAAABmV4dGVuZAAAAAAH0AAAABBBcmJpdHJ1bVByaWNlRXh0AAAAJVByaWNlIGluZm9ybWF0aW9uIGZvciB0aGUgZGVzdGluYXRpb24AAAAAAAAFcHJpY2UAAAAAAAfQAAAABVByaWNlAAAAAAAAAwAAADBGZWUgbW9kZWwgdHlwZSBmb3IgZGlmZmVyZW50IGNoYWluIGFyY2hpdGVjdHVyZXMAAAAAAAAACU1vZGVsVHlwZQAAAAAAAAMAAAAAAAAAB0RlZmF1bHQAAAAAAAAAAAAAAAAIQXJiU3RhY2sAAAABAAAAAAAAAAdPcFN0YWNrAAAAAAIAAAABAAAAL1BhcmFtZXRlciBmb3Igc2V0dGluZyBFSUQgdG8gbW9kZWwgdHlwZSBtYXBwaW5nAAAAAAAAAAAWU2V0RWlkVG9Nb2RlbFR5cGVQYXJhbQAAAAAAAgAAABdEZXN0aW5hdGlvbiBlbmRwb2ludCBJRAAAAAAHZHN0X2VpZAAAAAAEAAAAI0ZlZSBtb2RlbCB0eXBlIGZvciB0aGlzIGRlc3RpbmF0aW9uAAAAAAptb2RlbF90eXBlAAAAAAfQAAAACU1vZGVsVHlwZQAAAAAAAAAAAAAlU2V0IHByaWNlIHVwZGF0ZXIgc3RhdHVzIChvd25lciBvbmx5KQAAAAAAABFzZXRfcHJpY2VfdXBkYXRlcgAAAAAAAAIAAAAAAAAAB3VwZGF0ZXIAAAAAEwAAAAAAAAAGYWN0aXZlAAAAAAABAAAAAAAAAAAAAAAsU2V0IHRoZSBwcmljZSByYXRpbyBkZW5vbWluYXRvciAob3duZXIgb25seSkAAAAbc2V0X3ByaWNlX3JhdGlvX2Rlbm9taW5hdG9yAAAAAAEAAAAAAAAAC2Rlbm9taW5hdG9yAAAAAAoAAAAAAAAAAAAAADRTZXQgdGhlIEFyYml0cnVtIGNvbXByZXNzaW9uIHBlcmNlbnRhZ2UgKG93bmVyIG9ubHkpAAAAIHNldF9hcmJpdHJ1bV9jb21wcmVzc2lvbl9wZXJjZW50AAAAAQAAAAAAAAATY29tcHJlc3Npb25fcGVyY2VudAAAAAAKAAAAAAAAAAAAAAA4U2V0IHRoZSBmZWUgbW9kZWwgdHlwZSBmb3IgZGVzdGluYXRpb24gRUlEcyAob3duZXIgb25seSkAAAAVc2V0X2VpZF90b19tb2RlbF90eXBlAAAAAAAAAQAAAAAAAAAGcGFyYW1zAAAAAAPqAAAH0AAAABZTZXRFaWRUb01vZGVsVHlwZVBhcmFtAAAAAAAAAAAAAAAAAD1TZXQgcHJpY2VzIGZvciBtdWx0aXBsZSBkZXN0aW5hdGlvbnMgKHByaWNlIHVwZGF0ZXIgb3Igb3duZXIpAAAAAAAACXNldF9wcmljZQAAAAAAAAIAAAAAAAAADXByaWNlX3VwZGF0ZXIAAAAAAAATAAAAAAAAAAZwcmljZXMAAAAAA+oAAAfQAAAAC1VwZGF0ZVByaWNlAAAAAAAAAAAAAAAAclNldCBwcmljZSBmb3IgQXJiaXRydW0gd2l0aCBleHRlbnNpb24gKHByaWNlIHVwZGF0ZXIgb3Igb3duZXIpCkNvcnJlc3BvbmRzIHRvIHNldFByaWNlRm9yQXJiaXRydW0gaW4gUHJpY2VGZWVkLnNvbAAAAAAAFnNldF9wcmljZV9mb3JfYXJiaXRydW0AAAAAAAIAAAAAAAAADXByaWNlX3VwZGF0ZXIAAAAAAAATAAAAAAAAAAZ1cGRhdGUAAAAAB9AAAAAOVXBkYXRlUHJpY2VFeHQAAAAAAAAAAAAAAAAAtFNldCB0aGUgbmF0aXZlIHRva2VuIHByaWNlIGluIFVTRCAocHJpY2UgdXBkYXRlciBvciBvd25lcikuCgpLZXB0IGFzIGEgc3RhbmRhbG9uZSBjb250cmFjdCBmdW5jdGlvbiAobm90IHBhcnQgb2YgdGhlIGNhbm9uaWNhbCBgZmVlX2xpYl9pbnRlcmZhY2VzOjpJTGF5ZXJaZXJvUHJpY2VGZWVkYCBpbnRlcmZhY2UpLgAAABpzZXRfbmF0aXZlX3Rva2VuX3ByaWNlX3VzZAAAAAAAAgAAAAAAAAANcHJpY2VfdXBkYXRlcgAAAAAAABMAAAAAAAAAFm5hdGl2ZV90b2tlbl9wcmljZV91c2QAAAAAAAoAAAAAAAAAAAAAAC5DaGVjayBpZiBhbiBhZGRyZXNzIGlzIGFuIGFjdGl2ZSBwcmljZSB1cGRhdGVyAAAAAAAQaXNfcHJpY2VfdXBkYXRlcgAAAAEAAAAAAAAAB3VwZGF0ZXIAAAAAEwAAAAEAAAABAAAAAAAAACRHZXQgdGhlIEFyYml0cnVtIGNvbXByZXNzaW9uIHBlcmNlbnQAAAAcYXJiaXRydW1fY29tcHJlc3Npb25fcGVyY2VudAAAAAAAAAABAAAACgAAAAAAAAAgR2V0IHRoZSBBcmJpdHJ1bSBwcmljZSBleHRlbnNpb24AAAASYXJiaXRydW1fcHJpY2VfZXh0AAAAAAAAAAAAAQAAB9AAAAAQQXJiaXRydW1QcmljZUV4dAAAAAAAAAAoR2V0IHRoZSBtb2RlbCB0eXBlIGZvciBhIGRlc3RpbmF0aW9uIEVJRAAAABFlaWRfdG9fbW9kZWxfdHlwZQAAAAAAAAEAAAAAAAAAB2RzdF9laWQAAAAABAAAAAEAAAfQAAAACU1vZGVsVHlwZQAAAAAAAAAAAABkRXN0aW1hdGUgZmVlIHdpdGggZGV0YWlsZWQgYnJlYWtkb3duIGJ5IGVuZHBvaW50IElECkNvcnJlc3BvbmRzIHRvIGVzdGltYXRlRmVlQnlFaWQgaW4gUHJpY2VGZWVkLnNvbAAAABNlc3RpbWF0ZV9mZWVfYnlfZWlkAAAAAAQAAAAAAAAAB2ZlZV9saWIAAAAAEwAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAA1jYWxsZGF0YV9zaXplAAAAAAAABAAAAAAAAAADZ2FzAAAAAAoAAAABAAAH0AAAAAtGZWVFc3RpbWF0ZQAAAAAAAAAAIUdldCB0aGUgbmF0aXZlIHRva2VuIHByaWNlIGluIFVTRAAAAAAAABZuYXRpdmVfdG9rZW5fcHJpY2VfdXNkAAAAAAAAAAAAAQAAAAoAAAAAAAAAJEdldCB0aGUgcHJpY2UgZm9yIGEgZGVzdGluYXRpb24gRUlELgAAAAlnZXRfcHJpY2UAAAAAAAABAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAABAAAD6AAAB9AAAAAFUHJpY2UAAAAAAAAAAAAAIEdldCB0aGUgcHJpY2UgcmF0aW8gZGVub21pbmF0b3IuAAAAG2dldF9wcmljZV9yYXRpb19kZW5vbWluYXRvcgAAAAAAAAAAAQAAAAoAAAAAAAAAAAAAAA1fX2NvbnN0cnVjdG9yAAAAAAAAAgAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAAA1wcmljZV91cGRhdGVyAAAAAAAAEwAAAAAAAAAAAAAAlVRoZSB0eXBlIG9mIGRhdGEgcmVxdWlyZWQgZm9yIG1pZ3JhdGlvbi4KVXBncmFkZXMgdGhlIGNvbnRyYWN0IHRvIG5ldyBXQVNNIGJ5dGVjb2RlLgpTZXRzIGEgbWlncmF0aW9uIGZsYWcgdGhhdCBtdXN0IGJlIGNsZWFyZWQgYnkgY2FsbGluZyBgbWlncmF0ZWAuAAAAAAAAB3VwZ3JhZGUAAAAAAQAAAAAAAAANbmV3X3dhc21faGFzaAAAAAAAA+4AAAAgAAAAAAAAAAAAAAB2UnVucyBtaWdyYXRpb24gbG9naWMgYWZ0ZXIgYW4gdXBncmFkZS4KQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIG1pZ3JhdGlvbiBmbGFnIGlzIHNldCBieSBhIHByZXZpb3VzIGB1cGdyYWRlYCBjYWxsLgAAAAAAB21pZ3JhdGUAAAAAAQAAAAAAAAAObWlncmF0aW9uX2RhdGEAAAAAAA4AAAAAAAAAAAAAAF5QZXJtYW5lbnRseSBmcmVlemVzIHRoZSBjb250cmFjdCwgcHJldmVudGluZyBhbnkgZnV0dXJlIHVwZ3JhZGVzLgpUaGlzIGFjdGlvbiBpcyBpcnJldmVyc2libGUuAAAAAAAGZnJlZXplAAAAAAAAAAAAAAAAAAAAAAA7UmV0dXJucyB3aGV0aGVyIHRoZSBjb250cmFjdCBpcyBmcm96ZW4gKHVwZ3JhZGVzIGRpc2FibGVkKS4AAAAACWlzX2Zyb3plbgAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAACmF1dGhvcml6ZXIAAAAAAAAAAAABAAAAEwAAAAAAAAA+UmV0dXJucyB0aGUgY3VycmVudCBvd25lciBhZGRyZXNzLCBvciBOb25lIGlmIG5vIG93bmVyIGlzIHNldC4AAAAAAAVvd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAAAWVJldHVybnMgdGhlIHBlbmRpbmcgb3duZXIgYWRkcmVzcyBmb3IgMi1zdGVwIHRyYW5zZmVyLCBvciBOb25lIGlmIG5vIHRyYW5zZmVyIGlzIHBlbmRpbmcuAAAAAAAADXBlbmRpbmdfb3duZXIAAAAAAAAAAAAAAQAAA+gAAAATAAAAAAAAAStUcmFuc2ZlcnMgb3duZXJzaGlwIGltbWVkaWF0ZWx5IHRvIGEgbmV3IGFkZHJlc3MuCgpVc2Ugd2l0aCBjYXV0aW9uIC0gaWYgeW91IHRyYW5zZmVyIHRvIGEgd3JvbmcgYWRkcmVzcywgb3duZXJzaGlwIGlzIGxvc3QgZm9yZXZlci4KQ29uc2lkZXIgdXNpbmcgYHByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyYCBpbnN0ZWFkLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgVHJhbnNmZXJJblByb2dyZXNzYCBpZiBhIDItc3RlcCB0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcwAAAAASdHJhbnNmZXJfb3duZXJzaGlwAAAAAAABAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAJcUHJvcG9zZXMgYW4gb3duZXJzaGlwIHRyYW5zZmVyIHRvIGEgbmV3IGFkZHJlc3MuCgpUaGUgbmV3IG93bmVyIG11c3QgY2FsbCBgYWNjZXB0X293bmVyc2hpcCgpYCB3aXRoaW4gYHR0bGAgbGVkZ2Vycwp0byBjb21wbGV0ZSB0aGUgdHJhbnNmZXIuIFRoZSBwZW5kaW5nIHRyYW5zZmVyIHdpbGwgYXV0b21hdGljYWxseSBleHBpcmUgYWZ0ZXIuCgojIEFyZ3VtZW50cwotIGBuZXdfb3duZXJgIC0gVGhlIHByb3Bvc2VkIG5ldyBvd25lcgotIGB0dGxgIC0gTnVtYmVyIG9mIGxlZGdlcnMgdGhlIG5ldyBvd25lciBoYXMgdG8gYWNjZXB0LgpVc2UgYDBgIHRvIGNhbmNlbCBhIHBlbmRpbmcgdHJhbnNmZXIgKG5ld19vd25lciBtdXN0IG1hdGNoIHBlbmRpbmcpLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIHdoZW4gY2FuY2VsbGluZyBhbmQgbm8gcGVuZGluZyB0cmFuc2ZlciBleGlzdHMKLSBgSW52YWxpZFR0bGAgaWYgdHRsIGV4Y2VlZHMgbWF4IFRUTAotIGBJbnZhbGlkUGVuZGluZ093bmVyYCB3aGVuIGNhbmNlbGxpbmcgd2l0aCB3cm9uZyBuZXdfb3duZXIgYWRkcmVzcwAAABpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgAAAAAAAgAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAAAAALlBY2NlcHRzIGEgcGVuZGluZyAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyLgoKTXVzdCBiZSBjYWxsZWQgYnkgdGhlIHBlbmRpbmcgb3duZXIgYmVmb3JlIHRoZSBUVEwgZXhwaXJlcy4KCiMgUGFuaWNzCi0gYE5vUGVuZGluZ1RyYW5zZmVyYCBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIHRyYW5zZmVyIChvciBpdCBleHBpcmVkKQAAAAAAABBhY2NlcHRfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAAApFBlcm1hbmVudGx5IHJlbm91bmNlcyBvd25lcnNoaXAuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzIChjYW5jZWwgaXQgZmlyc3QpAAAAEnJlbm91bmNlX293bmVyc2hpcAAAAAAAAAAAAAAAAAAAAAAApUV4dGVuZHMgdGhlIGluc3RhbmNlIFRUTC4KCiMgQXJndW1lbnRzCgoqIGB0aHJlc2hvbGRgIC0gVGhlIHRocmVzaG9sZCB0byBleHRlbmQgdGhlIFRUTCAoaWYgY3VycmVudCBUVEwgaXMgYmVsb3cgdGhpcywgZXh0ZW5kKS4KKiBgZXh0ZW5kX3RvYCAtIFRoZSBUVEwgdG8gZXh0ZW5kIHRvLgAAAAAAABNleHRlbmRfaW5zdGFuY2VfdHRsAAAAAAIAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAACWV4dGVuZF90bwAAAAAAAAQAAAAAAAAAAAAAAY9TZXRzIFRUTCBjb25maWdzIGZvciBpbnN0YW5jZSBhbmQgcGVyc2lzdGVudCBzdG9yYWdlLgoKLSBgTm9uZWAgdmFsdWVzIHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBjb25maWcgKGRpc2FibGVzIGF1dG8tZXh0ZW5zaW9uIGZvciB0aGF0IHR5cGUpCi0gVmFsaWRhdGVzIHRoYXQgYHRocmVzaG9sZCA8PSBleHRlbmRfdG8gPD0gTUFYX1RUTGAKCiMgQXJndW1lbnRzCi0gYGluc3RhbmNlYCAtIFRUTCBjb25maWcgZm9yIGluc3RhbmNlIHN0b3JhZ2UKLSBgcGVyc2lzdGVudGAgLSBUVEwgY29uZmlnIGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UKCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0Zyb3plbmAgaWYgY29uZmlncyBhcmUgZnJvemVuCi0gYEludmFsaWRUdGxDb25maWdgIGlmIHZhbGlkYXRpb24gZmFpbHMAAAAAD3NldF90dGxfY29uZmlncwAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAABIUmV0dXJucyB0aGUgY3VycmVudCBUVEwgY29uZmlncyBhcyAoaW5zdGFuY2VfY29uZmlnLCBwZXJzaXN0ZW50X2NvbmZpZykuAAAAC3R0bF9jb25maWdzAAAAAAAAAAABAAAD7QAAAAIAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAA4VBlcm1hbmVudGx5IGZyZWV6ZXMgVFRMIGNvbmZpZ3MsIHByZXZlbnRpbmcgYW55IGZ1dHVyZSBtb2RpZmljYXRpb25zLgoKVGhpcyBpcyBpcnJldmVyc2libGUgYW5kIHByb3ZpZGVzIGltbXV0YWJpbGl0eSBndWFyYW50ZWVzIHRvIHVzZXJzLgpFbWl0cyBgVHRsQ29uZmlnc0Zyb3plbmAgZXZlbnQuCgojIFBhbmljcwotIGBUdGxDb25maWdBbHJlYWR5RnJvemVuYCBpZiBhbHJlYWR5IGZyb3plbgAAAAAAABJmcmVlemVfdHRsX2NvbmZpZ3MAAAAAAAAAAAAAAAAAAAAAACdSZXR1cm5zIHdoZXRoZXIgVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAFWlzX3R0bF9jb25maWdzX2Zyb3plbgAAAAAAAAAAAAABAAAAAQAAAAIAAAAAAAAAAAAAABBQcmljZUZlZWRTdG9yYWdlAAAABwAAAAAAAAAAAAAAFVByaWNlUmF0aW9EZW5vbWluYXRvcgAAAAAAAAEAAAAAAAAADFByaWNlVXBkYXRlcgAAAAEAAAATAAAAAQAAAAAAAAARRGVmYXVsdE1vZGVsUHJpY2UAAAAAAAABAAAABAAAAAAAAAAAAAAAEEFyYml0cnVtUHJpY2VFeHQAAAAAAAAAAAAAAA5OYXRpdmVQcmljZVVTRAAAAAAAAAAAAAAAAAAaQXJiaXRydW1Db21wcmVzc2lvblBlcmNlbnQAAAAAAAEAAAAAAAAADkVpZFRvTW9kZWxUeXBlAAAAAAABAAAABAAAAAEAAADhUGFyYW1ldGVycyBmb3IgRFZOIGZlZSBjYWxjdWxhdGlvbi4KCkNvbnRhaW5zIGFsbCBpbnB1dHMgbmVlZGVkIGJ5IHRoZSBmZWUgbGlicmFyeSB0byBjYWxjdWxhdGUgdmVyaWZpY2F0aW9uIGZlZXMKZm9yIGNyb3NzLWNoYWluIG1lc3NhZ2VzLiBJbmNsdWRlcyBtZXNzYWdlIHBhcmFtZXRlcnMsIGNvbW1vbiBjb25maWd1cmF0aW9uLAphbmQgZGVzdGluYXRpb24tc3BlY2lmaWMgc2V0dGluZ3MuAAAAAAAAAAAAAAxEdm5GZWVQYXJhbXMAAAAKAAAAJ051bWJlciBvZiBibG9jayBjb25maXJtYXRpb25zIHJlcXVpcmVkLgAAAAANY29uZmlybWF0aW9ucwAAAAAAAAYAAABMRGVmYXVsdCBmZWUgbXVsdGlwbGllciBpbiBiYXNpcyBwb2ludHMgKHVzZWQgaWYgbm8gZHN0LXNwZWNpZmljIG11bHRpcGxpZXIpLgAAABZkZWZhdWx0X211bHRpcGxpZXJfYnBzAAAAAAAEAAAAK0Rlc3RpbmF0aW9uIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAB2RzdF9laWQAAAAABAAAACNNaW5pbXVtIGZlZSBtYXJnaW4gaW4gVVNEIChzY2FsZWQpLgAAAAAQZmxvb3JfbWFyZ2luX3VzZAAAAAoAAAEQPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRGVzdGluYXRpb24tU3BlY2lmaWMgQ29uZmlndXJhdGlvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpHYXMgZXN0aW1hdGUgZm9yIHZlcmlmaWNhdGlvbiBvbiBkZXN0aW5hdGlvbiBjaGFpbi4AAAADZ2FzAAAAAAoAAABGRGVzdGluYXRpb24tc3BlY2lmaWMgZmVlIG11bHRpcGxpZXIgaW4gYmFzaXMgcG9pbnRzICgwID0gdXNlIGRlZmF1bHQpLgAAAAAADm11bHRpcGxpZXJfYnBzAAAAAAAEAAAAC0RWTiBvcHRpb25zAAAAAAdvcHRpb25zAAAAAA4AAAEQPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ29tbW9uIENvbmZpZ3VyYXRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUHJpY2UgZmVlZCBjb250cmFjdCBhZGRyZXNzIGZvciBnYXMgcHJpY2UgYW5kIGV4Y2hhbmdlIHJhdGUgZGF0YS4AAAAKcHJpY2VfZmVlZAAAAAAAEwAAACdOdW1iZXIgb2YgcmVxdWlyZWQgc2lnbmF0dXJlcyAocXVvcnVtKS4AAAAABnF1b3J1bQAAAAAABAAAAOU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpNZXNzYWdlIFBhcmFtZXRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIE9BcHAgc2VuZGVyIGFkZHJlc3MuAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAADjUGFyYW1ldGVycyBmb3IgZXhlY3V0b3IgZmVlIGNhbGN1bGF0aW9uLgoKQ29udGFpbnMgYWxsIGlucHV0cyBuZWVkZWQgYnkgdGhlIGZlZSBsaWJyYXJ5IHRvIGNhbGN1bGF0ZSBleGVjdXRpb24gZmVlcwpmb3IgY3Jvc3MtY2hhaW4gbWVzc2FnZXMuIEluY2x1ZGVzIG1lc3NhZ2UgcGFyYW1ldGVycywgY29tbW9uIGNvbmZpZ3VyYXRpb24sCmFuZCBkZXN0aW5hdGlvbi1zcGVjaWZpYyBzZXR0aW5ncy4AAAAAAAAAAAlGZWVQYXJhbXMAAAAAAAALAAAAJlNpemUgb2YgdGhlIG1lc3NhZ2UgY2FsbGRhdGEgaW4gYnl0ZXMuAAAAAAANY2FsbGRhdGFfc2l6ZQAAAAAAAAQAAABMRGVmYXVsdCBmZWUgbXVsdGlwbGllciBpbiBiYXNpcyBwb2ludHMgKHVzZWQgaWYgbm8gZHN0LXNwZWNpZmljIG11bHRpcGxpZXIpLgAAABZkZWZhdWx0X211bHRpcGxpZXJfYnBzAAAAAAAEAAAAK0Rlc3RpbmF0aW9uIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAB2RzdF9laWQAAAAABAAAACNNaW5pbXVtIGZlZSBtYXJnaW4gaW4gVVNEIChzY2FsZWQpLgAAAAAQZmxvb3JfbWFyZ2luX3VzZAAAAAoAAAA2QmFzZSBnYXMgZm9yIGVhY2ggbHpDb21wb3NlIGNhbGwgb24gZGVzdGluYXRpb24gY2hhaW4uAAAAAAATbHpfY29tcG9zZV9iYXNlX2dhcwAAAAAGAAABEz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkRlc3RpbmF0aW9uLVNwZWNpZmljIENvbmZpZ3VyYXRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQmFzZSBnYXMgZm9yIGx6UmVjZWl2ZSBleGVjdXRpb24gb24gZGVzdGluYXRpb24gY2hhaW4uAAAAABNsel9yZWNlaXZlX2Jhc2VfZ2FzAAAAAAYAAABGRGVzdGluYXRpb24tc3BlY2lmaWMgZmVlIG11bHRpcGxpZXIgaW4gYmFzaXMgcG9pbnRzICgwID0gdXNlIGRlZmF1bHQpLgAAAAAADm11bHRpcGxpZXJfYnBzAAAAAAAEAAAALE1heGltdW0gbmF0aXZlIHRva2VuIHZhbHVlIHRoYXQgY2FuIGJlIHNlbnQuAAAACm5hdGl2ZV9jYXAAAAAAAAoAAABGRW5jb2RlZCBleGVjdXRvciBvcHRpb25zIChselJlY2VpdmUgZ2FzLCBsekNvbXBvc2UsIG5hdGl2ZURyb3AsIGV0Yy4pLgAAAAAAB29wdGlvbnMAAAAADgAAARA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDb21tb24gQ29uZmlndXJhdGlvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQcmljZSBmZWVkIGNvbnRyYWN0IGFkZHJlc3MgZm9yIGdhcyBwcmljZSBhbmQgZXhjaGFuZ2UgcmF0ZSBkYXRhLgAAAApwcmljZV9mZWVkAAAAAAATAAAA5T09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck1lc3NhZ2UgUGFyYW1ldGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgT0FwcCBzZW5kZXIgYWRkcmVzcy4AAAAAAAAGc2VuZGVyAAAAAAATAAAAAQAAAIRHYXMgcHJpY2UgaW5mb3JtYXRpb24gZm9yIGEgZGVzdGluYXRpb24gZW5kcG9pbnQuCgpDb250YWlucyB0aGUgZXhjaGFuZ2UgcmF0ZSBhbmQgZ2FzIGNvc3RzIG5lZWRlZCBmb3IgY3Jvc3MtY2hhaW4gZmVlIGNhbGN1bGF0aW9ucy4AAAAAAAAABVByaWNlAAAAAAAAAwAAADdHYXMgY29zdCBwZXIgYnl0ZSBvZiBjYWxsZGF0YSBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4uAAAAAAxnYXNfcGVyX2J5dGUAAAAEAAAAQkdhcyBwcmljZSBpbiB0aGUgc21hbGxlc3QgdW5pdCAod2VpIGZvciBFVk0sIHN0cm9vcHMgZm9yIFN0ZWxsYXIpLgAAAAAAEWdhc19wcmljZV9pbl91bml0AAAAAAAABgAAAKlQcmljZSByYXRpbyA9IChyZW1vdGUgbmF0aXZlIHRva2VuIHByaWNlIC8gbG9jYWwgbmF0aXZlIHRva2VuIHByaWNlKSAqIFBSSUNFX1JBVElPX0RFTk9NSU5BVE9SLgpVc2VkIHRvIGNvbnZlcnQgZGVzdGluYXRpb24gY2hhaW4gZ2FzIGNvc3RzIHRvIHNvdXJjZSBjaGFpbiBuYXRpdmUgdG9rZW4uAAAAAAAAC3ByaWNlX3JhdGlvAAAAAAoAAAABAAAAgEZlZSBlc3RpbWF0aW9uIHJlc3VsdCB3aXRoIGRldGFpbGVkIGJyZWFrZG93bi4KCkNvbnRhaW5zIHRoZSBjYWxjdWxhdGVkIGZlZSBhbmQgYWxsIGludGVybWVkaWF0ZSB2YWx1ZXMgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uAAAAAAAAAAtGZWVFc3RpbWF0ZQAAAAAEAAAAMFNvdXJjZSBjaGFpbiBuYXRpdmUgdG9rZW4gcHJpY2UgaW4gVVNEIChzY2FsZWQpLgAAABBuYXRpdmVfcHJpY2VfdXNkAAAACgAAACVQcmljZSByYXRpbyB1c2VkIGZvciB0aGUgY2FsY3VsYXRpb24uAAAAAAAAC3ByaWNlX3JhdGlvAAAAAAoAAAAyRGVub21pbmF0b3IgZm9yIHRoZSBwcmljZSByYXRpbyAodHlwaWNhbGx5IDEwXjIwKS4AAAAAABdwcmljZV9yYXRpb19kZW5vbWluYXRvcgAAAAAKAAAAMVRvdGFsIGdhcyBmZWUgaW4gc291cmNlIGNoYWluIG5hdGl2ZSB0b2tlbiB1bml0cy4AAAAAAAANdG90YWxfZ2FzX2ZlZQAAAAAAAAsAAAAEAAAAHEJ1ZmZlclJlYWRlckVycm9yOiAxMDAwLTEwMDkAAAAAAAAAEUJ1ZmZlclJlYWRlckVycm9yAAAAAAAAAgAAAAAAAAANSW52YWxpZExlbmd0aAAAAAAAA+gAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA+kAAAAEAAAAHEJ1ZmZlcldyaXRlckVycm9yOiAxMDEwLTEwMTkAAAAAAAAAEUJ1ZmZlcldyaXRlckVycm9yAAAAAAAAAQAAAAAAAAAVSW52YWxpZEFkZHJlc3NQYXlsb2FkAAAAAAAD8gAAAAQAAAAfVHRsQ29uZmlndXJhYmxlRXJyb3I6IDEwMjAtMTAyOQAAAAAAAAAAFFR0bENvbmZpZ3VyYWJsZUVycm9yAAAAAwAAAAAAAAAQSW52YWxpZFR0bENvbmZpZwAAA/wAAAAAAAAAD1R0bENvbmZpZ0Zyb3plbgAAAAP9AAAAAAAAABZUdGxDb25maWdBbHJlYWR5RnJvemVuAAAAAAP+AAAABAAAABdPd25hYmxlRXJyb3I6IDEwMzAtMTAzOQAAAAAAAAAADE93bmFibGVFcnJvcgAAAAYAAAAAAAAAE0ludmFsaWRQZW5kaW5nT3duZXIAAAAEBgAAAAAAAAAKSW52YWxpZFR0bAAAAAAEBwAAAAAAAAARTm9QZW5kaW5nVHJhbnNmZXIAAAAAAAQIAAAAAAAAAA9Pd25lckFscmVhZHlTZXQAAAAECQAAAAAAAAALT3duZXJOb3RTZXQAAAAECgAAAAAAAAASVHJhbnNmZXJJblByb2dyZXNzAAAAAAQLAAAABAAAABhCeXRlc0V4dEVycm9yOiAxMDQwLTEwNDkAAAAAAAAADUJ5dGVzRXh0RXJyb3IAAAAAAAABAAAAAAAAAA5MZW5ndGhNaXNtYXRjaAAAAAAEEAAAAAQAAAAbVXBncmFkZWFibGVFcnJvcjogMTA1MC0xMDU5AAAAAAAAAAAQVXBncmFkZWFibGVFcnJvcgAAAAMAAAAAAAAAFEludmFsaWRNaWdyYXRpb25EYXRhAAAEGgAAAAAAAAATTWlncmF0aW9uTm90QWxsb3dlZAAAAAQbAAAAAAAAAA5VcGdyYWRlc0Zyb3plbgAAAAAEHAAAAAQAAAAYTXVsdGlzaWdFcnJvcjogMTA2MC0xMDY5AAAAAAAAAA1NdWx0aXNpZ0Vycm9yAAAAAAAACAAAAAAAAAASQWxyZWFkeUluaXRpYWxpemVkAAAAAAQkAAAAAAAAAA1JbnZhbGlkU2lnbmVyAAAAAAAEJQAAAAAAAAAOU2lnbmF0dXJlRXJyb3IAAAAABCYAAAAAAAAAE1NpZ25lckFscmVhZHlFeGlzdHMAAAAEJwAAAAAAAAAOU2lnbmVyTm90Rm91bmQAAAAABCgAAAAAAAAAHVRvdGFsU2lnbmVyc0xlc3NUaGFuVGhyZXNob2xkAAAAAAAEKQAAAAAAAAAPVW5zb3J0ZWRTaWduZXJzAAAABCoAAAAAAAAADVplcm9UaHJlc2hvbGQAAAAAAAQrAAAABQAAADBFdmVudCBlbWl0dGVkIHdoZW4gYSBzaWduZXIgaXMgYWRkZWQgb3IgcmVtb3ZlZC4AAAAAAAAACVNpZ25lclNldAAAAAAAAAEAAAAKc2lnbmVyX3NldAAAAAAAAgAAAAAAAAAGc2lnbmVyAAAAAAPuAAAAFAAAAAEAAAAAAAAABmFjdGl2ZQAAAAAAAQAAAAAAAAACAAAABQAAADZFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNpZ25hdHVyZSB0aHJlc2hvbGQgaXMgY2hhbmdlZC4AAAAAAAAAAAAMVGhyZXNob2xkU2V0AAAAAQAAAA10aHJlc2hvbGRfc2V0AAAAAAAAAQAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAD011bHRpc2lnU3RvcmFnZQAAAAACAAAAAAAAAAAAAAAHU2lnbmVycwAAAAAAAAAAAAAAAAlUaHJlc2hvbGQAAAAAAAAFAAAAV0V2ZW50IGVtaXR0ZWQgd2hlbiBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgKGJvdGggc2luZ2xlLXN0ZXAgYW5kIHR3by1zdGVwIGNvbXBsZXRpb24pLgAAAAAAAAAAFE93bmVyc2hpcFRyYW5zZmVycmVkAAAAAQAAABVvd25lcnNoaXBfdHJhbnNmZXJyZWQAAAAAAAACAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAACAAAABQAAADtFdmVudCBlbWl0dGVkIHdoZW4gYSAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyIGlzIHByb3Bvc2VkLgAAAAAAAAAAFU93bmVyc2hpcFRyYW5zZmVycmluZwAAAAAAAAEAAAAWb3duZXJzaGlwX3RyYW5zZmVycmluZwAAAAAAAwAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAAN0dGwAAAAABAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHJlbm91bmNlZC4AAAAAAAAAAAAST3duZXJzaGlwUmVub3VuY2VkAAAAAAABAAAAE293bmVyc2hpcF9yZW5vdW5jZWQAAAAAAQAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAACAAAAAgAAAAAAAAAAAAAADk93bmFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAFT3duZXIAAAAAAAAAAAAAAAAAAAxQZW5kaW5nT3duZXIAAAABAAAASVRUTCBjb25maWd1cmF0aW9uOiB0aHJlc2hvbGQgKHdoZW4gdG8gZXh0ZW5kKSBhbmQgZXh0ZW5kX3RvICh0YXJnZXQgVFRMKS4AAAAAAAAAAAAACVR0bENvbmZpZwAAAAAAAAIAAAAoVGFyZ2V0IFRUTCBhZnRlciBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAlleHRlbmRfdG8AAAAAAAAEAAAAM1RUTCB0aHJlc2hvbGQgdGhhdCB0cmlnZ2VycyBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAUAAAAnRXZlbnQgZW1pdHRlZCB3aGVuIFRUTCBjb25maWdzIGFyZSBzZXQuAAAAAAAAAAANVHRsQ29uZmlnc1NldAAAAAAAAAEAAAAPdHRsX2NvbmZpZ3Nfc2V0AAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAIAAAAFAAAAKkV2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAAAAAAABBUdGxDb25maWdzRnJvemVuAAAAAQAAABJ0dGxfY29uZmlnc19mcm96ZW4AAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAEFR0bENvbmZpZ1N0b3JhZ2UAAAADAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAhJbnN0YW5jZQAAAAAAAAAAAAAAClBlcnNpc3RlbnQAAAAAAAIAAAAAAAAAAAAAABJVcGdyYWRlYWJsZVN0b3JhZ2UAAAAAAAIAAAAAAAAAAAAAAAZGcm96ZW4AAAAAAAAAAAAAAAAACU1pZ3JhdGluZwAAAACLAQ5jb250cmFjdG1ldGF2MAAAAAAAAAAGYmludmVyAAAAAAAFMC4wLjEAAAAAAAAAAAAABXJzdmVyAAAAAAAABjEuOTAuMAAAAAAAAAAAAAhyc3Nka3ZlcgAAAC8yNS4wLjEjOTQxNDQ4MDc5ZWNjZjk1NjI3ZDJmZmVhMTNiYTI2OGUzMDVhOTA3NwAAHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAZAAAAAABTDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAZjbGl2ZXIAAAAAAC8yNS4wLjAjYTY0OTI1ZTkzOTFjM2QzYjNlZjhlNTNkYzYwYzIzZGI5ZTZhODJlNAA=";
13
12
  /**
14
13
  * Pre-computed WASM hash (SHA-256)
15
14
  * Use this when the WASM is already uploaded on-chain
16
15
  */
17
- export declare const WASM_HASH = "cfc1615712a9510f7edc8a62ea2a39bf33e6f9d6717342400e93a23775b55abe";
16
+ export declare const WASM_HASH = "dcf39d3b282fd9dc1b9b499e6d4a1833ad63ebcbaeac3611bb465f9e05abba24";
18
17
  /**
19
18
  * Get the WASM bytecode as a Buffer
20
19
  * Use this to upload the WASM to the network
21
20
  */
22
21
  export declare function getWasmBuffer(): Buffer;
23
- export type PriceFeedStorage = {
24
- tag: "PriceRatioDenominator";
25
- values: void;
26
- } | {
27
- tag: "PriceUpdater";
28
- values: readonly [string];
29
- } | {
30
- tag: "DefaultModelPrice";
31
- values: readonly [u32];
32
- } | {
33
- tag: "ArbitrumPriceExt";
34
- values: void;
35
- } | {
36
- tag: "NativePriceUSD";
37
- values: void;
38
- } | {
39
- tag: "ArbitrumCompressionPercent";
40
- values: void;
41
- } | {
42
- tag: "EidToModelType";
43
- values: readonly [u32];
44
- };
45
22
  export declare const PriceFeedError: {
46
23
  1: {
47
24
  message: string;
@@ -123,209 +100,27 @@ export interface SetEidToModelTypeParam {
123
100
  */
124
101
  model_type: ModelType;
125
102
  }
126
- /**
127
- * BufferReaderError: 1000-1009
128
- */
129
- export declare const BufferReaderError: {
130
- 1000: {
131
- message: string;
132
- };
133
- 1001: {
134
- message: string;
135
- };
136
- };
137
- /**
138
- * BufferWriterError: 1010-1019
139
- */
140
- export declare const BufferWriterError: {
141
- 1010: {
142
- message: string;
143
- };
144
- };
145
- /**
146
- * TtlConfigurableError: 1020-1029
147
- */
148
- export declare const TtlConfigurableError: {
149
- 1020: {
150
- message: string;
151
- };
152
- 1021: {
153
- message: string;
154
- };
155
- 1022: {
156
- message: string;
157
- };
158
- };
159
- /**
160
- * OwnableError: 1030-1039
161
- */
162
- export declare const OwnableError: {
163
- 1030: {
164
- message: string;
165
- };
166
- 1031: {
167
- message: string;
168
- };
169
- 1032: {
170
- message: string;
171
- };
172
- 1033: {
173
- message: string;
174
- };
175
- 1034: {
176
- message: string;
177
- };
178
- 1035: {
179
- message: string;
180
- };
181
- };
182
- /**
183
- * BytesExtError: 1040-1049
184
- */
185
- export declare const BytesExtError: {
186
- 1040: {
187
- message: string;
188
- };
189
- };
190
- /**
191
- * UpgradeableError: 1050-1059
192
- */
193
- export declare const UpgradeableError: {
194
- 1050: {
195
- message: string;
196
- };
197
- };
198
- /**
199
- * MultisigError: 1060-1069
200
- */
201
- export declare const MultisigError: {
202
- 1060: {
203
- message: string;
204
- };
205
- 1061: {
206
- message: string;
207
- };
208
- 1062: {
209
- message: string;
210
- };
211
- 1063: {
212
- message: string;
213
- };
214
- 1064: {
215
- message: string;
216
- };
217
- 1065: {
218
- message: string;
219
- };
220
- 1066: {
221
- message: string;
222
- };
223
- 1067: {
224
- message: string;
225
- };
226
- };
227
- export type MultisigStorage = {
228
- tag: "Signers";
103
+ export type PriceFeedStorage = {
104
+ tag: "PriceRatioDenominator";
229
105
  values: void;
230
106
  } | {
231
- tag: "Threshold";
232
- values: void;
233
- };
234
- export type OwnableStorage = {
235
- tag: "Owner";
236
- values: void;
107
+ tag: "PriceUpdater";
108
+ values: readonly [string];
237
109
  } | {
238
- tag: "PendingOwner";
239
- values: void;
240
- };
241
- /**
242
- * TTL configuration: threshold (when to extend) and extend_to (target TTL).
243
- */
244
- export interface TtlConfig {
245
- /**
246
- * Target TTL after extension (in ledgers).
247
- */
248
- extend_to: u32;
249
- /**
250
- * TTL threshold that triggers extension (in ledgers).
251
- */
252
- threshold: u32;
253
- }
254
- export type TtlConfigStorage = {
255
- tag: "Frozen";
256
- values: void;
110
+ tag: "DefaultModelPrice";
111
+ values: readonly [u32];
257
112
  } | {
258
- tag: "Instance";
113
+ tag: "ArbitrumPriceExt";
259
114
  values: void;
260
115
  } | {
261
- tag: "Persistent";
116
+ tag: "NativePriceUSD";
262
117
  values: void;
263
- };
264
- export type UpgradeableStorage = {
265
- tag: "Migrating";
118
+ } | {
119
+ tag: "ArbitrumCompressionPercent";
266
120
  values: void;
267
- };
268
- /**
269
- * WorkerError: 1200-1299
270
- */
271
- export declare const WorkerError: {
272
- 1200: {
273
- message: string;
274
- };
275
- 1201: {
276
- message: string;
277
- };
278
- 1202: {
279
- message: string;
280
- };
281
- 1203: {
282
- message: string;
283
- };
284
- 1204: {
285
- message: string;
286
- };
287
- 1205: {
288
- message: string;
289
- };
290
- 1206: {
291
- message: string;
292
- };
293
- 1207: {
294
- message: string;
295
- };
296
- 1208: {
297
- message: string;
298
- };
299
- 1209: {
300
- message: string;
301
- };
302
- 1210: {
303
- message: string;
304
- };
305
- 1211: {
306
- message: string;
307
- };
308
- 1212: {
309
- message: string;
310
- };
311
- 1213: {
312
- message: string;
313
- };
314
- 1214: {
315
- message: string;
316
- };
317
- 1215: {
318
- message: string;
319
- };
320
- 1216: {
321
- message: string;
322
- };
323
- 1217: {
324
- message: string;
325
- };
326
- 1218: {
327
- message: string;
328
- };
121
+ } | {
122
+ tag: "EidToModelType";
123
+ values: readonly [u32];
329
124
  };
330
125
  /**
331
126
  * Parameters for DVN fee calculation.
@@ -490,46 +285,165 @@ export interface FeeEstimate {
490
285
  */
491
286
  total_gas_fee: i128;
492
287
  }
493
- export type WorkerStorage = {
494
- tag: "Paused";
288
+ /**
289
+ * BufferReaderError: 1000-1009
290
+ */
291
+ export declare const BufferReaderError: {
292
+ 1000: {
293
+ message: string;
294
+ };
295
+ 1001: {
296
+ message: string;
297
+ };
298
+ };
299
+ /**
300
+ * BufferWriterError: 1010-1019
301
+ */
302
+ export declare const BufferWriterError: {
303
+ 1010: {
304
+ message: string;
305
+ };
306
+ };
307
+ /**
308
+ * TtlConfigurableError: 1020-1029
309
+ */
310
+ export declare const TtlConfigurableError: {
311
+ 1020: {
312
+ message: string;
313
+ };
314
+ 1021: {
315
+ message: string;
316
+ };
317
+ 1022: {
318
+ message: string;
319
+ };
320
+ };
321
+ /**
322
+ * OwnableError: 1030-1039
323
+ */
324
+ export declare const OwnableError: {
325
+ 1030: {
326
+ message: string;
327
+ };
328
+ 1031: {
329
+ message: string;
330
+ };
331
+ 1032: {
332
+ message: string;
333
+ };
334
+ 1033: {
335
+ message: string;
336
+ };
337
+ 1034: {
338
+ message: string;
339
+ };
340
+ 1035: {
341
+ message: string;
342
+ };
343
+ };
344
+ /**
345
+ * BytesExtError: 1040-1049
346
+ */
347
+ export declare const BytesExtError: {
348
+ 1040: {
349
+ message: string;
350
+ };
351
+ };
352
+ /**
353
+ * UpgradeableError: 1050-1059
354
+ */
355
+ export declare const UpgradeableError: {
356
+ 1050: {
357
+ message: string;
358
+ };
359
+ 1051: {
360
+ message: string;
361
+ };
362
+ 1052: {
363
+ message: string;
364
+ };
365
+ };
366
+ /**
367
+ * MultisigError: 1060-1069
368
+ */
369
+ export declare const MultisigError: {
370
+ 1060: {
371
+ message: string;
372
+ };
373
+ 1061: {
374
+ message: string;
375
+ };
376
+ 1062: {
377
+ message: string;
378
+ };
379
+ 1063: {
380
+ message: string;
381
+ };
382
+ 1064: {
383
+ message: string;
384
+ };
385
+ 1065: {
386
+ message: string;
387
+ };
388
+ 1066: {
389
+ message: string;
390
+ };
391
+ 1067: {
392
+ message: string;
393
+ };
394
+ };
395
+ export type MultisigStorage = {
396
+ tag: "Signers";
495
397
  values: void;
496
398
  } | {
497
- tag: "DepositAddress";
399
+ tag: "Threshold";
498
400
  values: void;
499
- } | {
500
- tag: "PriceFeed";
401
+ };
402
+ export type OwnableStorage = {
403
+ tag: "Owner";
501
404
  values: void;
502
405
  } | {
503
- tag: "WorkerFeeLib";
406
+ tag: "PendingOwner";
504
407
  values: void;
505
- } | {
506
- tag: "DefaultMultiplierBps";
408
+ };
409
+ /**
410
+ * TTL configuration: threshold (when to extend) and extend_to (target TTL).
411
+ */
412
+ export interface TtlConfig {
413
+ /**
414
+ * Target TTL after extension (in ledgers).
415
+ */
416
+ extend_to: u32;
417
+ /**
418
+ * TTL threshold that triggers extension (in ledgers).
419
+ */
420
+ threshold: u32;
421
+ }
422
+ export type TtlConfigStorage = {
423
+ tag: "Frozen";
507
424
  values: void;
508
425
  } | {
509
- tag: "SupportedOptionTypes";
510
- values: readonly [u32];
511
- } | {
512
- tag: "MessageLibs";
426
+ tag: "Instance";
513
427
  values: void;
514
428
  } | {
515
- tag: "Allowlist";
516
- values: readonly [string];
517
- } | {
518
- tag: "Denylist";
519
- values: readonly [string];
520
- } | {
521
- tag: "AllowlistSize";
429
+ tag: "Persistent";
430
+ values: void;
431
+ };
432
+ export type UpgradeableStorage = {
433
+ tag: "Frozen";
522
434
  values: void;
523
435
  } | {
524
- tag: "Admins";
436
+ tag: "Migrating";
525
437
  values: void;
526
438
  };
527
439
  export interface Client {
528
440
  /**
529
- * Construct and simulate a upgrade transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
441
+ * Construct and simulate a set_price_updater transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
442
+ * Set price updater status (owner only)
530
443
  */
531
- upgrade: ({ new_wasm_hash }: {
532
- new_wasm_hash: Buffer;
444
+ set_price_updater: ({ updater, active }: {
445
+ updater: string;
446
+ active: boolean;
533
447
  }, txnOptions?: {
534
448
  /**
535
449
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -545,10 +459,11 @@ export interface Client {
545
459
  simulate?: boolean;
546
460
  }) => Promise<AssembledTransaction<null>>;
547
461
  /**
548
- * Construct and simulate a migrate transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
462
+ * Construct and simulate a set_price_ratio_denominator transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
463
+ * Set the price ratio denominator (owner only)
549
464
  */
550
- migrate: ({ migration_data }: {
551
- migration_data: MigrationData;
465
+ set_price_ratio_denominator: ({ denominator }: {
466
+ denominator: u128;
552
467
  }, txnOptions?: {
553
468
  /**
554
469
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -564,32 +479,11 @@ export interface Client {
564
479
  simulate?: boolean;
565
480
  }) => Promise<AssembledTransaction<null>>;
566
481
  /**
567
- * Construct and simulate a authorizer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
568
- */
569
- authorizer: (txnOptions?: {
570
- /**
571
- * The fee to pay for the transaction. Default: BASE_FEE
572
- */
573
- fee?: number;
574
- /**
575
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
576
- */
577
- timeoutInSeconds?: number;
578
- /**
579
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
580
- */
581
- simulate?: boolean;
582
- }) => Promise<AssembledTransaction<string>>;
583
- /**
584
- * Construct and simulate a estimate_fee_by_eid transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
585
- * Estimate fee with detailed breakdown by endpoint ID
586
- * Corresponds to estimateFeeByEid in PriceFeed.sol
482
+ * Construct and simulate a set_arbitrum_compression_percent transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
483
+ * Set the Arbitrum compression percentage (owner only)
587
484
  */
588
- estimate_fee_by_eid: ({ fee_lib, dst_eid, calldata_size, gas }: {
589
- fee_lib: string;
590
- dst_eid: u32;
591
- calldata_size: u32;
592
- gas: u128;
485
+ set_arbitrum_compression_percent: ({ compression_percent }: {
486
+ compression_percent: u128;
593
487
  }, txnOptions?: {
594
488
  /**
595
489
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -603,31 +497,13 @@ export interface Client {
603
497
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
604
498
  */
605
499
  simulate?: boolean;
606
- }) => Promise<AssembledTransaction<FeeEstimate>>;
607
- /**
608
- * Construct and simulate a native_token_price_usd transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
609
- * Get the native token price in USD
610
- */
611
- native_token_price_usd: (txnOptions?: {
612
- /**
613
- * The fee to pay for the transaction. Default: BASE_FEE
614
- */
615
- fee?: number;
616
- /**
617
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
618
- */
619
- timeoutInSeconds?: number;
620
- /**
621
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
622
- */
623
- simulate?: boolean;
624
- }) => Promise<AssembledTransaction<u128>>;
500
+ }) => Promise<AssembledTransaction<null>>;
625
501
  /**
626
- * Construct and simulate a get_price transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
627
- * Get the price for a destination EID.
502
+ * Construct and simulate a set_eid_to_model_type transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
503
+ * Set the fee model type for destination EIDs (owner only)
628
504
  */
629
- get_price: ({ dst_eid }: {
630
- dst_eid: u32;
505
+ set_eid_to_model_type: ({ params }: {
506
+ params: Array<SetEidToModelTypeParam>;
631
507
  }, txnOptions?: {
632
508
  /**
633
509
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -641,32 +517,14 @@ export interface Client {
641
517
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
642
518
  */
643
519
  simulate?: boolean;
644
- }) => Promise<AssembledTransaction<Option<Price>>>;
645
- /**
646
- * Construct and simulate a get_price_ratio_denominator transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
647
- * Get the price ratio denominator.
648
- */
649
- get_price_ratio_denominator: (txnOptions?: {
650
- /**
651
- * The fee to pay for the transaction. Default: BASE_FEE
652
- */
653
- fee?: number;
654
- /**
655
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
656
- */
657
- timeoutInSeconds?: number;
658
- /**
659
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
660
- */
661
- simulate?: boolean;
662
- }) => Promise<AssembledTransaction<u128>>;
520
+ }) => Promise<AssembledTransaction<null>>;
663
521
  /**
664
- * Construct and simulate a set_price_updater transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
665
- * Set price updater status (owner only)
522
+ * Construct and simulate a set_price transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
523
+ * Set prices for multiple destinations (price updater or owner)
666
524
  */
667
- set_price_updater: ({ updater, active }: {
668
- updater: string;
669
- active: boolean;
525
+ set_price: ({ price_updater, prices }: {
526
+ price_updater: string;
527
+ prices: Array<UpdatePrice>;
670
528
  }, txnOptions?: {
671
529
  /**
672
530
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -682,11 +540,13 @@ export interface Client {
682
540
  simulate?: boolean;
683
541
  }) => Promise<AssembledTransaction<null>>;
684
542
  /**
685
- * Construct and simulate a set_price_ratio_denominator transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
686
- * Set the price ratio denominator (owner only)
543
+ * Construct and simulate a set_price_for_arbitrum transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
544
+ * Set price for Arbitrum with extension (price updater or owner)
545
+ * Corresponds to setPriceForArbitrum in PriceFeed.sol
687
546
  */
688
- set_price_ratio_denominator: ({ denominator }: {
689
- denominator: u128;
547
+ set_price_for_arbitrum: ({ price_updater, update }: {
548
+ price_updater: string;
549
+ update: UpdatePriceExt;
690
550
  }, txnOptions?: {
691
551
  /**
692
552
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -702,11 +562,14 @@ export interface Client {
702
562
  simulate?: boolean;
703
563
  }) => Promise<AssembledTransaction<null>>;
704
564
  /**
705
- * Construct and simulate a set_arbitrum_compression_percent transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
706
- * Set the Arbitrum compression percentage (owner only)
565
+ * Construct and simulate a set_native_token_price_usd transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
566
+ * Set the native token price in USD (price updater or owner).
567
+ *
568
+ * Kept as a standalone contract function (not part of the canonical `fee_lib_interfaces::ILayerZeroPriceFeed` interface).
707
569
  */
708
- set_arbitrum_compression_percent: ({ compression_percent }: {
709
- compression_percent: u128;
570
+ set_native_token_price_usd: ({ price_updater, native_token_price_usd }: {
571
+ price_updater: string;
572
+ native_token_price_usd: u128;
710
573
  }, txnOptions?: {
711
574
  /**
712
575
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -722,11 +585,11 @@ export interface Client {
722
585
  simulate?: boolean;
723
586
  }) => Promise<AssembledTransaction<null>>;
724
587
  /**
725
- * Construct and simulate a set_eid_to_model_type transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
726
- * Set the fee model type for destination EIDs (owner only)
588
+ * Construct and simulate a is_price_updater transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
589
+ * Check if an address is an active price updater
727
590
  */
728
- set_eid_to_model_type: ({ params }: {
729
- params: Array<SetEidToModelTypeParam>;
591
+ is_price_updater: ({ updater }: {
592
+ updater: string;
730
593
  }, txnOptions?: {
731
594
  /**
732
595
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -740,15 +603,12 @@ export interface Client {
740
603
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
741
604
  */
742
605
  simulate?: boolean;
743
- }) => Promise<AssembledTransaction<null>>;
606
+ }) => Promise<AssembledTransaction<boolean>>;
744
607
  /**
745
- * Construct and simulate a set_price transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
746
- * Set prices for multiple destinations (price updater or owner)
608
+ * Construct and simulate a arbitrum_compression_percent transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
609
+ * Get the Arbitrum compression percent
747
610
  */
748
- set_price: ({ price_updater, prices }: {
749
- price_updater: string;
750
- prices: Array<UpdatePrice>;
751
- }, txnOptions?: {
611
+ arbitrum_compression_percent: (txnOptions?: {
752
612
  /**
753
613
  * The fee to pay for the transaction. Default: BASE_FEE
754
614
  */
@@ -761,16 +621,12 @@ export interface Client {
761
621
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
762
622
  */
763
623
  simulate?: boolean;
764
- }) => Promise<AssembledTransaction<null>>;
624
+ }) => Promise<AssembledTransaction<u128>>;
765
625
  /**
766
- * Construct and simulate a set_price_for_arbitrum transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
767
- * Set price for Arbitrum with extension (price updater or owner)
768
- * Corresponds to setPriceForArbitrum in PriceFeed.sol
626
+ * Construct and simulate a arbitrum_price_ext transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
627
+ * Get the Arbitrum price extension
769
628
  */
770
- set_price_for_arbitrum: ({ price_updater, update }: {
771
- price_updater: string;
772
- update: UpdatePriceExt;
773
- }, txnOptions?: {
629
+ arbitrum_price_ext: (txnOptions?: {
774
630
  /**
775
631
  * The fee to pay for the transaction. Default: BASE_FEE
776
632
  */
@@ -783,16 +639,13 @@ export interface Client {
783
639
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
784
640
  */
785
641
  simulate?: boolean;
786
- }) => Promise<AssembledTransaction<null>>;
642
+ }) => Promise<AssembledTransaction<ArbitrumPriceExt>>;
787
643
  /**
788
- * Construct and simulate a set_native_token_price_usd transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
789
- * Set the native token price in USD (price updater or owner).
790
- *
791
- * Kept as a standalone contract function (not part of the canonical `worker::ILayerZeroPriceFeed` interface).
644
+ * Construct and simulate a eid_to_model_type transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
645
+ * Get the model type for a destination EID
792
646
  */
793
- set_native_token_price_usd: ({ price_updater, native_token_price_usd }: {
794
- price_updater: string;
795
- native_token_price_usd: u128;
647
+ eid_to_model_type: ({ dst_eid }: {
648
+ dst_eid: u32;
796
649
  }, txnOptions?: {
797
650
  /**
798
651
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -806,13 +659,17 @@ export interface Client {
806
659
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
807
660
  */
808
661
  simulate?: boolean;
809
- }) => Promise<AssembledTransaction<null>>;
662
+ }) => Promise<AssembledTransaction<ModelType>>;
810
663
  /**
811
- * Construct and simulate a is_price_updater transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
812
- * Check if an address is an active price updater
664
+ * Construct and simulate a estimate_fee_by_eid transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
665
+ * Estimate fee with detailed breakdown by endpoint ID
666
+ * Corresponds to estimateFeeByEid in PriceFeed.sol
813
667
  */
814
- is_price_updater: ({ updater }: {
815
- updater: string;
668
+ estimate_fee_by_eid: ({ fee_lib, dst_eid, calldata_size, gas }: {
669
+ fee_lib: string;
670
+ dst_eid: u32;
671
+ calldata_size: u32;
672
+ gas: u128;
816
673
  }, txnOptions?: {
817
674
  /**
818
675
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -826,12 +683,12 @@ export interface Client {
826
683
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
827
684
  */
828
685
  simulate?: boolean;
829
- }) => Promise<AssembledTransaction<boolean>>;
686
+ }) => Promise<AssembledTransaction<FeeEstimate>>;
830
687
  /**
831
- * Construct and simulate a arbitrum_compression_percent transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
832
- * Get the Arbitrum compression percent
688
+ * Construct and simulate a native_token_price_usd transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
689
+ * Get the native token price in USD
833
690
  */
834
- arbitrum_compression_percent: (txnOptions?: {
691
+ native_token_price_usd: (txnOptions?: {
835
692
  /**
836
693
  * The fee to pay for the transaction. Default: BASE_FEE
837
694
  */
@@ -846,10 +703,12 @@ export interface Client {
846
703
  simulate?: boolean;
847
704
  }) => Promise<AssembledTransaction<u128>>;
848
705
  /**
849
- * Construct and simulate a arbitrum_price_ext transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
850
- * Get the Arbitrum price extension
706
+ * Construct and simulate a get_price transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
707
+ * Get the price for a destination EID.
851
708
  */
852
- arbitrum_price_ext: (txnOptions?: {
709
+ get_price: ({ dst_eid }: {
710
+ dst_eid: u32;
711
+ }, txnOptions?: {
853
712
  /**
854
713
  * The fee to pay for the transaction. Default: BASE_FEE
855
714
  */
@@ -862,14 +721,12 @@ export interface Client {
862
721
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
863
722
  */
864
723
  simulate?: boolean;
865
- }) => Promise<AssembledTransaction<ArbitrumPriceExt>>;
724
+ }) => Promise<AssembledTransaction<Option<Price>>>;
866
725
  /**
867
- * Construct and simulate a eid_to_model_type transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
868
- * Get the model type for a destination EID
726
+ * Construct and simulate a get_price_ratio_denominator transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
727
+ * Get the price ratio denominator.
869
728
  */
870
- eid_to_model_type: ({ dst_eid }: {
871
- dst_eid: u32;
872
- }, txnOptions?: {
729
+ get_price_ratio_denominator: (txnOptions?: {
873
730
  /**
874
731
  * The fee to pay for the transaction. Default: BASE_FEE
875
732
  */
@@ -882,25 +739,15 @@ export interface Client {
882
739
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
883
740
  */
884
741
  simulate?: boolean;
885
- }) => Promise<AssembledTransaction<ModelType>>;
742
+ }) => Promise<AssembledTransaction<u128>>;
886
743
  /**
887
- * Construct and simulate a set_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
888
- * Sets TTL configs for instance and persistent storage.
889
- *
890
- * - `None` values remove the corresponding config (disables auto-extension for that type)
891
- * - Validates that `threshold <= extend_to <= MAX_TTL`
892
- *
893
- * # Arguments
894
- * - `instance` - TTL config for instance storage
895
- * - `persistent` - TTL config for persistent storage
896
- *
897
- * # Panics
898
- * - `TtlConfigFrozen` if configs are frozen
899
- * - `InvalidTtlConfig` if validation fails
744
+ * Construct and simulate a upgrade transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
745
+ * The type of data required for migration.
746
+ * Upgrades the contract to new WASM bytecode.
747
+ * Sets a migration flag that must be cleared by calling `migrate`.
900
748
  */
901
- set_ttl_configs: ({ instance, persistent }: {
902
- instance: Option<TtlConfig>;
903
- persistent: Option<TtlConfig>;
749
+ upgrade: ({ new_wasm_hash }: {
750
+ new_wasm_hash: Buffer;
904
751
  }, txnOptions?: {
905
752
  /**
906
753
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -916,10 +763,13 @@ export interface Client {
916
763
  simulate?: boolean;
917
764
  }) => Promise<AssembledTransaction<null>>;
918
765
  /**
919
- * Construct and simulate a ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
920
- * Returns the current TTL configs as (instance_config, persistent_config).
766
+ * Construct and simulate a migrate transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
767
+ * Runs migration logic after an upgrade.
768
+ * Can only be called when the migration flag is set by a previous `upgrade` call.
921
769
  */
922
- ttl_configs: (txnOptions?: {
770
+ migrate: ({ migration_data }: {
771
+ migration_data: Buffer;
772
+ }, txnOptions?: {
923
773
  /**
924
774
  * The fee to pay for the transaction. Default: BASE_FEE
925
775
  */
@@ -932,18 +782,13 @@ export interface Client {
932
782
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
933
783
  */
934
784
  simulate?: boolean;
935
- }) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
785
+ }) => Promise<AssembledTransaction<null>>;
936
786
  /**
937
- * Construct and simulate a freeze_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
938
- * Permanently freezes TTL configs, preventing any future modifications.
939
- *
940
- * This is irreversible and provides immutability guarantees to users.
941
- * Emits `TtlConfigsFrozen` event.
942
- *
943
- * # Panics
944
- * - `TtlConfigAlreadyFrozen` if already frozen
787
+ * Construct and simulate a freeze transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
788
+ * Permanently freezes the contract, preventing any future upgrades.
789
+ * This action is irreversible.
945
790
  */
946
- freeze_ttl_configs: (txnOptions?: {
791
+ freeze: (txnOptions?: {
947
792
  /**
948
793
  * The fee to pay for the transaction. Default: BASE_FEE
949
794
  */
@@ -958,10 +803,10 @@ export interface Client {
958
803
  simulate?: boolean;
959
804
  }) => Promise<AssembledTransaction<null>>;
960
805
  /**
961
- * Construct and simulate a is_ttl_configs_frozen transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
962
- * Returns whether TTL configs are frozen.
806
+ * Construct and simulate a is_frozen transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
807
+ * Returns whether the contract is frozen (upgrades disabled).
963
808
  */
964
- is_ttl_configs_frozen: (txnOptions?: {
809
+ is_frozen: (txnOptions?: {
965
810
  /**
966
811
  * The fee to pay for the transaction. Default: BASE_FEE
967
812
  */
@@ -976,18 +821,9 @@ export interface Client {
976
821
  simulate?: boolean;
977
822
  }) => Promise<AssembledTransaction<boolean>>;
978
823
  /**
979
- * Construct and simulate a extend_instance_ttl transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
980
- * Extends the instance TTL.
981
- *
982
- * # Arguments
983
- *
984
- * * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
985
- * * `extend_to` - The TTL to extend to.
824
+ * Construct and simulate a authorizer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
986
825
  */
987
- extend_instance_ttl: ({ threshold, extend_to }: {
988
- threshold: u32;
989
- extend_to: u32;
990
- }, txnOptions?: {
826
+ authorizer: (txnOptions?: {
991
827
  /**
992
828
  * The fee to pay for the transaction. Default: BASE_FEE
993
829
  */
@@ -1000,7 +836,7 @@ export interface Client {
1000
836
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1001
837
  */
1002
838
  simulate?: boolean;
1003
- }) => Promise<AssembledTransaction<null>>;
839
+ }) => Promise<AssembledTransaction<string>>;
1004
840
  /**
1005
841
  * Construct and simulate a owner transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1006
842
  * Returns the current owner address, or None if no owner is set.
@@ -1144,6 +980,124 @@ export interface Client {
1144
980
  */
1145
981
  simulate?: boolean;
1146
982
  }) => Promise<AssembledTransaction<null>>;
983
+ /**
984
+ * Construct and simulate a extend_instance_ttl transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
985
+ * Extends the instance TTL.
986
+ *
987
+ * # Arguments
988
+ *
989
+ * * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
990
+ * * `extend_to` - The TTL to extend to.
991
+ */
992
+ extend_instance_ttl: ({ threshold, extend_to }: {
993
+ threshold: u32;
994
+ extend_to: u32;
995
+ }, txnOptions?: {
996
+ /**
997
+ * The fee to pay for the transaction. Default: BASE_FEE
998
+ */
999
+ fee?: number;
1000
+ /**
1001
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1002
+ */
1003
+ timeoutInSeconds?: number;
1004
+ /**
1005
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1006
+ */
1007
+ simulate?: boolean;
1008
+ }) => Promise<AssembledTransaction<null>>;
1009
+ /**
1010
+ * Construct and simulate a set_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1011
+ * Sets TTL configs for instance and persistent storage.
1012
+ *
1013
+ * - `None` values remove the corresponding config (disables auto-extension for that type)
1014
+ * - Validates that `threshold <= extend_to <= MAX_TTL`
1015
+ *
1016
+ * # Arguments
1017
+ * - `instance` - TTL config for instance storage
1018
+ * - `persistent` - TTL config for persistent storage
1019
+ *
1020
+ * # Panics
1021
+ * - `TtlConfigFrozen` if configs are frozen
1022
+ * - `InvalidTtlConfig` if validation fails
1023
+ */
1024
+ set_ttl_configs: ({ instance, persistent }: {
1025
+ instance: Option<TtlConfig>;
1026
+ persistent: Option<TtlConfig>;
1027
+ }, txnOptions?: {
1028
+ /**
1029
+ * The fee to pay for the transaction. Default: BASE_FEE
1030
+ */
1031
+ fee?: number;
1032
+ /**
1033
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1034
+ */
1035
+ timeoutInSeconds?: number;
1036
+ /**
1037
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1038
+ */
1039
+ simulate?: boolean;
1040
+ }) => Promise<AssembledTransaction<null>>;
1041
+ /**
1042
+ * Construct and simulate a ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1043
+ * Returns the current TTL configs as (instance_config, persistent_config).
1044
+ */
1045
+ ttl_configs: (txnOptions?: {
1046
+ /**
1047
+ * The fee to pay for the transaction. Default: BASE_FEE
1048
+ */
1049
+ fee?: number;
1050
+ /**
1051
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1052
+ */
1053
+ timeoutInSeconds?: number;
1054
+ /**
1055
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1056
+ */
1057
+ simulate?: boolean;
1058
+ }) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
1059
+ /**
1060
+ * Construct and simulate a freeze_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1061
+ * Permanently freezes TTL configs, preventing any future modifications.
1062
+ *
1063
+ * This is irreversible and provides immutability guarantees to users.
1064
+ * Emits `TtlConfigsFrozen` event.
1065
+ *
1066
+ * # Panics
1067
+ * - `TtlConfigAlreadyFrozen` if already frozen
1068
+ */
1069
+ freeze_ttl_configs: (txnOptions?: {
1070
+ /**
1071
+ * The fee to pay for the transaction. Default: BASE_FEE
1072
+ */
1073
+ fee?: number;
1074
+ /**
1075
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1076
+ */
1077
+ timeoutInSeconds?: number;
1078
+ /**
1079
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1080
+ */
1081
+ simulate?: boolean;
1082
+ }) => Promise<AssembledTransaction<null>>;
1083
+ /**
1084
+ * Construct and simulate a is_ttl_configs_frozen transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1085
+ * Returns whether TTL configs are frozen.
1086
+ */
1087
+ is_ttl_configs_frozen: (txnOptions?: {
1088
+ /**
1089
+ * The fee to pay for the transaction. Default: BASE_FEE
1090
+ */
1091
+ fee?: number;
1092
+ /**
1093
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1094
+ */
1095
+ timeoutInSeconds?: number;
1096
+ /**
1097
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1098
+ */
1099
+ simulate?: boolean;
1100
+ }) => Promise<AssembledTransaction<boolean>>;
1147
1101
  }
1148
1102
  export declare class Client extends ContractClient {
1149
1103
  readonly options: ContractClientOptions;
@@ -1164,13 +1118,6 @@ export declare class Client extends ContractClient {
1164
1118
  }): Promise<AssembledTransaction<T>>;
1165
1119
  constructor(options: ContractClientOptions);
1166
1120
  readonly fromJSON: {
1167
- upgrade: (json: string) => AssembledTransaction<null>;
1168
- migrate: (json: string) => AssembledTransaction<null>;
1169
- authorizer: (json: string) => AssembledTransaction<string>;
1170
- estimate_fee_by_eid: (json: string) => AssembledTransaction<FeeEstimate>;
1171
- native_token_price_usd: (json: string) => AssembledTransaction<bigint>;
1172
- get_price: (json: string) => AssembledTransaction<Option<Price>>;
1173
- get_price_ratio_denominator: (json: string) => AssembledTransaction<bigint>;
1174
1121
  set_price_updater: (json: string) => AssembledTransaction<null>;
1175
1122
  set_price_ratio_denominator: (json: string) => AssembledTransaction<null>;
1176
1123
  set_arbitrum_compression_percent: (json: string) => AssembledTransaction<null>;
@@ -1182,16 +1129,25 @@ export declare class Client extends ContractClient {
1182
1129
  arbitrum_compression_percent: (json: string) => AssembledTransaction<bigint>;
1183
1130
  arbitrum_price_ext: (json: string) => AssembledTransaction<ArbitrumPriceExt>;
1184
1131
  eid_to_model_type: (json: string) => AssembledTransaction<ModelType>;
1185
- set_ttl_configs: (json: string) => AssembledTransaction<null>;
1186
- ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
1187
- freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
1188
- is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
1189
- extend_instance_ttl: (json: string) => AssembledTransaction<null>;
1132
+ estimate_fee_by_eid: (json: string) => AssembledTransaction<FeeEstimate>;
1133
+ native_token_price_usd: (json: string) => AssembledTransaction<bigint>;
1134
+ get_price: (json: string) => AssembledTransaction<Option<Price>>;
1135
+ get_price_ratio_denominator: (json: string) => AssembledTransaction<bigint>;
1136
+ upgrade: (json: string) => AssembledTransaction<null>;
1137
+ migrate: (json: string) => AssembledTransaction<null>;
1138
+ freeze: (json: string) => AssembledTransaction<null>;
1139
+ is_frozen: (json: string) => AssembledTransaction<boolean>;
1140
+ authorizer: (json: string) => AssembledTransaction<string>;
1190
1141
  owner: (json: string) => AssembledTransaction<Option<string>>;
1191
1142
  pending_owner: (json: string) => AssembledTransaction<Option<string>>;
1192
1143
  transfer_ownership: (json: string) => AssembledTransaction<null>;
1193
1144
  propose_ownership_transfer: (json: string) => AssembledTransaction<null>;
1194
1145
  accept_ownership: (json: string) => AssembledTransaction<null>;
1195
1146
  renounce_ownership: (json: string) => AssembledTransaction<null>;
1147
+ extend_instance_ttl: (json: string) => AssembledTransaction<null>;
1148
+ set_ttl_configs: (json: string) => AssembledTransaction<null>;
1149
+ ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
1150
+ freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
1151
+ is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
1196
1152
  };
1197
1153
  }