@layerzerolabs/protocol-stellar-v2 0.2.15 → 0.2.19

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 (262) hide show
  1. package/.turbo/turbo-build.log +365 -297
  2. package/.turbo/turbo-lint.log +142 -110
  3. package/.turbo/turbo-test.log +1273 -1222
  4. package/Cargo.lock +20 -5
  5. package/Cargo.toml +4 -1
  6. package/contracts/ERROR_SPEC.md +44 -0
  7. package/contracts/common-macros/src/auth.rs +113 -0
  8. package/contracts/common-macros/src/contract_ttl.rs +84 -0
  9. package/contracts/common-macros/src/lib.rs +181 -30
  10. package/contracts/common-macros/src/lz_contract.rs +83 -0
  11. package/contracts/common-macros/src/tests/{ownable.rs → auth.rs} +48 -15
  12. package/contracts/common-macros/src/tests/contract_ttl.rs +662 -0
  13. package/contracts/common-macros/src/tests/mod.rs +2 -2
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +20 -0
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +24 -0
  16. package/contracts/common-macros/src/tests/snapshots/{common_macros__tests__ownable__snapshot_only_owner_preserves_function_signature.snap → common_macros__tests__auth__snapshot_only_auth_preserves_function_signature.snap} +4 -4
  17. package/contracts/common-macros/src/tests/snapshots/{common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap → common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap} +3 -3
  18. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contracttrait_code.snap +69 -0
  19. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +7 -21
  20. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +2 -2
  21. package/contracts/common-macros/src/ttl_configurable.rs +19 -34
  22. package/contracts/common-macros/src/ttl_extendable.rs +36 -0
  23. package/contracts/common-macros/src/upgradeable.rs +5 -5
  24. package/contracts/common-macros/src/utils.rs +9 -0
  25. package/contracts/endpoint-v2/src/constants.rs +4 -4
  26. package/contracts/endpoint-v2/src/endpoint_v2.rs +38 -40
  27. package/contracts/endpoint-v2/src/errors.rs +4 -3
  28. package/contracts/endpoint-v2/src/events.rs +1 -1
  29. package/contracts/endpoint-v2/src/message_lib_manager.rs +18 -5
  30. package/contracts/endpoint-v2/src/messaging_channel.rs +11 -1
  31. package/contracts/endpoint-v2/src/messaging_composer.rs +11 -1
  32. package/contracts/endpoint-v2/src/storage.rs +1 -1
  33. package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +3 -3
  34. package/contracts/endpoint-v2/src/tests/endpoint_v2/quote.rs +1 -1
  35. package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +2 -2
  36. package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +3 -3
  37. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
  38. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +3 -3
  39. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +1 -1
  40. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +3 -3
  41. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +1 -1
  42. package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +4 -4
  43. package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +1 -1
  44. package/contracts/layerzero-views/src/layerzero_view.rs +3 -6
  45. package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +2 -2
  46. package/contracts/macro-integration-tests/tests/runtime/ownable/{only_owner_guard.rs → only_auth_guard.rs} +1 -1
  47. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +1 -1
  48. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +1 -1
  49. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/mod.rs +0 -1
  50. package/contracts/macro-integration-tests/tests/ui/ownable/fail/{only_owner_missing_env.rs → only_auth_missing_env.rs} +3 -3
  51. package/contracts/macro-integration-tests/tests/ui/ownable/fail/{only_owner_missing_env.stderr → only_auth_missing_env.stderr} +4 -4
  52. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +2 -3
  53. package/contracts/macro-integration-tests/tests/ui/ownable/pass/{only_owner_env_param_variants.rs → only_auth_env_param_variants.rs} +9 -9
  54. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/minimal_contract.rs +6 -6
  55. package/contracts/message-libs/message-lib-common/src/errors.rs +7 -2
  56. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/decode_packet_header.rs +3 -3
  57. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_lz_receive_option.rs +1 -2
  58. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_native_drop_option.rs +1 -2
  59. package/contracts/message-libs/message-lib-common/src/tests/worker_options/convert_legacy_options.rs +9 -9
  60. package/contracts/message-libs/message-lib-common/src/tests/worker_options/extract_type_3_options.rs +1 -1
  61. package/contracts/message-libs/message-lib-common/src/tests/worker_options/left_pad_to_bytes32.rs +1 -1
  62. package/contracts/message-libs/message-lib-common/src/tests/worker_options/split_worker_options.rs +2 -2
  63. package/contracts/message-libs/simple-message-lib/src/simple_message_lib.rs +7 -9
  64. package/contracts/message-libs/treasury/src/errors.rs +2 -2
  65. package/contracts/message-libs/treasury/src/events.rs +1 -1
  66. package/contracts/message-libs/treasury/src/interfaces/zro_fee_lib.rs +2 -2
  67. package/contracts/message-libs/treasury/src/storage.rs +1 -1
  68. package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +1 -1
  69. package/contracts/message-libs/treasury/src/treasury.rs +14 -16
  70. package/contracts/message-libs/uln-302/src/receive_uln.rs +13 -2
  71. package/contracts/message-libs/uln-302/src/send_uln.rs +24 -4
  72. package/contracts/message-libs/uln-302/src/uln302.rs +6 -24
  73. package/contracts/oapps/counter/Cargo.toml +14 -1
  74. package/contracts/oapps/counter/integration_tests/mod.rs +4 -1
  75. package/contracts/oapps/counter/integration_tests/{setup.rs → setup_sml.rs} +48 -80
  76. package/contracts/oapps/counter/integration_tests/setup_uln.rs +997 -0
  77. package/contracts/oapps/counter/integration_tests/signing.rs +62 -0
  78. package/contracts/oapps/counter/integration_tests/test_with_sml.rs +24 -55
  79. package/contracts/oapps/counter/integration_tests/test_with_uln.rs +314 -0
  80. package/contracts/oapps/counter/integration_tests/utils.rs +196 -53
  81. package/contracts/oapps/counter/src/counter.rs +67 -43
  82. package/contracts/oapps/counter/src/tests/mod.rs +0 -13
  83. package/contracts/oapps/counter/src/tests/test_counter.rs +5 -7
  84. package/contracts/oapps/oapp/src/errors.rs +5 -1
  85. package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +93 -78
  86. package/contracts/oapps/oapp/src/oapp_core.rs +36 -21
  87. package/contracts/oapps/oapp/src/oapp_options_type3.rs +48 -12
  88. package/contracts/oapps/oapp/src/oapp_receiver.rs +106 -41
  89. package/contracts/oapps/oapp/src/oapp_sender.rs +26 -34
  90. package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +9 -8
  91. package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +25 -17
  92. package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +7 -7
  93. package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +14 -15
  94. package/contracts/oapps/oapp-macros/src/generators.rs +128 -0
  95. package/contracts/oapps/oapp-macros/src/lib.rs +113 -56
  96. package/contracts/oapps/oft/Cargo.toml +10 -7
  97. package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/test_oft_fee.rs +3 -4
  98. package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/test_pausable.rs +2 -3
  99. package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/test_rate_limiter.rs +1 -1
  100. package/contracts/oapps/oft/integration-tests/mod.rs +1 -1
  101. package/contracts/oapps/oft/integration-tests/setup.rs +29 -110
  102. package/contracts/oapps/oft/integration-tests/utils.rs +254 -21
  103. package/contracts/oapps/oft/src/extensions/oft_fee.rs +13 -14
  104. package/contracts/oapps/oft/src/extensions/pausable.rs +4 -4
  105. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +5 -5
  106. package/contracts/oapps/oft/src/lib.rs +11 -13
  107. package/contracts/oapps/oft/src/oft.rs +147 -225
  108. package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +9 -13
  109. package/contracts/oapps/oft/src/oft_types/mint_burn.rs +31 -14
  110. package/contracts/oapps/oft/src/oft_types/mod.rs +13 -0
  111. package/contracts/oapps/{oft-std → oft-core}/Cargo.toml +6 -4
  112. package/contracts/oapps/{oft-std → oft-core}/integration-tests/mod.rs +1 -1
  113. package/contracts/oapps/{oft-std → oft-core}/integration-tests/setup.rs +129 -30
  114. package/contracts/oapps/{oft → oft-core}/integration-tests/test_with_sml.rs +3 -3
  115. package/contracts/oapps/oft-core/integration-tests/utils.rs +201 -0
  116. package/contracts/oapps/oft-core/src/errors.rs +13 -0
  117. package/contracts/oapps/oft-core/src/lib.rs +18 -0
  118. package/contracts/oapps/oft-core/src/oft_core.rs +439 -0
  119. package/contracts/oapps/{oft → oft-core}/src/storage.rs +2 -0
  120. package/contracts/oapps/{oft → oft-core}/src/tests/mod.rs +0 -2
  121. package/contracts/oapps/{oft → oft-core}/src/tests/test_decimals.rs +2 -2
  122. package/contracts/oapps/{oft → oft-core}/src/tests/test_lz_receive.rs +7 -7
  123. package/contracts/oapps/{oft → oft-core}/src/tests/test_oft_msg_codec.rs +4 -5
  124. package/contracts/oapps/{oft → oft-core}/src/tests/test_resolve_address.rs +3 -3
  125. package/contracts/oapps/{oft → oft-core}/src/tests/test_utils.rs +78 -37
  126. package/contracts/oapps/oft-core/src/types.rs +58 -0
  127. package/contracts/oapps/{oft → oft-core}/src/utils.rs +1 -1
  128. package/contracts/upgrader/src/lib.rs +4 -4
  129. package/contracts/utils/src/auth.rs +44 -0
  130. package/contracts/utils/src/errors.rs +31 -5
  131. package/contracts/utils/src/lib.rs +3 -0
  132. package/contracts/utils/src/multisig.rs +211 -0
  133. package/contracts/utils/src/ownable.rs +137 -13
  134. package/contracts/utils/src/tests/buffer_reader.rs +6 -6
  135. package/contracts/utils/src/tests/buffer_writer.rs +6 -6
  136. package/contracts/utils/src/tests/bytes_ext.rs +2 -4
  137. package/contracts/utils/src/tests/mod.rs +1 -0
  138. package/contracts/utils/src/tests/multisig.rs +731 -0
  139. package/contracts/utils/src/tests/option_ext.rs +2 -5
  140. package/contracts/utils/src/tests/ownable.rs +456 -7
  141. package/contracts/utils/src/tests/ttl_configurable.rs +27 -16
  142. package/contracts/utils/src/tests/upgradeable.rs +4 -2
  143. package/contracts/utils/src/ttl_configurable.rs +23 -8
  144. package/contracts/utils/src/ttl_extendable.rs +27 -0
  145. package/contracts/utils/src/upgradeable.rs +2 -0
  146. package/contracts/workers/dvn/Cargo.toml +1 -1
  147. package/contracts/workers/dvn/src/auth.rs +7 -7
  148. package/contracts/workers/dvn/src/dvn.rs +10 -38
  149. package/contracts/workers/dvn/src/errors.rs +0 -7
  150. package/contracts/workers/dvn/src/events.rs +1 -14
  151. package/contracts/workers/dvn/src/interfaces/dvn.rs +2 -2
  152. package/contracts/workers/dvn/src/interfaces/mod.rs +0 -2
  153. package/contracts/workers/dvn/src/storage.rs +3 -13
  154. package/contracts/workers/dvn/src/tests/auth.rs +4 -4
  155. package/contracts/workers/dvn/src/tests/dvn.rs +1 -2
  156. package/contracts/workers/dvn/src/tests/multisig/set_signer.rs +7 -8
  157. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +11 -8
  158. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +11 -12
  159. package/contracts/workers/dvn/src/tests/setup.rs +5 -5
  160. package/contracts/workers/dvn-fee-lib/Cargo.toml +1 -1
  161. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +3 -6
  162. package/contracts/workers/executor/src/auth.rs +80 -16
  163. package/contracts/workers/executor/src/executor.rs +5 -31
  164. package/contracts/workers/executor/src/storage.rs +2 -9
  165. package/contracts/workers/executor-fee-lib/Cargo.toml +1 -1
  166. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +3 -6
  167. package/contracts/workers/executor-helper/Cargo.toml +1 -1
  168. package/contracts/workers/executor-helper/src/executor_helper.rs +53 -73
  169. package/contracts/workers/price-feed/Cargo.toml +1 -1
  170. package/contracts/workers/price-feed/src/price_feed.rs +7 -10
  171. package/contracts/workers/worker/src/errors.rs +4 -0
  172. package/contracts/workers/worker/src/tests/worker.rs +7 -6
  173. package/contracts/workers/worker/src/worker.rs +20 -16
  174. package/package.json +7 -5
  175. package/sdk/.turbo/turbo-build.log +1 -0
  176. package/sdk/.turbo/turbo-test.log +1019 -0
  177. package/sdk/dist/generated/bml.d.ts +95 -8
  178. package/sdk/dist/generated/bml.js +95 -36
  179. package/sdk/dist/generated/counter.d.ts +289 -44
  180. package/sdk/dist/generated/counter.js +119 -49
  181. package/sdk/dist/generated/dvn.d.ts +312 -229
  182. package/sdk/dist/generated/dvn.js +144 -83
  183. package/sdk/dist/generated/dvn_fee_lib.d.ts +258 -63
  184. package/sdk/dist/generated/dvn_fee_lib.js +95 -26
  185. package/sdk/dist/generated/endpoint.d.ts +219 -24
  186. package/sdk/dist/generated/endpoint.js +108 -41
  187. package/sdk/dist/generated/executor.d.ts +239 -87
  188. package/sdk/dist/generated/executor.js +135 -63
  189. package/sdk/dist/generated/executor_fee_lib.d.ts +278 -74
  190. package/sdk/dist/generated/executor_fee_lib.js +135 -59
  191. package/sdk/dist/generated/executor_helper.d.ts +163 -21
  192. package/sdk/dist/generated/executor_helper.js +124 -52
  193. package/sdk/dist/generated/oft.d.ts +1842 -0
  194. package/sdk/dist/generated/oft.js +345 -0
  195. package/sdk/dist/generated/price_feed.d.ts +258 -63
  196. package/sdk/dist/generated/price_feed.js +95 -26
  197. package/sdk/dist/generated/sml.d.ts +235 -34
  198. package/sdk/dist/generated/sml.js +126 -53
  199. package/sdk/dist/generated/treasury.d.ts +1016 -0
  200. package/sdk/dist/generated/treasury.js +248 -0
  201. package/sdk/dist/generated/uln302.d.ts +235 -34
  202. package/sdk/dist/generated/uln302.js +126 -53
  203. package/sdk/dist/generated/upgrader.d.ts +17 -2
  204. package/sdk/dist/generated/upgrader.js +19 -1
  205. package/sdk/dist/index.d.ts +2 -1
  206. package/sdk/dist/index.js +2 -1
  207. package/sdk/package.json +6 -3
  208. package/sdk/src/index.ts +2 -1
  209. package/sdk/test/counter-sml.test.ts +376 -0
  210. package/sdk/test/counter-uln.test.ts +493 -0
  211. package/sdk/test/{oft.test.ts → oft-sml.test.ts} +196 -321
  212. package/sdk/test/suites/constants.ts +22 -2
  213. package/sdk/test/suites/globalSetup.ts +450 -0
  214. package/sdk/test/suites/localnet.ts +23 -6
  215. package/sdk/test/upgrader.test.ts +7 -16
  216. package/sdk/test/utils.ts +558 -85
  217. package/sdk/turbo.json +8 -0
  218. package/sdk/vitest.config.ts +21 -0
  219. package/tools/ts-bindings-gen/Cargo.toml +2 -0
  220. package/tools/ts-bindings-gen/src/main.rs +52 -4
  221. package/contracts/common-macros/src/contract_impl.rs +0 -52
  222. package/contracts/common-macros/src/ownable.rs +0 -41
  223. package/contracts/common-macros/src/tests/contract_impl.rs +0 -386
  224. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +0 -12
  225. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/extend_instance_ttl.rs +0 -50
  226. package/contracts/oapps/oapp-macros/src/oapp_core.rs +0 -41
  227. package/contracts/oapps/oapp-macros/src/oapp_full.rs +0 -21
  228. package/contracts/oapps/oapp-macros/src/oapp_options_type3.rs +0 -31
  229. package/contracts/oapps/oapp-macros/src/oapp_receiver.rs +0 -48
  230. package/contracts/oapps/oapp-macros/src/oapp_sender.rs +0 -21
  231. package/contracts/oapps/oapp-macros/src/util.rs +0 -107
  232. package/contracts/oapps/oft/src/constants.rs +0 -5
  233. package/contracts/oapps/oft/src/default_oft_impl.rs +0 -152
  234. package/contracts/oapps/oft/src/errors.rs +0 -8
  235. package/contracts/oapps/oft/src/interfaces/mint_burn_token.rs +0 -23
  236. package/contracts/oapps/oft/src/interfaces/mod.rs +0 -3
  237. package/contracts/oapps/oft/src/tests/extensions/mod.rs +0 -11
  238. package/contracts/oapps/oft/src/tests/extensions/setup.rs +0 -903
  239. package/contracts/oapps/oft/src/tests/extensions/test_oft_fee.rs +0 -749
  240. package/contracts/oapps/oft/src/tests/extensions/test_pausable.rs +0 -432
  241. package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +0 -1078
  242. package/contracts/oapps/oft/src/types.rs +0 -38
  243. package/contracts/oapps/oft-std/integration-tests/utils.rs +0 -427
  244. package/contracts/oapps/oft-std/src/lib.rs +0 -16
  245. package/contracts/oapps/oft-std/src/oft.rs +0 -156
  246. package/contracts/workers/dvn/src/interfaces/multisig.rs +0 -56
  247. package/contracts/workers/dvn/src/multisig.rs +0 -157
  248. package/sdk/dist/generated/oft_std.d.ts +0 -1544
  249. package/sdk/dist/generated/oft_std.js +0 -271
  250. package/sdk/test/index.test.ts +0 -375
  251. /package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/mod.rs +0 -0
  252. /package/contracts/oapps/{oft → oft-core}/src/codec/mod.rs +0 -0
  253. /package/contracts/oapps/{oft → oft-core}/src/codec/oft_compose_msg_codec.rs +0 -0
  254. /package/contracts/oapps/{oft → oft-core}/src/codec/oft_msg_codec.rs +0 -0
  255. /package/contracts/oapps/{oft → oft-core}/src/events.rs +0 -0
  256. /package/contracts/oapps/{oft → oft-core}/src/tests/test_oft_compose_msg_codec.rs +0 -0
  257. /package/contracts/oapps/{oft → oft-core}/src/tests/test_oft_version.rs +0 -0
  258. /package/contracts/oapps/{oft → oft-core}/src/tests/test_quote_oft.rs +0 -0
  259. /package/contracts/oapps/{oft → oft-core}/src/tests/test_quote_send.rs +0 -0
  260. /package/contracts/oapps/{oft → oft-core}/src/tests/test_send.rs +0 -0
  261. /package/contracts/oapps/{oft → oft-core}/src/tests/test_token.rs +0 -0
  262. /package/sdk/test/suites/{testUpgradeable.ts → dummyContractClient.ts} +0 -0
@@ -5,6 +5,21 @@ 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
7
  export type MigrationData = void;
8
+ /**
9
+ * Embedded WASM bytecode (base64-encoded)
10
+ * Size: 56028 bytes (54.71 KB)
11
+ */
12
+ export declare const WASM_BASE64 = "AGFzbQEAAAABsAEdYAR+fn5+AX5gAn5+AX5gAX4BfmAAAX5gA35+fgF+YAN/f38AYAJ/fwF+YAJ+fgF/YAN/fn4AYAAAYAABf2ABfwBgAn9/AGABfwF+YAJ+fwBgAX4AYAJ/fgBgBH9/f38BfmABfgF/YAF/AX9gBX5/f39/AGACf38Bf2ADf39+AGAFfn5+fn4BfmAFf35/f34AYAh+fn5+fn5+fgF+YAJ+fgBgA35/fwF+YAN/f38BfwL9ASoBbAE3AAABbAExAAEBYQEwAAIBdgEzAAIBdgFkAAEBdgEyAAEBdgE2AAEBeAExAAEBdgFfAAMBdgExAAEBYgE4AAIBYgEzAAEBYgFlAAEBYgEwAAIBYwEwAAQBdgE4AAIBdgE5AAIBbAEyAAEBbAFfAAQBeAE3AAMBZAFfAAQBZAEwAAQBbAE2AAIBaQEwAAIBbQFhAAABdgFnAAEBYgFtAAQBaQE4AAIBaQE3AAIBaQE2AAEBaQFfAAIBYgFqAAEBbQE5AAQBeAEwAAEBeAEzAAMBeAE4AAMBbAEwAAEBbAE4AAEBeAE1AAIBaQEzAAEBaQE1AAIBaQE0AAIDogGgAQUGBwcHBwgJCgsMDQcDAwMLDgkLDw0LBRAIDgMQEAsFAhEPEg4DBgMMDgwKDBITAwMSChIKDRIMEBQQEAwIEAgQBBAMAhUQEBADAgkCFgEBCwsBAQsBDwQBDwEPDwIDAwIDAgICAwMDAwIDFxgIFwEMBgECFwMZDwABAgsCAwMBEAoFDQMMAwMBAwEDAhoBCQgDAwkQExsFEBAFDAwQHBwEBQFwAQEBBQMBABEGIQR/AUGAgMAAC38AQeCDwAALfwBBgI3AAAt/AEGAjcAACwf6BjMGbWVtb3J5AgAMX19jaGVja19hdXRoAGsKc2V0X3BhdXNlZAB2GXNldF9zdXBwb3J0ZWRfbWVzc2FnZV9saWIAeA1zZXRfYWxsb3dsaXN0AHkMc2V0X2RlbnlsaXN0AHwac2V0X2RlZmF1bHRfbXVsdGlwbGllcl9icHMAfRNzZXRfZGVwb3NpdF9hZGRyZXNzAH8ac2V0X3N1cHBvcnRlZF9vcHRpb25fdHlwZXMAgQESc2V0X3dvcmtlcl9mZWVfbGliAIIBDnNldF9wcmljZV9mZWVkAIQBCGlzX2FkbWluAIcBBmFkbWlucwCIAQZwYXVzZWQAiQEYaXNfc3VwcG9ydGVkX21lc3NhZ2VfbGliAIoBDG1lc3NhZ2VfbGlicwCLAQ9pc19vbl9hbGxvd2xpc3QAjAEOaXNfb25fZGVueWxpc3QAjQEHaGFzX2FjbACOAQ5hbGxvd2xpc3Rfc2l6ZQCPARZkZWZhdWx0X211bHRpcGxpZXJfYnBzAJABD2RlcG9zaXRfYWRkcmVzcwCRAQpwcmljZV9mZWVkAJIBGmdldF9zdXBwb3J0ZWRfb3B0aW9uX3R5cGVzAJMBDndvcmtlcl9mZWVfbGliAJQBCmFzc2lnbl9qb2IAlQEHZ2V0X2ZlZQCYAQ5zZXRfZHN0X2NvbmZpZwCcAQpkc3RfY29uZmlnAJ0BC25hdGl2ZV9kcm9wAJ4BCGVuZHBvaW50AJ8BDV9fY29uc3RydWN0b3IAoAEOd2l0aGRyYXdfdG9rZW4AogEJc2V0X2FkbWluAKMBB3VwZ3JhZGUApAEHbWlncmF0ZQCmAQphdXRob3JpemVyAKgBD3NldF90dGxfY29uZmlncwCpAQt0dGxfY29uZmlncwCuARJmcmVlemVfdHRsX2NvbmZpZ3MAsAEVaXNfdHRsX2NvbmZpZ3NfZnJvemVuALEBE2V4dGVuZF9pbnN0YW5jZV90dGwAsgEFb3duZXIAswENcGVuZGluZ19vd25lcgC1ARJ0cmFuc2Zlcl9vd25lcnNoaXAAtgEacHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXIAuAEQYWNjZXB0X293bmVyc2hpcAC7ARJyZW5vdW5jZV9vd25lcnNoaXAAvAEBXwMBCl9fZGF0YV9lbmQDAgtfX2hlYXBfYmFzZQMDCr6qAaABJwBBACAAEKuAgIAAQgEgAa1CIIZCBIQgAq1CIIZCBIQQgICAgAAaC5sBAgF/AX4jgICAgABBEGsiAiSAgICAAAJAAkACQAJAIABBAXFFDQAgAkGNg8CAAEEIEMGAgIAAIAIoAgANAiACIAIpAwgQwoCAgAAMAQsgAkGEg8CAAEEJEMGAgIAAIAIoAgANASACIAIpAwggAa1CIIZCBIQQw4CAgAALIAIpAwghAyACKQMAUA0BCwALIAJBEGokgICAgAAgAwsPACAAIAEQrYCAgABBAXMLogEBA38jgICAgABBEGsiAiSAgICAAAJAAkACQCAAQv8Bg0IOUg0AIAFC/wGDQg5RDQELIAAgARChgICAAFAhAwwBCyACIAFCCIg3AwggAiAAQgiINwMAAkADQCACEL+BgIAAIQMgAkEIahC/gYCAACEEIANBgIDEAEYNASADIARGDQALQQAhAwwBCyAEQYCAxABGIQMLIAJBEGokgICAgAAgAwsPACAAIAEQr4CAgABBAXMLDQAgACABEKGAgIAAUAs3AQF+QgAhAwJAAkAgAUICUQ0AIAGnQQFxDQEgACACNwMIQgEhAwsgACADNwMADwsQsYCAgAAACwkAEL2BgIAAAAuLAQICfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahCzgICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQtICAgAALQQAhAQJAQQAQtYCAgAAiAkICELaAgIAARQ0AQQEhAQJAAkAgAkICEIGAgIAAp0H/AXEOAgECAAsAC0EAIQELIABBEGokgICAgAAgAQsMACAAQQEQxYGAgAALGwAgAK1CIIZCBIQgAa1CIIZCBIQQpYCAgAAaC8IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAAkACQCAAQf8BcQ4DAAECAAsgAUHuhsCAAEEGEMGAgIAAIAEoAgANAyABIAEpAwgQwoCAgAAMAgsgAUH0hsCAAEEIEMGAgIAAIAEoAgANAiABIAEpAwgQwoCAgAAMAQsgAUH8hsCAAEEKEMGAgIAAIAEoAgANASABIAEpAwgQwoCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgsPACAAIAEQpICAgABCAVELFQEBfhC4gICAACIAEIKAgIAAGiAAC2YCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQs4CAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIELSAgIAACyAAELqAgIAAIAApAwghASAAKQMAQYoIELuAgIAAIABBEGokgICAgAAgAQtKAgF/AX4jgICAgABBEGsiACSAgICAACAAELqAgIAAIAApAwghASAAKQMAQYoIELuAgIAAIAEQgoCAgAAaIABBEGokgICAgAAgAQtQAQF/I4CAgIAAQRBrIgEkgICAgAAgAUEEahCzgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQtICAgAALIAAQwICAgAAgAUEQaiSAgICAAAspAAJAIACnQQFxRQ0ADwsgAUH6d2qtQiCGQoOAgIDggAF8EL6AgIAAAAtCAQF/I4CAgIAAQRBrIgAkgICAgAAgABC9gICAAAJAIAApAwBQDQBCg4CAgLCBARC+gICAAAALIABBEGokgICAgAALkwECAX8CfiOAgICAAEEQayIBJICAgIAAIAFBBGoQs4CAgAACQCABKAIEQQFHDQAgASgCCCABKAIMELSAgIAAC0IAIQICQAJAQQEQv4CAgAAiA0IAELaAgIAARQ0AIANCABCBgICAACICQv8Bg0LNAFINASAAIAI3AwhCASECCyAAIAI3AwAgAUEQaiSAgICAAA8LAAsLACAAEKaAgIAAGguSAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQCAAQQFxRQ0AIAFBgYbAgABBDBDBgICAACABKAIADQIgASABKQMIEMKAgIAADAELIAFB/IXAgABBBRDBgICAACABKAIADQEgASABKQMIEMKAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILTQECfkIAIQECQAJAQQAQv4CAgAAiAkICELaAgIAARQ0AIAJCAhCBgICAACIBQv8Bg0LNAFINASAAIAE3AwhCASEBCyAAIAE3AwAPCwALUQIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyABIAIQwYGAgABCASEEAkAgAygCAA0AIAAgAykDCDcDCEIAIQQLIAAgBDcDACADQRBqJICAgIAAC0QBAX8jgICAgABBEGsiAiSAgICAACACIAE3AwggAkEIakEBEJuBgIAAIQEgAEIANwMAIAAgATcDCCACQRBqJICAgIAAC0gBAX8jgICAgABBEGsiAySAgICAACADIAI3AwggAyABNwMAIANBAhCbgYCAACECIABCADcDACAAIAI3AwggA0EQaiSAgICAAAv2AgMBfwF+AX8jgICAgABBMGsiAiSAgICAABDFgICAACEDAkACQAJAAkACQAJAIAENACADEIOAgIAAQv////8fWA0BIAJBCGogAyAAEISAgIAAEMaAgIAAIAIoAggiBEECRg0CIARBAXFFDQMgAigCDCIEIAMQg4CAgABCIIinTw0FIAMgBK1CIIZCBIQQhYCAgAAhAwwFCyADIAAQhICAgABCAlENA0KDgICAgJYBEL6AgIAAAAtCg4CAgMCWARC+gICAAAALELGAgIAAAAtCg4CAgJCWARC+gICAAAALIAMgABCGgICAACEDCyACQQo2AiAgAkEgaiADEMeAgIAAIAJBFGoQyICAgAACQCACKAIUQQFHDQAgAkEgaiACKAIYIAIoAhwQyYCAgAALQo7mrrnqjOTVOBDKgICAACEDIAIgADcDKCACIAGtNwMgIANBnIfAgABBAiACQSBqQQIQy4CAgAAQh4CAgAAaIAJBMGokgICAgAALrAECAX8DfiOAgICAAEEwayIAJICAgIAAIABBEGoQs4CAgAACQCAAKAIQQQFHDQAgACgCFCAAKAIYELSAgIAACyAAQQo2AhAgACAAQRBqENSAgIAAAkAgACkDACIBUA0AIABBJGoQyICAgAAgACgCJEEBRw0AIABBEGogACgCKCAAKAIsEMmAgIAACyAAKQMIIQIQiICAgAAhAyAAQTBqJICAgIAAIAIgAyABpxsLPQECfwJAAkAgAUICUg0AQQAhAgwBC0EBQQIgAUL/AYNCBFEbIQIgAUIgiKchAwsgACADNgIEIAAgAjYCAAsVACAAEN+AgIAAIAFCARCSgICAABoLDAAgAEECEMWBgIAACyUAIAAQ34CAgABCASABrUIghkIEhCACrUIghkIEhBCAgICAABoLYwMBfwF+AX8jgICAgABBEGsiASSAgICAACABIAA3AwBCAiECQQEhAwJAA0AgA0UNASADQX9qIQMgACECDAALCyABIAI3AwggAUEIakEBEJuBgIAAIQAgAUEQaiSAgICAACAACy4AAkAgASADRg0AAAsgAK1CIIZCBIQgAq1CIIZCBIQgAa1CIIZCBIQQoICAgAALJwAgABCCgICAABoCQCAAEM2AgIAADQBCg4CAgPCXARC+gICAAAALC10BAX8jgICAgABBEGsiASSAgICAACABQQRqELOAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBC0gICAAAsQxYCAgAAgABCEgICAACEAIAFBEGokgICAgAAgAEICUgvRAgMBfwJ+AX8jgICAgABBMGsiAiSAgICAABDPgICAACIDIAAQhICAgAAhBAJAAkACQAJAAkAgAQ0AIAJBCGogBBDGgICAACACKAIIIgVBAkYNASAFQQFxRQ0CIAIoAgwiBSADEIOAgIAAQiCIp08NBCADIAWtQiCGQgSEEIWAgIAAIQMMBAsgBEICUQ0CQoOAgIDglgEQvoCAgAAACxCxgICAAAALQoOAgIDwlgEQvoCAgAAACyADIAAQhoCAgAAhAwsgAkEGNgIgIAJBIGogAxDHgICAACACQRRqEMiAgIAAAkAgAigCFEEBRw0AIAJBIGogAigCGCACKAIcEMmAgIAAC0Gsh8CAAEEZENCAgIAAEMqAgIAAIQMgAiABrTcDKCACIAA3AyAgA0Hch8CAAEECIAJBIGpBAhDLgICAABCHgICAABogAkEwaiSAgICAAAusAQIBfwN+I4CAgIAAQTBrIgAkgICAgAAgAEEQahCzgICAAAJAIAAoAhBBAUcNACAAKAIUIAAoAhgQtICAgAALIABBBjYCECAAIABBEGoQ1ICAgAACQCAAKQMAIgFQDQAgAEEkahDIgICAACAAKAIkQQFHDQAgAEEQaiAAKAIoIAAoAiwQyYCAgAALIAApAwghAhCIgICAACEDIABBMGokgICAgAAgAiADIAGnGwtFAgF/AX4jgICAgABBEGsiAiSAgICAACACIAAgARDBgYCAAAJAIAIoAgBBAUcNAAALIAIpAwghAyACQRBqJICAgIAAIAMLdQIBfwF+I4CAgIAAQSBrIgAkgICAgAAgAEEQahCzgICAAAJAIAAoAhBBAUcNACAAKAIUIAAoAhgQtICAgAALIABBAjYCECAAIABBEGoQ0oCAgAAgACkDCCEBIAApAwBBvQkQ04CAgAAgAEEgaiSAgICAACABC00BAn5CACECAkACQCABEN+AgIAAIgNCAhC2gICAAEUNACADQgIQgYCAgAAiAkL/AYNCzQBSDQEgACACNwMIQgEhAgsgACACNwMADwsACykAAkAgAKdBAXFFDQAPCyABQdB2aq1CIIZCg4CAgICWAXwQvoCAgAAAC00BAn5CACECAkACQCABEN+AgIAAIgNCARC2gICAAEUNACADQgEQgYCAgAAiAkL/AYNCywBSDQEgACACNwMIQgEhAgsgACACNwMADwsAC3cBA38jgICAgABBIGsiACSAgICAACAAQRBqELOAgIAAAkAgACgCEEEBRw0AIAAoAhQgACgCGBC0gICAAAsgAEEJNgIQIABBCGogAEEQahDWgICAACAAKAIIIQEgACgCDCECIABBIGokgICAgAAgAkEAIAFBAXEbC1oCAX4BfwJAAkACQCABEN+AgIAAIgJCAhC2gICAAA0AQQAhAQwBCyACQgIQgYCAgAAiAkL/AYNCBFINASACQiCIpyEDQQEhAQsgACADNgIEIAAgATYCAA8LAAuMAQECfyOAgICAAEEgayIBJICAgIAAIAEQs4CAgAACQCABKAIAQQFHDQAgASgCBCABKAIIELSAgIAACyABQQg2AgAgASAANwMIAkAgARDYgICAACICRQ0AIAFBFGoQyICAgAAgASgCFEEBRw0AIAEgASgCGCABKAIcEMmAgIAACyABQSBqJICAgIAAIAILEgAgABDfgICAAEIBELaAgIAAC3UCAX8BfiOAgICAAEEgayIAJICAgIAAIABBEGoQs4CAgAACQCAAKAIQQQFHDQAgACgCFCAAKAIYELSAgIAACyAAQQM2AhAgACAAQRBqENKAgIAAIAApAwghASAAKQMAQcEJENOAgIAAIABBIGokgICAgAAgAQt1AgF/AX4jgICAgABBIGsiACSAgICAACAAQRBqELOAgIAAAkAgACgCEEEBRw0AIAAoAhQgACgCGBC0gICAAAsgAEEBNgIQIAAgAEEQahDSgICAACAAKQMIIQEgACkDAEG1CRDTgICAACAAQSBqJICAgIAAIAELjAEBAn8jgICAgABBIGsiASSAgICAACABELOAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBC0gICAAAsgAUEHNgIAIAEgADcDCAJAIAEQ2ICAgAAiAkUNACABQRRqEMiAgIAAIAEoAhRBAUcNACABIAEoAhggASgCHBDJgICAAAsgAUEgaiSAgICAACACC3cBA38jgICAgABBIGsiACSAgICAACAAQRBqELOAgIAAAkAgACgCEEEBRw0AIAAoAhQgACgCGBC0gICAAAsgAEEENgIQIABBCGogAEEQahDWgICAACAAKAIIIQEgACgCDCECIABBIGokgICAgAAgAkEAIAFBAXEbC10BAX8jgICAgABBEGsiASSAgICAACABQQRqELOAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBC0gICAAAsQz4CAgAAgABCEgICAACEAIAFBEGokgICAgAAgAEICUguPAQICfwF+I4CAgIAAQRBrIgAkgICAgAAgABCzgICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQtICAgAALQQAhASAAQQA2AgACQCAAEN+AgIAAIgJCAhC2gICAAEUNAEEBIQECQAJAIAJCAhCBgICAAKdB/wFxDgIBAgALAAtBACEBCyAAQRBqJICAgIAAIAELpgQCAX8BfiOAgICAAEEQayIBJICAgIAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgsAAQIDBAUGBwgJCgALIAFBgIzAgABBBhDBgICAACABKAIADQsgASABKQMIEMKAgIAADAoLIAFBhozAgABBDhDBgICAACABKAIADQogASABKQMIEMKAgIAADAkLIAFBlIzAgABBCRDBgICAACABKAIADQkgASABKQMIEMKAgIAADAgLIAFBnYzAgABBDBDBgICAACABKAIADQggASABKQMIEMKAgIAADAcLIAFBqYzAgABBFBDBgICAACABKAIADQcgASABKQMIEMKAgIAADAYLIAFBvYzAgABBFBDBgICAACABKAIADQYgASABKQMIIAA1AgRCIIZCBIQQw4CAgAAMBQsgAUHRjMCAAEELEMGAgIAAIAEoAgANBSABIAEpAwgQwoCAgAAMBAsgAUHcjMCAAEEJEMGAgIAAIAEoAgANBCABIAEpAwggACkDCBDDgICAAAwDCyABQeWMwIAAQQgQwYCAgAAgASgCAA0DIAEgASkDCCAAKQMIEMOAgIAADAILIAFB7YzAgABBDRDBgICAACABKAIADQIgASABKQMIEMKAgIAADAELIAFB+ozAgABBBhDBgICAACABKAIADQEgASABKQMIEMKAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILfAECfyOAgICAAEEQayIBJICAgIAAIAFBBGoQs4CAgAACQCABKAIEQQFHDQAgASgCCCABKAIMELSAgIAACwJAAkAgABDXgICAAEUNAEEAIQIMAQsCQBDVgICAAA0AQQEhAgwBCyAAENuAgIAAIQILIAFBEGokgICAgAAgAgtpAgF/AX4CQCABKAIIIgIgASgCDEkNACAAQgI3AwAPCyABKQMAIAKtQiCGQgSEEImAgIAAIQMCQCACQQFqIgJFDQAgACADNwMIIAEgAjYCCCAAIANC/wGDQs0AUq03AwAPCxCxgICAAAAL3AICAn8GfiOAgICAAEHQAGsiAiSAgICAAEEAIQMCQANAIANBKEYNASACQQhqIANqQgI3AwAgA0EIaiEDDAALC0IAIQRCASEFAkAgAUL/AYNCzABSDQAgAUHIgcCAAEEFIAJBCGpBBRDjgICAACACQTBqIAIpAwgQ5ICAgAAgAigCMEEBRg0AIAIpA0ghASACKQNAIQYgAkEwaiACKQMQEOWAgIAAIAIoAjANACACKQM4IQcgAkEwaiACKQMYEOWAgIAAIAIoAjANACACKQMgIghC/wGDQgRSDQAgAikDOCEJIAJBMGogAikDKBDkgICAACACKAIwQQFGDQAgAikDQCEEIAAgAikDSDcDKCAAIAQ3AyAgACABNwMYIAAgBjcDECAAIAhCIIinNgJAIAAgBzcDOCAAIAk3AzBCACEFQgAhBAsgACAFNwMAIAAgBDcDCCACQdAAaiSAgICAAAsxAAJAIAIgBEYNAAALIAAgAa1CIIZCBIQgA61CIIZCBIQgAq1CIIZCBIQQmICAgAAaC3sCAX8BfgJAAkACQCABp0H/AXEiAkHEAEYNACACQQpHDQFCACEDIABCADcDGCAAIAFCCIg3AxAMAgsgARCogICAACEDIAEQqYCAgAAhASAAIAM3AxggACABNwMQQgAhAwwBCyAAQoOQgICAATcDCEIBIQMLIAAgAzcDAAtdAgF/AX4CQAJAIAGnQf8BcSICQcAARg0AAkAgAkEGRg0AQgEhA0KDkICAgAEhAQwCCyABQgiIIQFCACEDDAELQgAhAyABEJeAgIAAIQELIAAgAzcDACAAIAE3AwgL/AECAX8FfiOAgICAAEEwayICJICAgIAAIAJBCGogASkDACABKQMIEOeAgIAAQgEhAwJAIAIoAggNACACKQMQIQQgAkEIaiABKQMoEOiAgIAAIAIoAggNACACKQMQIQUgAkEIaiABKQMgEOiAgIAAIAIoAggNACACKQMQIQYgATUCMCEHIAJBCGogASkDECABKQMYEOeAgIAAIAIoAggNACACIAIpAxA3AyggAiAGNwMYIAIgBTcDECACIAQ3AwggAiAHQiCGQgSENwMgIABByIHAgABBBSACQQhqQQUQy4CAgAA3AwhCACEDCyAAIAM3AwAgAkEwaiSAgICAAAtGAAJAAkAgAUL//////////wBWIAJCAFIgAlAbDQAgAUIIhkIKhCECDAELIAIgARCngICAACECCyAAQgA3AwAgACACNwMIC0IBAX8jgICAgABBEGsiAiSAgICAACACIAEQvoGAgAAgAikDCCEBIAAgAikDADcDACAAIAE3AwggAkEQaiSAgICAAAuBAQECfyOAgICAAEEgayIDJICAgIAAAkACQCABp0EBcQ0AIABCgYCAgDA3AwAMAQsgAyACEOqAgIAAAkACQCADKAIAQQFHDQAgAEEDNgIEQQEhBAwBCyAAIAMpAxg3AxggACADKQMQNwMQQQAhBAsgACAENgIACyADQSBqJICAgIAAC30CAX8BfgJAAkACQAJAIAGnQf8BcSICQcUARg0AIAJBC0cNAiAAIAFCP4c3AxggACABQgiHNwMQDAELIAEQm4CAgAAhAyABEJyAgIAAIQEgACADNwMYIAAgATcDEAtCACEBDAELIABCg5CAgIABNwMIQgEhAQsgACABNwMAC64NBQF/AX4BfwN+AX8jgICAgABBwABrIgMkgICAgAAgA0EQaiAAEOyAgIAAAkAgAygCEEEBRg0AIAMpAxghBEEAIQUCQANAIAVBEEYNASADQTBqIAVqQgI3AwAgBUEIaiEFDAALCyABQv8Bg0LMAFINACABQfSCwIAAQQIgA0EwakECEOOAgIAAIANBEGogAykDMBDsgICAACADKAIQDQAgAykDOCIBQv8Bg0LIAFINACADKQMYIQAgARCKgICAAEKAgICAcINCgICAgIAIUg0AIAJC/wGDQssAUg0AIANBEGoQs4CAgAACQCADKAIQQQFHDQAgAygCFCADKAIYELSAgIAAC0Hgg8CAAK1CIIZCBIRChICAgMABEIuAgIAAIAAQjICAgAAQjYCAgAAiBkL/AYNCzQBSDQACQAJAIAYQzYCAgAANAEKDgICAICEBDAELIAAgBCABEI6AgIAAGgJAAkACQAJAIAIQg4CAgABC/////y9WDQAgAhCDgICAAEKAgICAEFQNACACEI+AgIAAIgFC/wGDQssAUg0FIAEQg4CAgAAhACADQQA2AgggAyABNwMAIAMgAEIgiD4CDCADQRBqIAMQ7YCAgAAgAykDECIBQgJRDQUgAadBAXENBQJAIAMpAxgiAadB/wFxIgVBygBGDQAgBUEORw0GCwJAAkACQAJAAkAgARDugICAAEIgiKcOAwABAgoLIAMoAgggAygCDBDvgICAAEEBSw0JIANBMGogAxDtgICAACADKQMwIgFCAlENCSABp0EBcQ0JIANBEGogAykDOBDwgICAACADKAIQQQFGDQkgAykDKCEGIAMpAxghACADKQMgIgFBpILAgABBEBDQgICAABCtgICAAA0DIAFBtILAgABBEBDQgICAABCtgICAAA0DAkAgAUHEgsCAAEEKENCAgIAAEKyAgIAARQ0AIAFBzoLAgABBChDQgICAABCsgICAAA0FCyAGEIOAgIAAQv////8PVg0CIANBAzYCFAwGCyADKAIIIAMoAgwQ74CAgABBAUsNCCADQTBqIAMQ7YCAgAAgAykDMCIBQgJRDQggAadBAXENCCADQRBqIAMpAzgQ8YCAgAAgAygCEEUNAwwICyADKAIIIAMoAgwQ74CAgABBAUsNByADQTBqIAMQ7YCAgAAgAykDMCIBQgJRDQcgAadBAXENByADQRBqIAMpAzgQ8oCAgAAgAygCEA0HDAILIANBEGpCASAGEJCAgIAAEOmAgIAAIAMoAhBBAXENAyADKQMoIQEgAykDICEAIAIQg4CAgABCIIghBgJAIAAgAYRCAFINACAGQgFSDQIMAwsgBkICUg0BAkACQCACEIOAgIAAQoCAgIAgVA0AIAJChICAgBAQiYCAgAAiAkL/AYNCywBSDQggAhCDgICAACEGIANBADYCCCADIAI3AwAgAyAGQiCIPgIMIANBEGogAxDtgICAACADKQMQIgJCAlENCCACp0EBcQ0IAkAgAykDGCICp0H/AXEiBUHKAEYNACAFQQ5HDQkLAkACQAJAIAIQ7oCAgABCIIinDgMAAQILCyADKAIIIAMoAgwQ74CAgABBAUsNCiADQTBqIAMQ7YCAgAAgAykDMCICQgJRDQogAqdBAXENCiADQRBqIAMpAzgQ8ICAgAAgAygCEEEBRg0KIAMpAyAhBiADKQMYIQQgAykDKCECEPOAgIAAEPSAgIAAIQcgAhCDgICAAEL/////L1YNAyADQQM2AhQMBwsgAygCCCADKAIMEO+AgIAAQQFLDQkgA0EwaiADEO2AgIAAIAMpAzAiAUICUQ0JIAGnQQFxDQkgA0EQaiADKQM4EPGAgIAAIAMoAhANCQwECyADKAIIIAMoAgwQ74CAgABBAUsNCCADQTBqIAMQ7YCAgAAgAykDMCIBQgJRDQggAadBAXENCCADQRBqIAMpAzgQ8oCAgAAgAygCEA0IDAMLEPWAgIAAAAsgA0EQakIBIAJChICAgCAQiYCAgAAQ6YCAgAAgAygCEEEBcQ0DIAMpAyghAiADKQMgIQhBAyEFIAZB2ILAgABBCBDQgICAABCsgICAAA0EIAQgBxCugICAACEJIAggAIUgAiABhYRCAFINBCAJRQ0CDAQLIAIQg4CAgABCgICAgHCDQoCAgIAQUg0AIAAQ84CAgAAQroCAgABFDQELQoOAgIAwIQEMAwtCAiEBDAILIAMoAhQhBQsgBUF/aq1CIIZCg4CAgBB8IQELIANBwABqJICAgIAAIAEPCwALQgEBfkIBIQICQCABQv8Bg0LIAFINACABEIqAgIAAQoCAgIBwg0KAgICAgARSDQAgACABNwMIQgAhAgsgACACNwMAC0oCAX4Bf0ICIQICQCABKAIIIgMgASgCDE8NACAAIAEpAwAgA61CIIZCBIQQiYCAgAA3AwggASADQQFqNgIIQgAhAgsgACACNwMACxIAIABBuIDAgABBAxDAgYCAAAsZAAJAIAEgAEkNACABIABrDwsQsYCAgAAAC9MBAgJ/A34jgICAgABBIGsiAiSAgICAAEEAIQMCQANAIANBGEYNASACQQhqIANqQgI3AwAgA0EIaiEDDAALC0IBIQQCQCABQv8Bg0LMAFINACABQYSEwIAAQQMgAkEIakEDEOOAgIAAIAIpAwgiAUL/AYNCywBSDQAgAikDECIFQv8Bg0LNAFINAAJAIAIpAxgiBqdB/wFxIgNBygBGDQAgA0EORw0BCyAAIAE3AxggACAGNwMQIAAgBTcDCEIAIQQLIAAgBDcDACACQSBqJICAgIAAC74BAgJ/AX4jgICAgABBIGsiAiSAgICAAEEAIQMCQANAIANBEEYNASACIANqQgI3AwAgA0EIaiEDDAALC0IBIQQCQCABQv8Bg0LMAFINACABQayEwIAAQQIgAkECEOOAgIAAIAJBEGogAikDABDCgYCAACACKAIQDQAgAikDGCEBIAJBEGogAikDCBDsgICAACACKAIQDQAgACACKQMYNwMQIAAgATcDCEIAIQQLIAAgBDcDACACQSBqJICAgIAAC+ABAgJ/An4jgICAgABBMGsiAiSAgICAAEEAIQMCQANAIANBGEYNASACQQhqIANqQgI3AwAgA0EIaiEDDAALC0IBIQQCQCABQv8Bg0LMAFINACABQcyEwIAAQQMgAkEIakEDEOOAgIAAIAIpAwgiAUL/AYNCywBSDQAgAkEgaiACKQMQEMKBgIAAIAIoAiANACACKQMoIQUgAkEgaiACKQMYEOyAgIAAIAIoAiANACACKQMoIQQgACABNwMYIAAgBDcDECAAIAU3AwhCACEECyAAIAQ3AwAgAkEwaiSAgICAAAuHAQIBfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahCzgICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQtICAgAALAkACQEEBIAAQq4CAgAAiAUICELaAgIAARQ0AIAFCAhCBgICAACIBQv8Bg0LNAFENAQALEPWAgIAAAAsgAEEQaiSAgICAACABCzYAAkAgAEG8g8CAAEEMENCAgIAAEIiAgIAAEJSAgIAAIgBC/wGDQs0AUQ0AELGAgIAAAAsgAAsJABCxgICAAAALnQICAn8BfiOAgICAAEEQayIBJICAgIAAAkACQEEBIACnQf8BcSICQQBHQQF0IAJBAUYbIgJBAkYNACABELOAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBC0gICAAAsQt4CAgAAhABDegICAACACc0EBcUUNASABQQA2AgAgASACQgIQ94CAgAACQAJAIAJBAXENAEKO0qrc7qzP9QAQyoCAgAAhAyABIAA3AwAgA0HQiMCAAEEBIAFBARDLgICAABCHgICAABoMAQtCjtKq3O6sAxDKgICAACEDIAEgADcDACADQcCIwIAAQQEgAUEBEMuAgIAAEIeAgIAAGgsgAUEQaiSAgICAAEICDwsAC0KDgICAwJcBEL6AgIAAAAsaACAAEN+AgIAAIAGtQv8BgyACEJKAgIAAGguNAQECfyOAgICAAEEQayICJICAgIAAAkAgAEL/AYNCzQBSDQBBASABp0H/AXEiA0EAR0EBdCADQQFGGyIDQQJGDQAgAkEEahCzgICAAAJAIAIoAgRBAUcNACACKAIIIAIoAgwQtICAgAALELeAgIAAGiAAIANBAXEQzoCAgAAgAkEQaiSAgICAAEICDwsAC6MDAQN/I4CAgIAAQSBrIgIkgICAgAACQAJAAkACQCAAQv8Bg0LNAFINAEEBIAGnQf8BcSIDQQBHQQF0IANBAUYbIgNBAkYNACACQRBqELOAgIAAAkAgAigCEEEBRw0AIAIoAhQgAigCGBC0gICAAAsQt4CAgAAaIAAQ24CAgAAhBAJAAkAgA0EBcQ0AIARFDQMgAkEHNgIQIAIgADcDGCACQRBqEN+AgIAAQgEQkYCAgAAaENWAgIAAIgRFDQUgBEF/aiEEDAELIAQNAyACQQc2AhAgAiAANwMYIAJBEGoQ+oCAgAAgAkEEahDIgICAAAJAIAIoAgRBAUcNACACQRBqIAIoAgggAigCDBDJgICAAAsQ1YCAgABBAWoiBEUNBAsgBBD7gICAAEHsh8CAAEENENCAgIAAEMqAgIAAIQEgAiAANwMYIAIgA603AxAgAUGEiMCAAEECIAJBEGpBAhDLgICAABCHgICAABogAkEgaiSAgICAAEICDwsAC0KDgICAoJcBEL6AgIAAAAtCg4CAgKCWARC+gICAAAALELGAgIAAAAsOACAAQQFCARD3gICAAAsxAQF/I4CAgIAAQRBrIgEkgICAgAAgAUEJNgIAIAEgABDGgYCAACABQRBqJICAgIAAC+4CAQN/I4CAgIAAQSBrIgIkgICAgAACQAJAAkAgAEL/AYNCzQBSDQBBASABp0H/AXEiA0EAR0EBdCADQQFGGyIDQQJGDQAgAkEQahCzgICAAAJAIAIoAhBBAUcNACACKAIUIAIoAhgQtICAgAALELeAgIAAGiAAENeAgIAAIQQCQAJAIANBAXENACAERQ0DIAJBCDYCECACIAA3AxggAkEQahDfgICAAEIBEJGAgIAAGgwBCyAEDQMgAkEINgIQIAIgADcDGCACQRBqEPqAgIAAIAJBBGoQyICAgAAgAigCBEEBRw0AIAJBEGogAigCCCACKAIMEMmAgIAAC0GUiMCAAEEMENCAgIAAEMqAgIAAIQEgAiAANwMYIAIgA603AxAgAUGoiMCAAEECIAJBEGpBAhDLgICAABCHgICAABogAkEgaiSAgICAAEICDwsAC0KDgICAsJcBEL6AgIAAAAtCg4CAgLCWARC+gICAAAALegEBfyOAgICAAEEQayICJICAgIAAAkAgAEL/AYNCzQBSDQAgAUL/AYNCBFINACACQQRqELOAgIAAAkAgAigCBEEBRw0AIAIoAgggAigCDBC0gICAAAsgABDMgICAACABQiCIpxD+gICAACACQRBqJICAgIAAQgIPCwALcgIBfwF+I4CAgIAAQRBrIgEkgICAgAAgAUEENgIAIAEgABDGgYCAAEHYiMCAAEEaENCAgIAAEMqAgIAAIQIgASAArUIghkIEhDcDACACQYCJwIAAQQEgAUEBEMuAgIAAEIeAgIAAGiABQRBqJICAgIAAC6wBAQF/I4CAgIAAQRBrIgIkgICAgAACQCAAQv8Bg0LNAFINACABQv8Bg0LNAFINACACELOAgIAAAkAgAigCAEEBRw0AIAIoAgQgAigCCBC0gICAAAsgABDMgICAACABEICBgIAAQYiJwIAAQRMQ0ICAgAAQyoCAgAAhACACIAE3AwAgAEGsicCAAEEBIAJBARDLgICAABCHgICAABogAkEQaiSAgICAAEICDwsACzEBAX8jgICAgABBEGsiASSAgICAACABQQE2AgAgASAAEMeBgIAAIAFBEGokgICAgAALlwIBAX8jgICAgABBIGsiAySAgICAAAJAIABC/wGDQs0AUg0AIAFC/wGDQgRSDQAgAkL/AYNCyABSDQAgA0EQahCzgICAAAJAIAMoAhBBAUcNACADKAIUIAMoAhgQtICAgAALIAAQzICAgAAgA0EFNgIQIAMgAUIgiD4CFCADQRBqEN+AgIAAIAJCARCSgICAABogA0EEahDIgICAAAJAIAMoAgRBAUcNACADQRBqIAMoAgggAygCDBDJgICAAAtB1InAgABBGhDQgICAABDKgICAACEAIAMgAjcDGCADIAFChICAgHCDNwMQIABBhIrAgABBAiADQRBqQQIQy4CAgAAQh4CAgAAaIANBIGokgICAgABCAg8LAAusAQEBfyOAgICAAEEQayICJICAgIAAAkAgAEL/AYNCzQBSDQAgAUL/AYNCzQBSDQAgAhCzgICAAAJAIAIoAgBBAUcNACACKAIEIAIoAggQtICAgAALIAAQzICAgAAgARCDgYCAAEGUisCAAEESENCAgIAAEMqAgIAAIQAgAiABNwMAIABBsIrAgABBASACQQEQy4CAgAAQh4CAgAAaIAJBEGokgICAgABCAg8LAAsxAQF/I4CAgIAAQRBrIgEkgICAgAAgAUEDNgIAIAEgABDHgYCAACABQRBqJICAgIAAC38BAX8jgICAgABBEGsiAiSAgICAAAJAIABC/wGDQs0AUg0AIAFC/wGDQs0A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IQYCQANAIAZBGEYNASAEIAZqIARBKGogBmopAwA3AwAgBkEIaiEGDAALCyABQo7u6pW+tt7zACAEQQMQm4GAgAAQlICAgABC/wGDQgJSDQIgBEHAAGokgICAgABCAg8LIAQgBmpCAjcDACAGQQhqIQYMAAsLELGAgIAAAAsAC40BAQJ/I4CAgIAAQRBrIgIkgICAgAACQCAAQv8Bg0LNAFINAEEBIAGnQf8BcSIDQQBHQQF0IANBAUYbIgNBAkYNACACQQRqELOAgIAAAkAgAigCBEEBRw0AIAIoAgggAigCDBC0gICAAAsQt4CAgAAaIAAgA0EBcRDEgICAACACQRBqJICAgIAAQgIPCwALfwEBfyOAgICAAEEQayIBJICAgIAAIAEgABDsgICAAAJAIAEoAgBBAUYNACABKQMIIQAQt4CAgAAaIAEQs4CAgAACQCABKAIAQQFHDQAgASgCBCABKAIIELSAgIAAC0EBEKWBgIAAIAAQloCAgAAaIAFBEGokgICAgABCAg8LAAsYABCngYCAACAArUL/AYNCAhCSgICAABoLpQEBAX8jgICAgABBEGsiASSAgICAAAJAIABC/wGDQgJSDQAQt4CAgAAaIAFBBGoQs4CAgAACQCABKAIEQQFHDQAgASgCCCABKAIMELSAgIAACwJAAkAQp4GAgAAiAEICELaAgIAARQ0AIABCAhCBgICAAKdB/wFxDgIAAQILQoOAgICggwEQvoCAgAAAC0EAEKWBgIAAIAFBEGokgICAgABCAg8LAAtgAgF/AX4jgICAgABBEGsiACSAgICAACAAQYaHwIAAQQkQwYCAgAACQAJAIAAoAgANACAAIAApAwgQwoCAgAAgACgCAEEBRw0BCwALIAApAwghASAAQRBqJICAgIAAIAELCAAQuICAgAAL4wQBBX8jgICAgABB0ABrIgIkgICAgAAgAkEoaiAAEKqBgIAAAkAgAigCKEECRg0AIAJBCGpBCGogAkEoakEIaiIDKAIANgIAIAIgAikCKDcDCCACQShqIAEQqoGAgAAgAigCKEECRg0AIAJBGGpBCGogAygCADYCACACIAIpAig3AxggAkEoahCzgICAAAJAIAIoAihBAUcNACACKAIsIAIoAjAQtICAgAALELeAgIAAGgJAAkACQBCygICAAA0AEKuBgIAAIgNBgPuAAyADQYD7gANJGyEEIAIgAkEYajYCLCACIAJBCGo2AihBACEDA0AgA0EIRg0DAkAgAkEoaiADaigCACIFKAIAQQFxRQ0AIAUoAggiBiAESw0DIAUoAgQgBksNAwsgA0EEaiEDDAALC0KDgICA0P8AEL6AgIAAAAtCg4CAgMD/ABC+gICAAAALAkACQCACKAIIQQFHDQBBASACKAIMIAIoAhAQrIGAgAAMAQtBARC1gICAAEICEJGAgIAAGgsCQAJAIAIoAhhBAUcNAEECIAIoAhwgAigCIBCsgYCAAAwBC0ECELWAgIAAQgIQkYCAgAAaCyACQShqQQhqIAJBCGpBCGooAgA2AgAgAkE8aiACQRhqQQhqKAIANgIAIAIgAikDCDcDKCACIAIpAxg3AjRBqIbAgABBDxDQgICAABDKgICAACEAIAJBKGoQrYGAgAAhASACIAJBNGoQrYGAgAA3A0ggAiABNwNAIABBzIbAgABBAiACQcAAakECEMuAgIAAEIeAgIAAGiACQdAAaiSAgICAAEICDwsAC2gBAX8jgICAgABBEGsiAiSAgICAAAJAAkAgAUICUQ0AIAJBBGogARDDgYCAAAJAIAIoAgRFDQAgAEECNgIADAILIAAgAikCCDcCBCAAQQE2AgAMAQsgAEEANgIACyACQRBqJICAgIAACzMBAn4QooCAgAAhAAJAEKOAgIAAQiCIIgEgAEIgiCIAVA0AIAGnIACnaw8LELGAgIAAAAtWAgF/AX4jgICAgABBEGsiAySAgICAACAAELWAgIAAIQQgAyABIAIQxIGAgAACQCADKAIAQQFHDQAACyAEIAMpAwhCAhCSgICAABogA0EQaiSAgICAAAtDAgF/AX4jgICAgABBEGsiASSAgICAACABIAAQr4GAgAACQCABKAIAQQFHDQAACyABKQMIIQIgAUEQaiSAgICAACACC8IBAgJ/AX4jgICAgABBwABrIgAkgICAgAAgAEEIahCzgICAAAJAIAAoAghBAUcNACAAKAIMIAAoAhAQtICAgAALIABBCGoQs4CAgAAgAEEUaiIBEMiAgIAAIABBMGogAEEIahCvgYCAAAJAAkAgACgCMA0AIAApAzghAiAAQTBqIAEQr4GAgAAgACgCMEEBRw0BCwALIAAgACkDODcDKCAAIAI3AyAgAEEgakECEJuBgIAAIQIgAEHAAGokgICAgAAgAgswAAJAIAEoAgBBAUcNACAAIAEoAgQgASgCCBDEgYCAAA8LIABCADcDACAAQgI3AwgLqwEBAX8jgICAgABBIGsiACSAgICAACAAQQxqELOAgIAAAkAgACgCDEEBRw0AIAAoAhAgACgCFBC0gICAAAsQt4CAgAAaAkAQsoCAgABFDQBCg4CAgOD/ABC+gICAAAALQQAQtYCAgABCAUICEJKAgIAAGkHchsCAAEESENCAgIAAEMqAgIAAQQRBACAAQRhqQQAQy4CAgAAQh4CAgAAaIABBIGokgICAgABCAgsJABCygICAAK0LMQACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAEIgiKcgAUIgiKcQtICAgABCAg8LAAs+AgF/AX4jgICAgABBEGsiACSAgICAACAAELqAgIAAIAApAwAgACkDCBC0gYCAACEBIABBEGokgICAgAAgAQsNACABQgIgAKdBAXEbCz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQvYCAgAAgACkDACAAKQMIELSBgIAAIQEgAEEQaiSAgICAACABC30CAX8BfiOAgICAAEEQayIBJICAgIAAAkAgAEL/AYNCzQBSDQAgAUEEahCzgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQtICAgAALELmAgIAAIQIQvICAgAAgABChgYCAACACIAAQt4GAgAAgAUEQaiSAgICAAEICDwsAC2ECAX8BfiOAgICAAEEQayICJICAgIAAQfWEwIAAQRUQ0ICAgAAQyoCAgAAhAyACIAA3AwggAiABNwMAIANBnIXAgABBAiACQQIQy4CAgAAQh4CAgAAaIAJBEGokgICAgAAL3AICAX8CfiOAgICAAEEgayICJICAgIAAAkACQAJAIABC/wGDQs0AUg0AIAFC/wGDQgRSDQAgAkEIahCzgICAAAJAIAIoAghBAUcNACACKAIMIAIoAhAQtICAgAALELmAgIAAIQMCQAJAIAFC/////w9WDQAgAkEIahC9gICAACACKQMQIQEgAikDCEGICBC7gICAACABIAAQr4CAgABFDQMQuYGAgAAMAQsQq4GAgAAgAUIgiKdJDQNBASAAQgAQuoGAgABBARC/gICAAEIAIAFChICAgHCDIgEgARCAgICAABpBrIXAgABBFhDQgICAABDKgICAACEEIAIgATcDGCACIAM3AxAgAiAANwMIIARByIXAgABBAyACQQhqQQMQy4CAgAAQh4CAgAAaCyACQSBqJICAgIAAQgIPCwALQoOAgIDggAEQvoCAgAAAC0KDgICA8IABEL6AgIAAAAsTAEEBEL+AgIAAQgAQkYCAgAAaCxUAIAAQv4CAgAAgASACEJKAgIAAGgunAQIBfwJ+I4CAgIAAQRBrIgAkgICAgAAgABCzgICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQtICAgAALIAAQvYCAgAAgACkDCCEBIAApAwBBiAgQu4CAgAAgARCCgICAABogABDAgICAAAJAIAAoAgANABD1gICAAAALIAApAwghAhC5gYCAACABEKGBgIAAIAIgARC3gYCAACAAQRBqJICAgIAAQgILoAECAX8CfiOAgICAAEEQayIAJICAgIAAIAAQs4CAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIELSAgIAACxC5gICAACEBELyAgIAAQQAQv4CAgABCAhCRgICAABpB4IXAgABBExDQgICAABDKgICAACECIAAgATcDACACQfSFwIAAQQEgAEEBEMuAgIAAEIeAgIAAGiAAQRBqJICAgIAAQgILAwAACzsAAkACQCABQv//////////AFYNACABQgiGQgaEIQEMAQsgARCegICAACEBCyAAQgA3AwAgACABNwMIC5YBAgF+An8gACkDACEBA0ACQCABUEUNAEGAgMQADwsCQAJAIAFCMIinQT9xIgJBAUcNAEHfACECDAELAkACQAJAIAJBf2pBC08NAEEuIQMMAQsCQCACQXRqQRpPDQBBNSEDDAELIAJBJU0NAUE7IQMLIAIgA2ohAgwBCyAAIAFCBoYiATcDAAwBCwsgACABQgaGNwMAIAILHAAgACABrUIghkIEhCACrUIghkIEhBCagICAAAvbAQIBfgR/AkACQCACQQlLDQBCACEDIAIhBCABIQUDQAJAIAQNACADQgiGQg6EIQMMAwtBASEGAkAgBS0AACIHQd8ARg0AAkAgB0FQakH/AXFBCkkNAAJAIAdBv39qQf8BcUEaSQ0AIAdBn39qQf8BcUEZSw0EIAdBRWohBgwCCyAHQUtqIQYMAQsgB0FSaiEGCyADQgaGIAatQv8Bg4QhAyAEQX9qIQQgBUEBaiEFDAALCyABrUIghkIEhCACrUIghkIEhBCfgICAACEDCyAAQgA3AwAgACADNwMIC7MCAwF/AX4BfyOAgICAAEEgayICJICAgIAAAkACQCABQv8Bg0LLAFENACAAQgE3AwAMAQsgARCDgICAACEDIAJBADYCCCACIAE3AwAgAiADQiCIPgIMIAJBEGogAhDtgICAAAJAIAIpAxAiAUICUQ0AIAGnQQFxDQACQCACKQMYIgGnQf8BcSIEQcoARg0AIARBDkcNAQsCQCABQeSEwIAAQQEQwIGAgABC/////w9WDQAgAigCCCACKAIMEO+AgIAAQQFLDQAgAkEQaiACEO2AgIAAIAIpAxAiAUICUQ0AIAGnQQFxDQAgAkEQaiACKQMYEOyAgIAAIAIoAhANACACKQMYIQEgAEIANwMAIAAgATcDCAwCCyAAQgE3AwAMAQsgAEIBNwMACyACQSBqJICAgIAAC60BAgJ/AX4jgICAgABBEGsiAiSAgICAAEEAIQMCQANAIANBEEYNASACIANqQgI3AwAgA0EIaiEDDAALC0EBIQMCQCABQv8Bg0LMAFINACABQZiGwIAAQQIgAkECEOOAgIAAIAIpAwAiAUL/AYNCBFINACACKQMIIgRC/wGDQgRSDQAgACABQiCIpzYCCCAAIARCIIg+AgRBACEDCyAAIAM2AgAgAkEQaiSAgICAAAtgAgF/AX4jgICAgABBEGsiAySAgICAACADIAGtQiCGQgSENwMIIAMgAq1CIIZCBIQ3AwBBmIbAgABBAiADQQIQy4CAgAAhBCAAQgA3AwAgACAENwMIIANBEGokgICAgAALdwICfwF+I4CAgIAAQRBrIgIkgICAgABBACEDAkACQCABELWAgIAAIgRCAhC2gICAAEUNACACQQRqIARCAhCBgICAABDDgYCAAEEBIQMgAigCBEEBRg0BIAAgAikCCDcCBAsgACADNgIAIAJBEGokgICAgAAPCwALHAAgABDfgICAACABrUIghkIEhEICEJKAgIAAGgsVACAAEN+AgIAAIAFCAhCSgICAABoLuQcBDH8jgICAgABBEGshAwJAAkAgAkEQTw0AIAAhBAwBCwJAIAAgAEEAIABrQQNxIgVqIgZPDQAgBUF/aiEHIAAhBCABIQgCQCAFRQ0AIAUhCSAAIQQgASEIA0AgBCAILQAAOgAAIAhBAWohCCAEQQFqIQQgCUF/aiIJDQALCyAHQQdJDQADQCAEIAgtAAA6AAAgBEEBaiAIQQFqLQAAOgAAIARBAmogCEECai0AADoAACAEQQNqIAhBA2otAAA6AAAgBEEEaiAIQQRqLQAAOgAAIARBBWogCEEFai0AADoAACAEQQZqIAhBBmotAAA6AAAgBEEHaiAIQQdqLQAAOgAAIAhBCGohCCAEQQhqIgQgBkcNAAsLIAYgAiAFayIJQXxxIgdqIQQCQAJAIAEgBWoiCEEDcSIBDQAgBiAETw0BIAghAQNAIAYgASgCADYCACABQQRqIQEgBkEEaiIGIARJDQAMAgsLQQAhAiADQQA2AgwgA0EMaiABciEFAkBBBCABayIKQQFxRQ0AIAUgCC0AADoAAEEBIQILAkAgCkECcUUNACAFIAJqIAggAmovAQA7AQALIAggAWshAiABQQN0IQsgAygCDCEFAkACQCAGQQRqIARJDQAgBiEMDAELQQAgC2tBGHEhDQNAIAYgBSALdiACQQRqIgIoAgAiBSANdHI2AgAgBkEIaiEKIAZBBGoiDCEGIAogBEkNAAsLQQAhBiADQQA6AAggA0EAOgAGAkACQCABQQFHDQAgA0EIaiENQQAhAUEAIQpBACEODAELIAJBBWotAAAhCiADIAJBBGotAAAiAToACCAKQQh0IQpBAiEOIANBBmohDQsCQCAIQQFxRQ0AIA0gAkEEaiAOai0AADoAACADLQAGQRB0IQYgAy0ACCEBCyAMIAogBnIgAUH/AXFyQQAgC2tBGHF0IAUgC3ZyNgIACyAJQQNxIQIgCCAHaiEBCwJAIAQgBCACaiIGTw0AIAJBf2ohCQJAIAJBB3EiCEUNAANAIAQgAS0AADoAACABQQFqIQEgBEEBaiEEIAhBf2oiCA0ACwsgCUEHSQ0AA0AgBCABLQAAOgAAIARBAWogAUEBai0AADoAACAEQQJqIAFBAmotAAA6AAAgBEEDaiABQQNqLQAAOgAAIARBBGogAUEEai0AADoAACAEQQVqIAFBBWotAAA6AAAgBEEGaiABQQZqLQAAOgAAIARBB2ogAUEHai0AADoAACABQQhqIQEgBEEIaiIEIAZHDQALCyAACw4AIAAgASACEMiBgIAACwuKDQEAQYCAwAALgA1Db250cmFjdENyZWF0ZUNvbnRyYWN0SG9zdEZuQ3JlYXRlQ29udHJhY3RXaXRoQ3Rvckhvc3RGbgAAEAAIAAAACAAQABQAAAAcABAAHAAAAGRzdF9jb25maWdfc2V0cGFyYW1zXgAQAAYAAABuYXRpdmVfZHJvcF9hcHBsaWVkbmF0aXZlX2Ryb3BfcGFyYW1zb3JpZ2luc3VjY2VzcwAA7gQQAAcAAAB/ABAAEgAAAAAEEAAEAAAAkQAQAAYAAACXABAABwAAAE4FEAAQAAAAeAUQABMAAACLBRAAEwAAAHIEEAAOAAAAngUQAAoAAABkc3RfY29uZmlnAADwABAACgAAAO4EEAAHAAAAcmVjZWl2ZXLIARAABgAAAAwBEAAIAAAAbHpfcmVjZWl2ZV9hbGVydGx6X2NvbXBvc2VfYWxlcnRsel9yZWNlaXZlbHpfY29tcG9zZXRyYW5zZmVycHVibGljX2tleXNpZ25hdHVyZQBgARAACgAAAGoBEAAJAAAARHN0Q29uZmlnRW5kcG9pbnRub25jZXNyY19laWQAAACVARAABQAAAGUFEAAGAAAAmgEQAAcAAABuYXRpdmVfdG9rZW5hbW91bnR0b8gBEAAGAAAAzgEQAAIAAAAAAAASAAAAAAAAAABXYXNtYXJnc2NvbnRyYWN0Zm5fbmFtZQDwARAABAAAAPQBEAAIAAAA/AEQAAcAAABleGVjdXRhYmxlc2FsdAAAHAIQAAoAAAAmAhAABAAAAGNvbnN0cnVjdG9yX2FyZ3M8AhAAEAAAABwCEAAKAAAAJgIQAAQAAADsARAABAAAAHRocmVzaG9sZG93bmVyc2hpcF90cmFuc2ZlcnJlZG5ld19vd25lcm9sZF9vd25lcooCEAAJAAAAkwIQAAkAAABvd25lcnNoaXBfdHJhbnNmZXJyaW5ndHRsAAAAigIQAAkAAACTAhAACQAAAMICEAADAAAAb3duZXJzaGlwX3Jlbm91bmNlZACTAhAACQAAAE93bmVyUGVuZGluZ093bmVyZXh0ZW5kX3RvAAANAxAACQAAAGwCEAAJAAAAdHRsX2NvbmZpZ3Nfc2V0aW5zdGFuY2VwZXJzaXN0ZW50AAAANwMQAAgAAAA/AxAACgAAAHR0bF9jb25maWdzX2Zyb3plbkZyb3plbkluc3RhbmNlUGVyc2lzdGVudE1pZ3JhdGluZ2FjdGl2ZWFkbWluAACPAxAABgAAAJUDEAAFAAAAc2V0X3N1cHBvcnRlZF9tZXNzYWdlX2xpYm1lc3NhZ2VfbGlic3VwcG9ydGVkAAAAxQMQAAsAAADQAxAACQAAAHNldF9hbGxvd2xpc3RhbGxvd2Vkb2FwcPkDEAAHAAAAAAQQAAQAAABzZXRfZGVueWxpc3RkZW5pZWQAACAEEAAGAAAAAAQQAAQAAABwYXVzZXIAADgEEAAGAAAAdW5wYXVzZXJIBBAACAAAAHNldF9kZWZhdWx0X211bHRpcGxpZXJfYnBzbXVsdGlwbGllcl9icHNyBBAADgAAAHNldF9kZXBvc2l0X2FkZHJlc3NkZXBvc2l0X2FkZHJlc3MAAJsEEAAPAAAAc2V0X3ByaWNlX2ZlZWRwcmljZV9mZWVkwgQQAAoAAABzZXRfc3VwcG9ydGVkX29wdGlvbl90eXBlc2RzdF9laWRvcHRpb25fdHlwZXMAAADuBBAABwAAAPUEEAAMAAAAc2V0X3dvcmtlcl9mZWVfbGliZmVlX2xpYgAAACYFEAAHAAAAZGVmYXVsdF9tdWx0aXBsaWVyX2Jwc2Zsb29yX21hcmdpbl91c2RvcHRpb25zc2VuZGVyY2FsbGRhdGFfc2l6ZWx6X2NvbXBvc2VfYmFzZV9nYXNsel9yZWNlaXZlX2Jhc2VfZ2FzbmF0aXZlX2NhcGsFEAANAAAAOAUQABYAAADuBBAABwAAAE4FEAAQAAAAeAUQABMAAACLBRAAEwAAAHIEEAAOAAAAngUQAAoAAABeBRAABwAAAMIEEAAKAAAAZQUQAAYAAABQYXVzZWREZXBvc2l0QWRkcmVzc1ByaWNlRmVlZFdvcmtlckZlZUxpYkRlZmF1bHRNdWx0aXBsaWVyQnBzU3VwcG9ydGVkT3B0aW9uVHlwZXNNZXNzYWdlTGlic0FsbG93bGlzdERlbnlsaXN0QWxsb3dsaXN0U2l6ZUFkbWlucwDP8AEOY29udHJhY3RzcGVjdjAAAAAEAAAAAAAAAAAAAAANRXhlY3V0b3JFcnJvcgAAAAAAAAMAAAAAAAAAD0VpZE5vdFN1cHBvcnRlZAAAAAABAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAACAAAAAAAAABNVbmF1dGhvcml6ZWRDb250ZXh0AAAAAAMAAAAFAAAAAAAAAAAAAAAMRHN0Q29uZmlnU2V0AAAAAQAAAA5kc3RfY29uZmlnX3NldAAAAAAAAQAAAAAAAAAGcGFyYW1zAAAAAAPqAAAH0AAAABFTZXREc3RDb25maWdQYXJhbQAAAAAAAAAAAAACAAAABQAAAAAAAAAAAAAAEU5hdGl2ZURyb3BBcHBsaWVkAAAAAAAAAQAAABNuYXRpdmVfZHJvcF9hcHBsaWVkAAAAAAUAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAAAAAAAAAAAB2RzdF9laWQAAAAABAAAAAAAAAAAAAAABG9hcHAAAAATAAAAAAAAAAAAAAASbmF0aXZlX2Ryb3BfcGFyYW1zAAAAAAPqAAAH0AAAABBOYXRpdmVEcm9wUGFyYW1zAAAAAAAAAAAAAAAHc3VjY2VzcwAAAAPqAAAAAQAAAAAAAAACAAAAAQAAANtEZXN0aW5hdGlvbiBjaGFpbiBjb25maWd1cmF0aW9uIGZvciBleGVjdXRvciBmZWUgY2FsY3VsYXRpb24uCgpDb250YWlucyBnYXMgY29zdHMgYW5kIGZlZSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIGVhY2ggZGVzdGluYXRpb24gY2hhaW4uClRoZXNlIHBhcmFtZXRlcnMgYXJlIHVzZWQgYnkgdGhlIGZlZSBsaWJyYXJ5IHRvIGNhbGN1bGF0ZSBhY2N1cmF0ZSBleGVjdXRpb24gZmVlcy4AAAAAAAAAAAlEc3RDb25maWcAAAAAAAAFAAAAO01pbmltdW0gZmVlIG1hcmdpbiBpbiBVU0QgKHNjYWxlZCkgdG8gZW5zdXJlIHByb2ZpdGFiaWxpdHkuAAAAABBmbG9vcl9tYXJnaW5fdXNkAAAACgAAADpCYXNlIGdhcyBjb3N0IHBlciBsekNvbXBvc2UgY2FsbCBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4uAAAAAAATbHpfY29tcG9zZV9iYXNlX2dhcwAAAAAGAAAAP0Jhc2UgZ2FzIGNvc3QgZm9yIGx6UmVjZWl2ZSBleGVjdXRpb24gb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLgAAAAATbHpfcmVjZWl2ZV9iYXNlX2dhcwAAAAAGAAAAUUZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cyBmb3IgdGhpcyBkZXN0aW5hdGlvbiAoMCA9IHVzZSBkZWZhdWx0IG11bHRpcGxpZXIpLgAAAAAAAA5tdWx0aXBsaWVyX2JwcwAAAAAABAAAAEZNYXhpbXVtIG5hdGl2ZSB0b2tlbiB2YWx1ZSB0aGF0IGNhbiBiZSB0cmFuc2ZlcnJlZCB0byB0aGUgZGVzdGluYXRpb24uAAAAAAAKbmF0aXZlX2NhcAAAAAAACgAAAAEAAAB8UGFyYW1ldGVycyBmb3Igc2V0dGluZyBkZXN0aW5hdGlvbiBjb25maWd1cmF0aW9uLgoKVXNlZCB3aGVuIGNvbmZpZ3VyaW5nIGV4ZWN1dG9yIHNldHRpbmdzIGZvciBhIHNwZWNpZmljIGRlc3RpbmF0aW9uIGNoYWluLgAAAAAAAAARU2V0RHN0Q29uZmlnUGFyYW0AAAAAAAACAAAAKENvbmZpZ3VyYXRpb24gZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi4AAAAKZHN0X2NvbmZpZwAAAAAH0AAAAAlEc3RDb25maWcAAAAAAAArRGVzdGluYXRpb24gZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAHZHN0X2VpZAAAAAAEAAAAAQAAAGhQYXJhbWV0ZXJzIGZvciBhIG5hdGl2ZSB0b2tlbiBkcm9wLgoKVXNlZCB0byBzcGVjaWZ5IG5hdGl2ZSB0b2tlbiB0cmFuc2ZlcnMgYXMgcGFydCBvZiBleGVjdXRvciBvcHRpb25zLgAAAAAAAAAQTmF0aXZlRHJvcFBhcmFtcwAAAAIAAAAkQW1vdW50IG9mIG5hdGl2ZSB0b2tlbnMgdG8gdHJhbnNmZXIuAAAABmFtb3VudAAAAAAACwAAAC9SZWNlaXZlciBhZGRyZXNzIGZvciB0aGUgbmF0aXZlIHRva2VuIHRyYW5zZmVyLgAAAAAIcmVjZWl2ZXIAAAATAAAAAAAAALhWZXJpZmllcyBhdXRob3JpemF0aW9uIGZvciB0aGUgZXhlY3V0b3IgY29udHJhY3QuCgpUaGUgcHVibGljIGtleSBtdXN0IGNvcnJlc3BvbmQgdG8gYSByZWdpc3RlcmVkIGFkbWluIGFuZCBtdXN0IGhhdmUgc2lnbmVkIHRoZSBzaWduYXR1cmVfcGF5bG9hZC4KVXNlcyBFZDI1NTE5IHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uAAAADF9fY2hlY2tfYXV0aAAAAAMAAAAAAAAAEXNpZ25hdHVyZV9wYXlsb2FkAAAAAAAD7gAAACAAAAAAAAAACWF1dGhfZGF0YQAAAAAAB9AAAAARRXhlY3V0b3JTaWduYXR1cmUAAAAAAAAAAAAADWF1dGhfY29udGV4dHMAAAAAAAPqAAAH0AAAAAdDb250ZXh0AAAAAAEAAAPpAAAD7QAAAAAAAAADAAAAAQAAAIxTaWduYXR1cmUgZGF0YSBmb3IgQ3VzdG9tIEFjY291bnQgYXV0aG9yaXphdGlvbi4KQ29udGFpbnMgdGhlIGFkbWluJ3MgcHVibGljIGtleSBhbmQgdGhlaXIgRWQyNTUxOSBzaWduYXR1cmUgb3ZlciB0aGUgYXV0aG9yaXphdGlvbiBwYXlsb2FkLgAAAAAAAAARRXhlY3V0b3JTaWduYXR1cmUAAAAAAAACAAAATUFkbWluJ3MgRWQyNTUxOSBwdWJsaWMga2V5ICgzMiBieXRlcykgLSBtdXN0IGNvcnJlc3BvbmQgdG8gYSByZWdpc3RlcmVkIGFkbWluAAAAAAAACnB1YmxpY19rZXkAAAAAA+4AAAAgAAAAN0VkMjU1MTkgc2lnbmF0dXJlICg2NCBieXRlcykgb3ZlciB0aGUgc2lnbmF0dXJlX3BheWxvYWQAAAAACXNpZ25hdHVyZQAAAAAAA+4AAABAAAAAAAAAAORTZXRzIHRoZSBwYXVzZWQgc3RhdGUgb2YgdGhlIHdvcmtlci4KCldoZW4gcGF1c2VkLCB0aGUgd29ya2VyIHdpbGwgcmVqZWN0IG5ldyBqb2IgYXNzaWdubWVudHMgKGUuZy4sIGFzc2lnbl9qb2IsIGdldF9mZWUpLgpFeGlzdGluZyBqb2JzIGluIHByb2dyZXNzIGFyZSBub3QgYWZmZWN0ZWQuCgojIEFyZ3VtZW50cwoqIGBwYXVzZWRgIC0gYHRydWVgIHRvIHBhdXNlLCBgZmFsc2VgIHRvIHVucGF1c2UAAAAKc2V0X3BhdXNlZAAAAAAAAQAAAAAAAAAGcGF1c2VkAAAAAAABAAAAAAAAAAAAAAE3U2V0cyB3aGV0aGVyIGEgbWVzc2FnZSBsaWJyYXJ5IGlzIHN1cHBvcnRlZCBieSB0aGlzIHdvcmtlci4KCk1lc3NhZ2UgbGlicmFyaWVzIChlLmcuLCBVTE4zMDIpIGNhbGwgd29ya2VycyB0byBhc3NpZ24gam9icy4gT25seSBzdXBwb3J0ZWQKbGlicmFyaWVzIGNhbiBpbnRlcmFjdCB3aXRoIHRoaXMgd29ya2VyLgoKIyBBcmd1bWVudHMKKiBgbWVzc2FnZV9saWJgIC0gVGhlIG1lc3NhZ2UgbGlicmFyeSBjb250cmFjdCBhZGRyZXNzCiogYHN1cHBvcnRlZGAgLSBgdHJ1ZWAgdG8gYWRkIHN1cHBvcnQsIGBmYWxzZWAgdG8gcmVtb3ZlIHN1cHBvcnQAAAAAGXNldF9zdXBwb3J0ZWRfbWVzc2FnZV9saWIAAAAAAAACAAAAAAAAAAttZXNzYWdlX2xpYgAAAAATAAAAAAAAAAlzdXBwb3J0ZWQAAAAAAAABAAAAAAAAAAAAAAFYU2V0cyBhbGxvd2xpc3Qgc3RhdHVzIGZvciBhbiBPQXBwIGFkZHJlc3MuCgpXaGVuIHRoZSBhbGxvd2xpc3QgaXMgZW1wdHksIGFsbCBPQXBwcyBhcmUgYWxsb3dlZCAodW5sZXNzIG9uIGRlbnlsaXN0KS4KV2hlbiB0aGUgYWxsb3dsaXN0IGlzIG5vdCBlbXB0eSwgb25seSBhbGxvd2xpc3RlZCBPQXBwcyBhcmUgYWxsb3dlZC4KRGVueWxpc3QgYWx3YXlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBhbGxvd2xpc3QuCgojIEFyZ3VtZW50cwoqIGBvYXBwYCAtIFRoZSBPQXBwIGNvbnRyYWN0IGFkZHJlc3MKKiBgYWxsb3dlZGAgLSBgdHJ1ZWAgdG8gYWRkIHRvIGFsbG93bGlzdCwgYGZhbHNlYCB0byByZW1vdmUAAAANc2V0X2FsbG93bGlzdAAAAAAAAAIAAAAAAAAABG9hcHAAAAATAAAAAAAAAAdhbGxvd2VkAAAAAAEAAAAAAAAAAAAAAQlTZXRzIGRlbnlsaXN0IHN0YXR1cyBmb3IgYW4gT0FwcCBhZGRyZXNzLgoKRGVueWxpc3RlZCBPQXBwcyBhcmUgYmxvY2tlZCBmcm9tIHVzaW5nIHRoaXMgd29ya2VyLCBldmVuIGlmIHRoZXkncmUgb24KdGhlIGFsbG93bGlzdCAoZGVueWxpc3QgdGFrZXMgcHJlY2VkZW5jZSkuCgojIEFyZ3VtZW50cwoqIGBvYXBwYCAtIFRoZSBPQXBwIGNvbnRyYWN0IGFkZHJlc3MKKiBgZGVuaWVkYCAtIGB0cnVlYCB0byBhZGQgdG8gZGVueWxpc3QsIGBmYWxzZWAgdG8gcmVtb3ZlAAAAAAAADHNldF9kZW55bGlzdAAAAAIAAAAAAAAABG9hcHAAAAATAAAAAAAAAAZkZW5pZWQAAAAAAAEAAAAAAAAAAAAAATtTZXRzIHRoZSBkZWZhdWx0IGZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cy4KClRoZSBtdWx0aXBsaWVyIGlzIGFwcGxpZWQgdG8gYmFzZSBmZWVzIGR1cmluZyBmZWUgY2FsY3VsYXRpb24uIFVzZWQgd2hlbgpubyBkZXN0aW5hdGlvbi1zcGVjaWZpYyBtdWx0aXBsaWVyIGlzIGNvbmZpZ3VyZWQuCgojIEFyZ3VtZW50cwoqIGBhZG1pbmAgLSBBZG1pbiBhZGRyZXNzIChtdXN0IHByb3ZpZGUgYXV0aG9yaXphdGlvbikKKiBgbXVsdGlwbGllcl9icHNgIC0gTXVsdGlwbGllciBpbiBiYXNpcyBwb2ludHMgKDEwMDAwID0gMXgsIDEyMDAwID0gMS4yeCkAAAAAGnNldF9kZWZhdWx0X211bHRpcGxpZXJfYnBzAAAAAAACAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAADm11bHRpcGxpZXJfYnBzAAAAAAAEAAAAAAAAAAAAAADxU2V0cyB0aGUgZGVwb3NpdCBhZGRyZXNzIHdoZXJlIHdvcmtlciBmZWVzIGFyZSBjb2xsZWN0ZWQuCgpXaGVuIGpvYnMgYXJlIGFzc2lnbmVkLCBmZWVzIGFyZSBkaXJlY3RlZCB0byB0aGlzIGFkZHJlc3MuCgojIEFyZ3VtZW50cwoqIGBhZG1pbmAgLSBBZG1pbiBhZGRyZXNzIChtdXN0IHByb3ZpZGUgYXV0aG9yaXphdGlvbikKKiBgZGVwb3NpdF9hZGRyZXNzYCAtIEFkZHJlc3MgdG8gcmVjZWl2ZSBjb2xsZWN0ZWQgZmVlcwAAAAAAABNzZXRfZGVwb3NpdF9hZGRyZXNzAAAAAAIAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAPZGVwb3NpdF9hZGRyZXNzAAAAABMAAAAAAAAAAAAAAOtTZXRzIHN1cHBvcnRlZCBleGVjdXRvciBvcHRpb24gdHlwZXMgZm9yIGEgZGVzdGluYXRpb24gZW5kcG9pbnQuCgojIEFyZ3VtZW50cwoqIGBhZG1pbmAgLSBBZG1pbiBhZGRyZXNzIChtdXN0IHByb3ZpZGUgYXV0aG9yaXphdGlvbikKKiBgZWlkYCAtIERlc3RpbmF0aW9uIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKQoqIGBvcHRpb25fdHlwZXNgIC0gRW5jb2RlZCBzdXBwb3J0ZWQgb3B0aW9uIHR5cGVzAAAAABpzZXRfc3VwcG9ydGVkX29wdGlvbl90eXBlcwAAAAAAAwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAANlaWQAAAAABAAAAAAAAAAMb3B0aW9uX3R5cGVzAAAADgAAAAAAAAAAAAABElNldHMgdGhlIHdvcmtlciBmZWUgbGlicmFyeSBjb250cmFjdCBhZGRyZXNzLgoKVGhlIGZlZSBsaWJyYXJ5IGNhbGN1bGF0ZXMgZmVlcyBiYXNlZCBvbiBleGVjdXRvciBvcHRpb25zIGFuZCBwcmljZSBmZWVkIGRhdGEuCgojIEFyZ3VtZW50cwoqIGBhZG1pbmAgLSBBZG1pbiBhZGRyZXNzIChtdXN0IHByb3ZpZGUgYXV0aG9yaXphdGlvbikKKiBgd29ya2VyX2ZlZV9saWJgIC0gRmVlIGxpYnJhcnkgY29udHJhY3QgYWRkcmVzcyBpbXBsZW1lbnRpbmcgYElFeGVjdXRvckZlZUxpYmAAAAAAABJzZXRfd29ya2VyX2ZlZV9saWIAAAAAAAIAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAOd29ya2VyX2ZlZV9saWIAAAAAABMAAAAAAAAAAAAAARJTZXRzIHRoZSBwcmljZSBmZWVkIGNvbnRyYWN0IGFkZHJlc3MuCgpUaGUgcHJpY2UgZmVlZCBwcm92aWRlcyBnYXMgcHJpY2VzIGFuZCBleGNoYW5nZSByYXRlcyBmb3IgY3Jvc3MtY2hhaW4KZmVlIGNhbGN1bGF0aW9ucy4KCiMgQXJndW1lbnRzCiogYGFkbWluYCAtIEFkbWluIGFkZHJlc3MgKG11c3QgcHJvdmlkZSBhdXRob3JpemF0aW9uKQoqIGBwcmljZV9mZWVkYCAtIFByaWNlIGZlZWQgY29udHJhY3QgYWRkcmVzcyBpbXBsZW1lbnRpbmcgYElMYXllclplcm9QcmljZUZlZWRgAAAAAAAOc2V0X3ByaWNlX2ZlZWQAAAAAAAIAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAKcHJpY2VfZmVlZAAAAAAAEwAAAAAAAAAAAAAAVVJldHVybnMgd2hldGhlciBhbiBhZGRyZXNzIGlzIGFuIGFkbWluLgoKIyBBcmd1bWVudHMKKiBgYWRtaW5gIC0gVGhlIGFkZHJlc3MgdG8gY2hlY2sAAAAAAAAIaXNfYWRtaW4AAAABAAAAAAAAAAVhZG1pbgAAAAAAABMAAAABAAAAAQAAAAAAAAAcUmV0dXJucyBhbGwgYWRtaW4gYWRkcmVzc2VzLgAAAAZhZG1pbnMAAAAAAAAAAAABAAAD6gAAABMAAAAAAAAAJVJldHVybnMgd2hldGhlciB0aGUgd29ya2VyIGlzIHBhdXNlZC4AAAAAAAAGcGF1c2VkAAAAAAAAAAAAAQAAAAEAAAAAAAAAb1JldHVybnMgd2hldGhlciBhIG1lc3NhZ2UgbGlicmFyeSBpcyBzdXBwb3J0ZWQuCgojIEFyZ3VtZW50cwoqIGBtZXNzYWdlX2xpYmAgLSBNZXNzYWdlIGxpYnJhcnkgY29udHJhY3QgYWRkcmVzcwAAAAAYaXNfc3VwcG9ydGVkX21lc3NhZ2VfbGliAAAAAQAAAAAAAAALbWVzc2FnZV9saWIAAAAAEwAAAAEAAAABAAAAAAAAAHNSZXR1cm5zIGFsbCBzdXBwb3J0ZWQgbWVzc2FnZSBsaWJyYXJ5IGFkZHJlc3Nlcy4KCiMgUmV0dXJucwpWZWN0b3Igb2Ygc3VwcG9ydGVkIG1lc3NhZ2UgbGlicmFyeSBjb250cmFjdCBhZGRyZXNzZXMuAAAAAAxtZXNzYWdlX2xpYnMAAAAAAAAAAQAAA+oAAAATAAAAAAAAAFpSZXR1cm5zIHdoZXRoZXIgYW4gT0FwcCBpcyBvbiB0aGUgYWxsb3dsaXN0LgoKIyBBcmd1bWVudHMKKiBgb2FwcGAgLSBPQXBwIGNvbnRyYWN0IGFkZHJlc3MAAAAAAA9pc19vbl9hbGxvd2xpc3QAAAAAAQAAAAAAAAAEb2FwcAAAABMAAAABAAAAAQAAAAAAAABZUmV0dXJucyB3aGV0aGVyIGFuIE9BcHAgaXMgb24gdGhlIGRlbnlsaXN0LgoKIyBBcmd1bWVudHMKKiBgb2FwcGAgLSBPQXBwIGNvbnRyYWN0IGFkZHJlc3MAAAAAAAAOaXNfb25fZGVueWxpc3QAAAAAAAEAAAAAAAAABG9hcHAAAAATAAAAAQAAAAEAAAAAAAAA+1JldHVybnMgd2hldGhlciBhbiBPQXBwIGhhcyBhY2Nlc3MgY29udHJvbCBsaXN0IChBQ0wpIHBlcm1pc3Npb24uCgpBQ0wgZXZhbHVhdGlvbiBvcmRlcjoKMS4gSWYgb24gZGVueWxpc3Qg4oaSIGRlbmllZAoyLiBJZiBhbGxvd2xpc3QgaXMgZW1wdHkgT1Igb24gYWxsb3dsaXN0IOKGkiBhbGxvd2VkCjMuIE90aGVyd2lzZSDihpIgZGVuaWVkCgojIEFyZ3VtZW50cwoqIGBzZW5kZXJgIC0gT0FwcCBjb250cmFjdCBhZGRyZXNzIHRvIGNoZWNrAAAAAAdoYXNfYWNsAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAABAAAAAAAAADFSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWRkcmVzc2VzIG9uIHRoZSBhbGxvd2xpc3QuAAAAAAAADmFsbG93bGlzdF9zaXplAAAAAAAAAAAAAQAAAAQAAAAAAAAAM1JldHVybnMgdGhlIGRlZmF1bHQgZmVlIG11bHRpcGxpZXIgaW4gYmFzaXMgcG9pbnRzLgAAAAAWZGVmYXVsdF9tdWx0aXBsaWVyX2JwcwAAAAAAAAAAAAEAAAAEAAAAAAAAADVSZXR1cm5zIHRoZSBkZXBvc2l0IGFkZHJlc3Mgd2hlcmUgZmVlcyBhcmUgY29sbGVjdGVkLgAAAAAAAA9kZXBvc2l0X2FkZHJlc3MAAAAAAAAAAAEAAAATAAAAAAAAAChSZXR1cm5zIHRoZSBwcmljZSBmZWVkIGNvbnRyYWN0IGFkZHJlc3MuAAAACnByaWNlX2ZlZWQAAAAAAAAAAAABAAAAEwAAAAAAAAB8UmV0dXJucyBzdXBwb3J0ZWQgb3B0aW9uIHR5cGVzIGZvciBhIGRlc3RpbmF0aW9uIGVuZHBvaW50LgoKIyBBcmd1bWVudHMKKiBgZWlkYCAtIERlc3RpbmF0aW9uIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKQAAABpnZXRfc3VwcG9ydGVkX29wdGlvbl90eXBlcwAAAAAAAQAAAAAAAAADZWlkAAAAAAQAAAABAAAD6AAAAA4AAAAAAAAAMFJldHVybnMgdGhlIHdvcmtlciBmZWUgbGlicmFyeSBjb250cmFjdCBhZGRyZXNzLgAAAA53b3JrZXJfZmVlX2xpYgAAAAAAAAAAAAEAAAATAAAAAAAAAERBc3NpZ25zIGEgam9iIHRvIHRoZSBleGVjdXRvciBhbmQgcmV0dXJucyBmZWUgcmVjaXBpZW50IGluZm9ybWF0aW9uLgAAAAphc3NpZ25fam9iAAAAAAAFAAAAAAAAAAhzZW5kX2xpYgAAABMAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAA1jYWxsZGF0YV9zaXplAAAAAAAABAAAAAAAAAAHb3B0aW9ucwAAAAAOAAAAAQAAB9AAAAAMRmVlUmVjaXBpZW50AAAAAAAAADdDYWxjdWxhdGVzIHRoZSBleGVjdXRpb24gZmVlIGZvciBhIGNyb3NzLWNoYWluIG1lc3NhZ2UuAAAAAAdnZXRfZmVlAAAAAAUAAAAAAAAACHNlbmRfbGliAAAAEwAAAAAAAAAGc2VuZGVyAAAAAAATAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAAAAAAADWNhbGxkYXRhX3NpemUAAAAAAAAEAAAAAAAAAAdvcHRpb25zAAAAAA4AAAABAAAACwAAAAAAAABAU2V0cyBkZXN0aW5hdGlvbi1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgbXVsdGlwbGUgZW5kcG9pbnRzLgAAAA5zZXRfZHN0X2NvbmZpZwAAAAAAAgAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZwYXJhbXMAAAAAA+oAAAfQAAAAEVNldERzdENvbmZpZ1BhcmFtAAAAAAAAAAAAAAAAAAA+UmV0dXJucyB0aGUgZGVzdGluYXRpb24gY29uZmlndXJhdGlvbiBmb3IgYSBzcGVjaWZpYyBlbmRwb2ludC4AAAAAAApkc3RfY29uZmlnAAAAAAABAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAABAAAD6AAAB9AAAAAJRHN0Q29uZmlnAAAAAAAAAAAAAJFOYXRpdmUgdG9rZW4gZHJvcHMuCgpUcmFuc2ZlcnMgbmF0aXZlIHRva2VucyB0byBlYWNoIHJlY2VpdmVyIHNwZWNpZmllZCBpbiB0aGUgcGFyYW1ldGVycyBhbmQKdHJhY2tzIHRoZSBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzIG9mIGVhY2ggdHJhbnNmZXIuAAAAAAAAC25hdGl2ZV9kcm9wAAAAAAUAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAAAAAAABG9hcHAAAAATAAAAAAAAABJuYXRpdmVfZHJvcF9wYXJhbXMAAAAAA+oAAAfQAAAAEE5hdGl2ZURyb3BQYXJhbXMAAAAAAAAAAAAAACpSZXR1cm5zIHRoZSBlbmRwb2ludCBhZGRyZXNzIGZyb20gc3RvcmFnZS4AAAAAAAhlbmRwb2ludAAAAAAAAAABAAAAEwAAAAAAAAJJSW5pdGlhbGl6ZXMgdGhlIGV4ZWN1dG9yIGNvbnRyYWN0LgoKU2V0cyB1cCBvd25lcnNoaXAsIHdvcmtlciBjb25maWd1cmF0aW9uLCBhbmQgZW5kcG9pbnQgYWRkcmVzcy4KCiMgQXJndW1lbnRzCiogYGVuZHBvaW50YCAtIExheWVyWmVybyBFbmRwb2ludCBWMiBjb250cmFjdCBhZGRyZXNzCiogYG93bmVyYCAtIENvbnRyYWN0IG93bmVyIGFkZHJlc3MKKiBgYWRtaW5zYCAtIEluaXRpYWwgYWRtaW4gYWRkcmVzc2VzIChtdXN0IG5vdCBiZSBlbXB0eSkKKiBgbWVzc2FnZV9saWJzYCAtIFN1cHBvcnRlZCBtZXNzYWdlIGxpYnJhcnkgYWRkcmVzc2VzIChlLmcuLCBVTE4zMDIpCiogYHByaWNlX2ZlZWRgIC0gUHJpY2UgZmVlZCBjb250cmFjdCBhZGRyZXNzIGZvciBmZWUgY2FsY3VsYXRpb25zCiogYGRlZmF1bHRfbXVsdGlwbGllcl9icHNgIC0gRGVmYXVsdCBmZWUgbXVsdGlwbGllciBpbiBiYXNpcyBwb2ludHMgKDEwMDAwID0gMXgpCiogYHdvcmtlcl9mZWVfbGliYCAtIFdvcmtlciBmZWUgbGlicmFyeSBjb250cmFjdCBhZGRyZXNzCiogYGRlcG9zaXRfYWRkcmVzc2AgLSBBZGRyZXNzIHRvIHJlY2VpdmUgZmVlIHBheW1lbnRzAAAAAAAADV9fY29uc3RydWN0b3IAAAAAAAAIAAAAAAAAAAhlbmRwb2ludAAAABMAAAAAAAAABW93bmVyAAAAAAAAEwAAAAAAAAAGYWRtaW5zAAAAAAPqAAAAEwAAAAAAAAAMbWVzc2FnZV9saWJzAAAD6gAAABMAAAAAAAAACnByaWNlX2ZlZWQAAAAAABMAAAAAAAAAFmRlZmF1bHRfbXVsdGlwbGllcl9icHMAAAAAAAQAAAAAAAAADndvcmtlcl9mZWVfbGliAAAAAAATAAAAAAAAAA9kZXBvc2l0X2FkZHJlc3MAAAAAEwAAAAAAAAAAAAAAsldpdGhkcmF3cyBhIHRva2VuIGZyb20gdGhlIGNvbnRyYWN0IHRvIGEgc3BlY2lmaWVkIGFkZHJlc3MuCgojIEFyZ3VtZW50cwoqIGB0b2tlbmAgLSBUaGUgdG9rZW4gY29udHJhY3QgYWRkcmVzcwoqIGB0b2AgLSBUaGUgcmVjaXBpZW50IGFkZHJlc3MKKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgdG8gd2l0aGRyYXcAAAAAAA53aXRoZHJhd190b2tlbgAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAAAAAAOhTZXRzIGFkbWluIHN0YXR1cyBmb3IgYW4gYWRkcmVzcy4gUmVxdWlyZXMgb3duZXIgYXV0aG9yaXphdGlvbi4KClRoaXMgaXMgdGhlIG11bHRpc2lnL3F1b3J1bSBwYXRoIGZvciBhZG1pbiBtYW5hZ2VtZW50LgoKIyBBcmd1bWVudHMKKiBgYWRtaW5gIC0gVGhlIGFkZHJlc3MgdG8gc2V0IGFkbWluIHN0YXR1cyBmb3IKKiBgYWN0aXZlYCAtIFdoZXRoZXIgdGhlIGFkZHJlc3Mgc2hvdWxkIGJlIGFuIGFkbWluAAAACXNldF9hZG1pbgAAAAAAAAIAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAGYWN0aXZlAAAAAAABAAAAAAAAAAAAAAAAAAAAB3VwZ3JhZGUAAAAAAQAAAAAAAAANbmV3X3dhc21faGFzaAAAAAAAA+4AAAAgAAAAAAAAAAAAAAAAAAAAB21pZ3JhdGUAAAAAAQAAAAAAAAAObWlncmF0aW9uX2RhdGEAAAAAB9AAAAANTWlncmF0aW9uRGF0YQAAAAAAAAAAAAAAAAAAAAAAAAphdXRob3JpemVyAAAAAAAAAAAAAQAAABMAAAACAAAAAAAAAAAAAAAPRXhlY3V0b3JTdG9yYWdlAAAAAAIAAAABAAAAAAAAAAlEc3RDb25maWcAAAAAAAABAAAABAAAAAAAAAAAAAAACEVuZHBvaW50AAAAAAAAAY9TZXRzIFRUTCBjb25maWdzIGZvciBpbnN0YW5jZSBhbmQgcGVyc2lzdGVudCBzdG9yYWdlLgoKLSBgTm9uZWAgdmFsdWVzIHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBjb25maWcgKGRpc2FibGVzIGF1dG8tZXh0ZW5zaW9uIGZvciB0aGF0IHR5cGUpCi0gVmFsaWRhdGVzIHRoYXQgYHRocmVzaG9sZCA8PSBleHRlbmRfdG8gPD0gTUFYX1RUTGAKCiMgQXJndW1lbnRzCi0gYGluc3RhbmNlYCAtIFRUTCBjb25maWcgZm9yIGluc3RhbmNlIHN0b3JhZ2UKLSBgcGVyc2lzdGVudGAgLSBUVEwgY29uZmlnIGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UKCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0Zyb3plbmAgaWYgY29uZmlncyBhcmUgZnJvemVuCi0gYEludmFsaWRUdGxDb25maWdgIGlmIHZhbGlkYXRpb24gZmFpbHMAAAAAD3NldF90dGxfY29uZmlncwAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAABIUmV0dXJucyB0aGUgY3VycmVudCBUVEwgY29uZmlncyBhcyAoaW5zdGFuY2VfY29uZmlnLCBwZXJzaXN0ZW50X2NvbmZpZykuAAAAC3R0bF9jb25maWdzAAAAAAAAAAABAAAD7QAAAAIAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAA4VBlcm1hbmVudGx5IGZyZWV6ZXMgVFRMIGNvbmZpZ3MsIHByZXZlbnRpbmcgYW55IGZ1dHVyZSBtb2RpZmljYXRpb25zLgoKVGhpcyBpcyBpcnJldmVyc2libGUgYW5kIHByb3ZpZGVzIGltbXV0YWJpbGl0eSBndWFyYW50ZWVzIHRvIHVzZXJzLgpFbWl0cyBgVHRsQ29uZmlnc0Zyb3plbmAgZXZlbnQuCgojIFBhbmljcwotIGBUdGxDb25maWdBbHJlYWR5RnJvemVuYCBpZiBhbHJlYWR5IGZyb3plbgAAAAAAABJmcmVlemVfdHRsX2NvbmZpZ3MAAAAAAAAAAAAAAAAAAAAAACdSZXR1cm5zIHdoZXRoZXIgVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAFWlzX3R0bF9jb25maWdzX2Zyb3plbgAAAAAAAAAAAAABAAAAAQAAAAAAAAClRXh0ZW5kcyB0aGUgaW5zdGFuY2UgVFRMLgoKIyBBcmd1bWVudHMKCiogYHRocmVzaG9sZGAgLSBUaGUgdGhyZXNob2xkIHRvIGV4dGVuZCB0aGUgVFRMIChpZiBjdXJyZW50IFRUTCBpcyBiZWxvdyB0aGlzLCBleHRlbmQpLgoqIGBleHRlbmRfdG9gIC0gVGhlIFRUTCB0byBleHRlbmQgdG8uAAAAAAAAE2V4dGVuZF9pbnN0YW5jZV90dGwAAAAAAgAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAAJZXh0ZW5kX3RvAAAAAAAABAAAAAAAAAAAAAAAPlJldHVybnMgdGhlIGN1cnJlbnQgb3duZXIgYWRkcmVzcywgb3IgTm9uZSBpZiBubyBvd25lciBpcyBzZXQuAAAAAAAFb3duZXIAAAAAAAAAAAAAAQAAA+gAAAATAAAAAAAAAFlSZXR1cm5zIHRoZSBwZW5kaW5nIG93bmVyIGFkZHJlc3MgZm9yIDItc3RlcCB0cmFuc2Zlciwgb3IgTm9uZSBpZiBubyB0cmFuc2ZlciBpcyBwZW5kaW5nLgAAAAAAAA1wZW5kaW5nX293bmVyAAAAAAAAAAAAAAEAAAPoAAAAEwAAAAAAAAErVHJhbnNmZXJzIG93bmVyc2hpcCBpbW1lZGlhdGVseSB0byBhIG5ldyBhZGRyZXNzLgoKVXNlIHdpdGggY2F1dGlvbiAtIGlmIHlvdSB0cmFuc2ZlciB0byBhIHdyb25nIGFkZHJlc3MsIG93bmVyc2hpcCBpcyBsb3N0IGZvcmV2ZXIuCkNvbnNpZGVyIHVzaW5nIGBwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcmAgaW5zdGVhZC4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYFRyYW5zZmVySW5Qcm9ncmVzc2AgaWYgYSAyLXN0ZXAgdHJhbnNmZXIgaXMgaW4gcHJvZ3Jlc3MAAAAAEnRyYW5zZmVyX293bmVyc2hpcAAAAAAAAQAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAAAAAACXFByb3Bvc2VzIGFuIG93bmVyc2hpcCB0cmFuc2ZlciB0byBhIG5ldyBhZGRyZXNzLgoKVGhlIG5ldyBvd25lciBtdXN0IGNhbGwgYGFjY2VwdF9vd25lcnNoaXAoKWAgd2l0aGluIGB0dGxgIGxlZGdlcnMKdG8gY29tcGxldGUgdGhlIHRyYW5zZmVyLiBUaGUgcGVuZGluZyB0cmFuc2ZlciB3aWxsIGF1dG9tYXRpY2FsbHkgZXhwaXJlIGFmdGVyLgoKIyBBcmd1bWVudHMKLSBgbmV3X293bmVyYCAtIFRoZSBwcm9wb3NlZCBuZXcgb3duZXIKLSBgdHRsYCAtIE51bWJlciBvZiBsZWRnZXJzIHRoZSBuZXcgb3duZXIgaGFzIHRvIGFjY2VwdC4KVXNlIGAwYCB0byBjYW5jZWwgYSBwZW5kaW5nIHRyYW5zZmVyIChuZXdfb3duZXIgbXVzdCBtYXRjaCBwZW5kaW5nKS4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYE5vUGVuZGluZ1RyYW5zZmVyYCB3aGVuIGNhbmNlbGxpbmcgYW5kIG5vIHBlbmRpbmcgdHJhbnNmZXIgZXhpc3RzCi0gYEludmFsaWRUdGxgIGlmIHR0bCBleGNlZWRzIG1heCBUVEwKLSBgSW52YWxpZFBlbmRpbmdPd25lcmAgd2hlbiBjYW5jZWxsaW5nIHdpdGggd3JvbmcgbmV3X293bmVyIGFkZHJlc3MAAAAacHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXIAAAAAAAIAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAA3R0bAAAAAAEAAAAAAAAAAAAAAC5QWNjZXB0cyBhIHBlbmRpbmcgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2Zlci4KCk11c3QgYmUgY2FsbGVkIGJ5IHRoZSBwZW5kaW5nIG93bmVyIGJlZm9yZSB0aGUgVFRMIGV4cGlyZXMuCgojIFBhbmljcwotIGBOb1BlbmRpbmdUcmFuc2ZlcmAgaWYgdGhlcmUgaXMgbm8gcGVuZGluZyB0cmFuc2ZlciAob3IgaXQgZXhwaXJlZCkAAAAAAAAQYWNjZXB0X293bmVyc2hpcAAAAAAAAAAAAAAAAAAAAKRQZXJtYW5lbnRseSByZW5vdW5jZXMgb3duZXJzaGlwLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgVHJhbnNmZXJJblByb2dyZXNzYCBpZiBhIDItc3RlcCB0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcyAoY2FuY2VsIGl0IGZpcnN0KQAAABJyZW5vdW5jZV9vd25lcnNoaXAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADUVuZHBvaW50RXJyb3IAAAAAAAAZAAAAAAAAABFBbHJlYWR5UmVnaXN0ZXJlZAAAAAAAAAEAAAAAAAAADUNvbXBvc2VFeGlzdHMAAAAAAAACAAAAAAAAAA9Db21wb3NlTm90Rm91bmQAAAAAAwAAAAAAAAAcRGVmYXVsdFJlY2VpdmVMaWJVbmF2YWlsYWJsZQAAAAQAAAAAAAAAGURl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dHJhX2RhdGEAAAAAAA4AAAAAAAAAAAAAAAZyZWFzb24AAAAAAA4AAAAAAAAAAgAAAAEAAAAtUGFyYW1ldGVycyBmb3Igc2VuZGluZyBhIGNyb3NzLWNoYWluIG1lc3NhZ2UuAAAAAAAAAAAAAA9NZXNzYWdpbmdQYXJhbXMAAAAABQAAACtEZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAdkc3RfZWlkAAAAAAQAAAAcVGhlIG1lc3NhZ2UgcGF5bG9hZCB0byBzZW5kLgAAAAdtZXNzYWdlAAAAAA4AAAAhRW5jb2RlZCBleGVjdXRvciBhbmQgRFZOIG9wdGlvbnMuAAAAAAAAB29wdGlvbnMAAAAADgAAADlXaGV0aGVyIHRvIHBheSBmZWVzIGluIFpSTyB0b2tlbiBpbnN0ZWFkIG9mIG5hdGl2ZSB0b2tlbi4AAAAAAAAKcGF5X2luX3pybwAAAAAAAQAAADVSZWNlaXZlciBhZGRyZXNzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiAoMzIgYnl0ZXMpLgAAAAAAAAhyZWNlaXZlcgAAA+4AAAAgAAAAAQAAAE1Tb3VyY2UgbWVzc2FnZSBpbmZvcm1hdGlvbiBpZGVudGlmeWluZyB3aGVyZSBhIGNyb3NzLWNoYWluIG1lc3NhZ2UgY2FtZSBmcm9tLgAAAAAAAAAAAAAGT3JpZ2luAAAAAAADAAAAF05vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAAAAVub25jZQAAAAAAAAYAAAAuU2VuZGVyIGFkZHJlc3Mgb24gdGhlIHNvdXJjZSBjaGFpbiAoMzIgYnl0ZXMpLgAAAAAABnNlbmRlcgAAAAAD7gAAACAAAAAmU291cmNlIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAAAdzcmNfZWlkAAAAAAQAAAABAAAAKEZlZSBzdHJ1Y3R1cmUgZm9yIGNyb3NzLWNoYWluIG1lc3NhZ2luZy4AAAAAAAAADE1lc3NhZ2luZ0ZlZQAAAAIAAAAfRmVlIHBhaWQgaW4gbmF0aXZlIHRva2VuIChYTE0pLgAAAAAKbmF0aXZlX2ZlZQAAAAAACwAAAChGZWUgcGFpZCBpbiBaUk8gdG9rZW4gKExheWVyWmVybyB0b2tlbikuAAAAB3pyb19mZWUAAAAACwAAAAEAAABCUmVjZWlwdCByZXR1cm5lZCBhZnRlciBzdWNjZXNzZnVsbHkgc2VuZGluZyBhIGNyb3NzLWNoYWluIG1lc3NhZ2UuAAAAAAAAAAAAEE1lc3NhZ2luZ1JlY2VpcHQAAAADAAAAKVRoZSBmZWVzIGNoYXJnZWQgZm9yIHNlbmRpbmcgdGhlIG1lc3NhZ2UuAAAAAAAAA2ZlZQAAAAfQAAAADE1lc3NhZ2luZ0ZlZQAAACtHbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG1lc3NhZ2UuAAAAAARndWlkAAAD7gAAACAAAAAkVGhlIG91dGJvdW5kIG5vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAABW5vbmNlAAAAAAAABgAAAAIAAAA4VHlwZSBvZiBtZXNzYWdlIGxpYnJhcnkgaW5kaWNhdGluZyBzdXBwb3J0ZWQgb3BlcmF0aW9ucy4AAAAAAAAADk1lc3NhZ2VMaWJUeXBlAAAAAAADAAAAAAAAAB9TdXBwb3J0cyBvbmx5IHNlbmRpbmcgbWVzc2FnZXMuAAAAAARTZW5kAAAAAAAAACFTdXBwb3J0cyBvbmx5IHJlY2VpdmluZyBtZXNzYWdlcy4AAAAAAAAHUmVjZWl2ZQAAAAAAAAAALVN1cHBvcnRzIGJvdGggc2VuZGluZyBhbmQgcmVjZWl2aW5nIG1lc3NhZ2VzLgAAAAAAAA5TZW5kQW5kUmVjZWl2ZQAAAAAAAQAAALdWZXJzaW9uIGluZm9ybWF0aW9uIGZvciBhIG1lc3NhZ2UgbGlicmFyeS4KCk5vdGU6IGBtaW5vcmAgYW5kIGBlbmRwb2ludF92ZXJzaW9uYCB1c2UgYHUzMmAgaW5zdGVhZCBvZiBgdThgIGJlY2F1c2UgU3RlbGxhciBkb2VzIG5vdApzdXBwb3J0IGB1OGAgdHlwZXMgaW4gY29udHJhY3QgaW50ZXJmYWNlIGZ1bmN0aW9ucy4AAAAAAAAAABFNZXNzYWdlTGliVmVyc2lvbgAAAAAAAAMAAAAzRW5kcG9pbnQgdmVyc2lvbiAoc2hvdWxkIG5vdCBleGNlZWQgdTg6Ok1BWCA9IDI1NSkuAAAAABBlbmRwb2ludF92ZXJzaW9uAAAABAAAABVNYWpvciB2ZXJzaW9uIG51bWJlci4AAAAAAAAFbWFqb3IAAAAAAAAGAAAAN01pbm9yIHZlcnNpb24gbnVtYmVyIChzaG91bGQgbm90IGV4Y2VlZCB1ODo6TUFYID0gMjU1KS4AAAAABW1pbm9yAAAAAAAABAAAAAEAAAA2VGltZW91dCBjb25maWd1cmF0aW9uIGZvciByZWNlaXZlIGxpYnJhcnkgdHJhbnNpdGlvbnMuAAAAAAAAAAAAB1RpbWVvdXQAAAAAAgAAAChVbml4IHRpbWVzdGFtcCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMuAAAABmV4cGlyeQAAAAAABgAAAClUaGUgbmV3IGxpYnJhcnkgYWRkcmVzcyB0byB0cmFuc2l0aW9uIHRvLgAAAAAAAANsaWIAAAAAEwAAAAEAAAA1UGFyYW1ldGVycyBmb3Igc2V0dGluZyBtZXNzYWdlIGxpYnJhcnkgY29uZmlndXJhdGlvbi4AAAAAAAAAAAAADlNldENvbmZpZ1BhcmFtAAAAAAADAAAAH1hEUi1lbmNvZGVkIGNvbmZpZ3VyYXRpb24gZGF0YS4AAAAABmNvbmZpZwAAAAAADgAAADBUaGUgdHlwZSBvZiBjb25maWd1cmF0aW9uIChlLmcuLCBleGVjdXRvciwgVUxOKS4AAAALY29uZmlnX3R5cGUAAAAABAAAACdUaGUgZW5kcG9pbnQgSUQgdGhpcyBjb25maWcgYXBwbGllcyB0by4AAAAAA2VpZAAAAAAEAAAAAQAAADFSZXNvbHZlZCBsaWJyYXJ5IGluZm9ybWF0aW9uIHdpdGggZGVmYXVsdCBzdGF0dXMuAAAAAAAAAAAAAA9SZXNvbHZlZExpYnJhcnkAAAAAAgAAAERXaGV0aGVyIHRoaXMgaXMgdGhlIGRlZmF1bHQgbGlicmFyeSAodHJ1ZSkgb3IgT0FwcC1zcGVjaWZpYyAoZmFsc2UpLgAAAAppc19kZWZhdWx0AAAAAAABAAAAHVRoZSByZXNvbHZlZCBsaWJyYXJ5IGFkZHJlc3MuAAAAAAAAA2xpYgAAAAATAAAAAQAAAEhPdXRib3VuZCBwYWNrZXQgY29udGFpbmluZyBhbGwgaW5mb3JtYXRpb24gZm9yIGNyb3NzLWNoYWluIHRyYW5zbWlzc2lvbi4AAAAAAAAADk91dGJvdW5kUGFja2V0AAAAAAAHAAAAGERlc3RpbmF0aW9uIGVuZHBvaW50IElELgAAAAdkc3RfZWlkAAAAAAQAAAAsR2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgbWVzc2FnZS4AAAAEZ3VpZAAAA+4AAAAgAAAAFFRoZSBtZXNzYWdlIHBheWxvYWQuAAAAB21lc3NhZ2UAAAAADgAAACBPdXRib3VuZCBub25jZSBmb3IgdGhpcyBwYXRod2F5LgAAAAVub25jZQAAAAAAAAYAAAAxUmVjZWl2ZXIgYWRkcmVzcyBvbiBkZXN0aW5hdGlvbiBjaGFpbiAoMzIgYnl0ZXMpLgAAAAAAAAhyZWNlaXZlcgAAA+4AAAAgAAAAH1NlbmRlciBhZGRyZXNzIG9uIHNvdXJjZSBjaGFpbi4AAAAABnNlbmRlcgAAAAAAEwAAABNTb3VyY2UgZW5kcG9pbnQgSUQuAAAAAAdzcmNfZWlkAAAAAAQAAAABAAAAK0EgZmVlIHJlY2lwaWVudCB3aXRoIHRoZSBhbW91bnQgdG8gYmUgcGFpZC4AAAAAAAAAAAxGZWVSZWNpcGllbnQAAAACAAAAFUFtb3VudCBvZiBmZWUgdG8gcGF5LgAAAAAAAAZhbW91bnQAAAAAAAsAAAAfVGhlIGFkZHJlc3MgdG8gc2VuZCB0aGUgZmVlIHRvLgAAAAACdG8AAAAAABMAAAABAAAAPFJlc3VsdCBvZiBzZW5kIG9wZXJhdGlvbiBjb250YWluaW5nIGZlZXMgYW5kIGVuY29kZWQgcGFja2V0LgAAAAAAAAANRmVlc0FuZFBhY2tldAAAAAAAAAMAAAAqVGhlIGVuY29kZWQgcGFja2V0IHJlYWR5IGZvciB0cmFuc21pc3Npb24uAAAAAAAOZW5jb2RlZF9wYWNrZXQAAAAAAA4AAAA/TGlzdCBvZiBuYXRpdmUgdG9rZW4gZmVlIHJlY2lwaWVudHMgKGV4ZWN1dG9yLCBEVk5zLCB0cmVhc3VyeSkuAAAAABVuYXRpdmVfZmVlX3JlY2lwaWVudHMAAAAAAAPqAAAH0AAAAAxGZWVSZWNpcGllbnQAAAAsTGlzdCBvZiBaUk8gdG9rZW4gZmVlIHJlY2lwaWVudHMgKHRyZWFzdXJ5KS4AAAASenJvX2ZlZV9yZWNpcGllbnRzAAAAAAPqAAAH0AAAAAxGZWVSZWNpcGllbnQAAAAEAAAAHVBhY2tldENvZGVjVjFFcnJvcjogMTEwMC0xMTA5AAAAAAAAAAAAABJQYWNrZXRDb2RlY1YxRXJyb3IAAAAAAAIAAAAAAAAAE0ludmFsaWRQYWNrZXRIZWFkZXIAAAAETAAAAAAAAAAUSW52YWxpZFBhY2tldFZlcnNpb24AAARNAAAABAAAAB1Xb3JrZXJPcHRpb25zRXJyb3I6IDExMTAtMTExOQAAAAAAAAAAAAASV29ya2VyT3B0aW9uc0Vycm9yAAAAAAAJAAAAAAAAABJJbnZhbGlkQnl0ZXNMZW5ndGgAAAAABFYAAAAAAAAAGUludmFsaWRMZWdhY3lPcHRpb25zVHlwZTEAAAAAAARXAAAAAAAAABlJbnZhbGlkTGVnYWN5T3B0aW9uc1R5cGUyAAAAAAAEWAAAAAAAAAARSW52YWxpZE9wdGlvblR5cGUAAAAAAARZAAAAAAAAAA5JbnZhbGlkT3B0aW9ucwAAAAAEWgAAAAAAAAAPSW52YWxpZFdvcmtlcklkAAAABFsAAAAAAAAAHUxlZ2FjeU9wdGlvbnNUeXBlMUdhc092ZXJmbG93AAAAAAAEXAAAAAAAAAAgTGVnYWN5T3B0aW9uc1R5cGUyQW1vdW50T3ZlcmZsb3cAAARdAAAAAAAAAB1MZWdhY3lPcHRpb25zVHlwZTJHYXNPdmVyZmxvdwAAAAAABF4AAAAEAAAAHEJ1ZmZlclJlYWRlckVycm9yOiAxMDAwLTEwMDkAAAAAAAAAEUJ1ZmZlclJlYWRlckVycm9yAAAAAAAAAgAAAAAAAAANSW52YWxpZExlbmd0aAAAAAAAA+gAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA+kAAAAEAAAAHEJ1ZmZlcldyaXRlckVycm9yOiAxMDEwLTEwMTkAAAAAAAAAEUJ1ZmZlcldyaXRlckVycm9yAAAAAAAAAQAAAAAAAAAVSW52YWxpZEFkZHJlc3NQYXlsb2FkAAAAAAAD8gAAAAQAAAAfVHRsQ29uZmlndXJhYmxlRXJyb3I6IDEwMjAtMTAyOQAAAAAAAAAAFFR0bENvbmZpZ3VyYWJsZUVycm9yAAAAAwAAAAAAAAAQSW52YWxpZFR0bENvbmZpZwAAA/wAAAAAAAAAD1R0bENvbmZpZ0Zyb3plbgAAAAP9AAAAAAAAABZUdGxDb25maWdBbHJlYWR5RnJvemVuAAAAAAP+AAAABAAAABdPd25hYmxlRXJyb3I6IDEwMzAtMTAzOQAAAAAAAAAADE93bmFibGVFcnJvcgAAAAYAAAAAAAAAE0ludmFsaWRQZW5kaW5nT3duZXIAAAAEBgAAAAAAAAAKSW52YWxpZFR0bAAAAAAEBwAAAAAAAAARTm9QZW5kaW5nVHJhbnNmZXIAAAAAAAQIAAAAAAAAAA9Pd25lckFscmVhZHlTZXQAAAAECQAAAAAAAAALT3duZXJOb3RTZXQAAAAECgAAAAAAAAASVHJhbnNmZXJJblByb2dyZXNzAAAAAAQLAAAABAAAABhCeXRlc0V4dEVycm9yOiAxMDQwLTEwNDkAAAAAAAAADUJ5dGVzRXh0RXJyb3IAAAAAAAABAAAAAAAAAA5MZW5ndGhNaXNtYXRjaAAAAAAEEAAAAAQAAAAbVXBncmFkZWFibGVFcnJvcjogMTA1MC0xMDU5AAAAAAAAAAAQVXBncmFkZWFibGVFcnJvcgAAAAEAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGgAAAAQAAAAYTXVsdGlzaWdFcnJvcjogMTA2MC0xMDY5AAAAAAAAAA1NdWx0aXNpZ0Vycm9yAAAAAAAACAAAAAAAAAASQWxyZWFkeUluaXRpYWxpemVkAAAAAAQkAAAAAAAAAA1JbnZhbGlkU2lnbmVyAAAAAAAEJQAAAAAAAAAOU2lnbmF0dXJlRXJyb3IAAAAABCYAAAAAAAAAE1NpZ25lckFscmVhZHlFeGlzdHMAAAAEJwAAAAAAAAAOU2lnbmVyTm90Rm91bmQAAAAABCgAAAAAAAAAHVRvdGFsU2lnbmVyc0xlc3NUaGFuVGhyZXNob2xkAAAAAAAEKQAAAAAAAAAPVW5zb3J0ZWRTaWduZXJzAAAABCoAAAAAAAAADVplcm9UaHJlc2hvbGQAAAAAAAQrAAAABQAAADBFdmVudCBlbWl0dGVkIHdoZW4gYSBzaWduZXIgaXMgYWRkZWQgb3IgcmVtb3ZlZC4AAAAAAAAACVNpZ25lclNldAAAAAAA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ZXMgbWVzc2FnZSBwYXJhbWV0ZXJzLCBjb21tb24gY29uZmlndXJhdGlvbiwKYW5kIGRlc3RpbmF0aW9uLXNwZWNpZmljIHNldHRpbmdzLgAAAAAAAAAAAAAMRHZuRmVlUGFyYW1zAAAACgAAACdOdW1iZXIgb2YgYmxvY2sgY29uZmlybWF0aW9ucyByZXF1aXJlZC4AAAAADWNvbmZpcm1hdGlvbnMAAAAAAAAGAAAATERlZmF1bHQgZmVlIG11bHRpcGxpZXIgaW4gYmFzaXMgcG9pbnRzICh1c2VkIGlmIG5vIGRzdC1zcGVjaWZpYyBtdWx0aXBsaWVyKS4AAAAWZGVmYXVsdF9tdWx0aXBsaWVyX2JwcwAAAAAABAAAACtEZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAdkc3RfZWlkAAAAAAQAAAAjTWluaW11bSBmZWUgbWFyZ2luIGluIFVTRCAoc2NhbGVkKS4AAAAAEGZsb29yX21hcmdpbl91c2QAAAAKAAABED09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkRlc3RpbmF0aW9uLVNwZWNpZmljIENvbmZpZ3VyYXRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KR2FzIGVzdGltYXRlIGZvciB2ZXJpZmljYXRpb24gb24gZGVzdGluYXRpb24gY2hhaW4uAAAAA2dhcwAAAAAKAAAARkRlc3RpbmF0aW9uLXNwZWNpZmljIGZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cyAoMCA9IHVzZSBkZWZhdWx0KS4AAAAAAA5tdWx0aXBsaWVyX2JwcwAAAAAABAAAAAtEVk4gb3B0aW9ucwAAAAAHb3B0aW9ucwAAAAAOAAABED09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNvbW1vbiBDb25maWd1cmF0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClByaWNlIGZlZWQgY29udHJhY3QgYWRkcmVzcyBmb3IgZ2FzIHByaWNlIGFuZCBleGNoYW5nZSByYXRlIGRhdGEuAAAACnByaWNlX2ZlZWQAAAAAABMAAAAnTnVtYmVyIG9mIHJlcXVpcmVkIHNpZ25hdHVyZXMgKHF1b3J1bSkuAAAAAAZxdW9ydW0AAAAAAAQAAADlPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KTWVzc2FnZSBQYXJhbWV0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBPQXBwIHNlbmRlciBhZGRyZXNzLgAAAAAAAAZzZW5kZXIAAAAAABMAAAABAAAA41BhcmFtZXRlcnMgZm9yIGV4ZWN1dG9yIGZlZSBjYWxjdWxhdGlvbi4KCkNvbnRhaW5zIGFsbCBpbnB1dHMgbmVlZGVkIGJ5IHRoZSBmZWUgbGlicmFyeSB0byBjYWxjdWxhdGUgZXhlY3V0aW9uIGZlZXMKZm9yIGNyb3NzLWNoYWluIG1lc3NhZ2VzLiBJbmNsdWRlcyBtZXNzYWdlIHBhcmFtZXRlcnMsIGNvbW1vbiBjb25maWd1cmF0aW9uLAphbmQgZGVzdGluYXRpb24tc3BlY2lmaWMgc2V0dGluZ3MuAAAAAAAAAAAJRmVlUGFyYW1zAAAAAAAACwAAACZTaXplIG9mIHRoZSBtZXNzYWdlIGNhbGxkYXRhIGluIGJ5dGVzLgAAAAAADWNhbGxkYXRhX3NpemUAAAAAAAAEAAAATERlZmF1bHQgZmVlIG11bHRpcGxpZXIgaW4gYmFzaXMgcG9pbnRzICh1c2VkIGlmIG5vIGRzdC1zcGVjaWZpYyBtdWx0aXBsaWVyKS4AAAAWZGVmYXVsdF9tdWx0aXBsaWVyX2JwcwAAAAAABAAAACtEZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAdkc3RfZWlkAAAAAAQAAAAjTWluaW11bSBmZWUgbWFyZ2luIGluIFVTRCAoc2NhbGVkKS4AAAAAEGZsb29yX21hcmdpbl91c2QAAAAKAAAANkJhc2UgZ2FzIGZvciBlYWNoIGx6Q29tcG9zZSBjYWxsIG9uIGRlc3RpbmF0aW9uIGNoYWluLgAAAAAAE2x6X2NvbXBvc2VfYmFzZV9nYXMAAAAABgAAARM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpEZXN0aW5hdGlvbi1TcGVjaWZpYyBDb25maWd1cmF0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJhc2UgZ2FzIGZvciBselJlY2VpdmUgZXhlY3V0aW9uIG9uIGRlc3RpbmF0aW9uIGNoYWluLgAAAAATbHpfcmVjZWl2ZV9iYXNlX2dhcwAAAAAGAAAARkRlc3RpbmF0aW9uLXNwZWNpZmljIGZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cyAoMCA9IHVzZSBkZWZhdWx0KS4AAAAAAA5tdWx0aXBsaWVyX2JwcwAAAAAABAAAACxNYXhpbXVtIG5hdGl2ZSB0b2tlbiB2YWx1ZSB0aGF0IGNhbiBiZSBzZW50LgAAAApuYXRpdmVfY2FwAAAAAAAKAAAARkVuY29kZWQgZXhlY3V0b3Igb3B0aW9ucyAobHpSZWNlaXZlIGdhcywgbHpDb21wb3NlLCBuYXRpdmVEcm9wLCBldGMuKS4AAAAAAAdvcHRpb25zAAAAAA4AAAEQPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ29tbW9uIENvbmZpZ3VyYXRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUHJpY2UgZmVlZCBjb250cmFjdCBhZGRyZXNzIGZvciBnYXMgcHJpY2UgYW5kIGV4Y2hhbmdlIHJhdGUgZGF0YS4AAAAKcHJpY2VfZmVlZAAAAAAAEwAAAOU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpNZXNzYWdlIFBhcmFtZXRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIE9BcHAgc2VuZGVyIGFkZHJlc3MuAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAACER2FzIHByaWNlIGluZm9ybWF0aW9uIGZvciBhIGRlc3RpbmF0aW9uIGVuZHBvaW50LgoKQ29udGFpbnMgdGhlIGV4Y2hhbmdlIHJhdGUgYW5kIGdhcyBjb3N0cyBuZWVkZWQgZm9yIGNyb3NzLWNoYWluIGZlZSBjYWxjdWxhdGlvbnMuAAAAAAAAAAVQcmljZQAAAAAAAAMAAAA3R2FzIGNvc3QgcGVyIGJ5dGUgb2YgY2FsbGRhdGEgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLgAAAAAMZ2FzX3Blcl9ieXRlAAAABAAAAEJHYXMgcHJpY2UgaW4gdGhlIHNtYWxsZXN0IHVuaXQgKHdlaSBmb3IgRVZNLCBzdHJvb3BzIGZvciBTdGVsbGFyKS4AAAAAABFnYXNfcHJpY2VfaW5fdW5pdAAAAAAAAAYAAACpUHJpY2UgcmF0aW8gPSAocmVtb3RlIG5hdGl2ZSB0b2tlbiBwcmljZSAvIGxvY2FsIG5hdGl2ZSB0b2tlbiBwcmljZSkgKiBQUklDRV9SQVRJT19ERU5PTUlOQVRPUi4KVXNlZCB0byBjb252ZXJ0IGRlc3RpbmF0aW9uIGNoYWluIGdhcyBjb3N0cyB0byBzb3VyY2UgY2hhaW4gbmF0aXZlIHRva2VuLgAAAAAAAAtwcmljZV9yYXRpbwAAAAAKAAAAAQAAAIBGZWUgZXN0aW1hdGlvbiByZXN1bHQgd2l0aCBkZXRhaWxlZCBicmVha2Rvd24uCgpDb250YWlucyB0aGUgY2FsY3VsYXRlZCBmZWUgYW5kIGFsbCBpbnRlcm1lZGlhdGUgdmFsdWVzIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLgAAAAAAAAALRmVlRXN0aW1hdGUAAAAABAAAADBTb3VyY2UgY2hhaW4gbmF0aXZlIHRva2VuIHByaWNlIGluIFVTRCAoc2NhbGVkKS4AAAAQbmF0aXZlX3ByaWNlX3VzZAAAAAoAAAAlUHJpY2UgcmF0aW8gdXNlZCBmb3IgdGhlIGNhbGN1bGF0aW9uLgAAAAAAAAtwcmljZV9yYXRpbwAAAAAKAAAAMkRlbm9taW5hdG9yIGZvciB0aGUgcHJpY2UgcmF0aW8gKHR5cGljYWxseSAxMF4yMCkuAAAAAAAXcHJpY2VfcmF0aW9fZGVub21pbmF0b3IAAAAACgAAADFUb3RhbCBnYXMgZmVlIGluIHNvdXJjZSBjaGFpbiBuYXRpdmUgdG9rZW4gdW5pdHMuAAAAAAAADXRvdGFsX2dhc19mZWUAAAAAAAALAAAAAgAAAAAAAAAAAAAADVdvcmtlclN0b3JhZ2UAAAAAAAALAAAAAAAAAAAAAAAGUGF1c2VkAAAAAAAAAAAAAAAAAA5EZXBvc2l0QWRkcmVzcwAAAAAAAAAAAAAAAAAJUHJpY2VGZWVkAAAAAAAAAAAAAAAAAAAMV29ya2VyRmVlTGliAAAAAAAAAAAAAAAURGVmYXVsdE11bHRpcGxpZXJCcHMAAAABAAAAAAAAABRTdXBwb3J0ZWRPcHRpb25UeXBlcwAAAAEAAAAEAAAAAAAAAAAAAAALTWVzc2FnZUxpYnMAAAAAAQAAAAAAAAAJQWxsb3dsaXN0AAAAAAAAAQAAABMAAAABAAAAAAAAAAhEZW55bGlzdAAAAAEAAAATAAAAAAAAAAAAAAANQWxsb3dsaXN0U2l6ZQAAAAAAAAAAAAAAAAAABkFkbWlucwAAAIsBDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAZiaW52ZXIAAAAAAAUwLjAuMQAAAAAAAAAAAAAFcnN2ZXIAAAAAAAAGMS45MC4wAAAAAAAAAAAACHJzc2RrdmVyAAAALzIzLjQuMCM2NzNkNmM0ZjIzNjhkMjgyZDI1ZGEyOWJkYTU1YzIxYjhiZTY5Y2E2AAAeEWNvbnRyYWN0ZW52bWV0YXYwAAAAAAAAABcAAAAA";
13
+ /**
14
+ * Pre-computed WASM hash (SHA-256)
15
+ * Use this when the WASM is already uploaded on-chain
16
+ */
17
+ export declare const WASM_HASH = "8292af76dd7a2983d4ba9b224c35ec25fdf9e43803307e90ff50529a63afdf04";
18
+ /**
19
+ * Get the WASM bytecode as a Buffer
20
+ * Use this to upload the WASM to the network
21
+ */
22
+ export declare function getWasmBuffer(): Buffer;
8
23
  export declare const ExecutorError: {
9
24
  1: {
10
25
  message: string;
@@ -94,9 +109,6 @@ export type ExecutorStorage = {
94
109
  } | {
95
110
  tag: "Endpoint";
96
111
  values: void;
97
- } | {
98
- tag: "WhitelistedFn";
99
- values: readonly [string, string];
100
112
  };
101
113
  export declare const EndpointError: {
102
114
  1: {
@@ -171,6 +183,9 @@ export declare const EndpointError: {
171
183
  24: {
172
184
  message: string;
173
185
  };
186
+ 25: {
187
+ message: string;
188
+ };
174
189
  };
175
190
  /**
176
191
  * Parameters for sending a cross-chain message.
@@ -383,43 +398,52 @@ export interface FeesAndPacket {
383
398
  */
384
399
  zro_fee_recipients: Array<FeeRecipient>;
385
400
  }
401
+ /**
402
+ * PacketCodecV1Error: 1100-1109
403
+ */
386
404
  export declare const PacketCodecV1Error: {
387
- 1001: {
405
+ 1100: {
388
406
  message: string;
389
407
  };
390
- 1002: {
408
+ 1101: {
391
409
  message: string;
392
410
  };
393
411
  };
412
+ /**
413
+ * WorkerOptionsError: 1110-1119
414
+ */
394
415
  export declare const WorkerOptionsError: {
395
- 1101: {
416
+ 1110: {
396
417
  message: string;
397
418
  };
398
- 1102: {
419
+ 1111: {
399
420
  message: string;
400
421
  };
401
- 1103: {
422
+ 1112: {
402
423
  message: string;
403
424
  };
404
- 1104: {
425
+ 1113: {
405
426
  message: string;
406
427
  };
407
- 1105: {
428
+ 1114: {
408
429
  message: string;
409
430
  };
410
- 1106: {
431
+ 1115: {
411
432
  message: string;
412
433
  };
413
- 1107: {
434
+ 1116: {
414
435
  message: string;
415
436
  };
416
- 1108: {
437
+ 1117: {
417
438
  message: string;
418
439
  };
419
- 1109: {
440
+ 1118: {
420
441
  message: string;
421
442
  };
422
443
  };
444
+ /**
445
+ * BufferReaderError: 1000-1009
446
+ */
423
447
  export declare const BufferReaderError: {
424
448
  1000: {
425
449
  message: string;
@@ -428,43 +452,109 @@ export declare const BufferReaderError: {
428
452
  message: string;
429
453
  };
430
454
  };
455
+ /**
456
+ * BufferWriterError: 1010-1019
457
+ */
431
458
  export declare const BufferWriterError: {
432
- 1100: {
459
+ 1010: {
433
460
  message: string;
434
461
  };
435
462
  };
463
+ /**
464
+ * TtlConfigurableError: 1020-1029
465
+ */
436
466
  export declare const TtlConfigurableError: {
437
- 1200: {
467
+ 1020: {
438
468
  message: string;
439
469
  };
440
- 1201: {
470
+ 1021: {
441
471
  message: string;
442
472
  };
443
- 1202: {
473
+ 1022: {
444
474
  message: string;
445
475
  };
446
476
  };
477
+ /**
478
+ * OwnableError: 1030-1039
479
+ */
447
480
  export declare const OwnableError: {
448
- 1300: {
481
+ 1030: {
482
+ message: string;
483
+ };
484
+ 1031: {
485
+ message: string;
486
+ };
487
+ 1032: {
449
488
  message: string;
450
489
  };
451
- 1301: {
490
+ 1033: {
491
+ message: string;
492
+ };
493
+ 1034: {
494
+ message: string;
495
+ };
496
+ 1035: {
452
497
  message: string;
453
498
  };
454
499
  };
500
+ /**
501
+ * BytesExtError: 1040-1049
502
+ */
455
503
  export declare const BytesExtError: {
456
- 1400: {
504
+ 1040: {
457
505
  message: string;
458
506
  };
459
507
  };
508
+ /**
509
+ * UpgradeableError: 1050-1059
510
+ */
460
511
  export declare const UpgradeableError: {
461
- 1500: {
512
+ 1050: {
462
513
  message: string;
463
514
  };
464
515
  };
516
+ /**
517
+ * MultisigError: 1060-1069
518
+ */
519
+ export declare const MultisigError: {
520
+ 1060: {
521
+ message: string;
522
+ };
523
+ 1061: {
524
+ message: string;
525
+ };
526
+ 1062: {
527
+ message: string;
528
+ };
529
+ 1063: {
530
+ message: string;
531
+ };
532
+ 1064: {
533
+ message: string;
534
+ };
535
+ 1065: {
536
+ message: string;
537
+ };
538
+ 1066: {
539
+ message: string;
540
+ };
541
+ 1067: {
542
+ message: string;
543
+ };
544
+ };
545
+ export type MultisigStorage = {
546
+ tag: "Signers";
547
+ values: void;
548
+ } | {
549
+ tag: "Threshold";
550
+ values: void;
551
+ };
465
552
  export type OwnableStorage = {
466
553
  tag: "Owner";
467
554
  values: void;
555
+ } | {
556
+ tag: "PendingOwner";
557
+ values: void;
468
558
  };
469
559
  /**
470
560
  * TTL configuration: threshold (when to extend) and extend_to (target TTL).
@@ -493,6 +583,9 @@ export type UpgradeableStorage = {
493
583
  tag: "Migrating";
494
584
  values: void;
495
585
  };
586
+ /**
587
+ * WorkerError: 1200-1299
588
+ */
496
589
  export declare const WorkerError: {
497
590
  1200: {
498
591
  message: string;
@@ -1422,52 +1515,6 @@ export interface Client {
1422
1515
  */
1423
1516
  simulate?: boolean;
1424
1517
  }) => Promise<AssembledTransaction<string>>;
1425
- /**
1426
- * Construct and simulate a set_whitelisted_fn 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.
1427
- * Sets whether a (contract, function) pair is whitelisted.
1428
- * When `allowed` is false, the entry is removed from storage to save space.
1429
- *
1430
- * Only the contract owner can call this function.
1431
- */
1432
- set_whitelisted_fn: ({ contract, fn_name, allowed }: {
1433
- contract: string;
1434
- fn_name: string;
1435
- allowed: boolean;
1436
- }, txnOptions?: {
1437
- /**
1438
- * The fee to pay for the transaction. Default: BASE_FEE
1439
- */
1440
- fee?: number;
1441
- /**
1442
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1443
- */
1444
- timeoutInSeconds?: number;
1445
- /**
1446
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1447
- */
1448
- simulate?: boolean;
1449
- }) => Promise<AssembledTransaction<null>>;
1450
- /**
1451
- * Construct and simulate a is_whitelisted_fn 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.
1452
- * Returns whether a (contract, function) pair is whitelisted.
1453
- */
1454
- is_whitelisted_fn: ({ contract, fn_name }: {
1455
- contract: string;
1456
- fn_name: string;
1457
- }, txnOptions?: {
1458
- /**
1459
- * The fee to pay for the transaction. Default: BASE_FEE
1460
- */
1461
- fee?: number;
1462
- /**
1463
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1464
- */
1465
- timeoutInSeconds?: number;
1466
- /**
1467
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1468
- */
1469
- simulate?: boolean;
1470
- }) => Promise<AssembledTransaction<boolean>>;
1471
1518
  /**
1472
1519
  * Construct and simulate a withdraw_token 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.
1473
1520
  * Withdraws a token from the contract to a specified address.
@@ -1562,18 +1609,9 @@ export interface Client {
1562
1609
  simulate?: boolean;
1563
1610
  }) => Promise<AssembledTransaction<null>>;
1564
1611
  /**
1565
- * 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.
1566
- * Extends the instance TTL.
1567
- *
1568
- * # Arguments
1569
- *
1570
- * * `threshold` - The threshold to extend the TTL.
1571
- * * `extend_to` - The TTL to extend to.
1612
+ * 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.
1572
1613
  */
1573
- extend_instance_ttl: ({ threshold, extend_to }: {
1574
- threshold: u32;
1575
- extend_to: u32;
1576
- }, txnOptions?: {
1614
+ authorizer: (txnOptions?: {
1577
1615
  /**
1578
1616
  * The fee to pay for the transaction. Default: BASE_FEE
1579
1617
  */
@@ -1586,7 +1624,7 @@ export interface Client {
1586
1624
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1587
1625
  */
1588
1626
  simulate?: boolean;
1589
- }) => Promise<AssembledTransaction<null>>;
1627
+ }) => Promise<AssembledTransaction<string>>;
1590
1628
  /**
1591
1629
  * 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.
1592
1630
  * Sets TTL configs for instance and persistent storage.
@@ -1679,6 +1717,32 @@ export interface Client {
1679
1717
  */
1680
1718
  simulate?: boolean;
1681
1719
  }) => Promise<AssembledTransaction<boolean>>;
1720
+ /**
1721
+ * 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.
1722
+ * Extends the instance TTL.
1723
+ *
1724
+ * # Arguments
1725
+ *
1726
+ * * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
1727
+ * * `extend_to` - The TTL to extend to.
1728
+ */
1729
+ extend_instance_ttl: ({ threshold, extend_to }: {
1730
+ threshold: u32;
1731
+ extend_to: u32;
1732
+ }, txnOptions?: {
1733
+ /**
1734
+ * The fee to pay for the transaction. Default: BASE_FEE
1735
+ */
1736
+ fee?: number;
1737
+ /**
1738
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1739
+ */
1740
+ timeoutInSeconds?: number;
1741
+ /**
1742
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1743
+ */
1744
+ simulate?: boolean;
1745
+ }) => Promise<AssembledTransaction<null>>;
1682
1746
  /**
1683
1747
  * 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.
1684
1748
  * Returns the current owner address, or None if no owner is set.
@@ -1697,9 +1761,34 @@ export interface Client {
1697
1761
  */
1698
1762
  simulate?: boolean;
1699
1763
  }) => Promise<AssembledTransaction<Option<string>>>;
1764
+ /**
1765
+ * Construct and simulate a pending_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.
1766
+ * Returns the pending owner address for 2-step transfer, or None if no transfer is pending.
1767
+ */
1768
+ pending_owner: (txnOptions?: {
1769
+ /**
1770
+ * The fee to pay for the transaction. Default: BASE_FEE
1771
+ */
1772
+ fee?: number;
1773
+ /**
1774
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1775
+ */
1776
+ timeoutInSeconds?: number;
1777
+ /**
1778
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1779
+ */
1780
+ simulate?: boolean;
1781
+ }) => Promise<AssembledTransaction<Option<string>>>;
1700
1782
  /**
1701
1783
  * Construct and simulate a transfer_ownership 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.
1702
- * Transfers ownership to a new address. Requires current owner authorization.
1784
+ * Transfers ownership immediately to a new address.
1785
+ *
1786
+ * Use with caution - if you transfer to a wrong address, ownership is lost forever.
1787
+ * Consider using `propose_ownership_transfer` instead.
1788
+ *
1789
+ * # Panics
1790
+ * - `OwnerNotSet` if no owner is currently set
1791
+ * - `TransferInProgress` if a 2-step transfer is in progress
1703
1792
  */
1704
1793
  transfer_ownership: ({ new_owner }: {
1705
1794
  new_owner: string;
@@ -1717,9 +1806,71 @@ export interface Client {
1717
1806
  */
1718
1807
  simulate?: boolean;
1719
1808
  }) => Promise<AssembledTransaction<null>>;
1809
+ /**
1810
+ * Construct and simulate a propose_ownership_transfer 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.
1811
+ * Proposes an ownership transfer to a new address.
1812
+ *
1813
+ * The new owner must call `accept_ownership()` within `ttl` ledgers
1814
+ * to complete the transfer. The pending transfer will automatically expire after.
1815
+ *
1816
+ * # Arguments
1817
+ * - `new_owner` - The proposed new owner
1818
+ * - `ttl` - Number of ledgers the new owner has to accept.
1819
+ * Use `0` to cancel a pending transfer (new_owner must match pending).
1820
+ *
1821
+ * # Panics
1822
+ * - `OwnerNotSet` if no owner is currently set
1823
+ * - `NoPendingTransfer` when cancelling and no pending transfer exists
1824
+ * - `InvalidTtl` if ttl exceeds max TTL
1825
+ * - `InvalidPendingOwner` when cancelling with wrong new_owner address
1826
+ */
1827
+ propose_ownership_transfer: ({ new_owner, ttl }: {
1828
+ new_owner: string;
1829
+ ttl: u32;
1830
+ }, txnOptions?: {
1831
+ /**
1832
+ * The fee to pay for the transaction. Default: BASE_FEE
1833
+ */
1834
+ fee?: number;
1835
+ /**
1836
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1837
+ */
1838
+ timeoutInSeconds?: number;
1839
+ /**
1840
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1841
+ */
1842
+ simulate?: boolean;
1843
+ }) => Promise<AssembledTransaction<null>>;
1844
+ /**
1845
+ * Construct and simulate a accept_ownership 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.
1846
+ * Accepts a pending 2-step ownership transfer.
1847
+ *
1848
+ * Must be called by the pending owner before the TTL expires.
1849
+ *
1850
+ * # Panics
1851
+ * - `NoPendingTransfer` if there is no pending transfer (or it expired)
1852
+ */
1853
+ accept_ownership: (txnOptions?: {
1854
+ /**
1855
+ * The fee to pay for the transaction. Default: BASE_FEE
1856
+ */
1857
+ fee?: number;
1858
+ /**
1859
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1860
+ */
1861
+ timeoutInSeconds?: number;
1862
+ /**
1863
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1864
+ */
1865
+ simulate?: boolean;
1866
+ }) => Promise<AssembledTransaction<null>>;
1720
1867
  /**
1721
1868
  * Construct and simulate a renounce_ownership 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.
1722
- * Permanently renounces ownership. Requires current owner authorization.
1869
+ * Permanently renounces ownership.
1870
+ *
1871
+ * # Panics
1872
+ * - `OwnerNotSet` if no owner is currently set
1873
+ * - `TransferInProgress` if a 2-step transfer is in progress (cancel it first)
1723
1874
  */
1724
1875
  renounce_ownership: (txnOptions?: {
1725
1876
  /**
@@ -1740,14 +1891,13 @@ export declare class Client extends ContractClient {
1740
1891
  readonly options: ContractClientOptions;
1741
1892
  static deploy<T = Client>(
1742
1893
  /** Constructor/Initialization Args for the contract's `__constructor` method */
1743
- { endpoint, owner, admins, message_libs, price_feed, default_multiplier_bps, whitelist, worker_fee_lib, deposit_address }: {
1894
+ { endpoint, owner, admins, message_libs, price_feed, default_multiplier_bps, worker_fee_lib, deposit_address }: {
1744
1895
  endpoint: string;
1745
1896
  owner: string;
1746
1897
  admins: Array<string>;
1747
1898
  message_libs: Array<string>;
1748
1899
  price_feed: string;
1749
1900
  default_multiplier_bps: u32;
1750
- whitelist: Array<readonly [string, string]>;
1751
1901
  worker_fee_lib: string;
1752
1902
  deposit_address: string;
1753
1903
  },
@@ -1791,19 +1941,21 @@ export declare class Client extends ContractClient {
1791
1941
  dst_config: (json: string) => AssembledTransaction<Option<DstConfig>>;
1792
1942
  native_drop: (json: string) => AssembledTransaction<null>;
1793
1943
  endpoint: (json: string) => AssembledTransaction<string>;
1794
- set_whitelisted_fn: (json: string) => AssembledTransaction<null>;
1795
- is_whitelisted_fn: (json: string) => AssembledTransaction<boolean>;
1796
1944
  withdraw_token: (json: string) => AssembledTransaction<null>;
1797
1945
  set_admin: (json: string) => AssembledTransaction<null>;
1798
1946
  upgrade: (json: string) => AssembledTransaction<null>;
1799
1947
  migrate: (json: string) => AssembledTransaction<null>;
1800
- extend_instance_ttl: (json: string) => AssembledTransaction<null>;
1948
+ authorizer: (json: string) => AssembledTransaction<string>;
1801
1949
  set_ttl_configs: (json: string) => AssembledTransaction<null>;
1802
1950
  ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
1803
1951
  freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
1804
1952
  is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
1953
+ extend_instance_ttl: (json: string) => AssembledTransaction<null>;
1805
1954
  owner: (json: string) => AssembledTransaction<Option<string>>;
1955
+ pending_owner: (json: string) => AssembledTransaction<Option<string>>;
1806
1956
  transfer_ownership: (json: string) => AssembledTransaction<null>;
1957
+ propose_ownership_transfer: (json: string) => AssembledTransaction<null>;
1958
+ accept_ownership: (json: string) => AssembledTransaction<null>;
1807
1959
  renounce_ownership: (json: string) => AssembledTransaction<null>;
1808
1960
  };
1809
1961
  }