@layerzerolabs/protocol-stellar-v2 0.2.19 → 0.2.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +795 -791
- package/.turbo/turbo-lint.log +325 -155
- package/.turbo/turbo-test.log +1398 -1277
- package/Cargo.lock +122 -111
- package/Cargo.toml +32 -16
- package/contracts/common-macros/Cargo.toml +7 -7
- package/contracts/common-macros/src/auth.rs +18 -37
- package/contracts/common-macros/src/contract_ttl.rs +18 -7
- package/contracts/common-macros/src/lib.rs +31 -14
- package/contracts/common-macros/src/lz_contract.rs +38 -7
- package/contracts/common-macros/src/storage.rs +251 -292
- package/contracts/common-macros/src/tests/contract_ttl.rs +1 -1
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +6 -12
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +12 -17
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +2 -1
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +2 -7
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +20 -14
- package/contracts/common-macros/src/tests/upgradeable.rs +26 -4
- package/contracts/common-macros/src/ttl_configurable.rs +2 -10
- package/contracts/common-macros/src/ttl_extendable.rs +2 -10
- package/contracts/common-macros/src/upgradeable.rs +61 -26
- package/contracts/common-macros/src/utils.rs +0 -9
- package/contracts/endpoint-v2/src/lib.rs +3 -2
- package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +2 -2
- package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +3 -3
- package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +17 -5
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +2 -2
- package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +2 -2
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +6 -6
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +67 -37
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +5 -5
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +44 -54
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +7 -7
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +8 -8
- package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +4 -4
- package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +2 -2
- package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +2 -2
- package/contracts/layerzero-views/Cargo.toml +0 -1
- package/contracts/layerzero-views/src/layerzero_view.rs +1 -13
- package/contracts/macro-integration-tests/Cargo.toml +5 -15
- package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +48 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/oapp_core.rs +170 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +154 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +338 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +435 -0
- package/contracts/macro-integration-tests/tests/runtime.rs +1 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +71 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +38 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +96 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +64 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +46 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +8 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +1 -1
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +1 -1
- package/contracts/macro-integration-tests/tests/ui_oapp.rs +11 -0
- package/contracts/message-libs/message-lib-common/Cargo.toml +0 -1
- package/contracts/message-libs/message-lib-common/src/errors.rs +1 -1
- package/contracts/message-libs/treasury/Cargo.toml +0 -2
- package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +2 -2
- package/contracts/message-libs/uln-302/src/events.rs +4 -0
- package/contracts/message-libs/uln-302/src/send_uln.rs +22 -6
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/verify.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_executor_config.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/send.rs +21 -67
- package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +2 -2
- package/contracts/oapps/counter/Cargo.toml +5 -6
- package/contracts/oapps/counter/integration_tests/setup_uln.rs +1 -1
- package/contracts/oapps/counter/integration_tests/utils.rs +19 -12
- package/contracts/oapps/oapp/src/errors.rs +1 -1
- package/contracts/oapps/oapp/src/interfaces/mod.rs +3 -0
- package/contracts/oapps/oapp/src/interfaces/oapp_msg_inspector.rs +47 -0
- package/contracts/oapps/oapp/src/lib.rs +1 -0
- package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +4 -4
- package/contracts/oapps/oapp/src/oapp_core.rs +5 -5
- package/contracts/oapps/oapp/src/oapp_options_type3.rs +12 -4
- package/contracts/oapps/oapp/src/oapp_receiver.rs +14 -9
- package/contracts/oapps/oapp/src/tests/mod.rs +4 -4
- package/contracts/oapps/oapp/src/tests/oapp_core.rs +223 -0
- package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +240 -0
- package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +381 -0
- package/contracts/oapps/oapp/src/tests/oapp_sender.rs +569 -0
- package/contracts/oapps/oapp-macros/Cargo.toml +8 -4
- package/contracts/oapps/oapp-macros/src/generators.rs +9 -34
- package/contracts/oapps/oapp-macros/src/lib.rs +3 -0
- package/contracts/oapps/oapp-macros/src/tests/mod.rs +2 -0
- package/contracts/oapps/oapp-macros/src/tests/oapp.rs +88 -0
- package/contracts/oapps/oapp-macros/src/tests/parse_custom_impls.rs +86 -0
- package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +103 -0
- package/contracts/oapps/oft/integration-tests/utils.rs +28 -8
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +153 -75
- package/contracts/oapps/oft/src/extensions/pausable.rs +61 -12
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +198 -134
- package/contracts/oapps/oft/src/oft.rs +45 -50
- package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
- package/contracts/oapps/oft/src/oft_types/mint_burn.rs +4 -26
- package/contracts/oapps/oft-core/Cargo.toml +1 -4
- package/contracts/oapps/oft-core/integration-tests/setup.rs +3 -3
- package/contracts/oapps/oft-core/integration-tests/utils.rs +21 -3
- package/contracts/oapps/oft-core/src/errors.rs +3 -2
- package/contracts/oapps/oft-core/src/events.rs +6 -0
- package/contracts/oapps/oft-core/src/lib.rs +1 -1
- package/contracts/oapps/oft-core/src/oft_core.rs +341 -246
- package/contracts/oapps/oft-core/src/storage.rs +7 -3
- package/contracts/oapps/oft-core/src/tests/mod.rs +1 -0
- package/contracts/oapps/oft-core/src/tests/test_decimals.rs +37 -2
- package/contracts/oapps/oft-core/src/tests/test_lz_receive.rs +2 -2
- package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +323 -0
- package/contracts/oapps/oft-core/src/tests/test_send.rs +2 -2
- package/contracts/oapps/oft-core/src/tests/test_utils.rs +61 -16
- package/contracts/upgrader/src/lib.rs +30 -57
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
- package/contracts/upgrader/src/tests/test_upgrader.rs +44 -35
- package/contracts/utils/Cargo.toml +0 -1
- package/contracts/utils/src/buffer_reader.rs +1 -0
- package/contracts/utils/src/errors.rs +4 -2
- package/contracts/utils/src/multisig.rs +17 -8
- package/contracts/utils/src/ownable.rs +6 -6
- package/contracts/utils/src/testing_utils.rs +124 -54
- package/contracts/utils/src/tests/multisig.rs +12 -12
- package/contracts/utils/src/tests/ownable.rs +6 -6
- package/contracts/utils/src/tests/testing_utils.rs +50 -167
- package/contracts/utils/src/tests/ttl_configurable.rs +5 -5
- package/contracts/utils/src/tests/upgradeable.rs +372 -175
- package/contracts/utils/src/ttl_configurable.rs +13 -7
- package/contracts/utils/src/upgradeable.rs +48 -23
- package/contracts/workers/dvn/Cargo.toml +6 -6
- package/contracts/workers/dvn/src/auth.rs +12 -42
- package/contracts/workers/dvn/src/dvn.rs +15 -40
- package/contracts/workers/dvn/src/errors.rs +0 -1
- package/contracts/workers/dvn/src/interfaces/dvn.rs +35 -0
- package/contracts/workers/dvn/src/lib.rs +4 -3
- package/contracts/workers/dvn/src/tests/auth.rs +1 -1
- package/contracts/workers/dvn/src/tests/dvn.rs +19 -15
- package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -4
- package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +1 -3
- package/contracts/workers/dvn/src/tests/setup.rs +5 -9
- package/contracts/workers/dvn-fee-lib/Cargo.toml +2 -2
- package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +38 -22
- package/contracts/workers/dvn-fee-lib/src/lib.rs +12 -2
- package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +17 -16
- package/contracts/workers/executor/Cargo.toml +4 -0
- package/contracts/workers/executor/src/executor.rs +15 -36
- package/contracts/workers/executor/src/lib.rs +2 -2
- package/contracts/workers/executor/src/tests/auth.rs +394 -0
- package/contracts/workers/executor/src/tests/executor.rs +410 -0
- package/contracts/workers/executor/src/tests/mod.rs +3 -0
- package/contracts/workers/executor/src/tests/setup.rs +250 -0
- package/contracts/workers/executor-fee-lib/Cargo.toml +7 -1
- package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +62 -15
- package/contracts/workers/executor-fee-lib/src/executor_option.rs +28 -1
- package/contracts/workers/executor-fee-lib/src/lib.rs +11 -2
- package/contracts/workers/executor-fee-lib/src/tests/executor_fee_lib.rs +701 -0
- package/contracts/workers/executor-fee-lib/src/tests/executor_option.rs +370 -0
- package/contracts/workers/executor-fee-lib/src/tests/mod.rs +4 -0
- package/contracts/workers/executor-fee-lib/src/tests/setup.rs +60 -0
- package/contracts/workers/executor-helper/Cargo.toml +0 -1
- package/contracts/workers/executor-helper/src/lib.rs +3 -0
- package/contracts/workers/executor-helper/src/tests/executor_helper.rs +184 -0
- package/contracts/workers/executor-helper/src/tests/mod.rs +2 -0
- package/contracts/workers/executor-helper/src/tests/setup.rs +366 -0
- package/contracts/workers/fee-lib-interfaces/Cargo.toml +14 -0
- package/contracts/workers/{worker/src/interfaces/mod.rs → fee-lib-interfaces/src/lib.rs} +4 -3
- package/contracts/workers/price-feed/Cargo.toml +7 -1
- package/contracts/workers/price-feed/src/events.rs +1 -1
- package/contracts/workers/price-feed/src/lib.rs +12 -4
- package/contracts/workers/price-feed/src/price_feed.rs +5 -21
- package/contracts/workers/price-feed/src/storage.rs +1 -1
- package/contracts/workers/price-feed/src/tests/mod.rs +2 -0
- package/contracts/workers/price-feed/src/tests/price_feed.rs +869 -0
- package/contracts/workers/price-feed/src/tests/setup.rs +70 -0
- package/contracts/workers/price-feed/src/types.rs +1 -1
- package/contracts/workers/worker/src/errors.rs +1 -4
- package/contracts/workers/worker/src/lib.rs +0 -2
- package/contracts/workers/worker/src/storage.rs +32 -29
- package/contracts/workers/worker/src/tests/setup.rs +2 -8
- package/contracts/workers/worker/src/tests/worker.rs +96 -74
- package/contracts/workers/worker/src/worker.rs +75 -75
- package/docs/error-spec.md +55 -0
- package/docs/layerzero-v2-on-stellar.md +447 -0
- package/docs/oapp-guide.md +212 -0
- package/docs/oft-guide.md +314 -0
- package/package.json +3 -3
- package/sdk/.turbo/turbo-test.log +268 -263
- package/sdk/dist/generated/bml.d.ts +12 -4
- package/sdk/dist/generated/bml.js +9 -7
- package/sdk/dist/generated/counter.d.ts +306 -298
- package/sdk/dist/generated/counter.js +48 -46
- package/sdk/dist/generated/dvn.d.ts +450 -411
- package/sdk/dist/generated/dvn.js +66 -64
- package/sdk/dist/generated/dvn_fee_lib.d.ts +294 -338
- package/sdk/dist/generated/dvn_fee_lib.js +33 -64
- package/sdk/dist/generated/endpoint.d.ts +108 -100
- package/sdk/dist/generated/endpoint.js +21 -19
- package/sdk/dist/generated/executor.d.ts +414 -370
- package/sdk/dist/generated/executor.js +58 -55
- package/sdk/dist/generated/executor_fee_lib.d.ts +333 -377
- package/sdk/dist/generated/executor_fee_lib.js +34 -65
- package/sdk/dist/generated/executor_helper.d.ts +26 -190
- package/sdk/dist/generated/executor_helper.js +23 -28
- package/sdk/dist/generated/layerzero_view.d.ts +1271 -0
- package/sdk/dist/generated/layerzero_view.js +294 -0
- package/sdk/dist/generated/oft.d.ts +408 -385
- package/sdk/dist/generated/oft.js +89 -92
- package/sdk/dist/generated/price_feed.d.ts +385 -429
- package/sdk/dist/generated/price_feed.js +50 -81
- package/sdk/dist/generated/sml.d.ts +108 -100
- package/sdk/dist/generated/sml.js +21 -19
- package/sdk/dist/generated/treasury.d.ts +108 -100
- package/sdk/dist/generated/treasury.js +21 -19
- package/sdk/dist/generated/uln302.d.ts +108 -100
- package/sdk/dist/generated/uln302.js +23 -21
- package/sdk/dist/generated/upgrader.d.ts +189 -18
- package/sdk/dist/generated/upgrader.js +84 -4
- package/sdk/dist/index.d.ts +1 -0
- package/sdk/dist/index.js +2 -0
- package/sdk/package.json +1 -1
- package/sdk/src/index.ts +3 -0
- package/sdk/test/oft-sml.test.ts +4 -4
- package/sdk/test/suites/localnet.ts +84 -20
- package/sdk/test/upgrader.test.ts +2 -3
- package/tools/ts-bindings-gen/src/main.rs +2 -1
- package/contracts/ERROR_SPEC.md +0 -44
- package/contracts/endpoint-v2/ARCHITECTURE.md +0 -233
- package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -175
- package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -212
- package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -153
- package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -294
- /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/dvn_fee_lib.rs +0 -0
- /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/executor_fee_lib.rs +0 -0
- /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/price_feed.rs +0 -0
|
@@ -4,17 +4,16 @@ import type { u32, u64, i128, Option } from '@stellar/stellar-sdk/contract';
|
|
|
4
4
|
export * from '@stellar/stellar-sdk';
|
|
5
5
|
export * as contract from '@stellar/stellar-sdk/contract';
|
|
6
6
|
export * as rpc from '@stellar/stellar-sdk/rpc';
|
|
7
|
-
export type MigrationData = void;
|
|
8
7
|
/**
|
|
9
8
|
* Embedded WASM bytecode (base64-encoded)
|
|
10
|
-
* Size:
|
|
9
|
+
* Size: 61037 bytes (59.61 KB)
|
|
11
10
|
*/
|
|
12
|
-
export declare const WASM_BASE64 = "AGFzbQEAAAAB+gEoYAF+AX5gAn5+AX5gA35+fgF+YAR+fn5+AX5gAAF+YAF+AX9gAn9/AX9gBX5+fn5+AGACf38BfmADfn5+AGADf39/AGAEf39/fwBgBH9/fn4AYAN/f38BfmABfwBgAn9/AGACfn8BfmABfgBgAn5+AX9gAn9+AGAAAGAAAX9gAX8BfmACfn8AYAN/fn4AYAV/fn9+fgBgA35/fwBgAX8Bf2ACf34Bf2AFfn9/f38AYAR/f39/AX5gBn9+fn5+fwBgBX9+fn5+AGAGfn5+fn5+AX5gBH5+fn4AYAJ+fwF/YAR+fn9/AX5gAn5+AGAEf35+fwBgA39/fwF/AuUBJgF2ATMAAAF2ATEAAQFiAW0AAgFsATcAAwFsAV8AAgFiATgAAAFiAWUAAQFsATEAAQFiATQABAFhATAAAAFiAV8AAAFiAWYAAgF4ATEAAQFsATIAAQF2AV8ABAF4ATcABAFkAV8AAgFhATYAAAFpAV8AAAFpATAAAAFiATEAAwFiATMAAQF2AWcAAQFpATgAAAFpATcAAAFpATYAAQFiAWoAAQFiATIAAwFtATkAAgFtAWEAAwF4ATAAAQFiATAAAAF4ATQABAF4ATMABAF4ATgABAFsATAAAQFsATgAAQF4ATUAAAO2AbQBBQYHAQgJBwoICwgMAA0ODwgOEBEIEg4LDwgTCgQUFRYUBAQOFxQOFg4EChMPBBYYERkOExoTGxwcFA4EBBQVCgYKBA8KDAwEEw8bDhYdExgTHgofAwgAAQEBAQABAAASAAAEAAQABAATCCACFhMgBAQFFAQEAxUAEyERIhYEBAEAAgATASEWCCMBFCQCBAQAAQEAARMVChYEDwQEAQQEACUBFBgEBBQKEwoPHyYgICYgJycgBAUBcAEBAQUDAQARBiEEfwFBgIDAAAt/AEGQicAAC38AQb6LwAALfwBBwIvAAAsHqwc2Bm1lbW9yeQIADnNldF9yYXRlX2xpbWl0AHoQdW5zZXRfcmF0ZV9saW1pdAB9EXJhdGVfbGltaXRfY29uZmlnAH4UcmF0ZV9saW1pdF9pbl9mbGlnaHQAfxNyYXRlX2xpbWl0X2NhcGFjaXR5AIABE3NldF9kZWZhdWx0X2ZlZV9icHMAgQELc2V0X2ZlZV9icHMAggENdW5zZXRfZmVlX2JwcwCDARdzZXRfZmVlX2RlcG9zaXRfYWRkcmVzcwCEAQtoYXNfZmVlX2JwcwCGARFlZmZlY3RpdmVfZmVlX2JwcwCHAQ9kZWZhdWx0X2ZlZV9icHMAiAEHZmVlX2JwcwCJARNmZWVfZGVwb3NpdF9hZGRyZXNzAIoBCnNldF9wYXVzZWQAiwEJaXNfcGF1c2VkAIwBCXF1b3RlX29mdACNAQpxdW90ZV9zZW5kAJEBBXRva2VuAJUBD3NoYXJlZF9kZWNpbWFscwCWARdkZWNpbWFsX2NvbnZlcnNpb25fcmF0ZQCZARFhcHByb3ZhbF9yZXF1aXJlZACaAQRzZW5kAJsBDV9fY29uc3RydWN0b3IAnwEIb2Z0X3R5cGUAowEKYXV0aG9yaXplcgCkARBlbmZvcmNlZF9vcHRpb25zAKUBFHNldF9lbmZvcmNlZF9vcHRpb25zAKYBD2NvbWJpbmVfb3B0aW9ucwCnARVhbGxvd19pbml0aWFsaXplX3BhdGgAqAEKbmV4dF9ub25jZQCqAQpsel9yZWNlaXZlAKsBFWlzX2NvbXBvc2VfbXNnX3NlbmRlcgCyAQxvYXBwX3ZlcnNpb24AswEIZW5kcG9pbnQAtAEEcGVlcgC1AQhzZXRfcGVlcgC3AQxzZXRfZGVsZWdhdGUAuAEPc2V0X3R0bF9jb25maWdzALkBC3R0bF9jb25maWdzAL4BEmZyZWV6ZV90dGxfY29uZmlncwDAARVpc190dGxfY29uZmlnc19mcm96ZW4AwQETZXh0ZW5kX2luc3RhbmNlX3R0bADCAQVvd25lcgDDAQ1wZW5kaW5nX293bmVyAMQBEnRyYW5zZmVyX293bmVyc2hpcADFARpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgDHARBhY2NlcHRfb3duZXJzaGlwAMoBEnJlbm91bmNlX293bmVyc2hpcADLAQFfAwELb2Z0X3ZlcnNpb24AswEKX19kYXRhX2VuZAMCC19faGVhcF9iYXNlAwMKzusBtAGuAQMBfwF+An9BAiEBAkAgAEL/AYNCywBSDQAgABCAgICAACICQoCAgIAQVA0AAkAgAEIEEIGAgIAAIgCnQf8BcSIDQcoARg0AIANBDkcNAQsgAkIgiKchAwJAAkACQCAAQeCBwIAArUIghkIEhEKEgICAIBCCgICAAEIgiKcOAgABAwtBASADEKeAgIAADQJBACEEDAELQQEhBEEBIAMQp4CAgAANAQsgBCEBCyABCxkAAkAgASAASQ0AIAEgAGsPCxDfgICAAAALsQEBAn8jgICAgABBMGsiBSSAgICAACAFIAMgBBCpgICAADcDECAFIAI3AwggBSABNwMAQQAhBgNAAkAgBkEYRw0AQQAhBgJAA0AgBkEYRg0BIAVBGGogBmogBSAGaikDADcDACAGQQhqIQYMAAsLIABCju7qlb623vMAIAVBGGpBAxCqgICAABCrgICAACAFQTBqJICAgIAADwsgBUEYaiAGakICNwMAIAZBCGohBgwACwtDAQF/I4CAgIAAQRBrIgIkgICAgAAgAiAAIAEQ9YCAgAACQCACKAIAQQFHDQAACyACKQMIIQEgAkEQaiSAgICAACABCxoAIACtQiCGQgSEIAGtQiCGQgSEEJaAgIAACyEAAkAgACABIAIQkICAgABC/wGDQgJRDQAQ34CAgAAACwuxAQECfyOAgICAAEEwayIFJICAgIAAIAUgAyAEEKmAgIAANwMQIAUgAjcDCCAFIAE3AwBBACEGA0ACQCAGQRhHDQBBACEGAkADQCAGQRhGDQEgBUEYaiAGaiAFIAZqKQMANwMAIAZBCGohBgwACwsgAEKO7uqVvrbe8wAgBUEYakEDEKqAgIAAEKuAgIAAIAVBMGokgICAgAAPCyAFQRhqIAZqQgI3AwAgBkEIaiEGDAALCycAQQEgABCugICAAEIBIAGtQiCGQgSEIAKtQiCGQgSEEIOAgIAAGgvHAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQAJAAkAgAA4DAAECAAsgAkGAgMCAAEENENCAgIAAIAIoAgANAyACIAIpAwgQ0YCAgAAMAgsgAkGNgMCAAEEGENCAgIAAIAIoAgANAiACIAIpAwggAa1CIIZCBIQQ1YCAgAAMAQsgAkGTgMCAAEERENCAgIAAIAIoAgANASACIAIpAwgQ0YCAgAALIAIpAwghAyACKQMAUA0BCwALIAJBEGokgICAgAAgAwsnACAAIAEQsICAgABCASACrUIghkIEhCADrUIghkIEhBCDgICAABoL+gECAX8CfiOAgICAAEEwayICJICAgIAAIAJBIGpByILAgABBCRDQgICAAAJAAkAgAigCIA0AIAIpAyghAwJAAkAgAUEBcUUNACACQSBqQdeBwIAAQQgQ0ICAgAAgAigCIA0CIAJBIGogAikDKBDRgICAAAwBCyACQSBqQdCBwIAAQQcQ0ICAgAAgAigCIA0BIAJBIGogAikDKBDRgICAAAsgAikDKCEEIAIpAyCnDQAgAiAENwMQIAIgAzcDCCACIACtQiCGQgSENwMYIAJBIGogAkEIahDSgICAACACKAIgRQ0BCwALIAIpAyghAyACQTBqJICAgIAAIAMLHQAgACABEK6AgIAAIAIQsoCAgAAgAxCEgICAABoLQQEBfyOAgICAAEEQayIBJICAgIAAIAEgABD2gICAAAJAIAEoAgBBAUcNAAALIAEpAwghACABQRBqJICAgIAAIAALzwECAX8DfiOAgICAAEEQayIDJICAgIAAIANBBGoQtICAgAACQCADKAIEQQFHDQAgAygCCCADKAIMELWAgIAACyAAIAEQtoCAgAAiBBCFgICAACEFIAIpAwAhBgJAAkAgBUKAgICAEFQNAAJAIAYQhYCAgABCgICAgBBaDQAgBCEGDAELIAYQhYCAgABC/////x9YDQEgAhC3gICAACAEIAZBAhC4gICAABCGgICAACEGCyADQRBqJICAgIAAIAYPC0KDgICAgPoBELmAgIAAAAsMACAAQQEQ0IGAgAALGwAgAK1CIIZCBIQgAa1CIIZCBIQQpICAgAAaC70BBAF/AX4BfwF+I4CAgIAAQRBrIgIkgICAgAAgAkEEahC0gICAAAJAIAIoAgRBAUcNACACKAIIIAIoAgwQtYCAgAALAkACQCAAIAEQuoCAgAAiA0IBELuAgIAAIgRFDQAgA0IBEIeAgIAAIgVC/wGDQsgAUg0BIAJBBGoQvICAgAAgAigCBEEBRw0AIAAgASACKAIIIAIoAgwQvYCAgAALEIiAgIAAIQMgAkEQaiSAgICAACAFIAMgBBsPCwALvQECAX8BfiOAgICAAEEQayIBJICAgIAAIAFBADYCCCABIAA2AgQCQAJAAkAgAUEEakECEK2BgIAAIgIQhYCAgABCgICAgHCDQoCAgIAgUg0AIAFBADsBDiACEIWAgIAAQoCAgIBwg0KAgICAIFINASACIAFBDmpBAhDagICAACABLwEOQYAGRw0CIAFBEGokgICAgAAPC0KDgICAgIIBELmAgIAAAAsQsIGAgAAAC0KDgICAgPoBELmAgIAAAAslACAAIAGtQiCGQgSEIAAQhYCAgABCgICAgHCDQgSEEIuAgIAACwsAIAAQpYCAgAAaC4oBAgF/AX4jgICAgABBMGsiAiSAgICAACACQSBqQeCFwIAAQQ8Q0ICAgAACQAJAIAIoAiANACACIAIpAyg3AwggAiABrUIghkIEhDcDGCACIACtQiCGQgSENwMQIAJBIGogAkEIahDSgICAACACKAIgRQ0BCwALIAIpAyghAyACQTBqJICAgIAAIAMLDwAgACABEKOAgIAAQgFRCwwAIABBAhDQgYCAAAsnACAAIAEQuoCAgABCASACrUIghkIEhCADrUIghkIEhBCDgICAABoLxgECAX8BfiOAgICAAEEQayICJICAgIAAIAIQtICAgAACQCACKAIAQQFHDQAgAigCBCACKAIIELWAgIAACwJAAkACQEEBIAEQv4CAgAAiA0IBELuAgIAARQ0AIAIgA0IBEIeAgIAAEMCAgIAAIAIoAgBBAUcNAQALIABCADcDAAwBCyACKQMIIQMgAEIBNwMAIAAgAzcDCCACELyAgIAAIAIoAgBBAUcNACABIAIoAgQgAigCCBDBgICAAAsgAkEQaiSAgICAAAubAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQCAAQQFxRQ0AIAJBnIXAgABBBBDQgICAACACKAIADQIgAiACKQMIIAGtQiCGQgSEENWAgIAADAELIAJBlIXAgABBCBDQgICAACACKAIADQEgAiACKQMIENGAgIAACyACKQMIIQMgAikDAFANAQsACyACQRBqJICAgIAAIAMLIwACQCABQv8Bg0LIAFENACAAQgE3AwAPCyAAIAEQ24CAgAALJwBBASAAEL+AgIAAQgEgAa1CIIZCBIQgAq1CIIZCBIQQg4CAgAAaC4cBAgF/AX4jgICAgABBEGsiACSAgICAACAAQQRqELSAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBC1gICAAAsCQAJAQQAgABC/gICAACIBQgIQu4CAgABFDQAgAUICEIeAgIAAIgFC/wGDQs0AUQ0BAAsQw4CAgAAACyAAQRBqJICAgIAAIAELCQAQ34CAgAAAC4sBAgJ/AX4jgICAgABBEGsiACSAgICAACAAQQRqELSAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBC1gICAAAtBACEBAkBBABDFgICAACICQgIQu4CAgABFDQBBASEBAkACQCACQgIQh4CAgACnQf8BcQ4CAQIACwALQQAhAQsgAEEQaiSAgICAACABC8IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAAkACQCAAQf8BcQ4DAAECAAsgAUGmi8CAAEEGENCAgIAAIAEoAgANAyABIAEpAwgQ0YCAgAAMAgsgAUGsi8CAAEEIENCAgIAAIAEoAgANAiABIAEpAwgQ0YCAgAAMAQsgAUG0i8CAAEEKENCAgIAAIAEoAgANASABIAEpAwgQ0YCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgsPABDHgICAABCJgICAABoLZgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABC0gICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQtYCAgAALIAAQyYCAgAAgACkDCCEBIAApAwBBiggQyoCAgAAgAEEQaiSAgICAACABC0oCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQyYCAgAAgACkDCCEBIAApAwBBiggQyoCAgAAgARCJgICAABogAEEQaiSAgICAACABC1ABAX8jgICAgABBEGsiASSAgICAACABQQRqELSAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBC1gICAAAsgABDOgICAACABQRBqJICAgIAACykAAkAgAKdBAXFFDQAPCyABQfp3aq1CIIZCg4CAgOCAAXwQuYCAgAAAC0IBAX8jgICAgABBEGsiACSAgICAACAAEMyAgIAAAkAgACkDAFANAEKDgICAsIEBELmAgIAAAAsgAEEQaiSAgICAAAuTAQIBfwJ+I4CAgIAAQRBrIgEkgICAgAAgAUEEahC0gICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQtYCAgAALQgAhAgJAAkBBARDNgICAACIDQgAQu4CAgABFDQAgA0IAEIeAgIAAIgJC/wGDQs0AUg0BIAAgAjcDCEIBIQILIAAgAjcDACABQRBqJICAgIAADwsAC5IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAIABBAXFFDQAgAUG5isCAAEEMENCAgIAAIAEoAgANAiABIAEpAwgQ0YCAgAAMAQsgAUG0isCAAEEFENCAgIAAIAEoAgANASABIAEpAwgQ0YCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgtNAQJ+QgAhAQJAAkBBABDNgICAACICQgIQu4CAgABFDQAgAkICEIeAgIAAIgFC/wGDQs0AUg0BIAAgATcDCEIBIQELIAAgATcDAA8LAAtgAgF/AX4jgICAgABBEGsiACSAgICAACAAQcODwIAAQQcQ0ICAgAACQAJAIAAoAgANACAAIAApAwgQ0YCAgAAgACgCAEEBRw0BCwALIAApAwghASAAQRBqJICAgIAAIAELUQIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyABIAIQzYGAgABCASEEAkAgAygCAA0AIAAgAykDCDcDCEIAIQQLIAAgBDcDACADQRBqJICAgIAAC0QBAX8jgICAgABBEGsiAiSAgICAACACIAE3AwggAkEIakEBEKqAgIAAIQEgAEIANwMAIAAgATcDCCACQRBqJICAgIAAC10CAX8BfiOAgICAAEEgayICJICAgIAAIAIgASkDEDcDGCACIAEpAwg3AxAgAiABKQMANwMIIAJBCGpBAxCqgICAACEDIABCADcDACAAIAM3AwggAkEgaiSAgICAAAtgAgF/AX4jgICAgABBEGsiACSAgICAACAAQbCBwIAAQQYQ0ICAgAACQAJAIAAoAgANACAAIAApAwgQ0YCAgAAgACgCAEEBRw0BCwALIAApAwghASAAQRBqJICAgIAAIAELkgECAX8BfiOAgICAAEEQayIBJICAgIAAAkACQAJAAkAgAEEBcUUNACABQdeBwIAAQQgQ0ICAgAAgASgCAA0CIAEgASkDCBDRgICAAAwBCyABQdCBwIAAQQcQ0ICAgAAgASgCAA0BIAEgASkDCBDRgICAAAsgASkDCCECIAEpAwBQDQELAAsgAUEQaiSAgICAACACC0gBAX8jgICAgABBEGsiAySAgICAACADIAI3AwggAyABNwMAIANBAhCqgICAACECIABCADcDACAAIAI3AwggA0EQaiSAgICAAAseAAJAIACnQQFxRQ0ADwtCg4CAgJD6ARC5gICAAAAL7gUDAX8FfgN/I4CAgIAAQdAAayIFJICAgIAAIAIpAzAiBhCFgICAACEHIAVBEGoQ2ICAgAACQAJAAkACQCAFKQMQIgggBSkDGCIJhFANACACKQMgIQoCQCADIARCgICAgICAgICAf4WEQgBSDQAgCCAJg0J/UQ0BCyAFIAMgBCAIIAkQ1IGAgAAgBSkDCEIBWQ0BIAUpAwAhBAJAAkAgB0L/////D1YNACAFIAQ3AzggBSAKNwMwQgAhBiAFQgA3AxAgBUEgaiELQQEhDAwBCyAFQRBqIAEQioCAgABBBBC4gICAACIDQgRChICAgMAAEIuAgIAAENmAgIAAIAUoAhBBAUYNBCAFKQMYIQggBUEANgJAIAggBUHAAGpBBBDagICAACAFKAJAIgtB////B3ENAwJAAkACQCALQRh2DgIAAQYLIAVBwABqIANChICAgMAAQoSAgICAARCLgICAABDZgICAACAFKAJAQQFGDQYgBSkDSCEIIAVBADYCQCAIIAVBwABqQQQQ2oCAgAAgBSgCQA0FIAVBwABqIANChICAgIABQoSAgICABRCLgICAABDbgICAACAFKAJAQQFHDQEMBgsgBUHAAGogA0KEgICAwABChICAgMAEEIuAgIAAENuAgIAAIAUoAkBBAUYNBQsgBSkDSCEDIAVBKGohCyAFIAQ3AzggBSAKNwMwIAVCATcDICAFIAM3AxggBUIBNwMQQQIhDAsgCyAGNwMAIAVBEGoQ3ICAgAAhCyAFEIiAgIAANwNAIAVBwABqIAoQ3YCAgAAgBBDegICAACENAkACQCALDQAgDSkDACEEDAELIAdC/////w9YDQMgDSADEN2AgIAAIQsgBSgCIEUNAyALKQMAIAUpAygQhoCAgAAhBAsgACACKAJAIAwgAkEoahCzgICAADcDCCAAIAQ3AwAgBUHQAGokgICAgAAPCxDfgICAAAALQoOAgICg9wIQuYCAgAAACxDDgICAAAALAAuBAQIBfwF+I4CAgIAAQSBrIgEkgICAgAACQAJAQQAQooGAgAAiAkICELuAgIAARQ0AIAEgAkICEIeAgIAAEPSAgIAAIAEoAgBBAUcNAQALQoOAgICQ9wIQuYCAgAAACyABKQMQIQIgACABKQMYNwMIIAAgAjcDACABQSBqJICAgIAACzYBAX5CASECAkAgARCFgICAAEKAgICAcINCgICAgMAAUg0AIAAgATcDCEIAIQILIAAgAjcDAAsfACAAQgQgAa1CIIZCBIQgAq1CIIZCBIQQlICAgAAaCzYBAX5CASECAkAgARCFgICAAEKAgICAcINCgICAgIAEUg0AIAAgATcDCEIAIQILIAAgAjcDAAszAQF/QQAhAQJAIAApAwBQDQAgACgCEEEBRw0AIAApAxgQhYCAgABC/////w9WIQELIAELwgEBBH8jgICAgABBwABrIgIkgICAgAAgAkEgakEYaiIDQgA3AwAgAkEgakEQaiIEQgA3AwAgAkEgakEIaiIFQgA3AwAgAkIANwMgIAEgAkEgakEgENqAgIAAIAJBGGogAykDADcDACACQRBqIAQpAwA3AwAgAkEIaiAFKQMANwMAIAIgAikDIDcDACAAKQMAIQEgACABIAEQhYCAgABCgICAgHCDQgSEIAJBIBCxgYCAADcDACACQcAAaiSAgICAACAAC6cBAQF/I4CAgIAAQRBrIgIkgICAgAAgAiABQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISENwMIIAApAwAhASAAIAEgARCFgICAAEKAgICAcINCBIQgAkEIakEIELGBgIAANwMAIAJBEGokgICAgAAgAAsJABDMgYCAAAALUAEBfyOAgICAAEEQayIBJICAgIAAIAFBBGoQtICAgAACQCABKAIEQQFHDQAgASgCCCABKAIMELWAgIAACyAAENiAgIAAIAFBEGokgICAgAALVAIBfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahC0gICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQtYCAgAALEOKAgIAAIQEgAEEQaiSAgICAACABC0cBAX4CQAJAQQEQooGAgAAiAEICELuAgIAARQ0AIABCAhCHgICAACIAQv8Bg0LNAFENAQALQoOAgICQ9wIQuYCAgAAACyAACx0AAkAQ5ICAgAANAA8LQoOAgIDAnwIQuYCAgAAAC0UCAX8BfkEAIQACQBDTgICAACIBQgIQu4CAgABFDQBBASEAAkACQCABQgIQh4CAgACnQf8BcQ4CAQIACwALQQAhAAsgAAvNAgIBfwd+I4CAgIAAQfAAayIDJICAgIAAQgAhBEIAIQUCQAJAAkACQCABIAIQ5oCAgABFDQAgA0EwaiABIAIQ54CAgAAgAygCMEEBcUUNAiADKQNYIQYgAykDUCEHIAMpA0ghBCADKQNAIQggAykDYCEJIAMpA2ghBRDogICAACIKIAVUDQMgA0EANgIsIANBEGogCiAFfUIAIAggBCADQSxqENGBgIAAIAMoAiwNASAJUA0BQgAhBCADIAMpAxAgAykDGCAJQgAQ1IGAgABCACEFIAMpAwAiCCAHWiADKQMIIgkgBlkgCSAGURsNACAGIAmFIAYgBiAJfSAHIAhUrX0iBYWDQgBTDQEgByAIfSEECyAAIAQ3AwAgACAFNwMIIANB8ABqJICAgIAADwsQ34CAgAAACxDDgICAAAALQoOAgICQrAIQuYCAgAAAC2UBAn8jgICAgABBEGsiAiSAgICAAAJAIAEgABCwgICAAEIBELuAgIAAIgNFDQAgAkEEahC8gICAACACKAIEQQFHDQAgASAAIAIoAgggAigCDBCvgICAAAsgAkEQaiSAgICAACADC5oDBAF/AX4BfwV+I4CAgIAAQcAAayIDJICAgIAAAkACQAJAIAIgARCwgICAACIEQgEQu4CAgABFDQAgBEIBEIeAgIAAIQRBACEFAkADQCAFQSBGDQEgAyAFakICNwMAIAVBCGohBQwACwsCQCAEQv8Bg0LMAFINACAEQaiCwIAAQQQgA0EEEPOAgIAAIANBIGogAykDABD0gICAACADKAIgQQFGDQAgAykDOCEEIAMpAzAhBiADQSBqIAMpAwgQ7oCAgAAgAygCIA0AIAMpAyghByADQSBqIAMpAxAQ9ICAgAAgAygCIEEBRg0AIAMpAzghCCADKQMwIQkgA0EgaiADKQMYEO6AgIAAIAMoAiBBAUcNAgsACyAAQgA3AwggAEIANwMADAELIAMpAyghCiAAIAY3AyAgACAJNwMQIABCADcDCCAAQgE3AwAgACAHNwM4IAAgCjcDMCAAIAQ3AyggACAINwMYIANBIGoQvICAgAAgAygCIEUNACACIAEgAygCJCADKAIoEK+AgIAACyADQcAAaiSAgICAAAs9AgF+AX8CQBCggICAACIAp0H/AXEiAUEGRg0AAkAgAUHAAEcNACAAEJOAgIAADwsQ34CAgAAACyAAQgiIC5kBAgF/An4jgICAgABB8ABrIgIkgICAgAAgAkEwaiAAIAEQ5YCAgAAgAikDOCEDIAIpAzAhBCACQTBqIAAgARDngICAAAJAIAIoAjBBAXENABDDgICAAAALIAIgAkHAAGpBMBDYgYCAACICIAM3AxggAiAENwMQIAIQ6ICAgAA3AyggACABIAIQ6oCAgAAgAkHwAGokgICAgAALlgICAX8EfiOAgICAAEEwayIDJICAgIAAIAEgABCwgICAACEEIANBIGogAikDECACKQMYEPWAgIAAAkAgAygCIA0AIAMpAyghBSADQSBqIAIpAygQ9oCAgAAgAygCIA0AIAMpAyghBiADQSBqIAIpAwAgAikDCBD1gICAACADKAIgDQAgAykDKCEHIANBIGogAikDIBD2gICAACADKAIgQQFGDQAgAyADKQMoNwMYIAMgBzcDECADIAY3AwggAyAFNwMAIARBqILAgABBBCADQQQQ94CAgABCARCEgICAABogAxC8gICAAAJAIAMoAgBBAUcNACABIAAgAygCBCADKAIIEK+AgIAACyADQTBqJICAgIAADwsAC7gCBAF/An4BfwR+I4CAgIAAQfAAayIEJICAgIAAAkACQAJAAkAgACABEOaAgIAARQ0AIAAgARDpgICAACAEQTBqIAAgARDngICAACAEKAIwQQFxRQ0CQgAhBUIAIQYCQCAEIARBwABqQTAQ2IGAgAAiBykDACIIIAcpAxAiCVYgBykDCCIKIAcpAxgiC1UgCiALURtFDQAgCiALhSAKIAogC30gCCAJVK19IgaFg0IAUw0CIAggCX0hBQsgAiAFViADIAZVIAMgBlEbDQMgCyADhUJ/hSALIAsgA3wgCSACfCIDIAlUrXwiAoWDQgBTDQEgByADNwMQIAcgAjcDGCAAIAEgBxDqgICAAAsgBEHwAGokgICAgAAPCxDfgICAAAALEMOAgIAAAAtCg4CAgICsAhC5gICAAAAL5gEEAX8CfgF/An4jgICAgABB8ABrIgQkgICAgAACQAJAAkAgACABEOaAgIAARQ0AIAAgARDpgICAACAEQTBqIAAgARDngICAACAEKAIwQQFxRQ0BQgAhBUIAIQYCQCACIAQgBEHAAGpBMBDYgYCAACIHKQMQIghUIAMgBykDGCIJUyADIAlRG0UNACAJIAOFIAkgCSADfSAIIAJUrX0iBoWDQgBTDQMgCCACfSEFCyAHIAU3AxAgByAGNwMYIAAgASAHEOqAgIAACyAEQfAAaiSAgICAAA8LEMOAgIAAAAsQ34CAgAAAC2oCAX8CfiOAgICAAEEQayIAJICAgIAAQgAhAQJAAkBBACAAEK6AgIAAIgJCAhC7gICAAEUNACAAIAJCAhCHgICAABDugICAACAAKAIAQQFGDQEgACkDCCEBCyAAQRBqJICAgIAAIAEPCwALXQIBfwF+AkACQCABp0H/AXEiAkHAAEYNAAJAIAJBBkYNAEIBIQNCg5CAgIABIQEMAgsgAUIIiCEBQgAhAwwBC0IAIQMgARCTgICAACEBCyAAIAM3AwAgACABNwMIC58BAgF/AX4jgICAgABBEGsiAiSAgICAAAJAAkACQEEBIAEQroCAgAAiA0IBELuAgIAARQ0AIAIgA0IBEIeAgIAAEO6AgIAAIAIoAgBBAUcNAQALIABCADcDAAwBCyACKQMIIQMgAEIBNwMAIAAgAzcDCCACELyAgIAAIAIoAgBFDQAgASACKAIEIAIoAggQrYCAgAALIAJBEGokgICAgAALYwECfyOAgICAAEEQayIBJICAgIAAAkBBASAAEK6AgIAAQgEQu4CAgAAiAkUNACABQQRqELyAgIAAIAEoAgRBAUcNACAAIAEoAgggASgCDBCtgICAAAsgAUEQaiSAgICAACACC08BAn5CACEBAkACQEECIAAQroCAgAAiAkICELuAgIAARQ0AIAJCAhCHgICAACIBQv8Bg0LNAFINASAAIAE3AwhCASEBCyAAIAE3AwAPCwALhwECAX8BfiOAgICAAEEQayIBJICAgIAAIAEQtICAgAACQCABKAIAQQFHDQAgASgCBCABKAIIELWAgIAACwJAAkACQCAAEPCAgIAADQAQ7YCAgAAhAgwBCyABIAAQ74CAgAAgASgCAEUNASABKQMIIQILIAFBEGokgICAgAAgAg8LEMOAgIAAAAsxAAJAIAIgBEYNAAALIAAgAa1CIIZCBIQgA61CIIZCBIQgAq1CIIZCBIQQnYCAgAAaC30CAX8BfgJAAkACQAJAIAGnQf8BcSICQcUARg0AIAJBC0cNAiAAIAFCP4c3AxggACABQgiHNwMQDAELIAEQl4CAgAAhAyABEJiAgIAAIQEgACADNwMYIAAgATcDEAtCACEBDAELIABCg5CAgIABNwMIQgEhAQsgACABNwMAC1sAAkACQCABQoCAgICAgIDAAHxC//////////8AVg0AIAEgAYUgAiABQj+HhYRCAFINACABQgiGQguEIQEMAQsgAiABEJmAgIAAIQELIABCADcDACAAIAE3AwgLOwACQAJAIAFC//////////8AVg0AIAFCCIZCBoQhAQwBCyABEJKAgIAAIQELIABCADcDACAAIAE3AwgLLgACQCABIANGDQAACyAArUIghkIEhCACrUIghkIEhCABrUIghkIEhBCcgICAAAuKAgIBfwZ+I4CAgIAAQcAAayIDJICAgIAAIAMQtICAgAACQCADKAIAQQFHDQAgAygCBCADKAIIELWAgIAACwJAAkACQAJAIAEgAhDmgICAAA0AQv///////////wAhBEJ/IQUMAQsgAyABIAIQ54CAgAAgAygCAEEBcUUNAiADKQMQIQYgAykDGCEHIAMgASACEOWAgIAAQgAhBUIAIQQgBiADKQMAIghWIAcgAykDCCIJVSAHIAlRG0UNACAHIAmFIAcgByAJfSAGIAhUrX0iBIWDQgBTDQEgBiAIfSEFCyAAIAU3AwAgACAENwMIIANBwABqJICAgIAADwsQ34CAgAAACxDDgICAAAALjQQCAX8FfiOAgICAAEHwAGsiBiSAgICAACAGQeAAahDggICAACAGKQNoIQcgBikDYCEIAkACQAJAAkACQAJAIAUQ8ICAgAANABDtgICAACEJDAELIAZB4ABqIAUQ74CAgAAgBigCYEUNASAGKQNoIQkLAkACQCAJUEUNAEIAIQpCACEJDAELIAZB4ABqEPGAgIAAIAYoAmBFDQIgBkEANgJcIAZBwABqIAEgAiAJQgAgBkHcAGoQ0YGAgAAgBigCXA0DIAZBMGogBikDQCAGKQNIQpDOAEIAENSBgIAAIAYpAzghCSAGKQMwIQoLIAIgCYUgAiACIAl9IAEgClStfSILhYNCAFMNAiAIIAeEUA0CAkAgASAKfSICIAtCgICAgICAgICAf4WEQgBSDQAgCCAHg0J/UQ0DCyAGQSBqIAIgCyAIIAcQ1IGAgAAgBkEANgIcIAYgBikDICAGKQMoIAggByAGQRxqENGBgIAAIAYoAhwNAiAGKQMIIgIgCYVCf4UgAiACIAl8IAYpAwAiCSAKfCIHIAlUrXwiCIWDQgBTDQIgCSADVCACIARTIAIgBFEbDQMgACAJNwMQIAAgBzcDACAAIAI3AxggACAINwMIIAZB8ABqJICAgIAADwsQw4CAgAAAC0KDgICAkJMCELmAgIAAAAsQ34CAgAAAC0KDgICAsPcCELmAgIAAAAvnBQMDfwJ+AX8jgICAgABB8ABrIgQkgICAgAACQAJAAkACQAJAIAAQpoCAgABB/wFxIgVBAkYNACABQv8Bg0IEUg0AIARBMGogAhD0gICAACAEKAIwQQFGDQAgBCkDSCEAIAQpA0AhAiAEQTBqIAMQ7oCAgAAgBCgCMEEBRg0AIAQpAzghAxDGgICAACAEQTBqELSAgIAAAkAgBCgCMEEBRw0AIAQoAjQgBCgCOBC1gICAAAsgAkIAUiAAQgBVIABQG0UNASADQgBRDQICQAJAIAUgAUIgiKciBhDmgICAAA0AEOiAgIAAIQcgBCAANwM4IAQgAjcDMCAEQgA3A0ggBEIANwNAIAQgAzcDUCAEIAc3A1ggBSAGIARBMGoQ6oCAgABB0YLAgABBDhD7gICAABD8gICAACEHIAUQ1ICAgAAhCCACIAAQqYCAgAAhACAEIAMQsoCAgAA3A0ggBCAANwNAIAQgAUKEgICAcIM3AzggBCAINwMwIAdB6ILAgABBBCAEQTBqQQQQ94CAgAAQjICAgAAaDAELIARBMGogBSAGEOeAgIAAIAQoAjBBAXFFDQQCQCACIAQpA0CFIAAgBCkDSIWEQgBSDQAgAyAEKQNgUQ0GCyAFIAYQ6YCAgAAgBEEwaiAFIAYQ54CAgAAgBCgCMEEBcUUNBCAEIARBwABqQTAQ2IGAgAAiCSAANwMIIAkgAjcDACAJIAM3AyAgBSAGIAkQ6oCAgABBiIPAgABBEhD7gICAABD8gICAACEHIAUQ1ICAgAAhCCACIAAQqYCAgAAhACAJIAMQsoCAgAA3A0ggCSAANwNAIAkgAUKEgICAcIM3AzggCSAINwMwIAdB6ILAgABBBCAJQTBqQQQQ94CAgAAQjICAgAAaCyAEQfAAaiSAgICAAEICDwsAC0KDgICAsKwCELmAgIAAAAtCg4CAgKCsAhC5gICAAAALEMOAgIAAAAtCg4CAgMCsAhC5gICAAAALRQIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAiAAIAEQzYGAgAACQCACKAIAQQFHDQAACyACKQMIIQMgAkEQaiSAgICAACADC2MDAX8BfgF/I4CAgIAAQRBrIgEkgICAgAAgASAANwMAQgIhAkEBIQMCQANAIANFDQEgA0F/aiEDIAAhAgwACwsgASACNwMIIAFBCGpBARCqgICAACEAIAFBEGokgICAgAAgAAv8AQIDfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAIAAQpoCAgABB/wFxIgNBAkYNACABQv8Bg0IEUg0AIAFCIIinIQQQxoCAgAAgAhC0gICAAAJAIAIoAgBBAUcNACACKAIEIAIoAggQtYCAgAALIAMgBBDmgICAAEUNASAEIAMQsICAgABCARCNgICAABpBmoPAgABBEBD7gICAABD8gICAACEAIAMQ1ICAgAAhBSACIAFChICAgHCDNwMIIAIgBTcDACAAQayDwIAAQQIgAkECEPeAgIAAEIyAgIAAGiACQRBqJICAgIAAQgIPCwALQoOAgIDArAIQuYCAgAAAC50CAgN/AX4jgICAgABB0ABrIgIkgICAgAACQAJAAkAgABCmgICAAEH/AXEiA0ECRg0AIAFC/wGDQgRSDQAgAUIgiKchBCACELSAgIAAAkAgAigCAEEBRw0AIAIoAgQgAigCCBC1gICAAAsCQAJAIAMgBBDmgICAAA0AQgAhBUIAIQFCACEADAELIAIgAyAEEOeAgIAAIAIoAgBBAXFFDQIgAikDGCEAIAIpAxAhASACKQMwIQULIAIgASAAEPWAgIAAIAIoAgANACACKQMIIQEgAiAFEPaAgIAAIAIoAgBBAUcNAgsACxDDgICAAAALIAIgAikDCDcDSCACIAE3A0AgAkHAAGpBAhCqgICAACEBIAJB0ABqJICAgIAAIAELjAEBAn8jgICAgABBEGsiAiSAgICAAAJAIAAQpoCAgABB/wFxIgNBAkYNACABQv8Bg0IEUg0AIAIQtICAgAACQCACKAIAQQFHDQAgAigCBCACKAIIELWAgIAACyACIAMgAUIgiKcQ5YCAgAAgAikDACACKQMIEKmAgIAAIQEgAkEQaiSAgICAACABDwsAC2cBAn8jgICAgABBEGsiAiSAgICAAAJAIAAQpoCAgABB/wFxIgNBAkYNACABQv8Bg0IEUg0AIAIgAyABQiCIpxD4gICAACACKQMAIAIpAwgQqYCAgAAhASACQRBqJICAgIAAIAEPCwAL8wECAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABDugICAAAJAAkACQCABKAIAQQFGDQAgASkDCCEAEMaAgIAAIAEQtICAgAACQCABKAIAQQFHDQAgASgCBCABKAIIELWAgIAACyAAQpHOAFoNARDtgICAACAAUQ0CQQAgASAAQgIQsYCAgABBpIDAgABBExD7gICAABD8gICAACECIAEgABCygICAADcDACACQcCAwIAAQQEgAUEBEPeAgIAAEIyAgIAAGiABQRBqJICAgIAAQgIPCwALQoOAgICAkwIQuYCAgAAAC0KDgICAsJMCELmAgIAAAAvdAgICfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQCAAQv8Bg0IEUg0AIAIgARDugICAACACKAIAQQFGDQAgAikDCCEBEMaAgIAAIAIQtICAgAACQCACKAIAQQFHDQAgAigCBCACKAIIELWAgIAACyABQpHOAFoNASAAQiCIpyIDEPCAgIAARQ0DIAIgAxDvgICAACACKAIARQ0CIAIpAwggAVINA0KDgICAsJMCELmAgIAACwALQoOAgICAkwIQuYCAgAAACxDDgICAAAALQQEgAyABQgEQsYCAgAAgAhC8gICAAAJAIAIoAgBBAUcNACADIAIoAgQgAigCCBCtgICAAAtByIDAgABBCxD7gICAABD8gICAACEEIAIgARCygICAADcDCCACIABChICAgHCDNwMAIARB1IDAgABBAiACQQIQ94CAgAAQjICAgAAaIAJBEGokgICAgABCAgvWAQICfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAIABC/wGDQgRSDQAgAEIgiKchAhDGgICAACABELSAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBC1gICAAAsgAhDwgICAAEUNAUEBIAIQroCAgABCARCNgICAABpB5IDAgABBDRD7gICAABD8gICAACEDIAEgAEKEgICAcIM3AwAgA0H0gMCAAEEBIAFBARD3gICAABCMgICAABogAUEQaiSAgICAAEICDwsAC0KDgICAoJMCELmAgIAAAAvjAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAIABC/wGDQs0AUg0AEMaAgIAAIAEQtICAgAACQCABKAIAQQFHDQAgASgCBCABKAIIELWAgIAACyABEPGAgIAAAkAgASgCAEEBRw0AIAEp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QQhqIQMMAAsLEN+AgIAAAAsgBCkDWCEAIARB4AFqJICAgIAAIAAPCwALcwIBfwF+I4CAgIAAQTBrIgEkgICAgAAgASAAKQMANwMoIAEgADEAHDcDICABIAApAxA3AxggASAAKQMINwMQIAEgADUCGEIghkIEhDcDCEHkg8CAAEEFIAFBCGpBBRD3gICAACECIAFBMGokgICAgAAgAgvvAQICfwN+I4CAgIAAQTBrIgIkgICAgABBACEDAkADQCADQRBGDQEgAiADakICNwMAIANBCGohAwwACwtCACEEQgEhBQJAIAFC/wGDQswAUg0AIAFBxITAgABBAiACQQIQ84CAgAAgAkEQaiACKQMAEPSAgIAAIAIoAhBBAUYNACACKQMoIQEgAikDICEGIAJBEGogAikDCBD0gICAACACKAIQQQFGDQAgAikDICEEIAAgAikDKDcDKCAAIAQ3AyAgACABNwMYIAAgBjcDEEIAIQVCACEECyAAIAU3AwAgACAENwMIIAJBMGokgICAgAALhwEBAX8jgICAgABBEGsiBSSAgICAACAFIAEgAhD1gICAAEIBIQICQCAFKAIADQAgBSkDCCEBIAUgAyAEEPWAgIAAIAUoAgANACAFIAUpAwg3AwggBSABNwMAIABBxITAgABBAiAFQQIQ94CAgAA3AwhCACECCyAAIAI3AwAgBUEQaiSAgICAAAsIABDhgICAAAvkAwMCfwJ+A38jgICAgABBMGsiACSAgICAACAAQSBqELSAgIAAAkAgACgCIEEBRw0AIAAoAiQgACgCKBC1gICAAAsQ4oCAgAAQl4GAgAAhASAAQSBqENiAgIAAAkACQCAAKQMgIgJCAFIgACkDKCIDQgBVIANQIgQbRQ0AAkACQCACQv////+P8LvWhX9WIANC24K16+KdAVYgA0LbgrXr4p0BURsNACAAQRBqIAIgA0KAgIT+pt7hEUIAENaBgIAAQQpBACAAKQMQIAIgAkL//4P+pt7hEVYgA0IAUiAEGyIFGyIDQv/Hr6AlViIGGyEEIAVBBHQhBQJAIANCgMivoCWAIAMgBhsiA0KgjQZUDQAgBEEFciEEIANCoI0GgCEDCyAEIAVqIAOnIgRB9v8XaiAEQZz/H2pxIARBmPg3aiAEQfCxH2pxc0ERdmohBAwBCyAAIAIgA0KAgICAkPC71oV/QtuCtevinQEQ1oGAgAAgACgCACIEQaCNBm4gBCAEQZ+NBksiBRsiBEH2/xdqIARBnP8fanEgBEGY+DdqIARB8LEfanFzQRF2QSVBICAFG2ohBAsgASAESQ0BIABBMGokgICAgAAgASAEa61CIIZCBIQPCxCYgYCAAAALEN+AgIAAAAs1AAJAIABCjvCx0+zFqtMAEI6AgIAAEJCAgIAAIgBC/wGDQgRRDQAQ34CAgAAACyAAQiCIpwsJABDMgYCAAAALPgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABDggICAACAAKQMAIAApAwgQqYCAgAAhASAAQRBqJICAgIAAIAELSgEBfyOAgICAAEEQayIAJICAgIAAIABBBGoQtICAgAACQCAAKAIEQQFHDQAgACgCCCAAKAIMELWAgIAACyAAQRBqJICAgIAAQgALwgwEAX8GfgJ/BH4jgICAgABB8AFrIgQkgICAgAACQCAAQv8Bg0LNAFINACAEQdAAaiABEI6BgIAAIAQoAlBBAXENACAEIARB4ABqQdAAENiBgIAAIgRB0ABqIAIQk4GAgAAgBCgCUEEBcQ0AIANC/wGDQs0AUg0AIAQpA3ghBSAEKQNwIQYgBCkDaCEHIAQpA2AhCCAEQdAAahC0gICAAAJAIAQoAlBBAUcNACAEKAJUIAQoAlgQtYCAgAALIAAQiYCAgAAaIAQpAxghASAEKQMQIQIgBCkDCCEJIAQpAwAhCiAEKAJAIQsQ44CAgAAQnIGAgAAhDCAEQdAAaiAKIAkgAiABIAsQ+YCAgAAQ4YCAgAAhCQJAAkAgDEUNACAEIAQpA2AiAiAEKQNoIgEQqYCAgAA3A+ABIAQgADcD2AFBACEMA0ACQCAMQRBHDQBBACEMAkADQCAMQRBGDQEgBEG4AWogDGogBEHYAWogDGopAwA3AwAgDEEIaiEMDAALCyAJQo7mt/0JIARBuAFqQQIQqoCAgAAQq4CAgAAMAwsgBEG4AWogDGpCAjcDACAMQQhqIQwMAAsLIAkgABCPgICAACAEKQNgIgIgBCkDaCIBEKyAgIAAC0EBIAsgAiABEOuAgIAAQQAgCyACIAEQ7ICAgAACQAJAAkACQAJAIAQpA1giCSABhSAJIAkgAX0gBCkDUCIKIAJUrX0iDYWDQgBTDQAQ4YCAgAAhDgJAIAogAn0iDyANhFANACAEQbgBahDxgICAACAEKAK4AUUNBSAEQbgBahDxgICAACAEKAK4AUUNBCAOIAAgBCkDwAEgDyANEKiAgIAACyAEQdAAaiAAIAQgAiABENeAgIAAIAQpA1ghDSAEKQNQIQ4QwoCAgAAQnYGAgAAgABDCgICAACAIIAcQrICAgAACQCAGIAWEUA0AIARB0ABqEMKAgIAAQo7o9x8QjoCAgAAQkICAgAAQnoGAgAAgBCkDUCIHQgJRDQEgB6dBAXFFDQMgBCkDWCAAEMKAgIAAIAYgBRCsgICAAAsgBEHQAGogCxC+gICAACAEKQNYIQcgBCkDUBDWgICAABDCgICAACEIEI+AgIAAIQ8gBCAGQgBSIAVCAFUgBVAbOgDUASAEIA03A8gBIAQgDjcDwAEgBCAHNwO4ASAEIAs2AtABIARBuAFqEJKBgIAAIQUgBCADNwPoASAEIAU3A+ABIAQgDzcD2AFBACEMA0ACQCAMQRhHDQBBACEMAkADQCAMQRhGDQEgBEHQAGogDGogBEHYAWogDGopAwA3AwAgDEEIaiEMDAALCyAIQo7Ss5UOIARB0ABqQQMQqoCAgAAQkICAgAAhBUEAIQwCQANAIAxBGEYNASAEQdgBaiAMakICNwMAIAxBCGohDAwACwsgBUL/AYNCzABSDQIgBUHYhMCAAEEDIARB2AFqQQMQ84CAgAAgBEHQAGogBCkD2AEQk4GAgAAgBCgCUEEBcQ0CIAQpA3ghBiAEKQNwIQMgBCkDaCENIAQpA2AhByAEQdAAaiAEKQPgARDAgICAACAEKAJQDQIgBCkDWCEFIARB0ABqIAQpA+gBEO6AgIAAIAQoAlBBAUYNAiAEKQNYIRBCjvKzlZ7Ir+kAEPyAgIAAIQggAiABEKmAgIAAIQ4gCiAJEKmAgIAAIQ8gBCAFNwNwIAQgADcDaCAEIAutQiCGQgSENwNgIAQgDzcDWCAEIA43A1AgCEHQhsCAAEEFIARB0ABqQQUQ94CAgAAQjICAgAAaIARBuAFqIAcgDSADIAYQlIGAgAAgBCgCuAENByAEKQPAASEAIARBuAFqIBAQ9oCAgAAgBCgCuAFBAUYNByAEIAQpA8ABNwNgIAQgBTcDWCAEIAA3A1BB2ITAgABBAyAEQdAAakEDEPeAgIAAIQAgBEHQAGogCiAJIAIgARCQgYCAACAEKAJQQQFHDQMMBwsgBEHQAGogDGpCAjcDACAMQQhqIQwMAAsLEN+AgIAAAAsgBCAEKQNYNwPgASAEIAA3A9gBIARB2AFqQQIQqoCAgAAhACAEQfABaiSAgICAACAADwtCg4CAgLD6ARC5gICAAAALEMOAgIAAAAtCg4CAgJCTAhC5gICAAAALAAudAQMBfwF+AX8jgICAgABBEGsiACSAgICAACAAQQRqELSAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBC1gICAAAsCQAJAAkAQz4CAgAAiAUICELuAgIAARQ0AAkAgAUICEIeAgIAAIgFC/wGDQgRSDQBBACECIAFCIIinDgIDAgALAAsQw4CAgAAAC0EBIQILIABBEGokgICAgAAgAgs2AAJAIABB8ITAgABBDBD7gICAABCOgICAABCQgICAACIAQv8Bg0LNAFENABDfgICAAAALIAALOQACQCABQgJRDQACQCABQv8Bg0LNAFENACAAQgI3AwAPCyAAIAE3AwggAEIBNwMADwsgAEIANwMAC44EAwF/An4CfyOAgICAAEHQAGsiBiSAgICAAAJAAkACQAJAIABC/wGDQs0AUg0AIAFC/wGDQs0AUg0AIAJC/wGDQs0AUg0AIAZBwABqIAMQnoGAgAAgBikDQCIHQgJRDQAgBEL/AYNCBFINACAFQv8Bg0IEUg0AIAYpA0ghCEIEIQMCQAJAIAVCIIinDgIBAAILQoSAgIAQIQMLQQAQzYCAgABCAhC7gICAAA0BIAEQoIGAgABBACAGEL+AgIAAIAJCAhCEgICAABogAhCPgICAACAHIAgQoYGAgAAgABCXgYCAACIJIARCIIinIgpJDQJBARCigYCAACAAQgIQhICAgAAaQgAhAQJAIAkgCmsiCQ0AQgEhBQwEC0IKIQBCASEFQgAhAgJAA0ACQCAJQQFxRQ0AIAZBADYCPCAGQSBqIAUgASAAIAIgBkE8ahDRgYCAACAGKAI8DQIgBikDKCEBIAYpAyAhBSAJQQFGDQYLIAZBADYCHCAGIAAgAiAAIAIgBkEcahDRgYCAACAGKAIcDQEgBikDCCECIAYpAwAhACAJQQF2IQkMAAsLEN+AgIAACwALQoOAgICQgQEQuYCAgAAAC0KDgICAgPcCELmAgIAAAAtBABCigYCAACAFIAEQqYCAgABCAhCEgICAABoQz4CAgAAgA0ICEISAgIAAGiAGQdAAaiSAgICAAEICCw4AQQAgAEICEMmBgIAAC7YBAwF/AX4BfyOAgICAAEEgayIEJICAgIAAQfyEwIAAQQwQ+4CAgAAhBSAEIAIgAxC2gYCAADcDCCAEIAE3AwBBACEGA0ACQCAGQRBHDQBBACEGAkADQCAGQRBGDQEgBEEQaiAGaiAEIAZqKQMANwMAIAZBCGohBgwACwsgACAFIARBEGpBAhCqgICAABCrgICAACAEQSBqJICAgIAADwsgBEEQaiAGakICNwMAIAZBCGohBgwACwuSAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQCAAQQFxRQ0AIAFBxYfAgABBBRDQgICAACABKAIADQIgASABKQMIENGAgIAADAELIAFBsIfAgABBFRDQgICAACABKAIADQEgASABKQMIENGAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILEQBChICAgBBCBBCcgYCAABsLCAAQx4CAgAALLwACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAEIgiKcgAUIgiKcQtoCAgAAPCwALjwQHAX8DfgF/AX4BfwF+An8jgICAgABBMGsiASSAgICAAAJAAkAgAEL/AYNCywBSDQAQxoCAgAAgAUEIahC0gICAAAJAIAEoAghBAUcNACABKAIMIAEoAhAQtYCAgAALIAAQgICAgABCIIghAkIAIQMCQANAIAMgAlENASAAIANCIIZCBIQQgYCAgAAhBEEAIQUCQANAIAVBGEYNASABQQhqIAVqQgI3AwAgBUEIaiEFDAALC0EBIQUCQCAEQv8Bg0LMAFINACAEQciFwIAAQQMgAUEIakEDEPOAgIAAIAEpAwgiBEL/AYNCBFINACABKQMQIgZC/wGDQgRSDQAgByAGQiCIpyABKQMYIgZC/wGDQsgAUiIFGyEHIAggBiAFGyEIIAkgBEIgiKcgBRshCQsgA0L/////D1ENAyAFDQMgASAHNgIUIAEgCTYCECABIAg3AwggAUEIahC3gICAACABKQMIIQQgASgCECIFIAEoAhQiChC6gICAACAEQgEQhICAgAAaIAFBJGoQvICAgAACQCABKAIkQQFHDQAgBSAKIAEoAiggASgCLBC9gICAAAsgA0IBfCEDDAALC0HvhcCAAEETEPuAgIAAEPyAgIAAIQMgASAANwMIIANBmIbAgABBASABQQhqQQEQ94CAgAAQjICAgAAaIAFBMGokgICAgABCAg8LAAsQ34CAgAAAC2kBAX8jgICAgABBEGsiAySAgICAAAJAIABC/wGDQgRSDQAgAUL/AYNCBFINACACQv8Bg0LIAFINACADIAI3AwggAEIgiKcgAUIgiKcgA0EIahCzgICAACEAIANBEGokgICAgAAgAA8LAAubAQICfwF+I4CAgIAAQSBrIgEkgICAgAAgASAAEKmBgIAAAkAgASgCAEEBRg0AIAEoAhghAiABKQMIIQMgARC0gICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQtYCAgAALIAEgAhC+gICAAEIAIQACQCABKAIAQQFHDQAgASkDCCADEIWBgIAArSEACyABQSBqJICAgIAAIAAPCwAL4gECAn8CfiOAgICAAEEwayICJICAgIAAQQAhAwJAA0AgA0EYRg0BIAJBCGogA2pCAjcDACADQQhqIQMMAAsLQgEhBAJAIAFC/wGDQswAUg0AIAFBmITAgABBAyACQQhqQQMQ84CAgAAgAkEgaiACKQMIEO6AgIAAIAIoAiANACACKQMoIQEgAkEgaiACKQMQEMCAgIAAIAIoAiANACACKQMYIgVC/wGDQgRSDQAgAikDKCEEIAAgATcDECAAIAQ3AwggACAFQiCIPgIYQgAhBAsgACAENwMAIAJBMGokgICAgAALdQEBfyOAgICAAEEQayICJICAgIAAAkAgAEL/AYNCBFINACACIAEQwICAgAAgAigCAEEBRg0AIAIQtICAgAACQCACKAIAQQFHDQAgAigCBCACKAIIELWAgIAAC0IAELKAgIAAIQAgAkEQaiSAgICAACAADwsAC7oPBAJ/A34BfwF+I4CAgIAAQbABayIGJICAgIAAAkACQAJAIABC/wGDQs0AUg0AIAZBIGogARCpgYCAACAGKAIgQQFGDQAgBigCOCEHIAYpAzAhCCAGKQMoIQEgBkEgaiACEMCAgIAAIAYoAiBBAUYNACADQv8Bg0LIAFINACAGKQMoIQkgBiADNwMYIARC/wGDQsgAUg0AIAZBIGogBRD0gICAACAGKAIgQQFGDQAgBikDOCECIAYpAzAhBCAGQSBqELSAgIAAAkAg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gICAAAJAAkAgAEEgEK2BgIAAIgIQhYCAgABCgICAgHCDQoCAgICABFINACABQSBqQRhqIgBCADcDACABQSBqQRBqIgNCADcDACABQSBqQQhqIgRCADcDACABQgA3AyAgAhCFgICAAEKAgICAcINCgICAgIAEUg0BIAIgAUEgakEgENqAgIAAIAFBGGogACkDADcDACABQRBqIAMpAwA3AwAgAUEIaiAEKQMANwMAIAEgASkDIDcDACABQSAQj4GAgAAhAiABQcAAaiSAgICAACACDwtCg4CAgICCARC5gICAAAALELCBgIAAAAt1AgJ/AX4CQAJAIAAoAgQiAiABaiIBIAJJDQAgASAAKAIAIgMpAwAQhYCAgABCIIinSw0BIAMpAwAgAq1CIIZCBIQgAa1CIIZCBIQQi4CAgAAhBCAAIAE2AgQgBA8LEN+AgIAAAAtCg4CAgID9ABC5gICAAAALJwEBfwJAIAAQhYCAgABCIIinIgIgAUkNACACIAFrDwsQ34CAgAAAC0YBAX8CQEGcicCAAEGQicCAACAAp0EBcSICG0EIQQwgAhsQj4GAgAAgARCGgICAABCfgICAACIAQv8Bg0LNAFENAAALIAALCQAQ34CAgAAACx4AIAAgASACrUIghkIEhCADrUIghkIEhBCbgICAAAuJAQECfyOAgICAAEEgayIDJICAgIAAIAMgABCpgYCAAAJAIAMoAgBBAUYNACABQv8Bg0LIAFINACACQv8Bg0LNAFINACADELSAgIAAAkAgAygCAEEBRw0AIAMoAgQgAygCCBC1gICAAAsQj4CAgAAgAhCFgYCAACEEIANBIGokgICAgAAgBK0PCwALogECAX8BfiOAgICAAEEgayIAJICAgIAAIABBEGoQtICAgAACQCAAKAIQQQFHDQAgACgCFCAAKAIYELWAgIAACyAAQRBqQgEQ9oCAgAACQAJAIAAoAhANACAAKQMYIQEgAEEQakIBEPaAgIAAIAAoAhBBAUcNAQsACyAAIAApAxg3AwggACABNwMAIABBAhCqgICAACEBIABBIGokgICAgAAgAQsIABDCgICAAAtRAQF/I4CAgIAAQRBrIgEkgICAgAACQCAAQv8Bg0IEUQ0AAAsgASAAQiCIpxC+gICAACABKQMAIAEpAwgQtoGAgAAhACABQRBqJICAgIAAIAALDQAgAUICIACnQQFxGwu6AgQBfwF+AX8BfiOAgICAAEEQayICJICAgIAAAkAgAEL/AYNCBFINAAJAAkAgAUICUg0AQgAhAQwBCyACIAEQwICAgAAgAigCAEEBRg0BIAIpAwghA0IBIQELEMaAgIAAIAIQtICAgAACQCACKAIAQQFHDQAgAigCBCACKAIIELWAgIAAC0EBIABCIIinIgQQv4CAgAAhBQJAAkAgAVANACAFIANCARCEgICAABogAhC8gICAACACKAIAQQFHDQEgBCACKAIEIAIoAggQwYCAgAAMAQsgBUIBEI2AgIAAGgtCjvKqvPDWqusAEPyAgIAAIQUgAiABIAMQtoGAgAA3AwggAiAAQoSAgIBwgzcDACAFQaiFwIAAQQIgAkECEPeAgIAAEIyAgIAAGiACQRBqJICAgIAAQgIPCwALhwECAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABCegYCAAAJAIAEpAwAiAEICUQ0AIAEpAwghAhDGgICAACABELSAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBC1gICAAAsQwoCAgAAQj4CAgAAgACACEKGBgIAAIAFBEGokgICAgABCAg8LAAviBAEFfyOAgICAAEHQAGsiAiSAgICAACACQShqIAAQuoGAgAACQCACKAIoQQJGDQAgAkEIakEIaiACQShqQQhqIgMoAgA2AgAgAiACKQIoNwMIIAJBKGogARC6gYCAACACKAIoQQJGDQAgAkEYakEIaiADKAIANgIAIAIgAikCKDcDGCACQShqELSAgIAAAkAgAigCKEEBRw0AIAIoAiwgAigCMBC1gICAAAsQxoCAgAACQAJAAkAQxICAgAANABC7gYCAACIDQYD7gAMgA0GA+4ADSRshBCACIAJBGGo2AiwgAiACQQhqNgIoQQAhAwNAIANBCEYNAwJAIAJBKGogA2ooAgAiBSgCAEEBcUUNACAFKAIIIgYgBEsNAyAFKAIEIAZLDQMLIANBBGohAwwACwtCg4CAgND/ABC5gICAAAALQoOAgIDA/wAQuYCAgAAACwJAAkAgAigCCEEBRw0AQQEgAigCDCACKAIQELyBgIAADAELQQEQxYCAgABCAhCNgICAABoLAkACQCACKAIYQQFHDQBBAiACKAIcIAIoAiAQvIGAgAAMAQtBAhDFgICAAEICEI2AgIAAGgsgAkEoakEIaiACQQhqQQhqKAIANgIAIAJBPGogAkEYakEIaigCADYCACACIAIpAwg3AyggAiACKQMYNwI0QeCKwIAAQQ8Q+4CAgAAQ/ICAgAAhACACQShqEL2BgIAAIQEgAiACQTRqEL2BgIAANwNIIAIgATcDQCAAQYSLwIAAQQIgAkHAAGpBAhD3gICAABCMgICAABogAkHQAGokgICAgABCAg8LAAtoAQF/I4CAgIAAQRBrIgIkgICAgAACQAJAIAFCAlENACACQQRqIAEQzoGAgAACQCACKAIERQ0AIABBAjYCAAwCCyAAIAIpAgg3AgQgAEEBNgIADAELIABBADYCAAsgAkEQaiSAgICAAAszAQJ+EKGAgIAAIQACQBCigICAAEIgiCIBIABCIIgiAFQNACABpyAAp2sPCxDfgICAAAALVgIBfwF+I4CAgIAAQRBrIgMkgICAgAAgABDFgICAACEEIAMgASACEM+BgIAAAkAgAygCAEEBRw0AAAsgBCADKQMIQgIQhICAgAAaIANBEGokgICAgAALQwIBfwF+I4CAgIAAQRBrIgEkgICAgAAgASAAEL+BgIAAAkAgASgCAEEBRw0AAAsgASkDCCECIAFBEGokgICAgAAgAgvCAQICfwF+I4CAgIAAQcAAayIAJICAgIAAIABBCGoQtICAgAACQCAAKAIIQQFHDQAgACgCDCAAKAIQELWAgIAACyAAQQhqELSAgIAAIABBFGoiARC8gICAACAAQTBqIABBCGoQv4GAgAACQAJAIAAoAjANACAAKQM4IQIgAEEwaiABEL+BgIAAIAAoAjBBAUcNAQsACyAAIAApAzg3AyggACACNwMgIABBIGpBAhCqgICAACECIABBwABqJICAgIAAIAILMAACQCABKAIAQQFHDQAgACABKAIEIAEoAggQz4GAgAAPCyAAQgA3AwAgAEICNwMIC6oBAQF/I4CAgIAAQSBrIgAkgICAgAAgAEEMahC0gICAAAJAIAAoAgxBAUcNACAAKAIQIAAoAhQQtYCAgAALEMaAgIAAAkAQxICAgABFDQBCg4CAgOD/ABC5gICAAAALQQAQxYCAgABCAUICEISAgIAAGkGUi8CAAEESEPuAgIAAEPyAgIAAQQRBACAAQRhqQQAQ94CAgAAQjICAgAAaIABBIGokgICAgABCAgsJABDEgICAAK0LMQACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAEIgiKcgAUIgiKcQtYCAgABCAg8LAAs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEMmAgIAAIAApAwAgACkDCBC2gYCAACEBIABBEGokgICAgAAgAQs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEMyAgIAAIAApAwAgACkDCBC2gYCAACEBIABBEGokgICAgAAgAQt9AgF/AX4jgICAgABBEGsiASSAgICAAAJAIABC/wGDQs0AUg0AIAFBBGoQtICAgAACQCABKAIEQQFHDQAgASgCCCABKAIMELWAgIAACxDIgICAACECEMuAgIAAIAAQoIGAgAAgAiAAEMaBgIAAIAFBEGokgICAgABCAg8LAAthAgF/AX4jgICAgABBEGsiAiSAgICAAEGticCAAEEVEPuAgIAAEPyAgIAAIQMgAiAANwMIIAIgATcDACADQdSJwIAAQQIgAkECEPeAgIAAEIyAgIAAGiACQRBqJICAgIAAC9wCAgF/An4jgICAgABBIGsiAiSAgICAAAJAAkACQCAAQv8Bg0LNAFINACABQv8Bg0IEUg0AIAJBCGoQtICAgAACQCACKAIIQQFHDQAgAigCDCACKAIQELWAgIAACxDIgICAACEDAkACQCABQv////8PVg0AIAJBCGoQzICAgAAgAikDECEBIAIpAwhBiAgQyoCAgAAgASAAEIWBgIAARQ0DEMiBgIAADAELELuBgIAAIAFCIIinSQ0DQQEgAEIAEMmBgIAAQQEQzYCAgABCACABQoSAgIBwgyIBIAEQg4CAgAAaQeSJwIAAQRYQ+4CAgAAQ/ICAgAAhBCACIAE3AxggAiADNwMQIAIgADcDCCAEQYCKwIAAQQMgAkEIakEDEPeAgIAAEIyAgIAAGgsgAkEgaiSAgICAAEICDwsAC0KDgICA4IABELmAgIAAAAtCg4CAgPCAARC5gICAAAALEwBBARDNgICAAEIAEI2AgIAAGgsVACAAEM2AgIAAIAEgAhCEgICAABoLpwECAX8CfiOAgICAAEEQayIAJICAgIAAIAAQtICAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIELWAgIAACyAAEMyAgIAAIAApAwghASAAKQMAQYgIEMqAgIAA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AABuYXRpdmVfZmVlenJvX2ZlZQAAADACEAAKAAAAOgIQAAcAAABmZWUAVAIQAAMAAABLAxAABAAAAAwCEAAFAAAAbmF0aXZlX3Rva2Vuc2V0X2RlbGVnYXRlc2VuZF9jb21wb3NlRW5kcG9pbnRQZWVyZWlkcGVlcgCgAhAAAwAAAKMCEAAEAAAAbXNnX3R5cGVvcHRpb25zAKACEAADAAAAuAIQAAgAAADAAhAABwAAAEVuZm9yY2VkT3B0aW9uc2VuZm9yY2VkX29wdGlvbl9zZXRlbmZvcmNlZF9vcHRpb25fcGFyYW1zAgMQABYAAABhbW91bnRfcmVjZWl2ZWRfbGRhbW91bnRfc2VudF9sZGRzdF9laWRmcm9tZ3VpZAAgAxAAEgAAADIDEAAOAAAAQAMQAAcAAABHAxAABAAAAEsDEAAEAAAAb2Z0X3JlY2VpdmVkc3JjX2VpZHRvAAAAIAMQABIAAABLAxAABAAAAIQDEAAHAAAAiwMQAAIAAABEZWNpbWFsQ29udmVyc2lvblJhdGVUb2tlbmFtb3VudF9sZGNvbXBvc2VfbXNnZXh0cmFfb3B0aW9uc21pbl9hbW91bnRfbGRvZnRfY21kAMoDEAAJAAAA0wMQAAsAAABAAxAABwAAAN4DEAANAAAA6wMQAA0AAAD4AxAABwAAAIsDEAACAAAAbWF4X2Ftb3VudF9sZAAAADgEEAANAAAA6wMQAA0AAAAgAxAAEgAAADIDEAAOAAAAZGVzY3JpcHRpb25mZWVfYW1vdW50X2xkaAQQAAsAAABzBBAADQAAAAAAABIAAAAAAAAAAAAAABIAAAABdGhyZXNob2xkb3duZXJzaGlwX3RyYW5zZmVycmVkbmV3X293bmVyb2xkX293bmVywgQQAAkAAADLBBAACQAAAG93bmVyc2hpcF90cmFuc2ZlcnJpbmd0dGwAAADCBBAACQAAAMsEEAAJAAAA+gQQAAMAAABvd25lcnNoaXBfcmVub3VuY2VkAMsEEAAJAAAAT3duZXJQZW5kaW5nT3duZXJleHRlbmRfdG8AAEUFEAAJAAAApAQQAAkAAAB0dGxfY29uZmlnc19zZXRpbnN0YW5jZXBlcnNpc3RlbnQAAABvBRAACAAAAHcFEAAKAAAAdHRsX2NvbmZpZ3NfZnJvemVuRnJvemVuSW5zdGFuY2VQZXJzaXN0ZW50AMvLAQ5jb250cmFjdHNwZWN2MAAAAAIAAAAAAAAAAAAAAA1PRlRGZWVTdG9yYWdlAAAAAAAAAwAAAAAAAAAAAAAADURlZmF1bHRGZWVCcHMAAAAAAAABAAAAAAAAAAZGZWVCcHMAAAAAAAEAAAAEAAAAAAAAAAAAAAARRmVlRGVwb3NpdEFkZHJlc3MAAAAAAAAEAAAAAAAAAAAAAAALT0ZURmVlRXJyb3IAAAAABAAAAAAAAAANSW52YWxpZEZlZUJwcwAAAAAACJgAAAAAAAAAGEludmFsaWRGZWVEZXBvc2l0QWRkcmVzcwAACJkAAAAAAAAACE5vdEZvdW5kAAAImgAAAAAAAAAJU2FtZVZhbHVlAAAAAAAImwAAAAUAAAAAAAAAAAAAABBEZWZhdWx0RmVlQnBzU2V0AAAAAQAAABNkZWZhdWx0X2ZlZV9icHNfc2V0AAAAAAEAAAAAAAAAB2ZlZV9icHMAAAAABgAAAAAAAAACAAAABQAAAAAAAAAAAAAACUZlZUJwc1NldAAAAAAAAAEAAAALZmVlX2Jwc19zZXQAAAAAAgAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAAAAAAHZmVlX2JwcwAAAAAGAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAALRmVlQnBzVW5zZXQAAAAAAQAAAA1mZWVfYnBzX3Vuc2V0AAAAAAAAAQAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAURmVlRGVwb3NpdEFkZHJlc3NTZXQAAAABAAAAF2ZlZV9kZXBvc2l0X2FkZHJlc3Nfc2V0AAAAAAEAAAAAAAAAE2ZlZV9kZXBvc2l0X2FkZHJlc3MAAAAAEwAAAAAAAAACAAAAAgAAAAAAAAAAAAAAEk9GVFBhdXNhYmxlU3RvcmFnZQAAAAAAAQAAAAAAAAAAAAAABlBhdXNlZAAAAAAABAAAAAAAAAAAAAAAEE9GVFBhdXNhYmxlRXJyb3IAAAACAAAAAAAAAAZQYXVzZWQAAAAACPwAAAAAAAAAFFBhdXNlU3RhdHVzVW5jaGFuZ2VkAAAI/QAAAAUAAAAAAAAAAAAAAAlQYXVzZWRTZXQAAAAAAAABAAAACnBhdXNlZF9zZXQAAAAAAAEAAAAAAAAABnBhdXNlZAAAAAAAAQAAAAAAAAACAAAAAgAAAAAAAAAAAAAACURpcmVjdGlvbgAAAAAAAAIAAAAAAAAAAAAAAAdJbmJvdW5kAAAAAAAAAAAAAAAACE91dGJvdW5kAAAAAQAAAAAAAAAAAAAACVJhdGVMaW1pdAAAAAAAAAQAAAAAAAAAGGluX2ZsaWdodF9vbl9sYXN0X3VwZGF0ZQAAAAsAAAAAAAAAC2xhc3RfdXBkYXRlAAAAAAYAAAAAAAAABWxpbWl0AAAAAAAACwAAAAAAAAAOd2luZG93X3NlY29uZHMAAAAAAAYAAAACAAAAAAAAAAAAAAAQUmF0ZUxpbWl0U3RvcmFnZQAAAAEAAAABAAAAAAAAAAlSYXRlTGltaXQAAAAAAAACAAAH0AAAAAlEaXJlY3Rpb24AAAAAAAAEAAAABAAAAAAAAAAAAAAADlJhdGVMaW1pdEVycm9yAAAAAAAFAAAAAAAAABFFeGNlZWRlZFJhdGVMaW1pdAAAAAAACWAAAAAAAAAAEEludmFsaWRUaW1lc3RhbXAAAAlhAAAAAAAAABRJbnZhbGlkV2luZG93U2Vjb25kcwAACWIAAAAAAAAADEludmFsaWRMaW1pdAAACWMAAAAAAAAACVNhbWVWYWx1ZQAAAAAACWQAAAAFAAAAAAAAAAAAAAAMUmF0ZUxpbWl0U2V0AAAAAQAAAA5yYXRlX2xpbWl0X3NldAAAAAAABAAAAAAAAAAJZGlyZWN0aW9uAAAAAAAH0AAAAAlEaXJlY3Rpb24AAAAAAAAAAAAAAAAAAANlaWQAAAAABAAAAAAAAAAAAAAABWxpbWl0AAAAAAAACwAAAAAAAAAAAAAADndpbmRvd19zZWNvbmRzAAAAAAAGAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAQUmF0ZUxpbWl0VXBkYXRlZAAAAAEAAAAScmF0ZV9saW1pdF91cGRhdGVkAAAAAAAEAAAAAAAAAAlkaXJlY3Rpb24AAAAAAAfQAAAACURpcmVjdGlvbgAAAAAAAAAAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAAAAAAAFbGltaXQAAAAAAAALAAAAAAAAAAAAAAAOd2luZG93X3NlY29uZHMAAAAAAAYAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAA5SYXRlTGltaXRVbnNldAAAAAAAAQAAABByYXRlX2xpbWl0X3Vuc2V0AAAAAgAAAAAAAAAJZGlyZWN0aW9uAAAAAAAH0AAAAAlEaXJlY3Rpb24AAAAAAAAAAAAAAAAAAANlaWQAAAAABAAAAAAAAAACAAAAAwAAAB5UaGUgdHlwZSBvZiBPRlQgb3BlcmF0aW9uIG1vZGUAAAAAAAAAAAAHT2Z0VHlwZQAAAAACAAAAJkxvY2sgdG9rZW5zIG9uIHNlbmQsIHVubG9jayBvbiByZWNlaXZlAAAAAAAKTG9ja1VubG9jawAAAAAAAAAAACRCdXJuIHRva2VucyBvbiBzZW5kLCBtaW50IG9uIHJlY2VpdmUAAAAITWludEJ1cm4AAAABAAAAAAAAAAAAAAAOc2V0X3JhdGVfbGltaXQAAAAAAAQAAAAAAAAACWRpcmVjdGlvbgAAAAAAB9AAAAAJRGlyZWN0aW9uAAAAAAAAAAAAAANlaWQAAAAABAAAAAAAAAAFbGltaXQAAAAAAAALAAAAAAAAAA53aW5kb3dfc2Vjb25kcwAAAAAABgAAAAAAAAAAAAAAAAAAABB1bnNldF9yYXRlX2xpbWl0AAAAAgAAAAAAAAAJZGlyZWN0aW9uAAAAAAAH0AAAAAlEaXJlY3Rpb24AAAAAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAAAAAAAAAAAAEXJhdGVfbGltaXRfY29uZmlnAAAAAAAAAgAAAAAAAAAJZGlyZWN0aW9uAAAAAAAH0AAAAAlEaXJlY3Rpb24AAAAAAAAAAAAAA2VpZAAAAAAEAAAAAQAAA+0AAAACAAAACwAAAAYAAAAAAAAAAAAAABRyYXRlX2xpbWl0X2luX2ZsaWdodAAAAAIAAAAAAAAACWRpcmVjdGlvbgAAAAAAB9AAAAAJRGlyZWN0aW9uAAAAAAAAAAAAAANlaWQAAAAABAAAAAEAAAALAAAAAAAAAAAAAAATcmF0ZV9saW1pdF9jYXBhY2l0eQAAAAACAAAAAAAAAAlkaXJlY3Rpb24AAAAAAAfQAAAACURpcmVjdGlvbgAAAAAAAAAAAAADZWlkAAAAAAQAAAABAAAACwAAAAAAAAAAAAAAE3NldF9kZWZhdWx0X2ZlZV9icHMAAAAAAQAAAAAAAAAPZGVmYXVsdF9mZWVfYnBzAAAAAAYAAAAAAAAAAAAAAAAAAAALc2V0X2ZlZV9icHMAAAAAAgAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAdmZWVfYnBzAAAAAAYAAAAAAAAAAAAAAAAAAAANdW5zZXRfZmVlX2JwcwAAAAAAAAEAAAAAAAAAB2RzdF9laWQAAAAABAAAAAAAAAAAAAAAAAAAABdzZXRfZmVlX2RlcG9zaXRfYWRkcmVzcwAAAAABAAAAAAAAABNmZWVfZGVwb3NpdF9hZGRyZXNzAAAAABMAAAAAAAAAAAAAAAAAAAALaGFzX2ZlZV9icHMAAAAAAQAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAABFlZmZlY3RpdmVfZmVlX2JwcwAAAAAAAAEAAAAAAAAAB2RzdF9laWQAAAAABAAAAAEAAAAGAAAAAAAAAAAAAAAPZGVmYXVsdF9mZWVfYnBzAAAAAAAAAAABAAAABgAAAAAAAAAAAAAAB2ZlZV9icHMAAAAAAQAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAQAAA+gAAAAGAAAAAAAAAAAAAAATZmVlX2RlcG9zaXRfYWRkcmVzcwAAAAAAAAAAAQAAABMAAAAAAAAAAAAAAApzZXRfcGF1c2VkAAAAAAABAAAAAAAAAAZwYXVzZWQAAAAAAAEAAAAAAAAAAAAAAAAAAAAJaXNfcGF1c2VkAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAJcXVvdGVfb2Z0AAAAAAAAAQAAAAAAAAAKc2VuZF9wYXJhbQAAAAAH0AAAAAlTZW5kUGFyYW0AAAAAAAABAAAD7QAAAAMAAAfQAAAACE9GVExpbWl0AAAD6gAAB9AAAAAMT0ZURmVlRGV0YWlsAAAH0AAAAApPRlRSZWNlaXB0AAAAAAAAAAAAAAAAAApxdW90ZV9zZW5kAAAAAAADAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACnNlbmRfcGFyYW0AAAAAB9AAAAAJU2VuZFBhcmFtAAAAAAAAAAAAAApwYXlfaW5fenJvAAAAAAABAAAAAQAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAAAAAADVSZXRyaWV2ZXMgdGhlIHRva2VuIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgT0ZULgAAAAAAAAV0b2tlbgAAAAAAAAAAAAABAAAAEwAAAAAAAAAmUmV0dXJucyBPRlQgdmVyc2lvbiBhcyAobWFqb3IsIG1pbm9yKS4AAAAAAAtvZnRfdmVyc2lvbgAAAAAAAAAAAQAAA+0AAAACAAAABgAAAAYAAAAAAAAAQVJldHJpZXZlcyB0aGUgc2hhcmVkIGRlY2ltYWxzIHVzZWQgZm9yIGNyb3NzLWNoYWluIG5vcm1hbGl6YXRpb24uAAAAAAAAD3NoYXJlZF9kZWNpbWFscwAAAAAAAAAAAQAAAAQAAAAAAAAASVJldHJpZXZlcyB0aGUgZGVjaW1hbCBjb252ZXJzaW9uIHJhdGUgdXNlZCBmb3IgY3Jvc3MtY2hhaW4gbm9ybWFsaXphdGlvbi4AAAAAAAAXZGVjaW1hbF9jb252ZXJzaW9uX3JhdGUAAAAAAAAAAAEAAAALAAAAAAAAAOpXaGV0aGVyIGEgc2VwYXJhdGUgdG9rZW4gYXBwcm92YWwgaXMgcmVxdWlyZWQgYmVmb3JlIHNlbmRpbmcuCgpIZWxwcyB3YWxsZXQgaW1wbGVtZW50ZXJzIGRldGVybWluZSBpbnRlZ3JhdGlvbiByZXF1aXJlbWVudHMuCgojIFJldHVybnMKLSBgdHJ1ZWAgaWYgYSBzZXBhcmF0ZSB0b2tlbiBhcHByb3ZhbCBzdGVwIGlzIHJlcXVpcmVkCi0gYGZhbHNlYCBpZiBubyBzZXBhcmF0ZSBhcHByb3ZhbCBpcyBuZWVkZWQAAAAAABFhcHByb3ZhbF9yZXF1aXJlZAAAAAAAAAAAAAABAAAAAQAAAAAAAAB2U2VuZHMgdG9rZW5zIGNyb3NzLWNoYWluIHRvIGFub3RoZXIgZW5kcG9pbnQuCgpTZW5kZXIgbXVzdCBiZSBhdXRoZW50aWNhdGVkLgoKIyBSZXR1cm5zCihNZXNzYWdpbmdSZWNlaXB0LCBPRlRSZWNlaXB0KQAAAAAABHNlbmQAAAAEAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACnNlbmRfcGFyYW0AAAAAB9AAAAAJU2VuZFBhcmFtAAAAAAAAAAAAAANmZWUAAAAH0AAAAAxNZXNzYWdpbmdGZWUAAAAAAAAADnJlZnVuZF9hZGRyZXNzAAAAAAATAAAAAQAAA+0AAAACAAAH0AAAABBNZXNzYWdpbmdSZWNlaXB0AAAH0AAAAApPRlRSZWNlaXB0AAAAAAAAAAAAAAAAAA1fX2NvbnN0cnVjdG9yAAAAAAAABgAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAACGVuZHBvaW50AAAAEwAAAAAAAAAIZGVsZWdhdGUAAAPoAAAAEwAAAAAAAAAPc2hhcmVkX2RlY2ltYWxzAAAAAAQAAAAAAAAACG9mdF90eXBlAAAH0AAAAAdPZnRUeXBlAAAAAAAAAAAAAAAAQ1JldHVybnMgdGhlIHR5cGUgb2Ygb3BlcmF0aW9uIGZvciB0aGlzIE9GVCAoTG9ja1VubG9jayBvciBNaW50QnVybikAAAAACG9mdF90eXBlAAAAAAAAAAEAAAfQAAAAB09mdFR5cGUAAAAAAAAAAAAAAAAKYXV0aG9yaXplcgAAAAAAAAAAAAEAAAATAAAAAAAAANlSZXRyaWV2ZXMgdGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZS4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKKiBgbXNnX3R5cGVgIC0gVGhlIE9BcHAgbWVzc2FnZSB0eXBlCgojIFJldHVybnMKVGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIHRoZSBnaXZlbiBlbmRwb2ludCBhbmQgbWVzc2FnZSB0eXBlAAAAAAAAEGVuZm9yY2VkX29wdGlvbnMAAAACAAAAAAAAAANlaWQAAAAABAAAAAAAAAAIbXNnX3R5cGUAAAAEAAAAAQAAAA4AAAAAAAACm1NldHMgdGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIHNwZWNpZmljIGVuZHBvaW50IGFuZCBtZXNzYWdlIHR5cGUgY29tYmluYXRpb25zLgoKT25seSB0aGUgYGF1dGhvcml6ZXJgIG9mIHRoZSBPQXBwIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uClByb3ZpZGVzIGEgd2F5IGZvciB0aGUgT0FwcCB0byBlbmZvcmNlIHRoaW5ncyBsaWtlIHBheWluZyBmb3IgUHJlQ3JpbWUsIEFORC9PUiBtaW5pbXVtIGRzdCBselJlY2VpdmUgZ2FzIGFtb3VudHMgZXRjLgpUaGVzZSBlbmZvcmNlZCBvcHRpb25zIGNhbiB2YXJ5IGFzIHRoZSBwb3RlbnRpYWwgb3B0aW9ucy9leGVjdXRpb24gb24gdGhlIHJlbW90ZSBtYXkgZGlmZmVyIGFzIHBlciB0aGUgbXNnX3R5cGUuCmUuZy4gQW1vdW50IG9mIGx6UmVjZWl2ZSgpIGdhcyBuZWNlc3NhcnkgdG8gZGVsaXZlciBhIGx6Q29tcG9zZSgpIG1lc3NhZ2UgYWRkcyBvdmVyaGVhZCB5b3UgZG9uJ3Qgd2FudCB0byBwYXkKaWYgeW91IGFyZSBvbmx5IG1ha2luZyBhIHN0YW5kYXJkIExheWVyWmVybyBtZXNzYWdlIGllLiBselJlY2VpdmUoKSBXSVRIT1VUIHNlbmRDb21wb3NlKCkuCgojIEFyZ3VtZW50cwoqIGBvcHRpb25zYCAtIEEgdmVjdG9yIG9mIEVuZm9yY2VkT3B0aW9uUGFyYW0gc3RydWN0dXJlcyBzcGVjaWZ5aW5nIGVuZm9yY2VkIG9wdGlvbnMAAAAAFHNldF9lbmZvcmNlZF9vcHRpb25zAAAAAQAAAAAAAAAHb3B0aW9ucwAAAAPqAAAH0AAAABNFbmZvcmNlZE9wdGlvblBhcmFtAAAAAAAAAAAAAAACekNvbWJpbmVzIG9wdGlvbnMgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZS4KCklmIHRoZXJlIGlzIGFuIGVuZm9yY2VkIGx6UmVjZWl2ZSBvcHRpb246Ci0ge2dhc19saW1pdDogMjAwaywgdmFsdWU6IDEgWExNfSBBTkQgYSBjYWxsZXIgc3VwcGxpZXMgYSBselJlY2VpdmUgb3B0aW9uOiB7Z2FzX2xpbWl0OiAxMDBrLCB2YWx1ZTogMC41IFhMTX0KLSBUaGUgcmVzdWx0aW5nIG9wdGlvbnMgd2lsbCBiZSB7Z2FzX2xpbWl0OiAzMDBrLCB2YWx1ZTogMS41IFhMTX0gd2hlbiB0aGUgbWVzc2FnZSBpcyBleGVjdXRlZCBvbiB0aGUgcmVtb3RlIGx6X3JlY2VpdmUoKSBmdW5jdGlvbi4KVGhlIHByZXNlbmNlIG9mIGR1cGxpY2F0ZWQgb3B0aW9ucyBpcyBoYW5kbGVkIG9mZi1jaGFpbiBpbiB0aGUgdmVyaWZpZXIvZXhlY3V0b3IuCgojIEFyZ3VtZW50cwoqIGBlaWRgIC0gVGhlIGVuZHBvaW50IElECiogYG1zZ190eXBlYCAtIFRoZSBPQXBwIG1lc3NhZ2UgdHlwZQoqIGBleHRyYV9vcHRpb25zYCAtIEFkZGl0aW9uYWwgb3B0aW9ucyBwYXNzZWQgYnkgdGhlIGNhbGxlcgoKIyBSZXR1cm5zClRoZSBjb21iaW5hdGlvbiBvZiBjYWxsZXIgc3BlY2lmaWVkIG9wdGlvbnMgQU5EIGVuZm9yY2VkIG9wdGlvbnMAAAAAAA9jb21iaW5lX29wdGlvbnMAAAAAAwAAAAAAAAADZWlkAAAAAAQAAAAAAAAACG1zZ190eXBlAAAABAAAAAAAAAANZXh0cmFfb3B0aW9ucwAAAAAAAA4AAAABAAAADgAAAAAAAAC3Q2hlY2tzIGlmIGEgbWVzc2FnaW5nIHBhdGggY2FuIGJlIGluaXRpYWxpemVkIGZvciB0aGUgZ2l2ZW4gb3JpZ2luLgoKIyBBcmd1bWVudHMKKiBgb3JpZ2luYCAtIFRoZSBvcmlnaW4gb2YgdGhlIG1lc3NhZ2UKCiMgUmV0dXJucwpUcnVlIGlmIHRoZSBwYXRoIGNhbiBiZSBpbml0aWFsaXplZCwgZmFsc2Ugb3RoZXJ3aXNlAAAAABVhbGxvd19pbml0aWFsaXplX3BhdGgAAAAAAAABAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAABAAAAAQAAAAAAAAH4UmV0cmlldmVzIHRoZSBuZXh0IG5vbmNlIGZvciBhIGdpdmVuIHNvdXJjZSBlbmRwb2ludCBhbmQgc2VuZGVyIGFkZHJlc3MuCgpUaGUgcGF0aCBub25jZSBzdGFydHMgZnJvbSAxLiBJZiAwIGlzIHJldHVybmVkIGl0IG1lYW5zIHRoYXQgdGhlcmUgaXMgTk8gbm9uY2Ugb3JkZXJlZCBlbmZvcmNlbWVudC4KVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgb2ZmLWNoYWluIGV4ZWN1dG9yIHRvIGRldGVybWluZSBpZiB0aGUgT0FwcCBleHBlY3RzIG1lc3NhZ2UgZXhlY3V0aW9uIHRvIGJlIG9yZGVyZWQuClRoaXMgaXMgYWxzbyBlbmZvcmNlZCBieSB0aGUgT0FwcC4KQnkgZGVmYXVsdCB0aGlzIGlzIE5PVCBlbmFibGVkLCBpLmUuIG5leHRfbm9uY2UgaXMgaGFyZGNvZGVkIHRvIHJldHVybiAwLgoKIyBBcmd1bWVudHMKKiBgc3JjX2VpZGAgLSBUaGUgc291cmNlIGVuZHBvaW50IElECiogYHNlbmRlcmAgLSBUaGUgc2VuZGVyIE9BcHAgYWRkcmVzcwoKIyBSZXR1cm5zClRoZSBuZXh0IG5vbmNlAAAACm5leHRfbm9uY2UAAAAAAAIAAAAAAAAAB3NyY19laWQAAAAABAAAAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAAAEAAAAGAAAAAAAAAyNFbnRyeSBwb2ludCBmb3IgcmVjZWl2aW5nIG1lc3NhZ2VzIG9yIHBhY2tldHMgZnJvbSB0aGUgTGF5ZXJaZXJvIGVuZHBvaW50LgoKVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgYGNsZWFyX3BheWxvYWRfYW5kX3RyYW5zZmVyYCB0byB2YWxpZGF0ZSB0aGUgbWVzc2FnZQphbmQgY2xlYXIgaXQgZnJvbSB0aGUgZW5kcG9pbnQsIHRoZW4gZGVsZWdhdGVzIHRvIGBfX2x6X3JlY2VpdmVgIGZvciBhcHBsaWNhdGlvbiBsb2dpYy4KCiMgQXJndW1lbnRzCiogYGV4ZWN1dG9yYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBleGVjdXRvciBmb3IgdGhlIHJlY2VpdmVkIG1lc3NhZ2UKKiBgb3JpZ2luYCAtIFRoZSBvcmlnaW4gaW5mb3JtYXRpb24gY29udGFpbmluZyB0aGUgc291cmNlIGVuZHBvaW50IGFuZCBzZW5kZXIgYWRkcmVzczoKLSBgc3JjX2VpZGA6IFRoZSBzb3VyY2UgY2hhaW4gZW5kcG9pbnQgSUQKLSBgc2VuZGVyYDogVGhlIHNlbmRlciBhZGRyZXNzIG9uIHRoZSBzb3VyY2UgY2hhaW4KLSBgbm9uY2VgOiBUaGUgbm9uY2Ugb2YgdGhlIG1lc3NhZ2UKKiBgZ3VpZGAgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZWNlaXZlZCBMYXllclplcm8gbWVzc2FnZQoqIGBtZXNzYWdlYCAtIFRoZSBwYXlsb2FkIG9mIHRoZSByZWNlaXZlZCBtZXNzYWdlCiogYGV4dHJhX2RhdGFgIC0gQWRkaXRpb25hbCBhcmJpdHJhcnkgZGF0YSBwcm92aWRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBleGVjdXRvcgoqIGB2YWx1ZWAgLSBUaGUgbmF0aXZlIHRva2VuIHZhbHVlIHNlbnQgd2l0aCB0aGUgbWVzc2FnZQAAAAAKbHpfcmVjZWl2ZQAAAAAABgAAAAAAAAAIZXhlY3V0b3IAAAATAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAAAAAAABGd1aWQAAAPuAAAAIAAAAAAAAAAHbWVzc2FnZQAAAAAOAAAAAAAAAApleHRyYV9kYXRhAAAAAAAOAAAAAAAAAAV2YWx1ZQAAAAAAAAsAAAAAAAAAAAAAAexJbmRpY2F0ZXMgd2hldGhlciBhbiBhZGRyZXNzIGlzIGFuIGFwcHJvdmVkIGNvbXBvc2VNc2cgc2VuZGVyIHRvIHRoZSBFbmRwb2ludC4KCkFwcGxpY2F0aW9ucyBjYW4gb3B0aW9uYWxseSBjaG9vc2UgdG8gaW1wbGVtZW50IHNlcGFyYXRlIGNvbXBvc2VNc2cgc2VuZGVycyB0aGF0IGFyZSBOT1QgdGhlIGJyaWRnaW5nIGxheWVyLgpUaGUgZGVmYXVsdCBzZW5kZXIgSVMgdGhlIE9BcHBSZWNlaXZlciBpbXBsZW1lbnRlci4KCiMgQXJndW1lbnRzCiogYG9yaWdpbmAgLSBUaGUgb3JpZ2luIGluZm9ybWF0aW9uIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBlbmRwb2ludCBhbmQgc2VuZGVyIGFkZHJlc3MKKiBgbWVzc2FnZWAgLSBUaGUgbHpSZWNlaXZlIHBheWxvYWQKKiBgc2VuZGVyYCAtIFRoZSBzZW5kZXIgYWRkcmVzcyB0byBjaGVjawoKIyBSZXR1cm5zClRydWUgaWYgdGhlIHNlbmRlciBpcyBhIHZhbGlkIGNvbXBvc2VNc2cgc2VuZGVyLCBmYWxzZSBvdGhlcndpc2UAAAAVaXNfY29tcG9zZV9tc2dfc2VuZGVyAAAAAAAAAwAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAAAAAAdtZXNzYWdlAAAAAA4AAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAABAAAAAAAAAK5SZXRyaWV2ZXMgdGhlIE9BcHAgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCiMgUmV0dXJucwpBIHR1cGxlIGNvbnRhaW5pbmc6Ci0gYHNlbmRlcl92ZXJzaW9uYDogVGhlIHZlcnNpb24gb2YgdGhlIE9BcHBTZW5kZXIKLSBgcmVjZWl2ZXJfdmVyc2lvbmA6IFRoZSB2ZXJzaW9uIG9mIHRoZSBPQXBwUmVjZWl2ZXIAAAAAAAxvYXBwX3ZlcnNpb24AAAAAAAAAAQAAA+0AAAACAAAABgAAAAYAAAAAAAAAbFJldHJpZXZlcyB0aGUgTGF5ZXJaZXJvIGVuZHBvaW50IGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBPQXBwLgoKIyBSZXR1cm5zClRoZSBMYXllclplcm8gZW5kcG9pbnQgYWRkcmVzcwAAAAhlbmRwb2ludAAAAAAAAAABAAAAEwAAAAAAAADBUmV0cmlldmVzIHRoZSBwZWVyIChPQXBwKSBhc3NvY2lhdGVkIHdpdGggYSBjb3JyZXNwb25kaW5nIGVuZHBvaW50LgoKIyBBcmd1bWVudHMKKiBgZWlkYCAtIFRoZSBlbmRwb2ludCBJRAoKIyBSZXR1cm5zClRoZSBwZWVyIGFkZHJlc3MgKE9BcHAgaW5zdGFuY2UpIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBlbmRwb2ludAAAAAAAAARwZWVyAAAAAQAAAAAAAAADZWlkAAAAAAQAAAABAAAD6AAAA+4AAAAgAAAAAAAAAOVTZXRzIG9yIHJlbW92ZXMgdGhlIHBlZXIgYWRkcmVzcyAoT0FwcCBpbnN0YW5jZSkgZm9yIGEgY29ycmVzcG9uZGluZyBlbmRwb2ludC4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKKiBgcGVlcmAgLSBUaGUgYWRkcmVzcyBvZiB0aGUgcGVlciB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZW5kcG9pbnQsIG9yIE5vbmUgdG8gcmVtb3ZlIHRoZSBwZWVyAAAAAAAACHNldF9wZWVyAAAAAgAAAAAAAAADZWlkAAAAAAQAAAAAAAAABHBlZXIAAAPoAAAD7gAAACAAAAAAAAAAAAAAAI5TZXRzIHRoZSBkZWxlZ2F0ZSBhZGRyZXNzIGZvciB0aGUgT0FwcCBDb3JlLgoKIyBBcmd1bWVudHMKKiBgZGVsZWdhdGVgIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIGRlbGVnYXRlIHRvIGJlIHNldCwgb3IgTm9uZSB0byByZW1vdmUgdGhlIGRlbGVnYXRlAAAAAAAMc2V0X2RlbGVnYXRlAAAAAQAAAAAAAAAIZGVsZWdhdGUAAAPoAAAAEwAAAAAAAAAAAAABj1NldHMgVFRMIGNvbmZpZ3MgZm9yIGluc3RhbmNlIGFuZCBwZXJzaXN0ZW50IHN0b3JhZ2UuCgotIGBOb25lYCB2YWx1ZXMgcmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZyAoZGlzYWJsZXMgYXV0by1leHRlbnNpb24gZm9yIHRoYXQgdHlwZSkKLSBWYWxpZGF0ZXMgdGhhdCBgdGhyZXNob2xkIDw9IGV4dGVuZF90byA8PSBNQVhfVFRMYAoKIyBBcmd1bWVudHMKLSBgaW5zdGFuY2VgIC0gVFRMIGNvbmZpZyBmb3IgaW5zdGFuY2Ugc3RvcmFnZQotIGBwZXJzaXN0ZW50YCAtIFRUTCBjb25maWcgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZQoKIyBQYW5pY3MKLSBgVHRsQ29uZmlnRnJvemVuYCBpZiBjb25maWdzIGFyZSBmcm96ZW4KLSBgSW52YWxpZFR0bENvbmZpZ2AgaWYgdmFsaWRhdGlvbiBmYWlscwAAAAAPc2V0X3R0bF9jb25maWdzAAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAEhSZXR1cm5zIHRoZSBjdXJyZW50IFRUTCBjb25maWdzIGFzIChpbnN0YW5jZV9jb25maWcsIHBlcnNpc3RlbnRfY29uZmlnKS4AAAALdHRsX2NvbmZpZ3MAAAAAAAAAAAEAAAPtAAAAAgAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAADhUGVybWFuZW50bHkgZnJlZXplcyBUVEwgY29uZmlncywgcHJldmVudGluZyBhbnkgZnV0dXJlIG1vZGlmaWNhdGlvbnMuCgpUaGlzIGlzIGlycmV2ZXJzaWJsZSBhbmQgcHJvdmlkZXMgaW1tdXRhYmlsaXR5IGd1YXJhbnRlZXMgdG8gdXNlcnMuCkVtaXRzIGBUdGxDb25maWdzRnJvemVuYCBldmVudC4KCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0FscmVhZHlGcm96ZW5gIGlmIGFscmVhZHkgZnJvemVuAAAAAAAAEmZyZWV6ZV90dGxfY29uZmlncwAAAAAAAAAAAAAAAAAAAAAAJ1JldHVybnMgd2hldGhlciBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAVaXNfdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAAEAAAABAAAAAAAAAKVFeHRlbmRzIHRoZSBpbnN0YW5jZSBUVEwuCgojIEFyZ3VtZW50cwoKKiBgdGhyZXNob2xkYCAtIFRoZSB0aHJlc2hvbGQgdG8gZXh0ZW5kIHRoZSBUVEwgKGlmIGN1cnJlbnQgVFRMIGlzIGJlbG93IHRoaXMsIGV4dGVuZCkuCiogYGV4dGVuZF90b2AgLSBUaGUgVFRMIHRvIGV4dGVuZCB0by4AAAAAAAATZXh0ZW5kX2luc3RhbmNlX3R0bAAAAAACAAAAAAAAAAl0aHJlc2hvbGQAAAAAAAAEAAAAAAAAAAlleHRlbmRfdG8AAAAAAAAEAAAAAAAAAAAAAAA+UmV0dXJucyB0aGUgY3VycmVudCBvd25lciBhZGRyZXNzLCBvciBOb25lIGlmIG5vIG93bmVyIGlzIHNldC4AAAAAAAVvd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAAAWVJldHVybnMgdGhlIHBlbmRpbmcgb3duZXIgYWRkcmVzcyBmb3IgMi1zdGVwIHRyYW5zZmVyLCBvciBOb25lIGlmIG5vIHRyYW5zZmVyIGlzIHBlbmRpbmcuAAAAAAAADXBlbmRpbmdfb3duZXIAAAAAAAAAAAAAAQAAA+gAAAATAAAAAAAAAStUcmFuc2ZlcnMgb3duZXJzaGlwIGltbWVkaWF0ZWx5IHRvIGEgbmV3IGFkZHJlc3MuCgpVc2Ugd2l0aCBjYXV0aW9uIC0gaWYgeW91IHRyYW5zZmVyIHRvIGEgd3JvbmcgYWRkcmVzcywgb3duZXJzaGlwIGlzIGxvc3QgZm9yZXZlci4KQ29uc2lkZXIgdXNpbmcgYHByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyYCBpbnN0ZWFkLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgVHJhbnNmZXJJblByb2dyZXNzYCBpZiBhIDItc3RlcCB0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcwAAAAASdHJhbnNmZXJfb3duZXJzaGlwAAAAAAABAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAJcUHJvcG9zZXMgYW4gb3duZXJzaGlwIHRyYW5zZmVyIHRvIGEgbmV3IGFkZHJlc3MuCgpUaGUgbmV3IG93bmVyIG11c3QgY2FsbCBgYWNjZXB0X293bmVyc2hpcCgpYCB3aXRoaW4gYHR0bGAgbGVkZ2Vycwp0byBjb21wbGV0ZSB0aGUgdHJhbnNmZXIuIFRoZSBwZW5kaW5nIHRyYW5zZmVyIHdpbGwgYXV0b21hdGljYWxseSBleHBpcmUgYWZ0ZXIuCgojIEFyZ3VtZW50cwotIGBuZXdfb3duZXJgIC0gVGhlIHByb3Bvc2VkIG5ldyBvd25lcgotIGB0dGxgIC0gTnVtYmVyIG9mIGxlZGdlcnMgdGhlIG5ldyBvd25lciBoYXMgdG8gYWNjZXB0LgpVc2UgYDBgIHRvIGNhbmNlbCBhIHBlbmRpbmcgdHJhbnNmZXIgKG5ld19vd25lciBtdXN0IG1hdGNoIHBlbmRpbmcpLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIHdoZW4gY2FuY2VsbGluZyBhbmQgbm8gcGVuZGluZyB0cmFuc2ZlciBleGlzdHMKLSBgSW52YWxpZFR0bGAgaWYgdHRsIGV4Y2VlZHMgbWF4IFRUTAotIGBJbnZhbGlkUGVuZGluZ093bmVyYCB3aGVuIGNhbmNlbGxpbmcgd2l0aCB3cm9uZyBuZXdfb3duZXIgYWRkcmVzcwAAABpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgAAAAAAAgAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAAAAALlBY2NlcHRzIGEgcGVuZGluZyAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyLgoKTXVzdCBiZSBjYWxsZWQgYnkgdGhlIHBlbmRpbmcgb3duZXIgYmVmb3JlIHRoZSBUVEwgZXhwaXJlcy4KCiMgUGFuaWNzCi0gYE5vUGVuZGluZ1RyYW5zZmVyYCBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIHRyYW5zZmVyIChvciBpdCBleHBpcmVkKQAAAAAAABBhY2NlcHRfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAAApFBlcm1hbmVudGx5IHJlbm91bmNlcyBvd25lcnNoaXAuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzIChjYW5jZWwgaXQgZmlyc3QpAAAAEnJlbm91bmNlX293bmVyc2hpcAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAANRW5kcG9pbnRFcnJvcgAAAAAAABkAAAAAAAAAEUFscmVhZHlSZWdpc3RlcmVkAAAAAAAAAQAAAAAAAAANQ29tcG9zZUV4aXN0cwAAAAAAAAIAAAAAAAAAD0NvbXBvc2VOb3RGb3VuZAAAAAADAAAAAAAAABxEZWZhdWx0UmVjZWl2ZUxpYlVuYXZhaWxhYmxlAAAABAAAAAAAAAAZRGVmYXVsdFNlbmRMaWJVbmF2YWlsYWJsZQAAAAAAAAUAAAAAAAAAFUluc3VmZmljaWVudE5hdGl2ZUZlZQAAAAAAAAYAAAAAAAAAEkluc3VmZmljaWVudFpyb0ZlZQAAAAAABwAAAAAAAAAQSW52YWxpZEZlZUFtb3VudAAAAAgAAAAAAAAADUludmFs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bmF0aW9uIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAB2RzdF9laWQAAAAABAAAABxUaGUgbWVzc2FnZSBwYXlsb2FkIHRvIHNlbmQuAAAAB21lc3NhZ2UAAAAADgAAACFFbmNvZGVkIGV4ZWN1dG9yIGFuZCBEVk4gb3B0aW9ucy4AAAAAAAAHb3B0aW9ucwAAAAAOAAAAOVdoZXRoZXIgdG8gcGF5IGZlZXMgaW4gWlJPIHRva2VuIGluc3RlYWQgb2YgbmF0aXZlIHRva2VuLgAAAAAAAApwYXlfaW5fenJvAAAAAAABAAAANVJlY2VpdmVyIGFkZHJlc3Mgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAABAAAATVNvdXJjZSBtZXNzYWdlIGluZm9ybWF0aW9uIGlkZW50aWZ5aW5nIHdoZXJlIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZSBjYW1lIGZyb20uAAAAAAAAAAAAAAZPcmlnaW4AAAAAAAMAAAAXTm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAABW5vbmNlAAAAAAAABgAAAC5TZW5kZXIgYWRkcmVzcyBvbiB0aGUgc291cmNlIGNoYWluICgzMiBieXRlcykuAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAACZTb3VyY2UgZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAAB3NyY19laWQAAAAABAAAAAEAAAAoRmVlIHN0cnVjdHVyZSBmb3IgY3Jvc3MtY2hhaW4gbWVzc2FnaW5nLgAAAAAAAAAMTWVzc2FnaW5nRmVlAAAAAgAAAB9GZWUgcGFpZCBpbiBuYXRpdmUgdG9rZW4gKFhMTSkuAAAAAApuYXRpdmVfZmVlAAAAAAALAAAAKEZlZSBwYWlkIGluIFpSTyB0b2tlbiAoTGF5ZXJaZXJvIHRva2VuKS4AAAAHenJvX2ZlZQAAAAALAAAAAQAAAEJSZWNlaXB0IHJldHVybmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBzZW5kaW5nIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4AAAAAAAAAAAAQTWVzc2FnaW5nUmVjZWlwdAAAAAMAAAApVGhlIGZlZXMgY2hhcmdlZCBmb3Igc2VuZGluZyB0aGUgbWVzc2FnZS4AAAAAAAADZmVlAAAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAK0dsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbWVzc2FnZS4AAAAABGd1aWQAAAPuAAAAIAAAACRUaGUgb3V0Ym91bmQgbm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAFbm9uY2UAAAAAAAAGAAAAAgAAADhUeXBlIG9mIG1lc3NhZ2UgbGlicmFyeSBpbmRpY2F0aW5nIHN1cHBvcnRlZCBvcGVyYXRpb25zLgAAAAAAAAAOTWVzc2FnZUxpYlR5cGUAAAAAAAMAAAAAAAAAH1N1cHBvcnRzIG9ubHkgc2VuZGluZyBtZXNzYWdlcy4AAAAABFNlbmQAAAAAAAAAIVN1cHBvcnRzIG9ubHkgcmVjZWl2aW5nIG1lc3NhZ2VzLgAAAAAAAAdSZWNlaXZlAAAAAAAAAAAtU3VwcG9ydHMgYm90aCBzZW5kaW5nIGFuZCByZWNlaXZpbmcgbWVzc2FnZXMuAAAAAAAADlNlbmRBbmRSZWNlaXZlAAAAAAABAAAAt1ZlcnNpb24gaW5mb3JtYXRpb24gZm9yIGEgbWVzc2FnZSBsaWJyYXJ5LgoKTm90ZTogYG1pbm9yYCBhbmQgYGVuZHBvaW50X3ZlcnNpb25gIHVzZSBgdTMyYCBpbnN0ZWFkIG9mIGB1OGAgYmVjYXVzZSBTdGVsbGFyIGRvZXMgbm90CnN1cHBvcnQgYHU4YCB0eXBlcyBpbiBjb250cmFjdCBpbnRlcmZhY2UgZnVuY3Rpb25zLgAAAAAAAAAAEU1lc3NhZ2VMaWJWZXJzaW9uAAAAAAAAAwAAADNFbmRwb2ludCB2ZXJzaW9uIChzaG91bGQgbm90IGV4Y2VlZCB1ODo6TUFYID0gMjU1KS4AAAAAEGVuZHBvaW50X3ZlcnNpb24AAAAEAAAAFU1ham9yIHZlcnNpb24gbnVtYmVyLgAAAAAAAAVtYWpvcgAAAAAAAAYAAAA3TWlub3IgdmVyc2lvbiBudW1iZXIgKHNob3VsZCBub3QgZXhjZWVkIHU4OjpNQVggPSAyNTUpLgAAAAAFbWlub3IAAAAAAAAEAAAAAQAAADZUaW1lb3V0IGNvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmUgbGlicmFyeSB0cmFuc2l0aW9ucy4AAAAAAAAAAAAHVGltZW91dAAAAAACAAAAKFVuaXggdGltZXN0YW1wIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4AAAAGZXhwaXJ5AAAAAAAGAAAAKVRoZSBuZXcgbGlicmFyeSBhZGRyZXNzIHRvIHRyYW5zaXRpb24gdG8uAAAAAAAAA2xpYgAAAAATAAAAAQAAADVQYXJhbWV0ZXJzIGZvciBzZXR0aW5nIG1lc3NhZ2UgbGlicmFyeSBjb25maWd1cmF0aW9uLgAAAAAAAAAAAAAOU2V0Q29uZmlnUGFyYW0AAAAAAAMAAAAfWERSLWVuY29kZWQgY29uZmlndXJhdGlvbiBkYXRhLgAAAAAGY29uZmlnAAAAAAAOAAAAMFRoZSB0eXBlIG9mIGNvbmZpZ3VyYXRpb24gKGUuZy4sIGV4ZWN1dG9yLCBVTE4pLgAAAAtjb25maWdfdHlwZQAAAAAEAAAAJ1RoZSBlbmRwb2ludCBJRCB0aGlzIGNvbmZpZyBhcHBsaWVzIHRvLgAAAAADZWlkAAAAAAQAAAABAAAAMVJlc29sdmVkIGxpYnJhcnkgaW5mb3JtYXRpb24gd2l0aCBkZWZhdWx0IHN0YXR1cy4AAAAAAAAAAAAAD1Jlc29sdmVkTGlicmFyeQAAAAACAAAARFdoZXRoZXIgdGhpcyBpcyB0aGUgZGVmYXVsdCBsaWJyYXJ5ICh0cnVlKSBvciBPQXBwLXNwZWNpZmljIChmYWxzZSkuAAAACmlzX2RlZmF1bHQAAAAAAAEAAAAdVGhlIHJlc29sdmVkIGxpYnJhcnkgYWRkcmVzcy4AAAAAAAADbGliAAAAABMAAAABAAAASE91dGJvdW5kIHBhY2tldCBjb250YWluaW5nIGFsbCBpbmZvcm1hdGlvbiBmb3IgY3Jvc3MtY2hhaW4gdHJhbnNtaXNzaW9uLgAAAAAAAAAOT3V0Ym91bmRQYWNrZXQAAAAAAAcAAAAYRGVzdGluYXRpb24gZW5kcG9pbnQgSUQuAAAAB2RzdF9laWQAAAAABAAAACxHbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBtZXNzYWdlLgAAAARndWlkAAAD7gAAACAAAAAUVGhlIG1lc3NhZ2UgcGF5bG9hZC4AAAAHbWVzc2FnZQAAAAAOAAAAIE91dGJvdW5kIG5vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAABW5vbmNlAAAAAAAABgAAADFSZWNlaXZlciBhZGRyZXNzIG9uIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAAfU2VuZGVyIGFkZHJlc3Mgb24gc291cmNlIGNoYWluLgAAAAAGc2VuZGVyAAAAAAATAAAAE1NvdXJjZSBlbmRwb2ludCBJRC4AAAAAB3NyY19laWQAAAAABAAAAAEAAAArQSBmZWUgcmVjaXBpZW50IHdpdGggdGhlIGFtb3VudCB0byBiZSBwYWlkLgAAAAAAAAAADEZlZVJlY2lwaWVudAAAAAIAAAAVQW1vdW50IG9mIGZlZSB0byBwYXkuAAAAAAAABmFtb3VudAAAAAAACwAAAB9UaGUgYWRkcmVzcyB0byBzZW5kIHRoZSBmZWUgdG8uAAAAAAJ0bwAAAAAAEwAAAAEAAAA8UmVzdWx0IG9mIHNlbmQgb3BlcmF0aW9uIGNvbnRhaW5pbmcgZmVlcyBhbmQgZW5jb2RlZCBwYWNrZXQuAAAAAAAAAA1GZWVzQW5kUGFja2V0AAAAAAAAAwAAACpUaGUgZW5jb2RlZCBwYWNrZXQgcmVhZHkgZm9yIHRyYW5zbWlzc2lvbi4AAAAAAA5lbmNvZGVkX3BhY2tldAAAAAAADgAAAD9MaXN0IG9mIG5hdGl2ZSB0b2tlbiBmZWUgcmVjaXBpZW50cyAoZXhlY3V0b3IsIERWTnMsIHRyZWFzdXJ5KS4AAAAAFW5hdGl2ZV9mZWVfcmVjaXBpZW50cwAAAAAAA+oAAAfQAAAADEZlZVJlY2lwaWVudAAAACxMaXN0IG9mIFpSTyB0b2tlbiBmZWUgcmVjaXBpZW50cyAodHJlYXN1cnkpLgAAABJ6cm9fZmVlX3JlY2lwaWVudHMAAAAAA+oAAAfQAAAADEZlZVJlY2lwaWVudAAAAAQAAAAUT0FwcEVycm9yOiAyMDAwLTIwOTkAAAAAAAAACU9BcHBFcnJvcgAAAAAAAAQAAAAAAAAADkludmFsaWRPcHRpb25zAAAAAAfQAAAAAAAAAAZOb1BlZXIAAAAAB9EAAAAAAAAACE9ubHlQZWVyAAAH0gAAAAAAAAATWnJvVG9rZW5VbmF2YWlsYWJsZQAAAAfTAAAAAgAAAAAAAAAAAAAAD09BcHBDb3JlU3RvcmFnZQAAAAACAAAAAAAAAAAAAAAIRW5kcG9pbnQAAAABAAAAAAAAAARQZWVyAAAAAQAAAAQAAAAFAAAAAAAAAAAAAAAHUGVlclNldAAAAAABAAAACHBlZXJfc2V0AAAAAgAAAAAAAAADZWlkAAAAAAQAAAAAAAAAAAAAAARwZWVyAAAD6AAAA+4AAAAgAAAAAAAAAAIAAAABAAAAAAAAAAAAAAATRW5mb3JjZWRPcHRpb25QYXJhbQAAAAADAAAAAAAAAANlaWQAAAAABAAAAAAAAAAIbXNnX3R5cGUAAAAEAAAAAAAAAAdvcHRpb25zAAAAAA4AAAACAAAAAAAAAAAAAAAXT0FwcE9wdGlvbnNUeXBlM1N0b3JhZ2UAAAAAAQAAAAEAAAAAAAAAD0VuZm9yY2VkT3B0aW9ucwAAAAACAAAABAAAAAQAAAAFAAAAAAAAAAAAAAARRW5mb3JjZWRPcHRpb25TZXQAAAAAAAABAAAAE2VuZm9yY2VkX29wdGlvbl9zZXQAAAAAAQAAAAAAAAAWZW5mb3JjZWRfb3B0aW9uX3BhcmFtcwAAAAAD6gAAB9AAAAATRW5mb3JjZWRPcHRpb25QYXJhbQAAAAAAAAAAAgAAAAQAAAATT0ZURXJyb3I6IDMwMDAtMzA5OQAAAAAAAAAACE9GVEVycm9yAAAABAAAAAAAAAAUSW52YWxpZExvY2FsRGVjaW1hbHMAAAu4AAAAAAAAAA5Ob3RJbml0aWFsaXplZAAAAAALuQAAAAAAAAAIT3ZlcmZsb3cAAAu6AAAAAAAAABBTbGlwcGFnZUV4Y2VlZGVkAAALuwAAAAUAAAAAAAAAAAAAAAdPRlRTZW50AAAAAAEAAAAIb2Z0X3NlbnQAAAAFAAAAAAAAAARndWlkAAAD7gAAACAAAAAAAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAAAAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAAAAAADmFtb3VudF9zZW50X2xkAAAAAAALAAAAAAAAAAAAAAASYW1vdW50X3JlY2VpdmVkX2xkAAAAAAALAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAALT0ZUUmVjZWl2ZWQAAAAAAQAAAAxvZnRfcmVjZWl2ZWQAAAAEAAAAAAAAAARndWlkAAAD7gAAACAAAAAAAAAAAAAAAAdzcmNfZWlkAAAAAAQAAAAAAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAAAAAAEmFtb3VudF9yZWNlaXZlZF9sZAAAAAAACwAAAAAAAAACAAAAAgAAAAAAAAAAAAAACk9GVFN0b3JhZ2UAAAAAAAIAAAAAAAAAAAAAABVEZWNpbWFsQ29udmVyc2lvblJhdGUAAAAAAAAAAAAAAAAAAAVUb2tlbgAAAAAAAAEAAAAtUGFyYW1ldGVycyBmb3Igc2VuZGluZyBPRlQgdG9rZW5zIGNyb3NzLWNoYWluAAAAAAAAAAAAAAlTZW5kUGFyYW0AAAAAAAAHAAAAJFRoZSBhbW91bnQgdG8gc2VuZCBpbiBsb2NhbCBkZWNpbWFscwAAAAlhbW91bnRfbGQAAAAAAAALAAAAOENvbXBvc2UgbWVzc2FnZSB0byBleGVjdXRlIG9uIHRoZSBkZXN0aW5hdGlvbiAoT3B0aW9uYWwpAAAAC2NvbXBvc2VfbXNnAAAAAA4AAAAbVGhlIGRlc3RpbmF0aW9uIGVuZHBvaW50IElEAAAAAAdkc3RfZWlkAAAAAAQAAAA3QWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgTGF5ZXJaZXJvIG1lc3NhZ2UgKE9wdGlvbmFsKQAAAAANZXh0cmFfb3B0aW9ucwAAAAAAAA4AAABFVGhlIG1pbmltdW0gYW1vdW50IHRvIHJlY2VpdmUgaW4gbG9jYWwgZGVjaW1hbHMgKHNsaXBwYWdlIHByb3RlY3Rpb24pAAAAAAAADW1pbl9hbW91bnRfbGQAAAAAAAALAAAAKk9GVCBjb21tYW5kIGZvciBjdXN0b20gYmVoYXZpb3IgKE9wdGlvbmFsKQAAAAAAB29mdF9jbWQAAAAADgAAADlUaGUgcmVjaXBpZW50IGFkZHJlc3Mgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykAAAAAAAACdG8AAAAAA+4AAAAgAAAAAQAAACJUcmFuc2ZlciBsaW1pdHMgZm9yIE9GVCBvcGVyYXRpb25zAAAAAAAAAAAACE9GVExpbWl0AAAAAgAAACxUaGUgbWF4aW11bSBhbW91bnQgdG8gc2VuZCBpbiBsb2NhbCBkZWNpbWFscwAAAA1tYXhfYW1vdW50X2xkAAAAAAAACwAAACxUaGUgbWluaW11bSBhbW91bnQgdG8gc2VuZCBpbiBsb2NhbCBkZWNpbWFscwAAAA1taW5fYW1vdW50X2xkAAAAAAAACwAAAAEAAAA/UmVjZWlwdCBjb250YWluaW5nIGFtb3VudHMgc2VudCBhbmQgcmVjZWl2ZWQgaW4gYW4gT0ZUIHRyYW5zZmVyAAAAAAAAAAAKT0ZUUmVjZWlwdAAAAAAAAgAAADNUaGUgYW1vdW50IHJlY2VpdmVkIGluIGxvY2FsIGRlY2ltYWxzIG9uIHRoZSByZW1vdGUAAAAAEmFtb3VudF9yZWNlaXZlZF9sZAAAAAAACwAAACFUaGUgYW1vdW50IHNlbnQgaW4gbG9jYWwgZGVjaW1hbHMAAAAAAAAOYW1vdW50X3NlbnRfbGQAAAAAAAsAAAABAAAALkRldGFpbHMgYWJvdXQgZmVlcyBjaGFyZ2VkIGluIGFuIE9GVCBvcGVyYXRpb24AAAAAAAAAAAAMT0ZURmVlRGV0YWlsAAAAAgAAABpUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGZlZQAAAAAAC2Rlc2NyaXB0aW9uAAAAAA4AAAB/VGhlIGFtb3VudCBvZiB0aGUgZmVlIGluIGxvY2FsIGRlY2ltYWxzLiBQb3NpdGl2ZSB2YWx1ZXMgcmVwcmVzZW50IGZlZXMgY2hhcmdlZCwKd2hpbGUgbmVnYXRpdmUgdmFsdWVzIHJlcHJlc2VudCByZXdhcmRzIGdpdmVuLgAAAAANZmVlX2Ftb3VudF9sZAAAAAAAAAsAAAAEAAAAHEJ1ZmZlclJlYWRlckVycm9yOiAxMDAwLTEwMDkAAAAAAAAAEUJ1ZmZlclJlYWRlckVycm9yAAAAAAAAAgAAAAAAAAANSW52YWxpZExlbmd0aAAAAAAAA+gAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA+kAAAAEAAAAHEJ1ZmZlcldyaXRlckVycm9yOiAxMDEwLTEwMTkAAAAAAAAAEUJ1ZmZlcldyaXRlckVycm9yAAAAAAAAAQAAAAAAAAAVSW52YWxpZEFkZHJlc3NQYXlsb2FkAAAAAAAD8gAAAAQAAAAfVHRsQ29uZmlndXJhYmxlRXJyb3I6IDEwMjAtMTAyOQAAAAAAAAAAFFR0bENvbmZpZ3VyYWJsZUVycm9yAAAAAwAAAAAAAAAQSW52YWxpZFR0bENvbmZpZwAAA/wAAAAAAAAAD1R0bENvbmZpZ0Zyb3plbgAAAAP9AAAAAAAAABZUdGxDb25maWdBbHJlYWR5RnJvemVuAAAAAAP+AAAABAAAABdPd25hYmxlRXJyb3I6IDEwMzAtMTAzOQAAAAAAAAAADE93bmFibGVFcnJvcgAAAAYAAAAAAAAAE0ludmFsaWRQZW5kaW5nT3duZXIAAAAEBgAAAAAAAAAKSW52YWxpZFR0bAAAAAAEBwAAAAAAAAARTm9QZW5kaW5nVHJhbnNmZXIAAAAAAAQIAAAAAAAAAA9Pd25lckFscmVhZHlTZXQAAAAECQAAAAAAAAALT3duZXJOb3RTZXQAAAAECgAAAAAAAAASVHJhbnNmZXJJblByb2dyZXNzAAAAAAQLAAAABAAAABhCeXRlc0V4dEVycm9yOiAxMDQwLTEwNDkAAAAAAAAADUJ5dGVzRXh0RXJyb3IAAAAAAAABAAAAAAAAAA5MZW5ndGhNaXNtYXRjaAAAAAAEEAAAAAQAAAAbVXBncmFkZWFibGVFcnJvcjogMTA1MC0xMDU5AAAAAAAAAAAQVXBncmFkZWFibGVFcnJvcgAAAAEAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGgAAAAQAAAAYTXVsdGlzaWdFcnJvcjogMTA2MC0xMDY5AAAAAAAAAA1NdWx0aXNpZ0Vycm9yAAAAAAAACAAAAAAAAAASQWxyZWFkeUluaXRpYWxpemVkAAAAAAQkAAAAAAAAAA1JbnZhbGlkU2lnbmVyAAAAAAAEJQAAAAAAAAAOU2lnbmF0dXJlRXJyb3IAAAAABCYAAAAAAAAAE1NpZ25lckFscmVhZHlFeGlzdHMAAAAEJwAAAAAAAAAOU2lnbmVyTm90Rm91bmQAAAAABCgAAAAAAAAAHVRvdGFsU2lnbmVyc0xlc3NUaGFuVGhyZXNob2xkAAAAAAAEKQAAAAAAAAAPVW5zb3J0ZWRTaWduZXJzAAAABCoAAAAAAAAADVplcm9UaHJlc2hvbGQAAAAAAAQrAAAABQAAADBFdmVudCBlbWl0dGVkIHdoZW4gYSBzaWduZXIgaXMgYWRkZWQgb3IgcmVtb3ZlZC4AAAAAAAAACVNpZ25lclNldAAAAAAAAAEAAAAKc2lnbmVyX3NldAAAAAAAAgAAAAAAAAAGc2lnbmVyAAAAAAPuAAAAFAAAAAEAAAAAAAAABmFjdGl2ZQAAAAAAAQAAAAAAAAACAAAABQAAADZFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNpZ25hdHVyZSB0aHJlc2hvbGQgaXMgY2hhbmdlZC4AAAAAAAAAAAAMVGhyZXNob2xkU2V0AAAAAQAAAA10aHJlc2hvbGRfc2V0AAAAAAAAAQAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAD011bHRpc2lnU3RvcmFnZQAAAAACAAAAAAAAAAAAAAAHU2lnbmVycwAAAAAAAAAAAAAAAAlUaHJlc2hvbGQAAAAAAAAFAAAAV0V2ZW50IGVtaXR0ZWQgd2hlbiBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgKGJvdGggc2luZ2xlLXN0ZXAgYW5kIHR3by1zdGVwIGNvbXBsZXRpb24pLgAAAAAAAAAAFE93bmVyc2hpcFRyYW5zZmVycmVkAAAAAQAAABVvd25lcnNoaXBfdHJhbnNmZXJyZWQAAAAAAAACAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAACAAAABQAAADtFdmVudCBlbWl0dGVkIHdoZW4gYSAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyIGlzIHByb3Bvc2VkLgAAAAAAAAAAFU93bmVyc2hpcFRyYW5zZmVycmluZwAAAAAAAAEAAAAWb3duZXJzaGlwX3RyYW5zZmVycmluZwAAAAAAAwAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAAN0dGwAAAAABAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHJlbm91bmNlZC4AAAAAAAAAAAAST3duZXJzaGlwUmVub3VuY2VkAAAAAAABAAAAE293bmVyc2hpcF9yZW5vdW5jZWQAAAAAAQAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAACAAAAAgAAAAAAAAAAAAAADk93bmFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAFT3duZXIAAAAAAAAAAAAAAAAAAAxQZW5kaW5nT3duZXIAAAABAAAASVRUTCBjb25maWd1cmF0aW9uOiB0aHJlc2hvbGQgKHdoZW4gdG8gZXh0ZW5kKSBhbmQgZXh0ZW5kX3RvICh0YXJnZXQgVFRMKS4AAAAAAAAAAAAACVR0bENvbmZpZwAAAAAAAAIAAAAoVGFyZ2V0IFRUTCBhZnRlciBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAlleHRlbmRfdG8AAAAAAAAEAAAAM1RUTCB0aHJlc2hvbGQgdGhhdCB0cmlnZ2VycyBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAUAAAAnRXZlbnQgZW1pdHRlZCB3aGVuIFRUTCBjb25maWdzIGFyZSBzZXQuAAAAAAAAAAANVHRsQ29uZmlnc1NldAAAAAAAAAEAAAAPdHRsX2NvbmZpZ3Nfc2V0AAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAIAAAAFAAAAKkV2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAAAAAAABBUdGxDb25maWdzRnJvemVuAAAAAQAAABJ0dGxfY29uZmlnc19mcm96ZW4AAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAEFR0bENvbmZpZ1N0b3JhZ2UAAAADAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAhJbnN0YW5jZQAAAAAAAAAAAAAAClBlcnNpc3RlbnQAAAAAAAIAAAAAAAAAAAAAABJVcGdyYWRlYWJsZVN0b3JhZ2UAAAAAAAEAAAAAAAAAAAAAAAlNaWdyYXRpbmcAAAAAHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAXAAAAAABvDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjMuNC4wIzY3M2Q2YzRmMjM2OGQyODJkMjVkYTI5YmRhNTVjMjFiOGJlNjljYTYA";
|
|
11
|
+
export declare const WASM_BASE64 = "AGFzbQEAAAABgQIpYAF+AX5gAn5+AX5gA35+fgF+YAR+fn5+AX5gAAF+YAF+AX9gAn9/AX9gBX5+fn5+AGACf38BfmADfn5+AGAEf39/fwBgA39/fwBgBH9/fn4AYAN/f38BfmABfwBgAn9/AGACfn8BfmABfgBgAn5+AX9gAn9+AGAAAGAAAX9gAX8BfmACfn8AYAN/fn4AYAR/fn5+AGAEf39/fwF+YAV/fn9+fgBgA35/fwBgAX8Bf2ACf34Bf2AFfn9/f38AYAZ/fn5+fn8AYAV/fn5+fgBgBn5+fn5+fgF+YAR+fn5+AGACfn4AYAJ+fwF/YAR+fn9/AX5gBH9+fn8AYAN/f38BfwLlASYBdgEzAAABdgExAAEBYgFtAAIBbAE3AAMBbAFfAAIBYgE4AAABYgFlAAEBbAExAAEBYgE0AAQBYQEwAAABYgFfAAABYgFmAAIBeAE3AAQBeAExAAEBbAEyAAEBdgFfAAQBZAFfAAIBYQE2AAABaQFfAAABaQEwAAABYgExAAMBYgEzAAEBdgFnAAEBaQE4AAABaQE3AAABaQE2AAEBYgFqAAEBYgEyAAMBbQE5AAIBbQFhAAMBeAEwAAEBYgEwAAABeAE0AAQBeAEzAAQBeAE4AAQBbAEwAAEBbAE4AAEBeAE1AAADuwG5AQUGBwEICQcKCAsIDAANDg8IDhARCBIOCg8IEwsEFBUWFAQEDhcUDhYOBAsTGAETBBYZDxgaERsOExwTHR4eDhQOBA8EFg8EBA4UFQwLDwQLDBMTHxMOCAALICECAQEBAAEAEgQAAAQABAATCCEEBAUEBAQBABMTFgIWEyEDFQAiDw8RIwQEBAQAJAEUFRgEBAEBExYEDwQEBAQAAQAAEwEiFgglARQmAgEAAhQLEwsPCyAnISEnKCghBAUBcAEBAQUDAQARBiEEfwFBgIDAAAt/AEH0iMAAC38AQaKLwAALfwBBsIvAAAsHoQc1Bm1lbW9yeQIADnNldF9yYXRlX2xpbWl0AIEBEXJhdGVfbGltaXRfY29uZmlnAIIBFHJhdGVfbGltaXRfaW5fZmxpZ2h0AIMBE3JhdGVfbGltaXRfY2FwYWNpdHkAhAETc2V0X2RlZmF1bHRfZmVlX2JwcwCFAQtzZXRfZmVlX2JwcwCGARdzZXRfZmVlX2RlcG9zaXRfYWRkcmVzcwCHAQ9kZWZhdWx0X2ZlZV9icHMAiQEHZmVlX2JwcwCKARFlZmZlY3RpdmVfZmVlX2JwcwCLARNmZWVfZGVwb3NpdF9hZGRyZXNzAIwBCnNldF9wYXVzZWQAjQEJaXNfcGF1c2VkAI4BCXF1b3RlX29mdACPAQV0b2tlbgCTAQ9zaGFyZWRfZGVjaW1hbHMAlAEXZGVjaW1hbF9jb252ZXJzaW9uX3JhdGUAlgERYXBwcm92YWxfcmVxdWlyZWQAlwENbXNnX2luc3BlY3RvcgCYARFzZXRfbXNnX2luc3BlY3RvcgCaAQpxdW90ZV9zZW5kAJ4BBHNlbmQAogENX19jb25zdHJ1Y3RvcgClAQhvZnRfdHlwZQCqAQphdXRob3JpemVyAKsBBW93bmVyAKwBDXBlbmRpbmdfb3duZXIArQESdHJhbnNmZXJfb3duZXJzaGlwAK4BGnByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyALABEGFjY2VwdF9vd25lcnNoaXAAtAEScmVub3VuY2Vfb3duZXJzaGlwALUBE2V4dGVuZF9pbnN0YW5jZV90dGwAtgEPc2V0X3R0bF9jb25maWdzALcBC3R0bF9jb25maWdzALoBEmZyZWV6ZV90dGxfY29uZmlncwC8ARVpc190dGxfY29uZmlnc19mcm96ZW4AvQEMb2FwcF92ZXJzaW9uAL4BCGVuZHBvaW50AL8BBHBlZXIAwAEIc2V0X3BlZXIAwQEMc2V0X2RlbGVnYXRlAMIBFWFsbG93X2luaXRpYWxpemVfcGF0aADDAQpuZXh0X25vbmNlAMUBCmx6X3JlY2VpdmUAxgEVaXNfY29tcG9zZV9tc2dfc2VuZGVyAM0BEGVuZm9yY2VkX29wdGlvbnMAzgEUc2V0X2VuZm9yY2VkX29wdGlvbnMAzwEPY29tYmluZV9vcHRpb25zANABAV8DAQtvZnRfdmVyc2lvbgC+AQpfX2RhdGFfZW5kAwILX19oZWFwX2Jhc2UDAwq46wG5Aa4BAwF/AX4Cf0ECIQECQCAAQv8Bg0LLAFINACAAEICAgIAAIgJCgICAgBBUDQACQCAAQgQQgYCAgAAiAKdB/wFxIgNBygBGDQAgA0EORw0BCyACQiCIpyEDAkACQAJAIABByIHAgACtQiCGQgSEQoSAgIAgEIKAgIAAQiCIpw4CAAEDC0EBIAMQp4CAgAANAkEAIQQMAQtBASEEQQEgAxCngICAAA0BCyAEIQELIAELGQACQCABIABJDQAgASAAaw8LEOWAgIAAAAuxAQECfyOAgICAAEEwayIFJICAgIAAIAUgAyAEEKmAgIAANwMQIAUgAjcDCCAFIAE3AwBBACEGA0ACQCAGQRhHDQBBACEGAkADQCAGQRhGDQEgBUEYaiAGaiAFIAZqKQMANwMAIAZBCGohBgwACwsgAEKO7uqVvrbe8wAgBUEYakEDEKqAgIAAEKuAgIAAIAVBMGokgICAgAAPCyAFQRhqIAZqQgI3AwAgBkEIaiEGDAALC0MBAX8jgICAgABBEGsiAiSAgICAACACIAAgARDZgICAAAJAIAIoAgBBAUcNAAALIAIpAwghASACQRBqJICAgIAAIAELGgAgAK1CIIZCBIQgAa1CIIZCBIQQloCAgAALIQACQCAAIAEgAhCQgICAAEL/AYNCAlENABDlgICAAAALC7EBAQJ/I4CAgIAAQTBrIgUkgICAgAAgBSADIAQQqYCAgAA3AxAgBSACNwMIIAUgATcDAEEAIQYDQAJAIAZBGEcNAEEAIQYCQANAIAZBGEYNASAFQRhqIAZqIAUgBmopAwA3AwAgBkEIaiEGDAALCyAAQo7u6pW+tt7zACAFQRhqQQMQqoCAgAAQq4CAgAAgBUEwaiSAgICAAA8LIAVBGGogBmpCAjcDACAGQQhqIQYMAAsLJwAgACABEK6AgIAAQgEgAq1CIIZCBIQgA61CIIZCBIQQg4CAgAAaC/oBAgF/An4jgICAgABBMGsiAiSAgICAACACQSBqQcCCwIAAQQkQ0ICAgAACQAJAIAIoAiANACACKQMoIQMCQAJAIAFBAXFFDQAgAkEgakG/gcCAAEEIENCAgIAAIAIoAiANAiACQSBqIAIpAygQ0YCAgAAMAQsgAkEgakG4gcCAAEEHENCAgIAAIAIoAiANASACQSBqIAIpAygQ0YCAgAALIAIpAyghBCACKQMgpw0AIAIgBDcDECACIAM3AwggAiAArUIghkIEhDcDGCACQSBqIAJBCGoQ2ICAgAAgAigCIEUNAQsACyACKQMoIQMgAkEwaiSAgICAACADCycAQQEgABCwgICAAEIBIAGtQiCGQgSEIAKtQiCGQgSEEIOAgIAAGgvHAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQAJAAkAgAA4DAAECAAsgAkGAgMCAAEENENCAgIAAIAIoAgANAyACIAIpAwgQ0YCAgAAMAgsgAkGNgMCAAEEGENCAgIAAIAIoAgANAiACIAIpAwggAa1CIIZCBIQQ0oCAgAAMAQsgAkGTgMCAAEERENCAgIAAIAIoAgANASACIAIpAwgQ0YCAgAALIAIpAwghAyACKQMAUA0BCwALIAJBEGokgICAgAAgAwsdACAAIAEQsICAgAAgAhCygICAACADEISAgIAAGgtBAQF/I4CAgIAAQRBrIgEkgICAgAAgASAAENSAgIAAAkAgASgCAEEBRw0AAAsgASkDCCEAIAFBEGokgICAgAAgAAvPAQIBfwN+I4CAgIAAQRBrIgMkgICAgAAgA0EEahC0gICAAAJAIAMoAgRBAUcNACADKAIIIAMoAgwQtYCAgAALIAAgARC2gICAACIEEIWAgIAAIQUgAikDACEGAkACQCAFQoCAgIAQVA0AAkAgBhCFgICAAEKAgICAEFoNACAEIQYMAQsgBhCFgICAAEL/////H1gNASACELeAgIAAIAQgBkECELiAgIAAEIaAgIAAIQYLIANBEGokgICAgAAgBg8LQoOAgICA+gEQuYCAgAAACwwAIABBARDVgYCAAAsbACAArUIghkIEhCABrUIghkIEhBCkgICAABoLvQEEAX8BfgF/AX4jgICAgABBEGsiAiSAgICAACACQQRqELSAgIAAAkAgAigCBEEBRw0AIAIoAgggAigCDBC1gICAAAsCQAJAIAAgARC6gICAACIDQgEQu4CAgAAiBEUNACADQgEQh4CAgAAiBUL/AYNCyABSDQEgAkEEahC8gICAACACKAIEQQFHDQAgACABIAIoAgggAigCDBC9gICAAAsQiICAgAAhAyACQRBqJICAgIAAIAUgAyAEGw8LAAu9AQIBfwF+I4CAgIAAQRBrIgEkgICAgAAgAUEANgIIIAEgADYCBAJAAkACQCABQQRqQQIQyIGAgAAiAhCFgICAAEKAgICAcINCgICAgCBSDQAgAUEAOwEOIAIQhYCAgABCgICAgHCDQoCAgIAgUg0BIAIgAUEOakECEN+AgIAAIAEvAQ5BgAZHDQIgAUEQaiSAgICAAA8LQoOAgICAggEQuYCAgAAACxDLgYCAAAALQoOAgICA+gEQuYCAgAAACyUAIAAgAa1CIIZCBIQgABCFgICAAEKAgICAcINCBIQQi4CAgAALCwAgABClgICAABoLigECAX8BfiOAgICAAEEwayICJICAgIAAIAJBIGpBnIXAgABBDxDQgICAAAJAAkAgAigCIA0AIAIgAikDKDcDCCACIAGtQiCGQgSENwMYIAIgAK1CIIZCBIQ3AxAgAkEgaiACQQhqENiAgIAAIAIoAiBFDQELAAsgAikDKCEDIAJBMGokgICAgAAgAwsPACAAIAEQo4CAgABCAVELDAAgAEECENWBgIAACycAIAAgARC6gICAAEIBIAKtQiCGQgSEIAOtQiCGQgSEEIOAgIAAGgvGAQIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAhC0gICAAAJAIAIoAgBBAUcNACACKAIEIAIoAggQtYCAgAALAkACQAJAQQEgARC/gICAACIDQgEQu4CAgABFDQAgAiADQgEQh4CAgAAQwICAgAAgAigCAEEBRw0BAAsgAEIANwMADAELIAIpAwghAyAAQgE3AwAgACADNwMIIAIQvICAgAAgAigCAEEBRw0AIAEgAigCBCACKAIIEMGAgIAACyACQRBqJICAgIAAC5sBAgF/AX4jgICAgABBEGsiAiSAgICAAAJAAkACQAJAIABBAXFFDQAgAkHYhMCAAEEEENCAgIAAIAIoAgANAiACIAIpAwggAa1CIIZCBIQQ0oCAgAAMAQsgAkHQhMCAAEEIENCAgIAAIAIoAgANASACIAIpAwgQ0YCAgAALIAIpAwghAyACKQMAUA0BCwALIAJBEGokgICAgAAgAwsjAAJAIAFC/wGDQsgAUQ0AIABCATcDAA8LIAAgARDggICAAAsnAEEBIAAQv4CAgABCASABrUIghkIEhCACrUIghkIEhBCDgICAABoLhwECAX8BfiOAgICAAEEQayIAJICAgIAAIABBBGoQtICAgAACQCAAKAIEQQFHDQAgACgCCCAAKAIMELWAgIAACwJAAkBBACAAEL+AgIAAIgFCAhC7gICAAEUNACABQgIQh4CAgAAiAUL/AYNCzQBRDQEACxDDgICAAAALIABBEGokgICAgAAgAQsJABDlgICAAAALiwECAn8BfiOAgICAAEEQayIAJICAgIAAIABBBGoQtICAgAACQCAAKAIEQQFHDQAgACgCCCAAKAIMELWAgIAAC0EAIQECQEEAEMWAgIAAIgJCAhC7gICAAEUNAEEBIQECQAJAIAJCAhCHgICAAKdB/wFxDgIBAgALAAtBACEBCyAAQRBqJICAgIAAIAELwgECAX8BfiOAgICAAEEQayIBJICAgIAAAkACQAJAAkACQAJAIABB/wFxDgMAAQIACyABQYqLwIAAQQYQ0ICAgAAgASgCAA0DIAEgASkDCBDRgICAAAwCCyABQZCLwIAAQQgQ0ICAgAAgASgCAA0CIAEgASkDCBDRgICAAAwBCyABQZiLwIAAQQoQ0ICAgAAgASgCAA0BIAEgASkDCBDRgICAAAsgASkDCCECIAEpAwBQDQELAAsgAUEQaiSAgICAACACCw8AEMeAgIAAEImAgIAAGgtmAgF/AX4jgICAgABBEGsiACSAgICAACAAELSAgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBC1gICAAAsgABDJgICAACAAKQMIIQEgACkDAEGKCBDKgICAACAAQRBqJICAgIAAIAELSgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABDJgICAACAAKQMIIQEgACkDAEGKCBDKgICAACABEImAgIAAGiAAQRBqJICAgIAAIAELUAEBfyOAgICAAEEQayIBJICAgIAAIAFBBGoQtICAgAACQCABKAIEQQFHDQAgASgCCCABKAIMELWAgIAACyAAEM6AgIAAIAFBEGokgICAgAALKQACQCAAp0EBcUUNAA8LIAFB+ndqrUIghkKDgICA4IABfBC5gICAAAALQgEBfyOAgICAAEEQayIAJICAgIAAIAAQzICAgAACQCAAKQMAUA0AQoOAgICwgQEQuYCAgAAACyAAQRBqJICAgIAAC5MBAgF/An4jgICAgABBEGsiASSAgICAACABQQRqELSAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBC1gICAAAtCACECAkACQEEBEM2AgIAAIgNCABC7gICAAEUNACADQgAQh4CAgAAiAkL/AYNCzQBSDQEgACACNwMIQgEhAgsgACACNwMAIAFBEGokgICAgAAPCwALkgECAX8BfiOAgICAAEEQayIBJICAgIAAAkACQAJAAkAgAEEBcUUNACABQZ2KwIAAQQwQ0ICAgAAgASgCAA0CIAEgASkDCBDRgICAAAwBCyABQZiKwIAAQQUQ0ICAgAAgASgCAA0BIAEgASkDCBDRgICAAAsgASkDCCECIAEpAwBQDQELAAsgAUEQaiSAgICAACACC00BAn5CACEBAkACQEEAEM2AgIAAIgJCAhC7gICAAEUNACACQgIQh4CAgAAiAUL/AYNCzQBSDQEgACABNwMIQgEhAQsgACABNwMADwsAC2ACAX8BfiOAgICAAEEQayIAJICAgIAAIABB/4LAgABBBxDQgICAAAJAAkAgACgCAA0AIAAgACkDCBDRgICAACAAKAIAQQFHDQELAAsgACkDCCEBIABBEGokgICAgAAgAQtRAgF/AX4jgICAgABBEGsiAySAgICAACADIAEgAhDSgYCAAEIBIQQCQCADKAIADQAgACADKQMINwMIQgAhBAsgACAENwMAIANBEGokgICAgAALRAEBfyOAgICAAEEQayICJICAgIAAIAIgATcDCCACQQhqQQEQqoCAgAAhASAAQgA3AwAgACABNwMIIAJBEGokgICAgAALSAEBfyOAgICAAEEQayIDJICAgIAAIAMgAjcDCCADIAE3AwAgA0ECEKqAgIAAIQIgAEIANwMAIAAgAjcDCCADQRBqJICAgIAAC1YBAX8jgICAgABBEGsiAiSAgICAAAJAAkACQCAAp0EBcQ0AQgIhAAwBCyACIAEQ1ICAgAAgAigCAEEBcQ0BIAIpAwghAAsgAkEQaiSAgICAACAADwsACzsAAkACQCABQv//////////AFYNACABQgiGQgaEIQEMAQsgARCSgICAACEBCyAAQgA3AwAgACABNwMIC2ACAX8BfiOAgICAAEEQayIAJICAgIAAIABBmIHAgABBBhDQgICAAAJAAkAgACgCAA0AIAAgACkDCBDRgICAACAAKAIAQQFHDQELAAsgACkDCCEBIABBEGokgICAgAAgAQtnAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQCAAKAIAQQFxDQBCAiECDAELIAEgACkDECAAKQMYIAApAyAQ14CAgAAgASgCAEEBcQ0BIAEpAwghAgsgAUEQaiSAgICAACACDwsAC4UBAQF/I4CAgIAAQRBrIgQkgICAgAAgBCABIAIQ2YCAgABCASECAkAgBCgCAA0AIAQpAwghASAEIAMQ1ICAgAAgBCgCAA0AIAQgBCkDCDcDCCAEIAE3AwAgAEHsgcCAAEECIARBAhDagICAADcDCEIAIQILIAAgAjcDACAEQRBqJICAgIAAC10CAX8BfiOAgICAAEEgayICJICAgIAAIAIgASkDEDcDGCACIAEpAwg3AxAgAiABKQMANwMIIAJBCGpBAxCqgICAACEDIABCADcDACAAIAM3AwggAkEgaiSAgICAAAtbAAJAAkAgAUKAgICAgICAwAB8Qv//////////AFYNACABIAGFIAIgAUI/h4WEQgBSDQAgAUIIhkILhCEBDAELIAIgARCZgICAACEBCyAAQgA3AwAgACABNwMICy4AAkAgASADRg0AAAsgAK1CIIZCBIQgAq1CIIZCBIQgAa1CIIZCBIQQnICAgAALHgACQCAAp0EBcUUNAA8LQoOAgICQ+gEQuYCAgAAAC6cHAwF/BX4DfyOAgICAAEHwAGsiBSSAgICAACACKQMwIgYQhYCAgAAhByAFQRBqEN2AgIAAAkACQAJAIAUpAxAiCCAFKQMYIgmEUA0AIAIpAyAhCgJAIAMgBEKAgICAgICAgIB/hYRCAFINACAIIAmDQn9RDQELIAUgAyAEIAggCRDagYCAAAJAIAUpAwhCAVkNACAFKQMAIQQCQAJAAkAgB0L/////D1YNACAFIAQ3AzggBSAKNwMwQgAhBiAFQgA3AxAgBUEgaiELQQEhDAwBCyAFQRBqIAEQioCAgABBBBC4gICAACIDQgRChICAgMAAEIuAgIAAEN6AgIAAIAUoAhBBAUYNBSAFKQMYIQggBUEANgJYIAggBUHYAGpBBBDfgICAACAFKAJYIgtB////B3ENAQJAAkACQCALQRh2DgIAAQQLIAVB2ABqIANChICAgMAAQoSAgICAARCLgICAABDegICAACAFKAJYQQFGDQcgBSkDYCEIIAVBADYCWCAIIAVB2ABqQQQQ34CAgAAgBSgCWA0DIAVB2ABqIANChICAgIABQoSAgICABRCLgICAABDggICAACAFKAJYQQFHDQEMBwsgBUHYAGogA0KEgICAwABChICAgMAEEIuAgIAAEOCAgIAAIAUoAlhBAUYNBgsgBSkDYCEDIAVBKGohCyAFIAQ3AzggBSAKNwMwIAVCATcDICAFIAM3AxggBUIBNwMQQQIhDAsgCyAGNwMAIAVBEGoQ4YCAgAAhCyAFEIiAgIAANwNYIAVB2ABqIAoQ4oCAgAAgBBDjgICAACENAkACQCALDQAgDSkDACEEDAELIAdC/////w9YDQEgDSADEOKAgIAAIQsgBSgCIEUNASALKQMAIAUpAygQhoCAgAAhBAsgAigCQCAMIAJBKGoQs4CAgAAhAyAFQcgAahDkgICAACAFKAJIQQFHDQMgBSkDUCEKEIyAgIAAIQggBSADNwNoIAUgBDcDYCAFIAg3A1hBACECA0ACQCACQRhHDQBBACECAkADQCACQRhGDQEgBUEQaiACaiAFQdgAaiACaikDADcDACACQQhqIQIMAAsLIApCjvKotY2fuwEgBUEQakEDEKqAgIAAEKuAgIAADAULIAVBEGogAmpCAjcDACACQQhqIQIMAAsLEMOAgIAAAAtCg4CAgLD3AhC5gICAAAALEOWAgIAAAAsgACADNwMIIAAgBDcDACAFQfAAaiSAgICAAA8LAAuQAgICfwR+I4CAgIAAQcAAayIBJICAgIAAIAFBOGoQ5oCAgAACQAJAIAEoAjhBAXFFDQACQCABKAI8IgINAEIAIQNCASEEDAILQgAhA0IKIQVCASEEQgAhBgJAA0ACQCACQQFxRQ0AIAFBADYCNCABQSBqIAQgAyAFIAYgAUE0ahDXgYCAACABKAI0DQIgASkDKCEDIAEpAyAhBCACQQFGDQQLIAFBADYCHCABIAUgBiAFIAYgAUEcahDXgYCAACABKAIcDQEgASkDCCEGIAEpAwAhBSACQQF2IQIMAAsLEOWAgIAAAAtCg4CAgKD3AhC5gICAAAALIAAgBDcDACAAIAM3AwggAUHAAGokgICAgAALNgEBfkIBIQICQCABEIWAgIAAQoCAgIBwg0KAgICAwABSDQAgACABNwMIQgAhAgsgACACNwMACx8AIABCBCABrUIghkIEhCACrUIghkIEhBCUgICAABoLNgEBfkIBIQICQCABEIWAgIAAQoCAgIBwg0KAgICAgARSDQAgACABNwMIQgAhAgsgACACNwMACzMBAX9BACEBAkAgACkDAFANACAAKAIQQQFHDQAgACkDGBCFgICAAEL/////D1YhAQsgAQvCAQEEfyOAgICAAEHAAGsiAiSAgICAACACQSBqQRhqIgNCADcDACACQSBqQRBqIgRCADcDACACQSBqQQhqIgVCADcDACACQgA3AyAgASACQSBqQSAQ34CAgAAgAkEYaiADKQMANwMAIAJBEGogBCkDADcDACACQQhqIAUpAwA3AwAgAiACKQMgNwMAIAApAwAhASAAIAEgARCFgICAAEKAgICAcINCBIQgAkEgEMyBgIAANwMAIAJBwABqJICAgIAAIAALpwEBAX8jgICAgABBEGsiAiSAgICAACACIAFCOIYgAUKA/gODQiiGhCABQoCA/AeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA/gODIAFCOIiEhIQ3AwggACkDACEBIAAgASABEIWAgIAAQoCAgIBwg0IEhCACQQhqQQgQzIGAgAA3AwAgAkEQaiSAgICAACAACwwAIABBAhDogICAAAsJABDRgYCAAAALWAMBfwF+AX9BACEBAkACQEEAEJ2BgIAAIgJCAhC7gICAAEUNACACQgIQh4CAgAAiAkL/AYNCBFINASACQiCIpyEDQQEhAQsgACADNgIEIAAgATYCAA8LAAtOAgF/AX4jgICAgABBEGsiACSAgICAACAAQQEQ6ICAgAACQCAAKAIADQBCg4CAgKD3AhC5gICAAAALIAApAwghASAAQRBqJICAgIAAIAELTQECfkIAIQICQAJAIAEQnYGAgAAiA0ICELuAgIAARQ0AIANCAhCHgICAACICQv8Bg0LNAFINASAAIAI3AwhCASECCyAAIAI3AwAPCwALVAIBfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahC0gICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQtYCAgAALEOeAgIAAIQEgAEEQaiSAgICAACABC5MBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkBBASAAELCAgIAAQgEQu4CAgABFDQAgARC8gICAAAJAIAEoAgBBAUcNACAAIAEoAgQgASgCCBCvgICAAAsgASAAEOuAgIAAAkAgASgCAEUNACABKQMIIQIMAgsQw4CAgAAACxDsgICAACECCyABQRBqJICAgIAAIAILnwECAX8BfiOAgICAAEEQayICJICAgIAAAkACQAJAQQEgARCwgICAACIDQgEQu4CAgABFDQAgAiADQgEQh4CAgAAQ94CAgAAgAigCAEEBRw0BAAsgAEIANwMADAELIAIpAwgh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ACACIAAgARDSgYCAAAJAIAIoAgBBAUcNAAALIAIpAwghAyACQRBqJICAgIAAIAMLYwMBfwF+AX8jgICAgABBEGsiASSAgICAACABIAA3AwBCAiECQQEhAwJAA0AgA0UNASADQX9qIQMgACECDAALCyABIAI3AwggAUEIakEBEKqAgIAAIQAgAUEQaiSAgICAACAAC/EBAgF/BH4jgICAgABB4ABrIgMkgICAgAAgAxC0gICAAAJAIAMoAgBBAUcNACADKAIEIAMoAggQtYCAgAALIAMgASACEPKAgIAAAkACQAJAIAMoAgBBAXENAEL///////////8AIQRCfyEFDAELIAMpAxAhBiADKQMYIQQgA0HQAGogA0EQahDzgICAACAEIAMpA1giBYUgBCAEIAV9IAYgAykDUCIHVK19IgWFg0J/Vw0BIAVCACAFQgBVGyEEQgAgBiAHfSAFQgBTGyEFCyAAIAU3AwAgACAENwMIIANB4ABqJICAgIAADwsQ5YCAgAAAC6IDAgF/BX4jgICAgABBwABrIgYkgICAgAAQ74CAgAAgBkEwahDdgICAACAGKQM4IQcgBikDMCEIAkACQAJAAkACQCAFEOqAgIAAIglQDQBBAiAGELCAgIAAQgIQu4CAgABFDQIgBkEANgIsIAZBEGogASACIAlCACAGQSxqENeBgIAAIAYoAiwNAyAGKQMQIglCj84AfCIKQp6cAVYgBikDGCILIAogCVStfCIKQgBSIApQGw0BCyAGQTBqIAEgAiAIIAcQgIGAgAAgBikDMCIIIQEgBikDOCIHIQIMAwsgBiAJIAtCkM4AQgAQ2oGAgAAgAiAGKQMIIgmFIAIgAiAJfSABIAYpAwAiCVStfSIKhYNCAFMNASAGQTBqIAEgCX0gCiAIIAcQgIGAgAAgBikDOCEHIAYpAzAhCAwCC0KDgICA0IMDELmAgIAAAAsQ5YCAgAAACwJAIAggA1QgByAEUyAHIARRG0UNAEKDgICAwPcCELmAgIAAAAsgACAINwMQIAAgATcDACAAIAc3AxggACACNwMIIAZBwABqJICAgIAAC60BAQF/I4CAgIAAQTBrIgUkgICAgAACQAJAIAMgBIRQDQACQCABIAJCgICAgICAgICAf4WEQgBSDQAgAyAEg0J/UQ0BCyAFQSBqIAEgAiADIAQQ2oGAgAAgBUEANgIcIAUgBSkDICAFKQMoIAMgBCAFQRxqENeBgIAAIAUoAhxFDQELEOWAgIAAAAsgBSkDCCEEIAAgBSkDADcDACAAIAQ3AwggBUEwaiSAgICAAAveBAMCfwJ+A38jgICAgABB0AFrIgMkgICAgAACQAJAAkACQAJAIAAQpoCAgABB/wFxIgRBAkYNACABQv8Bg0IEUg0AAkACQCACQgJSDQBCACEFDAELIAMgAhD4gICAACADKAIAQQFxDQEgAykDGCECIAMpAxAhBiADKQMgIQBCASEFCyABQiCIpyEHEMaAgIAAIAMQtICAgAACQCADKAIAQQFHDQAgAygCBCADKAIIELWAgIAACyADIAQgBxDygICAACAFpyEIAkACQCADKAIAIglBAXFFDQAgCEEBcUUNACADKQMQIAaFIAMpAxggAoWEQgBSDQEgAykDICAAUg0BDAYLIAkgCHJBAXFFDQULIAhBAXFFDQEgAkIAUw0CIABCAFENAgJAAkAgCUEBcUUNACADQdAAaiADQRBqIghBwAAQ3YGAgAAaIANB8ABqIAgQ84CAgAAQ9ICAgAAhAQwBCxD0gICAACEBIANCADcDeCADQgA3A3ALIAMgBjcDUCADIAA3A2AgAyABNwOAASADIAI3A1ggBCAHIANB0ABqEPWAgIAAIAMgAjcDqAEgAyAGNwOgASADQgA3A5gBIAMgBTcDkAEgAyAHNgLAASADIAQ6AMQBIAMgADcDsAEgA0GQAWoQ+4CAgAAMAwsACyAHIAQQroCAgABCARCOgICAABogA0IANwOYASADQgA3A5ABIAMgBzYCwAEgAyAEOgDEASADQZABahD7gICAAAwBC0KDgICAsIYDELmAgIAAAAsgA0HQAWokgICAgABCAg8LQoOAgIDAhgMQuYCAgAAAC9YBAQN/I4CAgIAAQYABayICJICAgIAAAkAgABCmgICAAEH/AXEiA0ECRg0AIAFC/wGDQgRSDQAgAUIgiKchBCACQTBqELSAgIAAAkAgAigCMEEBRw0AIAIoAjQgAigCOBC1gICAAAsgAkEwaiADIAQQ8oCAgAACQAJAIAIoAjBBAXENAEIAIQEMAQsgAiACKQNINwMYIAIgAikDQDcDECACIAIpA1A3AyBCASEBCyACIAE3AwAgAkIANwMIIAIQ1oCAgAAhASACQYABaiSAgICAACABDwsAC8QBAQN/I4CAgIAAQfAAayICJICAgIAAAkAgABCmgICAAEH/AXEiA0ECRg0AIAFC/wGDQgRSDQAgAUIgiKchBCACELSAgIAAAkAgAigCAEEBRw0AIAIoAgQgAigCCBC1gICAAAsgAiADIAQQ8oCAgABCACEBQgAhAAJAIAIoAgBBAXFFDQAgAkHQAGpBEGogAkEQahDzgICAACACKQNoIQAgAikDYCEBCyABIAAQqYCAgAAhASACQfAAaiSAgICAACABDwsAC2cBAn8jgICAgABBEGsiAiSAgICAAAJAIAAQpoCAgABB/wFxIgNBAkYNACABQv8Bg0IEUg0AIAIgAyABQiCIpxD+gICAACACKQMAIAIpAwgQqYCAgAAhASACQRBqJICAgIAAIAEPCwAL8wECAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABD3gICAAAJAAkACQCABKAIAQQFGDQAgASkDCCEAEMaAgIAAIAEQtICAgAACQCABKAIAQQFHDQAgASgCBCABKAIIELWAgIAACyAAQpHOAFoNARDsgICAACAAUQ0CQQAgASAAQgIQsYCAgABBpIDAgABBExD8gICAABD9gICAACECIAEgABCygICAADcDACACQcCAwIAAQQEgAUEBENqAgIAAEI2AgIAAGiABQRBqJICAgIAAQgIPCwALQoOAgIDAgwMQuYCAgAAAC0KDgICA4IMDELmAgIAAAAu1AwQBfwF+A38BfiOAgICAAEEgayICJICAgIAAAkACQAJAAkACQCAAQv8Bg0IEUg0AAkACQCABQgJSDQBCACEDDAELIAJBEGogARD3gICAACACKAIQQQFGDQEgAikDGCEBQgEhAwsgAEIgiKchBBDGgICAACACQRBqELSAgIAAAkAgAigCEEEBRw0AIAIoAhQgAigCGBC1gICAAAsgAiAEEOuAgIAAIAOnIQUCQAJAIAIoAgAiBkEBRw0AIAVFDQAgAikDCCABUg0BDAYLIAYgBXJBAXFFDQULIAVFDQEgAUKRzgBaDQJBASAEIAFCARCxgICAACACQRBqELyAgIAAIAIoAhBBAUcNAyAEIAIoAhQgAigCGBCvgICAAAwDCwALQQEgBBCwgICAAEIBEI6AgIAAGgwBC0KDgICAwIMDELmAgIAAAAtByIDAgABBCxD8gICAABD9gICAACEHIAIgAyABENOAgIAANwMYIAIgAEKEgICAcIM3AxAgB0HUgMCAAEECIAJBEGpBAhDagICAABCNgICAABogAkEgaiSAgICAAEICDwtCg4CAgOCDAxC5gICAAAAL4wECAX8BfiOAgICAAEEQayIBJICAgIAAAkACQCAAQv8Bg0LNAFINABDGgICAACABELSAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBC1gICAAAsgARDugICAAAJAIAEoAgBBAUcNACABKQMIIAAQiIGAgAANAgtBAiABELCAgIAAIABCAhCEgICAABpB5IDAgABBFxD8gICAABD9gICAACECIAEgADcDACACQZCBwIAAQQEgAUEBENqAgIAAEI2AgIAAGiABQRBqJICAgIAAQgIPCwALQoOAgIDggwMQuYCAgAAACw0AIAAgARCegICAAFALWgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahC0gICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQtYCAgAALEOyAgIAAELKAgIAAIQEgAEEQaiSAgICAACABC3cBAX8jgICAgABBEGsiASSAgICAAAJAIABC/wGDQgRSDQAgARC0gICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQtYCAgAALIAEgAEIgiKcQ64CAgAAgASkDACABKQMIENOAgIAAIQAgAUEQaiSAgICAACAADwsAC24BAX8jgICAgABBEGsiASSAgICAAAJAIABC/wGDQgRSDQAgAUEEahC0gICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQtYCAgAALIABCIIinEOqAgIAAELKAgIAAIQAgAUEQaiSAgICAACAADwsAC1QCAX8BfiOAgICAAEEQayIAJICAgIAAIABBBGoQtICAgAACQCAAKAIEQQFHDQAgACgCCCAAKAIMELWAgIAACxDtgICAACEBIABBEGokgICAgAAgAQvfAQICfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAQQEgAKdB/wFxIgJBAEdBAXQgAkEBRhsiAkECRg0AEMaAgIAAIAEQtICAgAACQCABKAIAQQFHDQAgASgCBCABKAIIELWAgIAACxDwgICAACACc0EBcUUNARDVgICAACACrSIAQgIQhICAgAAaQZ6BwIAAQQoQ/ICAgAAQ/YCA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gICAECEDC0GAyx5BgNIfEKaBgIAAQYDLHkGA0h8Qp4GAgABBABDNgICAAEICELuAgIAADQEgARCogYCAAEEAIAYQv4CAgAAgAkICEISAgIAAGiACEIyAgIAAIAcgCBCpgYCAACAAEJWBgIAAIgkgBEIgiKciCkkNAkEBIAAQnIGAgABBABCdgYCAACAJIAprrUIghkIEhEICEISAgIAAGhDPgICAACADQgIQhICAgAAaIAZBEGokgICAgABCAg8LAAtCg4CAgJCBARC5gICAAAALQoOAgICQ9wIQuYCAgAAACw4AQQEgACABENaBgIAACw4AQQIgACABENaBgIAACw4AQQAgAEICELOBgIAAC7YBAwF/AX4BfyOAgICAAEEgayIEJICAgIAAQbiEwIAAQQwQ/ICAgAAhBSAEIAIgAxCZgYCAADcDCCAEIAE3AwBBACEGA0ACQCAGQRBHDQBBACEGAkADQCAGQRBGDQEgBEEQaiAGaiAEIAZqKQMANwMAIAZBCGohBgwACwsgACAFIARBEGpBAhCqgICAABCrgICAACAEQSBqJICAgIAADwsgBEEQaiAGakICNwMAIAZBCGohBgwACwsRAEKEgICAEEIEEKOBgIAAGwsIABDHgICAAAs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEMmAgIAAIAApAwAgACkDCBCZgYCAACEBIABBEGokgICAgAAgAQs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEMyAgIAAIAApAwAgACkDCBCZgYCAACEBIABBEGokgICAgAAgAQt9AgF/AX4jgICAgABBEGsiASSAgICAAAJAIABC/wGDQs0AUg0AIAFBBGoQtICAgAACQCABKAIEQQFHDQAgASgCCCABKAIMELWAgIAACxDIgICAACECEMuAgIAAIAAQqIGAgAAgAiAAEK+BgIAAIAFBEGokgICAgABCAg8LAAthAgF/AX4jgICAgABBEGsiAiSAgICAAEGRicCAAEEVEPyAgIAAEP2AgIAAIQMgAiAANwMIIAIgATcDACADQbiJwIAAQQIgAkECENqAgIAAEI2AgIAAGiACQRBqJICAgIAAC9wCAgF/An4jgICAgABBIGsiAiSAgICAAAJAAkACQCAAQv8Bg0LNAFINACABQv8Bg0IEUg0AIAJBCGoQtICAgAACQCACKAIIQQFHDQAgAigCDCACKAIQELWAgIAACxDIgICAACEDAkACQCABQv////8PVg0AIAJBCGoQzICAgAAgAikDECEBIAIpAwhBiAgQyoCAgAAgASAAEIiBgIAARQ0DELGBgIAADAELELKBgIAAIAFCIIinSQ0DQQEgAEIAELOBgIAAQQEQzYCAgABCACABQoSAgIBwgyIBIAEQg4CAgAAaQciJwIAAQRYQ/ICAgAAQ/YCAgAAhBCACIAE3AxggAiADNwMQIAIgADcDCCAEQeSJwIAAQQMgAkEIakEDENqAgIAAEI2AgIAAGgsgAkEgaiSAgICAAEICDwsAC0KDgICA4IABELmAgIAAAAtCg4CAgPCAARC5gICAAAALEwBBARDNgICAAEIAEI6AgIAAGgszAQJ+EKGAgIAAIQACQBCigICAAEIgiCIBIABCIIgiAFQNACABpyAAp2sPCxDlgICAAAALFQAgABDNgICAACABIAIQhICAgAAaC6cBAgF/An4jgICAgABBEGsiACSAgICAACAAELSAgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBC1gICAAAsgABDMgICAACAAKQMIIQEgACkDAEGICBDKgICAACABEImAgIAAGiAAEM6AgIAAAkAgACgCAA0AEMOAgIAAAAsgACkDCCECELGBgIAAIAEQqIGAgAAgAiABEK+BgIAAIABBEGokgICAgABCAgugAQIBfwJ+I4CAgIAAQRBrIgAkgICAgAAgABC0gICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQtYCAgAALEMiAgIAAIQEQy4CAgABBABDNgICAAEICEI6AgIAAGkH8icCAAEETEPyAgIAAEP2AgIAAIQIgACABNwMAIAJBkIrAgABBASAAQQEQ2oCAgAAQjYCAgAAaIABBEGokgICAgABCAgsxAAJAIABC/wGDQgRSDQAgAUL/AYNCBFINACAAQiCIpyABQiCIpxC1gICAAEICDwsAC94EAQV/I4CAgIAAQdAAayICJICAgIAAIAJBKGogABC4gYCAAAJAIAIoAihBAkYNACACQQhqQQhqIAJBKGpBCGoiAygCADYCACACIAIpAig3AwggAkEoaiABELiBgIAAIAIoAihBAkYNACACQRhqQQhqIAMoAgA2AgAgAiACKQIoNwMYIAJBKGoQtICAgAACQCACKAIoQQFHDQAgAigCLCACKAIwELWAgIAACxDGgICAAAJAAkACQBDEgICAAA0AELKBgIAAIgNBgPuAAyADQYD7gANJGyEEIAIgAkEYajYCLCACIAJBCGo2AihBACEDA0AgA0EIRg0DAkAgAkEoaiADaigCACIFKAIAQQFxRQ0AIAUoAggiBiAESw0DIAUoAgQgBksNAwsgA0EEaiEDDAALC0KDgICA0P8AELmAgIAAAAtCg4CAgMD/ABC5gICAAAALAkACQCACKAIIQQFHDQAgAigCDCACKAIQEKaBgIAADAELQQEQxYCAgABCAhCOgICAABoLAkACQCACKAIYQQFHDQAgAigCHCACKAIgEKeBgIAADAELQQIQxYCAgABCAhCOgICAABoLIAJBKGpBCGogAkEIakEIaigCADYCACACQTxqIAJBGGpBCGooAgA2AgAgAiACKQMINwMoIAIgAikDGDcCNEHEisCAAEEPEPyAgIAAEP2AgIAAIQAgAkEoahC5gYCAACEBIAIgAkE0ahC5gYCAADcDSCACIAE3A0AgAEHoisCAAEECIAJBwABqQQIQ2oCAgAAQjYCAgAAaIAJB0ABqJICAgIAAQgIPCwALaAEBfyOAgICAAEEQayICJICAgIAAAkACQCABQgJRDQAgAkEEaiABENOBgIAAAkAgAigCBEUNACAAQQI2AgAMAgsgACACKQIINwIEIABBATYCAAwBCyAAQQA2AgALIAJBEGokgICAgAALQwIBfwF+I4CAgIAAQRBrIgEkgICAgAAgASAAELuBgIAAAkAgASgCAEEBRw0AAAsgASkDCCECIAFBEGokgICAgAAgAgvCAQICfwF+I4CAgIAAQcAAayIAJICAgIAAIABBCGoQtICAgAACQCAAKAIIQQFHDQAgACgCDCAAKAIQELWAgIAACyAAQQhqELSAgIAAIABBFGoiARC8gICAACAAQTBqIABBCGoQu4GAgAACQAJAIAAoAjANACAAKQM4IQIgAEEwaiABELuBgIAAIAAoAjBBAUcNAQsACyAAIAApAzg3AyggACACNwMgIABBIGpBAhCqgICAACECIABBwABqJICAgIAAIAILMAACQCABKAIAQQFHDQAgACABKAIEIAEoAggQ1IGAgAAPCyAAQgA3AwAgAEICNwMIC6oBAQF/I4CAgIAAQSBrIgAkgICAgAAgAEEMahC0gICAAAJAIAAoAgxBAUcNACAAKAIQIAAoAhQQtYCAgAALEMaAgIAAAkAQxICAgABFDQBCg4CAgOD/ABC5gICAAAALQQAQxYCAgABCAUICEISAgIAAGkH4isCAAEESEPyAgIAAEP2AgIAAQQRBACAAQRhqQQAQ2oCAgAAQjYCAgAAaIABBIGokgICAgABCAgsJABDEgICAAK0LogECAX8BfiOAgICAAEEgayIAJICAgIAAIABBEGoQtICAgAACQCAAKAIQQQFHDQAgACgCFCAAKAIYELWAgIAACyAAQRBqQgEQ1ICAgAACQAJAIAAoAhANACAAKQMYIQEgAEEQakIBENSAgIAAIAAoAhBBAUcNAQsACyAAIAApAxg3AwggACABNwMAIABBAhCqgICAACEBIABBIGokgICAgAAgAQsIABDCgICAAAtRAQF/I4CAgIAAQRBrIgEkgICAgAACQCAAQv8Bg0IEUQ0AAAsgASAAQiCIpxC+gICAACABKQMAIAEpAwgQmYGAgAAhACABQRBqJICAgIAAIAALugIEAX8BfgF/AX4jgICAgABBEGsiAiSAgICAAAJAIABC/wGDQgRSDQACQAJAIAFCAlINAEIAIQEMAQsgAiABEMCAgIAAIAIoAgBBAUYNASACKQMIIQNCASEBCxDGgICAACACELSAgIAAAkAgAigCAEEBRw0AIAIoAgQgAigCCBC1gICAAAtBASAAQiCIpyIEEL+AgIAAIQUCQAJAIAFQDQAgBSADQgEQhICAgAAaIAIQvICAgAAgAigCAEEBRw0BIAQgAigCBCACKAIIEMGAgIAADAELIAVCARCOgICAABoLQo7yqrzw1qrrABD9gICAACEFIAIgASADEJmBgIAANwMIIAIgAEKEgICAcIM3AwAgBUHkhMCAAEECIAJBAhDagICAABCNgICAABogAkEQaiSAgICAAEICDwsAC4cBAgF/AX4jgICAgABBEGsiASSAgICAACABIAAQm4GAgAACQCABKQMAIgBCAlENACABKQMIIQIQxoCAgAAgARC0gICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQtYCAgAALEMKAgIAAEIyAgIAAIAAgAhCpgYCAACABQRBqJICAgIAAQgIPCwALmwECAn8BfiOAgICAAEEgayIBJICAgIAAIAEg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fCEGDAsLIAIgBHwgASADfCIEIAFUrXwgCn0gBCANVK19IQIgBCANfSEBIAYgDCALfEJ/fCIMIAtUrXwhBgwKCyAFQYABaiAMIAqAIgxCACAIIAlrIggQ2IGAgAAgBUHwAGogAyAEIAxCABDegYCAACAFQeAAaiAFKQNwIAUpA3ggCBDYgYCAACAFKQOIASAGfCAFKQOAASIGIAt8IgsgBlStfCEGIAcgAiAFKQNofSABIAUpA2AiDFStfSICeSABIAx9IgF5QsAAfCACQgBSG6ciCE0NASAIQT9NDQALIANQRQ0BDAILIAEgA1QiCCACIARUIAIgBFEbRQ0CIAshDAwHCyABIAOAIQILIAEgA4IhASAGIAsgAnwiDCALVK18IQZCACECDAULIAIgBH0gCK19IQIgASADfSEBIAYgC0IBfCIMUK18IQYMBAsgAiAEQgAgASADWiACIARaIAIgBFEbIggbfSABIANCACAIGyIEVK19IQIgASAEfSEBIAitIQwMAwsgASABIAOAIgwgA359IQFCACEGQgAhAgwCCyACIAIgA0L/////D4MiBIAiBiADfn1CIIYgAUIgiCIMhCAEgCICQiCGIAwgAiADfn1CIIYgAUL/////D4OEIgEgBIAiA4QhDCABIAMgBH59IQEgAkIgiCAGhCEGQgAhAgwBCyAFQTBqIAMgBEHAACAIayIIENuBgIAAIAVBIGogASACIAgQ24GAgABCACEGIAVBEGogA0IAIAUpAyAgBSkDMIAiDEIAEN6BgIAAIAUgBEIAIAxCABDegYCAACAFKQMQIQoCQAJAIAUpAwggBSkDGCINIAUpAwB8IgsgDVStfEIAUg0AIAEgClQiCCACIAtUIAIgC1EbRQ0BCyAEIAJ8IAMgAXwiASADVK18IAt9IAEgClStfSECIAxCf3whDCABIAp9IQEMAQsgAiALfSAIrX0hAiABIAp9IQFCACEGCyAAIAE3AxAgACAMNwMAIAAgAjcDGCAAIAY3AwggBUGwAWokgICAgAALoQEBAn8jgICAgABBIGsiBSSAgICAACAFQgAgAX0gASACQgBTIgYbQgAgAiABQgBSrXx9IAIgBhtCACADfSADIARCAFMiBhtCACAEIANCAFKtfH0gBCAGGxDZgYCAACAFKQMIIQMgAEIAIAUpAwAiAX0gASAEIAKFQgBT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dGVzZW5kX2NvbXBvc2VFbmRwb2ludFBlZXJlaWRwZWVyAFwCEAADAAAAXwIQAAQAAABtc2dfdHlwZW9wdGlvbnMAXAIQAAMAAAB0AhAACAAAAHwCEAAHAAAARW5mb3JjZWRPcHRpb25zZW5mb3JjZWRfb3B0aW9uX3NldGVuZm9yY2VkX29wdGlvbl9wYXJhbXO+AhAAFgAAAGFtb3VudF9yZWNlaXZlZF9sZGFtb3VudF9zZW50X2xkZHN0X2VpZGZyb21ndWlkANwCEAASAAAA7gIQAA4AAAD8AhAABwAAAAMDEAAEAAAABwMQAAQAAABvZnRfcmVjZWl2ZWRzcmNfZWlkdG8AAADcAhAAEgAAAAcDEAAEAAAAQAMQAAcAAABHAxAAAgAAAG1zZ19pbnNwZWN0b3Jfc2V0aW5zcGVjdG9yAAB9AxAACQAAAERlY2ltYWxzRGlmZlRva2VuTXNnSW5zcGVjdG9yYW1vdW50X2xkY29tcG9zZV9tc2dleHRyYV9vcHRpb25zbWluX2Ftb3VudF9sZG9mdF9jbWQAAK0DEAAJAAAAtgMQAAsAAAD8AhAABwAAAMEDEAANAAAAzgMQAA0AAADbAxAABwAAAEcDEAACAAAAbWF4X2Ftb3VudF9sZAAAABwEEAANAAAAzgMQAA0AAADcAhAAEgAAAO4CEAAOAAAAZGVzY3JpcHRpb25mZWVfYW1vdW50X2xkTAQQAAsAAABXBBAADQAAAAAAABIAAAAAAAAAAAAAABIAAAABdGhyZXNob2xkb3duZXJzaGlwX3RyYW5zZmVycmVkbmV3X293bmVyb2xkX293bmVypgQQAAkAAACvBBAACQAAAG93bmVyc2hpcF90cmFuc2ZlcnJpbmd0dGwAAACmBBAACQAAAK8EEAAJAAAA3gQQAAMAAABvd25lcnNoaXBfcmVub3VuY2VkAK8EEAAJAAAAT3duZXJQZW5kaW5nT3duZXJleHRlbmRfdG8AACkFEAAJAAAAiAQQAAkAAAB0dGxfY29uZmlnc19zZXRpbnN0YW5jZXBlcnNpc3RlbnQAAABTBRAACAAAAFsFEAAKAAAAdHRsX2NvbmZpZ3NfZnJvemVuRnJvemVuSW5zdGFuY2VQZXJzaXN0ZW50AJPXAQ5jb250cmFjdHNwZWN2MAAAAAIAAAAAAAAAAAAAAA1PRlRGZWVTdG9yYWdlAAAAAAAAAwAAAAAAAAAAAAAADURlZmF1bHRGZWVCcHMAAAAAAAABAAAAAAAAAAZGZWVCcHMAAAAAAAEAAAAEAAAAAAAAAAAAAAARRmVlRGVwb3NpdEFkZHJlc3MAAAAAAAAEAAAAAAAAAAAAAAALT0ZURmVlRXJyb3IAAAAAAwAAAAAAAAANSW52YWxpZEZlZUJwcwAAAAAADBwAAAAAAAAAGEludmFsaWRGZWVEZXBvc2l0QWRkcmVzcwAADB0AAAAAAAAACVNhbWVWYWx1ZQAAAAAADB4AAAAFAAAAAAAAAAAAAAAQRGVmYXVsdEZlZUJwc1NldAAAAAEAAAATZGVmYXVsdF9mZWVfYnBzX3NldAAAAAABAAAAAAAAAAdmZWVfYnBzAAAAAAYAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAAlGZWVCcHNTZXQAAAAAAAABAAAAC2ZlZV9icHNfc2V0AAAAAAIAAAAAAAAAB2RzdF9laWQAAAAABAAAAAAAAAA7VGhlIGZlZSByYXRlIGluIGJhc2lzIHBvaW50cywgb3IgTm9uZSBpZiB0aGUgZmVlIGlzIHJlbW92ZWQAAAAAB2ZlZV9icHMAAAAD6AAAAAYAAAAAAAAAAgAAAAUAAAAAAAAAAAAAABRGZWVEZXBvc2l0QWRkcmVzc1NldAAAAAEAAAAXZmVlX2RlcG9zaXRfYWRkcmVzc19zZXQAAAAAAQAAAAAAAAATZmVlX2RlcG9zaXRfYWRkcmVzcwAAAAATAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAST0ZUUGF1c2FibGVTdG9yYWdlAAAAAAABAAAAAAAAAAAAAAAGUGF1c2VkAAAAAAAEAAAAAAAAAAAAAAAQT0ZUUGF1c2FibGVFcnJvcgAAAAIAAAAAAAAABlBhdXNlZAAAAAAMJgAAAAAAAAAUUGF1c2VTdGF0dXNVbmNoYW5nZWQAAAwnAAAABQAAAAAAAAAAAAAACVBhdXNlZFNldAAAAAAAAAEAAAAKcGF1c2VkX3NldAAAAAAAAQAAAAAAAAAGcGF1c2VkAAAAAAABAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAJRGlyZWN0aW9uAAAAAAAAAgAAAAAAAAAAAAAAB0luYm91bmQAAAAAAAAAAAAAAAAIT3V0Ym91bmQAAAABAAAAOUNvbmZpZ3VyYXRpb24gZm9yIHJhdGUgbGltaXRpbmcsIHVzZWQgYXMgaW5wdXQgcGFyYW1ldGVyLgAAAAAAAAAAAAAPUmF0ZUxpbWl0Q29uZmlnAAAAAAIAAAAAAAAABWxpbWl0AAAAAAAACwAAAAAAAAAOd2luZG93X3NlY29uZHMAAAAAAAYAAAAEAAAAAAAAAAAAAAAOUmF0ZUxpbWl0RXJyb3IAAAAAAAUAAAAAAAAAEUV4Y2VlZGVkUmF0ZUxpbWl0AAAAAAAMMAAAAAAAAAANSW52YWxpZEFtb3VudAAAAAAADDEAAAAAAAAAEEludmFsaWRUaW1lc3RhbXAAAAwyAAAAAAAAAA1JbnZhbGlkQ29uZmlnAAAAAAAMMwAAAAAAAAAJU2FtZVZhbHVlAAAAAAAMNAAAAAUAAAAAAAAAAAAAAAxSYXRlTGltaXRTZXQAAAABAAAADnJhdGVfbGltaXRfc2V0AAAAAAADAAAAAAAAAAlkaXJlY3Rpb24AAAAAAAfQAAAACURpcmVjdGlvbgAAAAAAAAAAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAEJUaGUgcmF0ZSBsaW1pdCBjb25maWd1cmF0aW9uLCBvciBOb25lIGlmIHRoZSByYXRlIGxpbWl0IGlzIHJlbW92ZWQAAAAAAAZjb25maWcAAAAAA+gAAAfQAAAAD1JhdGVMaW1pdENvbmZpZwAAAAAAAAAAAgAAAAMAAAAeVGhlIHR5cGUgb2YgT0ZUIG9wZXJhdGlvbiBtb2RlAAAAAAAAAAAAB09mdFR5cGUAAAAAAgAAACZMb2NrIHRva2VucyBvbiBzZW5kLCB1bmxvY2sgb24gcmVjZWl2ZQAAAAAACkxvY2tVbmxvY2sAAAAAAAAAAAAkQnVybiB0b2tlbnMgb24gc2VuZCwgbWludCBvbiByZWNlaXZlAAAACE1pbnRCdXJuAAAAAQAAAAAAAADqU2V0cyBvciByZW1vdmVzIGEgcmF0ZSBsaW1pdCBmb3IgYSBzcGVjaWZpYyBkaXJlY3Rpb24gYW5kIGVuZHBvaW50LgoKIyBBcmd1bWVudHMKKiBgZGlyZWN0aW9uYCAtIFRoZSBkaXJlY3Rpb24gKEluYm91bmQgb3IgT3V0Ym91bmQpCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKKiBgY29uZmlnYCAtIFRoZSByYXRlIGxpbWl0IGNvbmZpZ3VyYXRpb24sIG9yIE5vbmUgdG8gcmVtb3ZlIHRoZSByYXRlIGxpbWl0AAAAAAAOc2V0X3JhdGVfbGltaXQAAAAAAAMAAAAAAAAACWRpcmVjdGlvbgAAAAAAB9AAAAAJRGlyZWN0aW9uAAAAAAAAAAAAAANlaWQAAAAABAAAAAAAAAAGY29uZmlnAAAAAAPoAAAH0AAAAA9SYXRlTGltaXRDb25maWcAAAAAAAAAAAAAAABvUmV0dXJucyB0aGUgcmF0ZSBsaW1pdCBjb25maWd1cmF0aW9uIGZvciBhIGRpcmVjdGlvbiBhbmQgZW5kcG9pbnQuClJldHVybnMgTm9uZSBpZiBubyByYXRlIGxpbWl0IGlzIGNvbmZpZ3VyZWQuAAAAABFyYXRlX2xpbWl0X2NvbmZpZwAAAAAAAAIAAAAAAAAACWRpcmVjdGlvbgAAAAAAB9AAAAAJRGlyZWN0aW9uAAAAAAAAAAAAAANlaWQAAAAABAAAAAEAAAPoAAAH0AAAAA9SYXRlTGltaXRDb25maWcAAAAAAAAAAEJSZXR1cm5zIHRoZSBjdXJyZW50IGluLWZsaWdodCBhbW91bnQgZm9yIGEgZGlyZWN0aW9uIGFuZCBlbmRwb2ludC4AAAAAABRyYXRlX2xpbWl0X2luX2ZsaWdodAAAAAIAAAAAAAAACWRpcmVjdGlvbgAAAAAAB9AAAAAJRGlyZWN0aW9uAAAAAAAAAAAAAANlaWQAAAAABAAAAAEAAAALAAAAAAAAAG5SZXR1cm5zIHRoZSBhdmFpbGFibGUgY2FwYWNpdHkgZm9yIGEgZGlyZWN0aW9uIGFuZCBlbmRwb2ludC4KUmV0dXJucyBpMTI4OjpNQVggaWYgbm8gcmF0ZSBsaW1pdCBpcyBjb25maWd1cmVkLgAAAAAAE3JhdGVfbGltaXRfY2FwYWNpdHkAAAAAAgAAAAAAAAAJZGlyZWN0aW9uAAAAAAAH0AAAAAlEaXJlY3Rpb24AAAAAAAAAAAAAA2VpZAAAAAAEAAAAAQAAAAsAAAAAAAAAKlNldHMgdGhlIGRlZmF1bHQgZmVlIHJhdGUgaW4gYmFzaXMgcG9pbnRzLgAAAAAAE3NldF9kZWZhdWx0X2ZlZV9icHMAAAAAAQAAAAAAAAAPZGVmYXVsdF9mZWVfYnBzAAAAAAYAAAAAAAAAAAAAAMdTZXRzIG9yIHJlbW92ZXMgdGhlIGZlZSByYXRlIGZvciBhIHNwZWNpZmljIGRlc3RpbmF0aW9uIGVuZHBvaW50LgoKIyBBcmd1bWVudHMKKiBgZHN0X2VpZGAgLSBUaGUgZGVzdGluYXRpb24gZW5kcG9pbnQgSUQKKiBgZmVlX2Jwc2AgLSBUaGUgZmVlIHJhdGUgKDAtMTAsMDAwKSwgb3IgTm9uZSB0byByZW1vdmUgdGhlIGZlZSBjb25maWd1cmF0aW9uAAAAAAtzZXRfZmVlX2JwcwAAAAACAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAAAAAAAB2ZlZV9icHMAAAAD6AAAAAYAAAAAAAAAAAAAADhTZXRzIHRoZSBhZGRyZXNzIHdoZXJlIGNvbGxlY3RlZCBmZWVzIHdpbGwgYmUgZGVwb3NpdGVkLgAAABdzZXRfZmVlX2RlcG9zaXRfYWRkcmVzcwAAAAABAAAAAAAAABNmZWVfZGVwb3NpdF9hZGRyZXNzAAAAABMAAAAAAAAAAAAAAC1SZXR1cm5zIHRoZSBkZWZhdWx0IGZlZSByYXRlIGluIGJhc2lzIHBvaW50cy4AAAAAAAAPZGVmYXVsdF9mZWVfYnBzAAAAAAAAAAABAAAABgAAAAAAAAA4UmV0dXJucyB0aGUgZmVlIHJhdGUgZm9yIGEgc3BlY2lmaWMgZGVzdGluYXRpb24sIGlmIHNldC4AAAAHZmVlX2JwcwAAAAABAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAABAAAD6AAAAAYAAAAAAAAAU1JldHVybnMgdGhlIGVmZmVjdGl2ZSBmZWUgcmF0ZSBmb3IgYSBkZXN0aW5hdGlvbiAoZGVzdGluYXRpb24tc3BlY2lmaWMgb3IgZGVmYXVsdCkuAAAAABFlZmZlY3RpdmVfZmVlX2JwcwAAAAAAAAEAAAAAAAAAB2RzdF9laWQAAAAABAAAAAEAAAAGAAAAAAAAACBSZXR1cm5zIHRoZSBmZWUgZGVwb3NpdCBhZGRyZXNzLgAAABNmZWVfZGVwb3NpdF9hZGRyZXNzAAAAAAAAAAABAAAAEwAAAAAAAACzU2V0cyB0aGUgcGF1c2VkIHN0YXRlIG9mIHRoZSBPRlQuCgpXaGVuIHBhdXNlZCwgdGhlIE9GVCB3aWxsIHJlamVjdCBuZXcgc2VuZC9yZWNlaXZlL3F1b3RlX3NlbmQvcXVvdGVfb2Z0IG9wZXJhdGlvbnMuCgojIEFyZ3VtZW50cwoqIGBwYXVzZWRgIC0gYHRydWVgIHRvIHBhdXNlLCBgZmFsc2VgIHRvIHVucGF1c2UAAAAACnNldF9wYXVzZWQAAAAAAAEAAAAAAAAABnBhdXNlZAAAAAAAAQAAAAAAAAAAAAAAJFJldHVybnMgdGhlIHBhdXNlZCBzdGF0ZSBvZiB0aGUgT0ZULgAAAAlpc19wYXVzZWQAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAlxdW90ZV9vZnQAAAAAAAABAAAAAAAAAApzZW5kX3BhcmFtAAAAAAfQAAAACVNlbmRQYXJhbQAAAAAAAAEAAAPtAAAAAwAAB9AAAAAIT0ZUTGltaXQAAAPqAAAH0AAAAAxPRlRGZWVEZXRhaWwAAAfQAAAACk9GVFJlY2VpcHQAAAAAAAAAAAA1UmV0cmlldmVzIHRoZSB0b2tlbiBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIE9GVC4AAAAAAAAFdG9rZW4AAAAAAAAAAAAAAQAAABMAAAAAAAAAJlJldHVybnMgT0ZUIHZlcnNpb24gYXMgKG1ham9yLCBtaW5vcikuAAAAAAALb2Z0X3ZlcnNpb24AAAAAAAAAAAEAAAPtAAAAAgAAAAYAAAAGAAAAAAAAAEFSZXRyaWV2ZXMgdGhlIHNoYXJlZCBkZWNpbWFscyB1c2VkIGZvciBjcm9zcy1jaGFpbiBub3JtYWxpemF0aW9uLgAAAAAAAA9zaGFyZWRfZGVjaW1hbHMAAAAAAAAAAAEAAAAEAAAAAAAAAElSZXRyaWV2ZXMgdGhlIGRlY2ltYWwgY29udmVyc2lvbiByYXRlIHVzZWQgZm9yIGNyb3NzLWNoYWluIG5vcm1hbGl6YXRpb24uAAAAAAAAF2RlY2ltYWxfY29udmVyc2lvbl9yYXRlAAAAAAAAAAABAAAACwAAAAAAAADqV2hldGhlciBhIHNlcGFyYXRlIHRva2VuIGFwcHJvdmFsIGlzIHJlcXVpcmVkIGJlZm9yZSBzZW5kaW5nLgoKSGVscHMgd2FsbGV0IGltcGxlbWVudGVycyBkZXRlcm1pbmUgaW50ZWdyYXRpb24gcmVxdWlyZW1lbnRzLgoKIyBSZXR1cm5zCi0gYHRydWVgIGlmIGEgc2VwYXJhdGUgdG9rZW4gYXBwcm92YWwgc3RlcCBpcyByZXF1aXJlZAotIGBmYWxzZWAgaWYgbm8gc2VwYXJhdGUgYXBwcm92YWwgaXMgbmVlZGVkAAAAAAARYXBwcm92YWxfcmVxdWlyZWQAAAAAAAAAAAAAAQAAAAEAAAAAAAAALVJldHVybnMgdGhlIG1lc3NhZ2UgaW5zcGVjdG9yIGFkZHJlc3MgaWYgc2V0LgAAAAAAAA1tc2dfaW5zcGVjdG9yAAAAAAAAAAAAAAEAAAPoAAAAEwAAAAAAAAFlU2V0cyBvciByZW1vdmVzIHRoZSBtZXNzYWdlIGluc3BlY3RvciBhZGRyZXNzLgoKVGhlIG1lc3NhZ2UgaW5zcGVjdG9yIGlzIGFuIG9wdGlvbmFsIGNvbnRyYWN0IHRoYXQgdmFsaWRhdGVzIG91dGdvaW5nIG1lc3NhZ2VzCmFuZCBvcHRpb25zIGJlZm9yZSB0aGV5IGFyZSBzZW50IGNyb3NzLWNoYWluLiBJZiBzZXQsIHRoZSBpbnNwZWN0b3IncyBgaW5zcGVjdGAKbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGR1cmluZyBgc2VuZGAgYW5kIGBxdW90ZV9zZW5kYCBvcGVyYXRpb25zLgoKIyBBcmd1bWVudHMKKiBgaW5zcGVjdG9yYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBpbnNwZWN0b3IgY29udHJhY3QsIG9yIE5vbmUgdG8gcmVtb3ZlAAAAAAAAEXNldF9tc2dfaW5zcGVjdG9yAAAAAAAAAQAAAAAAAAAJaW5zcGVjdG9yAAAAAAAD6AAAABMAAAAAAAAAAAAAADtRdW90ZXMgYSBzZW5kIG9wZXJhdGlvbiBpbmNsdWRpbmcgTGF5ZXJaZXJvIG1lc3NhZ2luZyBmZWVzLgAAAAAKcXVvdGVfc2VuZAAAAAAAAwAAAAAAAAAEZnJvbQAAABMAAAAAAAAACnNlbmRfcGFyYW0AAAAAB9AAAAAJU2VuZFBhcmFtAAAAAAAAAAAAAApwYXlfaW5fenJvAAAAAAABAAAAAQAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAAAAAAHRTZW5kcyB0b2tlbnMgY3Jvc3MtY2hhaW4gdG8gYW5vdGhlciBlbmRwb2ludC4KCkZyb20gbXVzdCBiZSBhdXRoZW50aWNhdGVkLgoKIyBSZXR1cm5zCihNZXNzYWdpbmdSZWNlaXB0LCBPRlRSZWNlaXB0KQAAAARzZW5kAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAACnNlbmRfcGFyYW0AAAAAB9AAAAAJU2VuZFBhcmFtAAAAAAAAAAAAAANmZWUAAAAH0AAAAAxNZXNzYWdpbmdGZWUAAAAAAAAADnJlZnVuZF9hZGRyZXNzAAAAAAATAAAAAQAAA+0AAAACAAAH0AAAABBNZXNzYWdpbmdSZWNlaXB0AAAH0AAAAApPRlRSZWNlaXB0AAAAAAAAAAAAAAAAAA1fX2NvbnN0cnVjdG9yAAAAAAAABgAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAACGVuZHBvaW50AAAAEwAAAAAAAAAIZGVsZWdhdGUAAAPoAAAAEwAAAAAAAAAPc2hhcmVkX2RlY2ltYWxzAAAAAAQAAAAAAAAACG9mdF90eXBlAAAH0AAAAAdPZnRUeXBlAAAAAAAAAAAAAAAAQ1JldHVybnMgdGhlIHR5cGUgb2Ygb3BlcmF0aW9uIGZvciB0aGlzIE9GVCAoTG9ja1VubG9jayBvciBNaW50QnVybikAAAAACG9mdF90eXBlAAAAAAAAAAEAAAfQAAAAB09mdFR5cGUAAAAAAAAAAAAAAAAKYXV0aG9yaXplcgAAAAAAAAAAAAEAAAATAAAAAAAAAD5SZXR1cm5zIHRoZSBjdXJyZW50IG93bmVyIGFkZHJlc3MsIG9yIE5vbmUgaWYgbm8gb3duZXIgaXMgc2V0LgAAAAAABW93bmVyAAAAAAAAAAAAAAEAAAPoAAAAEwAAAAAAAABZUmV0dXJucyB0aGUgcGVuZGluZyBvd25lciBhZGRyZXNzIGZvciAyLXN0ZXAgdHJhbnNmZXIsIG9yIE5vbmUgaWYgbm8gdHJhbnNmZXIgaXMgcGVuZGluZy4AAAAAAAANcGVuZGluZ19vd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAABK1RyYW5zZmVycyBvd25lcnNoaXAgaW1tZWRpYXRlbHkgdG8gYSBuZXcgYWRkcmVzcy4KClVzZSB3aXRoIGNhdXRpb24gLSBpZiB5b3UgdHJhbnNmZXIgdG8gYSB3cm9uZyBhZGRyZXNzLCBvd25lcnNoaXAgaXMgbG9zdCBmb3JldmVyLgpDb25zaWRlciB1c2luZyBgcHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXJgIGluc3RlYWQuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzAAAAABJ0cmFuc2Zlcl9vd25lcnNoaXAAAAAAAAEAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAlxQcm9wb3NlcyBhbiBvd25lcnNoaXAgdHJhbnNmZXIgdG8gYSBuZXcgYWRkcmVzcy4KClRoZSBuZXcgb3duZXIgbXVzdCBjYWxsIGBhY2NlcHRfb3duZXJzaGlwKClgIHdpdGhpbiBgdHRsYCBsZWRnZXJzCnRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zlci4gVGhlIHBlbmRpbmcgdHJhbnNmZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGV4cGlyZSBhZnRlci4KCiMgQXJndW1lbnRzCi0gYG5ld19vd25lcmAgLSBUaGUgcHJvcG9zZWQgbmV3IG93bmVyCi0gYHR0bGAgLSBOdW1iZXIgb2YgbGVkZ2VycyB0aGUgbmV3IG93bmVyIGhhcyB0byBhY2NlcHQuClVzZSBgMGAgdG8gY2FuY2VsIGEgcGVuZGluZyB0cmFuc2ZlciAobmV3X293bmVyIG11c3QgbWF0Y2ggcGVuZGluZykuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBOb1BlbmRpbmdUcmFuc2ZlcmAgd2hlbiBjYW5jZWxsaW5nIGFuZCBubyBwZW5kaW5nIHRyYW5zZmVyIGV4aXN0cwotIGBJbnZhbGlkVHRsYCBpZiB0dGwgZXhjZWVkcyBtYXggVFRMCi0gYEludmFsaWRQZW5kaW5nT3duZXJgIHdoZW4gY2FuY2VsbGluZyB3aXRoIHdyb25nIG5ld19vd25lciBhZGRyZXNzAAAAGnByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyAAAAAAACAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAN0dGwAAAAABAAAAAAAAAAAAAAAuUFjY2VwdHMgYSBwZW5kaW5nIDItc3RlcCBvd25lcnNoaXAgdHJhbnNmZXIuCgpNdXN0IGJlIGNhbGxlZCBieSB0aGUgcGVuZGluZyBvd25lciBiZWZvcmUgdGhlIFRUTCBleHBpcmVzLgoKIyBQYW5pY3MKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIGlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgdHJhbnNmZXIgKG9yIGl0IGV4cGlyZWQpAAAAAAAAEGFjY2VwdF9vd25lcnNoaXAAAAAAAAAAAAAAAAAAAACkUGVybWFuZW50bHkgcmVub3VuY2VzIG93bmVyc2hpcC4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYFRyYW5zZmVySW5Qcm9ncmVzc2AgaWYgYSAyLXN0ZXAgdHJhbnNmZXIgaXMgaW4gcHJvZ3Jlc3MgKGNhbmNlbCBpdCBmaXJzdCkAAAAScmVub3VuY2Vfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAAAAAClRXh0ZW5kcyB0aGUgaW5zdGFuY2UgVFRMLgoKIyBBcmd1bWVudHMKCiogYHRocmVzaG9sZGAgLSBUaGUgdGhyZXNob2xkIHRvIGV4dGVuZCB0aGUgVFRMIChpZiBjdXJyZW50IFRUTCBpcyBiZWxvdyB0aGlzLCBleHRlbmQpLgoqIGBleHRlbmRfdG9gIC0gVGhlIFRUTCB0byBleHRlbmQgdG8uAAAAAAAAE2V4dGVuZF9pbnN0YW5jZV90dGwAAAAAAgAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAAJZXh0ZW5kX3RvAAAAAAAABAAAAAAAAAAAAAABj1NldHMgVFRMIGNvbmZpZ3MgZm9yIGluc3RhbmNlIGFuZCBwZXJzaXN0ZW50IHN0b3JhZ2UuCgotIGBOb25lYCB2YWx1ZXMgcmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZyAoZGlzYWJsZXMgYXV0by1leHRlbnNpb24gZm9yIHRoYXQgdHlwZSkKLSBWYWxpZGF0ZXMgdGhhdCBgdGhyZXNob2xkIDw9IGV4dGVuZF90byA8PSBNQVhfVFRMYAoKIyBBcmd1bWVudHMKLSBgaW5zdGFuY2VgIC0gVFRMIGNvbmZpZyBmb3IgaW5zdGFuY2Ugc3RvcmFnZQotIGBwZXJzaXN0ZW50YCAtIFRUTCBjb25maWcgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZQoKIyBQYW5pY3MKLSBgVHRsQ29uZmlnRnJvemVuYCBpZiBjb25maWdzIGFyZSBmcm96ZW4KLSBgSW52YWxpZFR0bENvbmZpZ2AgaWYgdmFsaWRhdGlvbiBmYWlscwAAAAAPc2V0X3R0bF9jb25maWdzAAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAEhSZXR1cm5zIHRoZSBjdXJyZW50IFRUTCBjb25maWdzIGFzIChpbnN0YW5jZV9jb25maWcsIHBlcnNpc3RlbnRfY29uZmlnKS4AAAALdHRsX2NvbmZpZ3MAAAAAAAAAAAEAAAPtAAAAAgAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAADhUGVybWFuZW50bHkgZnJlZXplcyBUVEwgY29uZmlncywgcHJldmVudGluZyBhbnkgZnV0dXJlIG1vZGlmaWNhdGlvbnMuCgpUaGlzIGlzIGlycmV2ZXJzaWJsZSBhbmQgcHJvdmlkZXMgaW1tdXRhYmlsaXR5IGd1YXJhbnRlZXMgdG8gdXNlcnMuCkVtaXRzIGBUdGxDb25maWdzRnJvemVuYCBldmVudC4KCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0FscmVhZHlGcm96ZW5gIGlmIGFscmVhZHkgZnJvemVuAAAAAAAAEmZyZWV6ZV90dGxfY29uZmlncwAAAAAAAAAAAAAAAAAAAAAAJ1JldHVybnMgd2hldGhlciBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAVaXNfdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAAEAAAABAAAAAAAAAK5SZXRyaWV2ZXMgdGhlIE9BcHAgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCiMgUmV0dXJucwpBIHR1cGxlIGNvbnRhaW5pbmc6Ci0gYHNlbmRlcl92ZXJzaW9uYDogVGhlIHZlcnNpb24gb2YgdGhlIE9BcHBTZW5kZXIKLSBgcmVjZWl2ZXJfdmVyc2lvbmA6IFRoZSB2ZXJzaW9uIG9mIHRoZSBPQXBwUmVjZWl2ZXIAAAAAAAxvYXBwX3ZlcnNpb24AAAAAAAAAAQAAA+0AAAACAAAABgAAAAYAAAAAAAAAbFJldHJpZXZlcyB0aGUgTGF5ZXJaZXJvIGVuZHBvaW50IGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBPQXBwLgoKIyBSZXR1cm5zClRoZSBMYXllclplcm8gZW5kcG9pbnQgYWRkcmVzcwAAAAhlbmRwb2ludAAAAAAAAAABAAAAEwAAAAAAAADBUmV0cmlldmVzIHRoZSBwZWVyIChPQXBwKSBhc3NvY2lhdGVkIHdpdGggYSBjb3JyZXNwb25kaW5nIGVuZHBvaW50LgoKIyBBcmd1bWVudHMKKiBgZWlkYCAtIFRoZSBlbmRwb2ludCBJRAoKIyBSZXR1cm5zClRoZSBwZWVyIGFkZHJlc3MgKE9BcHAgaW5zdGFuY2UpIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBlbmRwb2ludAAAAAAAAARwZWVyAAAAAQAAAAAAAAADZWlkAAAAAAQAAAABAAAD6AAAA+4AAAAgAAAAAAAAAOVTZXRzIG9yIHJlbW92ZXMgdGhlIHBlZXIgYWRkcmVzcyAoT0FwcCBpbnN0YW5jZSkgZm9yIGEgY29ycmVzcG9uZGluZyBlbmRwb2ludC4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKKiBgcGVlcmAgLSBUaGUgYWRkcmVzcyBvZiB0aGUgcGVlciB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZW5kcG9pbnQsIG9yIE5vbmUgdG8gcmVtb3ZlIHRoZSBwZWVyAAAAAAAACHNldF9wZWVyAAAAAgAAAAAAAAADZWlkAAAAAAQAAAAAAAAABHBlZXIAAAPoAAAD7gAAACAAAAAAAAAAAAAAAI5TZXRzIHRoZSBkZWxlZ2F0ZSBhZGRyZXNzIGZvciB0aGUgT0FwcCBDb3JlLgoKIyBBcmd1bWVudHMKKiBgZGVsZWdhdGVgIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIGRlbGVnYXRlIHRvIGJlIHNldCwgb3IgTm9uZSB0byByZW1vdmUgdGhlIGRlbGVnYXRlAAAAAAAMc2V0X2RlbGVnYXRlAAAAAQAAAAAAAAAIZGVsZWdhdGUAAAPoAAAAEwAAAAAAAAAAAAAAt0NoZWNrcyBpZiBhIG1lc3NhZ2luZyBwYXRoIGNhbiBiZSBpbml0aWFsaXplZCBmb3IgdGhlIGdpdmVuIG9yaWdpbi4KCiMgQXJndW1lbnRzCiogYG9yaWdpbmAgLSBUaGUgb3JpZ2luIG9mIHRoZSBtZXNzYWdlCgojIFJldHVybnMKVHJ1ZSBpZiB0aGUgcGF0aCBjYW4gYmUgaW5pdGlhbGl6ZWQsIGZhbHNlIG90aGVyd2lzZQAAAAAVYWxsb3dfaW5pdGlhbGl6ZV9wYXRoAAAAAAAAAQAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAQAAAAEAAAAAAAAB+FJldHJpZXZlcyB0aGUgbmV4dCBub25jZSBmb3IgYSBnaXZlbiBzb3VyY2UgZW5kcG9pbnQgYW5kIHNlbmRlciBhZGRyZXNzLgoKVGhlIHBhdGggbm9uY2Ugc3RhcnRzIGZyb20gMS4gSWYgMCBpcyByZXR1cm5lZCBpdCBtZWFucyB0aGF0IHRoZXJlIGlzIE5PIG5vbmNlIG9yZGVyZWQgZW5mb3JjZW1lbnQuClRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIG9mZi1jaGFpbiBleGVjdXRvciB0byBkZXRlcm1pbmUgaWYgdGhlIE9BcHAgZXhwZWN0cyBtZXNzYWdlIGV4ZWN1dGlvbiB0byBiZSBvcmRlcmVkLgpUaGlzIGlzIGFsc28gZW5mb3JjZWQgYnkgdGhlIE9BcHAuCkJ5IGRlZmF1bHQgdGhpcyBpcyBOT1QgZW5hYmxlZCwgaS5lLiBuZXh0X25vbmNlIGlzIGhhcmRjb2RlZCB0byByZXR1cm4gMC4KCiMgQXJndW1lbnRzCiogYHNyY19laWRgIC0gVGhlIHNvdXJjZSBlbmRwb2ludCBJRAoqIGBzZW5kZXJgIC0gVGhlIHNlbmRlciBPQXBwIGFkZHJlc3MKCiMgUmV0dXJucwpUaGUgbmV4dCBub25jZQAAAApuZXh0X25vbmNlAAAAAAACAAAAAAAAAAdzcmNfZWlkAAAAAAQAAAAAAAAABnNlbmRlcgAAAAAD7gAAACAAAAABAAAABgAAAAAAAAMjRW50cnkgcG9pbnQgZm9yIHJlY2VpdmluZyBtZXNzYWdlcyBvciBwYWNrZXRzIGZyb20gdGhlIExheWVyWmVybyBlbmRwb2ludC4KClRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIGBjbGVhcl9wYXlsb2FkX2FuZF90cmFuc2ZlcmAgdG8gdmFsaWRhdGUgdGhlIG1lc3NhZ2UKYW5kIGNsZWFyIGl0IGZyb20gdGhlIGVuZHBvaW50LCB0aGVuIGRlbGVnYXRlcyB0byBgX19sel9yZWNlaXZlYCBmb3IgYXBwbGljYXRpb24gbG9naWMuCgojIEFyZ3VtZW50cwoqIGBleGVjdXRvcmAgLSBUaGUgYWRkcmVzcyBvZiB0aGUgZXhlY3V0b3IgZm9yIHRoZSByZWNlaXZlZCBtZXNzYWdlCiogYG9yaWdpbmAgLSBUaGUgb3JpZ2luIGluZm9ybWF0aW9uIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBlbmRwb2ludCBhbmQgc2VuZGVyIGFkZHJlc3M6Ci0gYHNyY19laWRgOiBUaGUgc291cmNlIGNoYWluIGVuZHBvaW50IElECi0gYHNlbmRlcmA6IFRoZSBzZW5kZXIgYWRkcmVzcyBvbiB0aGUgc291cmNlIGNoYWluCi0gYG5vbmNlYDogVGhlIG5vbmNlIG9mIHRoZSBtZXNzYWdlCiogYGd1aWRgIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVjZWl2ZWQgTGF5ZXJaZXJvIG1lc3NhZ2UKKiBgbWVzc2FnZWAgLSBUaGUgcGF5bG9hZCBvZiB0aGUgcmVjZWl2ZWQgbWVzc2FnZQoqIGBleHRyYV9kYXRhYCAtIEFkZGl0aW9uYWwgYXJiaXRyYXJ5IGRhdGEgcHJvdmlkZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgZXhlY3V0b3IKKiBgdmFsdWVgIC0gVGhlIG5hdGl2ZSB0b2tlbiB2YWx1ZSBzZW50IHdpdGggdGhlIG1lc3NhZ2UAAAAACmx6X3JlY2VpdmUAAAAAAAYAAAAAAAAACGV4ZWN1dG9yAAAAEwAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAAAAAARndWlkAAAD7gAAACAAAAAAAAAAB21lc3NhZ2UAAAAADgAAAAAAAAAKZXh0cmFfZGF0YQAAAAAADgAAAAAAAAAFdmFsdWUAAAAAAAALAAAAAAAAAAAAAAHsSW5kaWNhdGVzIHdoZXRoZXIgYW4gYWRkcmVzcyBpcyBhbiBhcHByb3ZlZCBjb21wb3NlTXNnIHNlbmRlciB0byB0aGUgRW5kcG9pbnQuCgpBcHBsaWNhdGlvbnMgY2FuIG9wdGlvbmFsbHkgY2hvb3NlIHRvIGltcGxlbWVudCBzZXBhcmF0ZSBjb21wb3NlTXNnIHNlbmRlcnMgdGhhdCBhcmUgTk9UIHRoZSBicmlkZ2luZyBsYXllci4KVGhlIGRlZmF1bHQgc2VuZGVyIElTIHRoZSBPQXBwUmVjZWl2ZXIgaW1wbGVtZW50ZXIuCgojIEFyZ3VtZW50cwoqIGBvcmlnaW5gIC0gVGhlIG9yaWdpbiBpbmZvcm1hdGlvbiBjb250YWluaW5nIHRoZSBzb3VyY2UgZW5kcG9pbnQgYW5kIHNlbmRlciBhZGRyZXNzCiogYG1lc3NhZ2VgIC0gVGhlIGx6UmVjZWl2ZSBwYXlsb2FkCiogYHNlbmRlcmAgLSBUaGUgc2VuZGVyIGFkZHJlc3MgdG8gY2hlY2sKCiMgUmV0dXJucwpUcnVlIGlmIHRoZSBzZW5kZXIgaXMgYSB2YWxpZCBjb21wb3NlTXNnIHNlbmRlciwgZmFsc2Ugb3RoZXJ3aXNlAAAAFWlzX2NvbXBvc2VfbXNnX3NlbmRlcgAAAAAAAAMAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAAAAAAHbWVzc2FnZQAAAAAOAAAAAAAAAAZzZW5kZXIAAAAAABMAAAABAAAAAQAAAAAAAADZUmV0cmlldmVzIHRoZSBlbmZvcmNlZCBvcHRpb25zIGZvciBhIGdpdmVuIGVuZHBvaW50IGFuZCBtZXNzYWdlIHR5cGUuCgojIEFyZ3VtZW50cwoqIGBlaWRgIC0gVGhlIGVuZHBvaW50IElECiogYG1zZ190eXBlYCAtIFRoZSBPQXBwIG1lc3NhZ2UgdHlwZQoKIyBSZXR1cm5zClRoZSBlbmZvcmNlZCBvcHRpb25zIGZvciB0aGUgZ2l2ZW4gZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZQAAAAAAABBlbmZvcmNlZF9vcHRpb25zAAAAAgAAAAAAAAADZWlkAAAAAAQAAAAAAAAACG1zZ190eXBlAAAABAAAAAEAAAAOAAAAAAAAAptTZXRzIHRoZSBlbmZvcmNlZCBvcHRpb25zIGZvciBzcGVjaWZpYyBlbmRwb2ludCBhbmQgbWVzc2FnZSB0eXBlIGNvbWJpbmF0aW9ucy4KCk9ubHkgdGhlIGBhdXRob3JpemVyYCBvZiB0aGUgT0FwcCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLgpQcm92aWRlcyBhIHdheSBmb3IgdGhlIE9BcHAgdG8gZW5mb3JjZSB0aGluZ3MgbGlrZSBwYXlpbmcgZm9yIFByZUNyaW1lLCBBTkQvT1IgbWluaW11bSBkc3QgbHpSZWNlaXZlIGdhcyBhbW91bnRzIGV0Yy4KVGhlc2UgZW5mb3JjZWQgb3B0aW9ucyBjYW4gdmFyeSBhcyB0aGUgcG90ZW50aWFsIG9wdGlvbnMvZXhlY3V0aW9uIG9uIHRoZSByZW1vdGUgbWF5IGRpZmZlciBhcyBwZXIgdGhlIG1zZ190eXBlLgplLmcuIEFtb3VudCBvZiBselJlY2VpdmUoKSBnYXMgbmVjZXNzYXJ5IHRvIGRlbGl2ZXIgYSBsekNvbXBvc2UoKSBtZXNzYWdlIGFkZHMgb3ZlcmhlYWQgeW91IGRvbid0IHdhbnQgdG8gcGF5CmlmIHlvdSBhcmUgb25seSBtYWtpbmcgYSBzdGFuZGFyZCBMYXllclplcm8gbWVzc2FnZSBpZS4gbHpSZWNlaXZlKCkgV0lUSE9VVCBzZW5kQ29tcG9zZSgpLgoKIyBBcmd1bWVudHMKKiBgb3B0aW9uc2AgLSBBIHZlY3RvciBvZiBFbmZvcmNlZE9wdGlvblBhcmFtIHN0cnVjdHVyZXMgc3BlY2lmeWluZyBlbmZvcmNlZCBvcHRpb25zAAAAABRzZXRfZW5mb3JjZWRfb3B0aW9ucwAAAAEAAAAAAAAAB29wdGlvbnMAAAAD6gAAB9AAAAATRW5mb3JjZWRPcHRpb25QYXJhbQAAAAAAAAAAAAAAAnpDb21iaW5lcyBvcHRpb25zIGZvciBhIGdpdmVuIGVuZHBvaW50IGFuZCBtZXNzYWdlIHR5cGUuCgpJZiB0aGVyZSBpcyBhbiBlbmZvcmNlZCBselJlY2VpdmUgb3B0aW9uOgotIHtnYXNfbGltaXQ6IDIwMGssIHZhbHVlOiAxIFhMTX0gQU5EIGEgY2FsbGVyIHN1cHBsaWVzIGEgbHpSZWNlaXZlIG9wdGlvbjoge2dhc19saW1pdDogMTAwaywgdmFsdWU6IDAuNSBYTE19Ci0gVGhlIHJlc3VsdGluZyBvcHRpb25zIHdpbGwgYmUge2dhc19saW1pdDogMzAwaywgdmFsdWU6IDEuNSBYTE19IHdoZW4gdGhlIG1lc3NhZ2UgaXMgZXhlY3V0ZWQgb24gdGhlIHJlbW90ZSBsel9yZWNlaXZlKCkgZnVuY3Rpb24uClRoZSBwcmVzZW5jZSBvZiBkdXBsaWNhdGVkIG9wdGlvbnMgaXMgaGFuZGxlZCBvZmYtY2hhaW4gaW4gdGhlIHZlcmlmaWVyL2V4ZWN1dG9yLgoKIyBBcmd1bWVudHMKKiBgZWlkYCAtIFRoZSBlbmRwb2ludCBJRAoqIGBtc2dfdHlwZWAgLSBUaGUgT0FwcCBtZXNzYWdlIHR5cGUKKiBgZXh0cmFfb3B0aW9uc2AgLSBBZGRpdGlvbmFsIG9wdGlvbnMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIKCiMgUmV0dXJucwpUaGUgY29tYmluYXRpb24gb2YgY2FsbGVyIHNwZWNpZmllZCBvcHRpb25zIEFORCBlbmZvcmNlZCBvcHRpb25zAAAAAAAPY29tYmluZV9vcHRpb25zAAAAAAMAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAAhtc2dfdHlwZQAAAAQAAAAAAAAADWV4dHJhX29wdGlvbnMAAAAAAAAOAAAAAQAAAA4A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AAAUUGF0aE5vdEluaXRpYWxpemFibGUAAAASAAAAAAAAABFQYXRoTm90VmVyaWZpYWJsZQAAAAAAABMAAAAAAAAAE1BheWxvYWRIYXNoTm90Rm91bmQAAAAAFAAAAAAAAAAJU2FtZVZhbHVlAAAAAAAAFQAAAAAAAAAMVW5hdXRob3JpemVkAAAAFgAAAAAAAAAOVW5zdXBwb3J0ZWRFaWQAAAAAABcAAAAAAAAAClplcm9acm9GZWUAAAAAABgAAAAAAAAADlpyb1VuYXZhaWxhYmxlAAAAAAAZAAAAAQAAAC1QYXJhbWV0ZXJzIGZvciBzZW5kaW5nIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4AAAAAAAAAAAAAD01lc3NhZ2luZ1BhcmFtcwAAAAAFAAAAK0Rlc3RpbmF0aW9uIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAB2RzdF9laWQAAAAABAAAABxUaGUgbWVzc2FnZSBwYXlsb2FkIHRvIHNlbmQuAAAAB21lc3NhZ2UAAAAADgAAACFFbmNvZGVkIGV4ZWN1dG9yIGFuZCBEVk4gb3B0aW9ucy4AAAAAAAAHb3B0aW9ucwAAAAAOAAAAOVdoZXRoZXIgdG8gcGF5IGZlZXMgaW4gWlJPIHRva2VuIGluc3RlYWQgb2YgbmF0aXZlIHRva2VuLgAAAAAAAApwYXlfaW5fenJvAAAAAAABAAAANVJlY2VpdmVyIGFkZHJlc3Mgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAABAAAATVNvdXJjZSBtZXNzYWdlIGluZm9ybWF0aW9uIGlkZW50aWZ5aW5nIHdoZXJlIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZSBjYW1lIGZyb20uAAAAAAAAAAAAAAZPcmlnaW4AAAAAAAMAAAAXTm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAABW5vbmNlAAAAAAAABgAAAC5TZW5kZXIgYWRkcmVzcyBvbiB0aGUgc291cmNlIGNoYWluICgzMiBieXRlcykuAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAACZTb3VyY2UgZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAAB3NyY19laWQAAAAABAAAAAEAAAAoRmVlIHN0cnVjdHVyZSBmb3IgY3Jvc3MtY2hhaW4gbWVzc2FnaW5nLgAAAAAAAAAMTWVzc2FnaW5nRmVlAAAAAgAAAB9GZWUgcGFpZCBpbiBuYXRpdmUgdG9rZW4gKFhMTSkuAAAAAApuYXRpdmVfZmVlAAAAAAALAAAAKEZlZSBwYWlkIGluIFpSTyB0b2tlbiAoTGF5ZXJaZXJvIHRva2VuKS4AAAAHenJvX2ZlZQAAAAALAAAAAQAAAEJSZWNlaXB0IHJldHVybmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBzZW5kaW5nIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4AAAAAAAAAAAAQTWVzc2FnaW5nUmVjZWlwdAAAAAMAAAApVGhlIGZlZXMgY2hhcmdlZCBmb3Igc2VuZGluZyB0aGUgbWVzc2FnZS4AAAAAAAADZmVlAAAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAK0dsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbWVzc2FnZS4AAAAABGd1aWQAAAPuAAAAIAAAACRUaGUgb3V0Ym91bmQgbm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAFbm9uY2UAAAAAAAAGAAAAAgAAADhUeXBlIG9mIG1lc3NhZ2UgbGlicmFyeSBpbmRpY2F0aW5nIHN1cHBvcnRlZCBvcGVyYXRpb25zLgAAAAAAAAAOTWVzc2FnZUxpYlR5cGUAAAAAAAMAAAAAAAAAH1N1cHBvcnRzIG9ubHkgc2VuZGluZyBtZXNzYWdlcy4AAAAABFNlbmQAAAAAAAAAIVN1cHBvcnRzIG9ubHkgcmVjZWl2aW5nIG1lc3NhZ2VzLgAAAAAAAAdSZWNlaXZlAAAAAAAAAAAtU3VwcG9ydHMgYm90aCBzZW5kaW5nIGFuZCByZWNlaXZpbmcgbWVzc2FnZXMuAAAAAAAADlNlbmRBbmRSZWNlaXZlAAAAAAABAAAAt1ZlcnNpb24gaW5mb3JtYXRpb24gZm9yIGEgbWVzc2FnZSBsaWJyYXJ5LgoKTm90ZTogYG1pbm9yYCBhbmQgYGVuZHBvaW50X3ZlcnNpb25gIHVzZSBgdTMyYCBpbnN0ZWFkIG9mIGB1OGAgYmVjYXVzZSBTdGVsbGFyIGRvZXMgbm90CnN1cHBvcnQgYHU4YCB0eXBlcyBpbiBjb250cmFjdCBpbnRlcmZhY2UgZnVuY3Rpb25zLgAAAAAAAAAAEU1lc3NhZ2VMaWJWZXJzaW9uAAAAAAAAAwAAADNFbmRwb2ludCB2ZXJzaW9uIChzaG91bGQgbm90IGV4Y2VlZCB1ODo6TUFYID0gMjU1KS4AAAAAEGVuZHBvaW50X3ZlcnNpb24AAAAEAAAAFU1ham9yIHZlcnNpb24gbnVtYmVyLgAAAAAAAAVtYWpvcgAAAAAAAAYAAAA3TWlub3IgdmVyc2lvbiBudW1iZXIgKHNob3VsZCBub3QgZXhjZWVkIHU4OjpNQVggPSAyNTUpLgAAAAAFbWlub3IAAAAAAAAEAAAAAQAAADZUaW1lb3V0IGNvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmUgbGlicmFyeSB0cmFuc2l0aW9ucy4AAAAAAAAAAAAHVGltZW91dAAAAAACAAAAKFVuaXggdGltZXN0YW1wIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4AAAAGZXhwaXJ5AAAAAAAGAAAAKVRoZSBuZXcgbGlicmFyeSBhZGRyZXNzIHRvIHRyYW5zaXRpb24gdG8uAAAAAAAAA2xpYgAAAAATAAAAAQAAADVQYXJhbWV0ZXJzIGZvciBzZXR0aW5nIG1lc3NhZ2UgbGlicmFyeSBjb25maWd1cmF0aW9uLgAAAAAAAAAAAAAOU2V0Q29uZmlnUGFyYW0AAAAAAAMAAAAfWERSLWVuY29kZWQgY29uZmlndXJhdGlvbiBkYXRhLgAAAAAGY29uZmlnAAAAAAAOAAAAMFRoZSB0eXBlIG9mIGNvbmZpZ3VyYXRpb24gKGUuZy4sIGV4ZWN1dG9yLCBVTE4pLgAAAAtjb25maWdfdHlwZQAAAAAEAAAAJ1RoZSBlbmRwb2ludCBJRCB0aGlzIGNvbmZpZyBhcHBsaWVzIHRvLgAAAAADZWlkAAAAAAQAAAABAAAAMVJlc29sdmVkIGxpYnJhcnkgaW5mb3JtYXRpb24gd2l0aCBkZWZhdWx0IHN0YXR1cy4AAAAAAAAAAAAAD1Jlc29sdmVkTGlicmFyeQAAAAACAAAARFdoZXRoZXIgdGhpcyBpcyB0aGUgZGVmYXVsdCBsaWJyYXJ5ICh0cnVlKSBvciBPQXBwLXNwZWNpZmljIChmYWxzZSkuAAAACmlzX2RlZmF1bHQAAAAAAAEAAAAdVGhlIHJlc29sdmVkIGxpYnJhcnkgYWRkcmVzcy4AAAAAAAADbGliAAAAABMAAAABAAAASE91dGJvdW5kIHBhY2tldCBjb250YWluaW5nIGFsbCBpbmZvcm1hdGlvbiBmb3IgY3Jvc3MtY2hhaW4gdHJhbnNtaXNzaW9uLgAAAAAAAAAOT3V0Ym91bmRQYWNrZXQAAAAAAAcAAAAYRGVzdGluYXRpb24gZW5kcG9pbnQgSUQuAAAAB2RzdF9laWQAAAAABAAAACxHbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBtZXNzYWdlLgAAAARndWlkAAAD7gAAACAAAAAUVGhlIG1lc3NhZ2UgcGF5bG9hZC4AAAAHbWVzc2FnZQAAAAAOAAAAIE91dGJvdW5kIG5vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAABW5vbmNlAAAAAAAABgAAADFSZWNlaXZlciBhZGRyZXNzIG9uIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAAfU2VuZGVyIGFkZHJlc3Mgb24gc291cmNlIGNoYWluLgAAAAAGc2VuZGVyAAAAAAATAAAAE1NvdXJjZSBlbmRwb2ludCBJRC4AAAAAB3NyY19laWQAAAAABAAAAAEAAAArQSBmZWUgcmVjaXBpZW50IHdpdGggdGhlIGFtb3VudCB0byBiZSBwYWlkLgAAAAAAAAAADEZlZVJlY2lwaWVudAAAAAIAAAAVQW1vdW50IG9mIGZlZSB0byBwYXkuAAAAAAAABmFtb3VudAAAAAAACwAAAB9UaGUgYWRkcmVzcyB0byBzZW5kIHRoZSBmZWUgdG8uAAAAAAJ0bwAAAAAAEwAAAAEAAAA8UmVzdWx0IG9mIHNlbmQgb3BlcmF0aW9uIGNvbnRhaW5pbmcgZmVlcyBhbmQgZW5jb2RlZCBwYWNrZXQuAAAAAAAAAA1GZWVzQW5kUGFja2V0AAAAAAAAAwAAACpUaGUgZW5jb2RlZCBwYWNrZXQgcmVhZHkgZm9yIHRyYW5zbWlzc2lvbi4AAAAAAA5l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IChPcHRpb25hbCkAAAALY29tcG9zZV9tc2cAAAAADgAAABtUaGUgZGVzdGluYXRpb24gZW5kcG9pbnQgSUQAAAAAB2RzdF9laWQAAAAABAAAADdBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBMYXllclplcm8gbWVzc2FnZSAoT3B0aW9uYWwpAAAAAA1leHRyYV9vcHRpb25zAAAAAAAADgAAAEVUaGUgbWluaW11bSBhbW91bnQgdG8gcmVjZWl2ZSBpbiBsb2NhbCBkZWNpbWFscyAoc2xpcHBhZ2UgcHJvdGVjdGlvbikAAAAAAAANbWluX2Ftb3VudF9sZAAAAAAAAAsAAAAqT0ZUIGNvbW1hbmQgZm9yIGN1c3RvbSBiZWhhdmlvciAoT3B0aW9uYWwpAAAAAAAHb2Z0X2NtZAAAAAAOAAAAOVRoZSByZWNpcGllbnQgYWRkcmVzcyBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4gKDMyIGJ5dGVzKQAAAAAAAAJ0bwAAAAAD7gAAACAAAAABAAAAIlRyYW5zZmVyIGxpbWl0cyBmb3IgT0ZUIG9wZXJhdGlvbnMAAAAAAAAAAAAIT0ZUTGltaXQAAAACAAAALFRoZSBtYXhpbXVtIGFtb3VudCB0byBzZW5kIGluIGxvY2FsIGRlY2ltYWxzAAAADW1heF9hbW91bnRfbGQAAAAAAAALAAAALFRoZSBtaW5pbXVtIGFtb3VudCB0byBzZW5kIGluIGxvY2FsIGRlY2ltYWxzAAAADW1pbl9hbW91bnRfbGQAAAAAAAALAAAAAQAAAD9SZWNlaXB0IGNvbnRhaW5pbmcgYW1vdW50cyBzZW50IGFuZCByZWNlaXZlZCBpbiBhbiBPRlQgdHJhbnNmZXIAAAAAAAAAAApPRlRSZWNlaXB0AAAAAAACAAAAM1RoZSBhbW91bnQgcmVjZWl2ZWQgaW4gbG9jYWwgZGVjaW1hbHMgb24gdGhlIHJlbW90ZQAAAAASYW1vdW50X3JlY2VpdmVkX2xkAAAAAAALAAAAIVRoZSBhbW91bnQgc2VudCBpbiBsb2NhbCBkZWNpbWFscwAAAAAAAA5hbW91bnRfc2VudF9sZAAAAAAACwAAAAEAAAAuRGV0YWlscyBhYm91dCBmZWVzIGNoYXJnZWQgaW4gYW4gT0ZUIG9wZXJhdGlvbgAAAAAAAAAAAAxPRlRGZWVEZXRhaWwAAAACAAAAGlRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZmVlAAAAAAALZGVzY3JpcHRpb24AAAAADgAAAH9UaGUgYW1vdW50IG9mIHRoZSBmZWUgaW4gbG9jYWwgZGVjaW1hbHMuIFBvc2l0aXZlIHZhbHVlcyByZXByZXNlbnQgZmVlcyBjaGFyZ2VkLAp3aGlsZSBuZWdhdGl2ZSB2YWx1ZXMgcmVwcmVzZW50IHJld2FyZHMgZ2l2ZW4uAAAAAA1mZWVfYW1vdW50X2xkAAAAAAAACwAAAAQAAAAcQnVmZmVyUmVhZGVyRXJyb3I6IDEwMDAtMTAwOQAAAAAAAAARQnVmZmVyUmVhZGVyRXJyb3IAAAAAAAACAAAAAAAAAA1JbnZhbGlkTGVuZ3RoAAAAAAAD6AAAAAAAAAAVSW52YWxpZEFkZHJlc3NQYXlsb2FkAAAAAAAD6QAAAAQAAAAcQnVmZmVyV3JpdGVyRXJyb3I6IDEwMTAtMTAxOQAAAAAAAAARQnVmZmVyV3JpdGVyRXJyb3IAAAAAAAABAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPyAAAABAAAAB9UdGxDb25maWd1cmFibGVFcnJvcjogMTAyMC0xMDI5AAAAAAAAAAAUVHRsQ29uZmlndXJhYmxlRXJyb3IAAAADAAAAAAAAABBJbnZhbGlkVHRsQ29uZmlnAAAD/AAAAAAAAAAPVHRsQ29uZmlnRnJvemVuAAAAA/0AAAAAAAAAFlR0bENvbmZpZ0FscmVhZHlGcm96ZW4AAAAAA/4AAAAEAAAAF093bmFibGVFcnJvcjogMTAzMC0xMDM5AAAAAAAAAAAMT3duYWJsZUVycm9yAAAABgAAAAAAAAATSW52YWxpZFBlbmRpbmdPd25lcgAAAAQGAAAAAAAAAApJbnZhbGlkVHRsAAAAAAQHAAAAAAAAABFOb1BlbmRpbmdUcmFuc2ZlcgAAAAAABAgAAAAAAAAAD093bmVyQWxyZWFkeVNldAAAAAQJAAAAAAAAAAtPd25lck5vdFNldAAAAAQKAAAAAAAAABJUcmFuc2ZlckluUHJvZ3Jlc3MAAAAABAsAAAAEAAAAGEJ5dGVzRXh0RXJyb3I6IDEwNDAtMTA0OQAAAAAAAAANQnl0ZXNFeHRFcnJvcgAAAAAAAAEAAAAAAAAADkxlbmd0aE1pc21hdGNoAAAAAAQQAAAABAAAABtVcGdyYWRlYWJsZUVycm9yOiAxMDUwLTEwNTkAAAAAAAAAABBVcGdyYWRlYWJsZUVycm9yAAAAAwAAAAAAAAAUSW52YWxpZE1pZ3JhdGlvbkRhdGEAAAQaAAAAAAAAABNNaWdyYXRpb25Ob3RBbGxvd2VkAAAABBsAAAAAAAAADlVwZ3JhZGVzRnJvemVuAAAAAAQcAAAABAAAABhNdWx0aXNpZ0Vycm9yOiAxMDYwLTEwNjkAAAAAAAAADU11bHRpc2lnRXJyb3IAAAAAAAAIAAAAAAAAABJBbHJlYWR5SW5pdGlhbGl6ZWQAAAAABCQAAAAAAAAADUludmFsaWRTaWduZXIAAAAAAAQlAAAAAAAAAA5TaWduYXR1cmVFcnJvcgAAAAAEJgAAAAAAAAATU2lnbmVyQWxyZWFkeUV4aXN0cwAAAAQnAAAAAAAAAA5TaWduZXJOb3RGb3VuZAAAAAAEKAAAAAAAAAAdVG90YWxTaWduZXJzTGVzc1RoYW5UaHJlc2hvbGQAAAAAAAQpAAAAAAAAAA9VbnNvcnRlZFNpZ25lcnMAAAAEKgAAAAAAAAANWmVyb1RocmVzaG9sZAAAAAAABCsAAAAFAAAAMEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHNpZ25lciBpcyBhZGRlZCBvciByZW1vdmVkLgAAAAAAAAAJU2lnbmVyU2V0AAAAAAAAAQAAAApzaWduZXJfc2V0AAAAAAACAAAAAAAAAAZzaWduZXIAAAAAA+4AAAAUAAAAAQAAAAAAAAAGYWN0aXZlAAAAAAABAAAAAAAAAAIAAAAFAAAANkV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2lnbmF0dXJlIHRocmVzaG9sZCBpcyBjaGFuZ2VkLgAAAAAAAAAAAAxUaHJlc2hvbGRTZXQAAAABAAAADXRocmVzaG9sZF9zZXQAAAAAAAABAAAAAAAAAAl0aHJlc2hvbGQAAAAAAAAEAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAPTXVsdGlzaWdTdG9yYWdlAAAAAAIAAAAAAAAAAAAAAAdTaWduZXJzAAAAAAAAAAAAAAAACVRocmVzaG9sZAAAAAAAAAUAAABXRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCAoYm90aCBzaW5nbGUtc3RlcCBhbmQgdHdvLXN0ZXAgY29tcGxldGlvbikuAAAAAAAAAAAUT3duZXJzaGlwVHJhbnNmZXJyZWQAAAABAAAAFW93bmVyc2hpcF90cmFuc2ZlcnJlZAAAAAAAAAIAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAIAAAAFAAAAO0V2ZW50IGVtaXR0ZWQgd2hlbiBhIDItc3RlcCBvd25lcnNoaXAgdHJhbnNmZXIgaXMgcHJvcG9zZWQuAAAAAAAAAAAVT3duZXJzaGlwVHJhbnNmZXJyaW5nAAAAAAAAAQAAABZvd25lcnNoaXBfdHJhbnNmZXJyaW5nAAAAAAADAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAAAAAAAA3R0bAAAAAAEAAAAAAAAAAIAAAAFAAAAKkV2ZW50IGVtaXR0ZWQgd2hlbiBvd25lcnNoaXAgaXMgcmVub3VuY2VkLgAAAAAAAAAAABJPd25lcnNoaXBSZW5vdW5jZWQAAAAAAAEAAAATb3duZXJzaGlwX3Jlbm91bmNlZAAAAAABAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAOT3duYWJsZVN0b3JhZ2UAAAAAAAIAAAAAAAAAAAAAAAVPd25lcgAAAAAAAAAAAAAAAAAADFBlbmRpbmdPd25lcgAAAAEAAABJVFRMIGNvbmZpZ3VyYXRpb246IHRocmVzaG9sZCAod2hlbiB0byBleHRlbmQpIGFuZCBleHRlbmRfdG8gKHRhcmdldCBUVEwpLgAAAAAAAAAAAAAJVHRsQ29uZmlnAAAAAAAAAgAAAChUYXJnZXQgVFRMIGFmdGVyIGV4dGVuc2lvbiAoaW4gbGVkZ2VycykuAAAACWV4dGVuZF90bwAAAAAAAAQAAAAzVFRMIHRocmVzaG9sZCB0aGF0IHRyaWdnZXJzIGV4dGVuc2lvbiAoaW4gbGVkZ2VycykuAAAAAAl0aHJlc2hvbGQAAAAAAAAEAAAABQAAACdFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIHNldC4AAAAAAAAAAA1UdGxDb25maWdzU2V0AAAAAAAAAQAAAA90dGxfY29uZmlnc19zZXQAAAAAAgAAAAAAAAAIaW5zdGFuY2UAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIFRUTCBjb25maWdzIGFyZSBmcm96ZW4uAAAAAAAAAAAAEFR0bENvbmZpZ3NGcm96ZW4AAAABAAAAEnR0bF9jb25maWdzX2Zyb3plbgAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAQVHRsQ29uZmlnU3RvcmFnZQAAAAMAAAAAAAAAAAAAAAZGcm96ZW4AAAAAAAAAAAAAAAAACEluc3RhbmNlAAAAAAAAAAAAAAAKUGVyc2lzdGVudAAAAAAAAgAAAAAAAAAAAAAAElVwZ3JhZGVhYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAJTWlncmF0aW5nAAAAAB4RY29udHJhY3RlbnZtZXRhdjAAAAAAAAAAGQAAAAAAbw5jb250cmFjdG1ldGF2MAAAAAAAAAAFcnN2ZXIAAAAAAAAGMS45MC4wAAAAAAAAAAAACHJzc2RrdmVyAAAALzI1LjAuMSM5NDE0NDgwNzllY2NmOTU2MjdkMmZmZWExM2JhMjY4ZTMwNWE5MDc3AABTDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAZjbGl2ZXIAAAAAAC8yNS4wLjAjYTY0OTI1ZTkzOTFjM2QzYjNlZjhlNTNkYzYwYzIzZGI5ZTZhODJlNAA=";
|
|
13
12
|
/**
|
|
14
13
|
* Pre-computed WASM hash (SHA-256)
|
|
15
14
|
* Use this when the WASM is already uploaded on-chain
|
|
16
15
|
*/
|
|
17
|
-
export declare const WASM_HASH = "
|
|
16
|
+
export declare const WASM_HASH = "6ded194b3d2189d1ab1b2bb0c877f3f758363aff666fbff8a67c25b545bad453";
|
|
18
17
|
/**
|
|
19
18
|
* Get the WASM bytecode as a Buffer
|
|
20
19
|
* Use this to upload the WASM to the network
|
|
@@ -31,16 +30,13 @@ export type OFTFeeStorage = {
|
|
|
31
30
|
values: void;
|
|
32
31
|
};
|
|
33
32
|
export declare const OFTFeeError: {
|
|
34
|
-
|
|
33
|
+
3100: {
|
|
35
34
|
message: string;
|
|
36
35
|
};
|
|
37
|
-
|
|
36
|
+
3101: {
|
|
38
37
|
message: string;
|
|
39
38
|
};
|
|
40
|
-
|
|
41
|
-
message: string;
|
|
42
|
-
};
|
|
43
|
-
2203: {
|
|
39
|
+
3102: {
|
|
44
40
|
message: string;
|
|
45
41
|
};
|
|
46
42
|
};
|
|
@@ -49,10 +45,10 @@ export type OFTPausableStorage = {
|
|
|
49
45
|
values: void;
|
|
50
46
|
};
|
|
51
47
|
export declare const OFTPausableError: {
|
|
52
|
-
|
|
48
|
+
3110: {
|
|
53
49
|
message: string;
|
|
54
50
|
};
|
|
55
|
-
|
|
51
|
+
3111: {
|
|
56
52
|
message: string;
|
|
57
53
|
};
|
|
58
54
|
};
|
|
@@ -63,30 +59,27 @@ export type Direction = {
|
|
|
63
59
|
tag: "Outbound";
|
|
64
60
|
values: void;
|
|
65
61
|
};
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Configuration for rate limiting, used as input parameter.
|
|
64
|
+
*/
|
|
65
|
+
export interface RateLimitConfig {
|
|
69
66
|
limit: i128;
|
|
70
67
|
window_seconds: u64;
|
|
71
68
|
}
|
|
72
|
-
export type RateLimitStorage = {
|
|
73
|
-
tag: "RateLimit";
|
|
74
|
-
values: readonly [Direction, u32];
|
|
75
|
-
};
|
|
76
69
|
export declare const RateLimitError: {
|
|
77
|
-
|
|
70
|
+
3120: {
|
|
78
71
|
message: string;
|
|
79
72
|
};
|
|
80
|
-
|
|
73
|
+
3121: {
|
|
81
74
|
message: string;
|
|
82
75
|
};
|
|
83
|
-
|
|
76
|
+
3122: {
|
|
84
77
|
message: string;
|
|
85
78
|
};
|
|
86
|
-
|
|
79
|
+
3123: {
|
|
87
80
|
message: string;
|
|
88
81
|
};
|
|
89
|
-
|
|
82
|
+
3124: {
|
|
90
83
|
message: string;
|
|
91
84
|
};
|
|
92
85
|
};
|
|
@@ -434,13 +427,19 @@ export declare const OFTError: {
|
|
|
434
427
|
3003: {
|
|
435
428
|
message: string;
|
|
436
429
|
};
|
|
430
|
+
3004: {
|
|
431
|
+
message: string;
|
|
432
|
+
};
|
|
437
433
|
};
|
|
438
434
|
export type OFTStorage = {
|
|
439
|
-
tag: "
|
|
435
|
+
tag: "DecimalsDiff";
|
|
440
436
|
values: void;
|
|
441
437
|
} | {
|
|
442
438
|
tag: "Token";
|
|
443
439
|
values: void;
|
|
440
|
+
} | {
|
|
441
|
+
tag: "MsgInspector";
|
|
442
|
+
values: void;
|
|
444
443
|
};
|
|
445
444
|
/**
|
|
446
445
|
* Parameters for sending OFT tokens cross-chain
|
|
@@ -586,6 +585,12 @@ export declare const UpgradeableError: {
|
|
|
586
585
|
1050: {
|
|
587
586
|
message: string;
|
|
588
587
|
};
|
|
588
|
+
1051: {
|
|
589
|
+
message: string;
|
|
590
|
+
};
|
|
591
|
+
1052: {
|
|
592
|
+
message: string;
|
|
593
|
+
};
|
|
589
594
|
};
|
|
590
595
|
/**
|
|
591
596
|
* MultisigError: 1060-1069
|
|
@@ -654,38 +659,26 @@ export type TtlConfigStorage = {
|
|
|
654
659
|
values: void;
|
|
655
660
|
};
|
|
656
661
|
export type UpgradeableStorage = {
|
|
662
|
+
tag: "Frozen";
|
|
663
|
+
values: void;
|
|
664
|
+
} | {
|
|
657
665
|
tag: "Migrating";
|
|
658
666
|
values: void;
|
|
659
667
|
};
|
|
660
668
|
export interface Client {
|
|
661
669
|
/**
|
|
662
670
|
* Construct and simulate a set_rate_limit 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.
|
|
671
|
+
* Sets or removes a rate limit for a specific direction and endpoint.
|
|
672
|
+
*
|
|
673
|
+
* # Arguments
|
|
674
|
+
* * `direction` - The direction (Inbound or Outbound)
|
|
675
|
+
* * `eid` - The endpoint ID
|
|
676
|
+
* * `config` - The rate limit configuration, or None to remove the rate limit
|
|
663
677
|
*/
|
|
664
|
-
set_rate_limit: ({ direction, eid,
|
|
665
|
-
direction: Direction;
|
|
666
|
-
eid: u32;
|
|
667
|
-
limit: i128;
|
|
668
|
-
window_seconds: u64;
|
|
669
|
-
}, txnOptions?: {
|
|
670
|
-
/**
|
|
671
|
-
* The fee to pay for the transaction. Default: BASE_FEE
|
|
672
|
-
*/
|
|
673
|
-
fee?: number;
|
|
674
|
-
/**
|
|
675
|
-
* The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
|
|
676
|
-
*/
|
|
677
|
-
timeoutInSeconds?: number;
|
|
678
|
-
/**
|
|
679
|
-
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
680
|
-
*/
|
|
681
|
-
simulate?: boolean;
|
|
682
|
-
}) => Promise<AssembledTransaction<null>>;
|
|
683
|
-
/**
|
|
684
|
-
* Construct and simulate a unset_rate_limit 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.
|
|
685
|
-
*/
|
|
686
|
-
unset_rate_limit: ({ direction, eid }: {
|
|
678
|
+
set_rate_limit: ({ direction, eid, config }: {
|
|
687
679
|
direction: Direction;
|
|
688
680
|
eid: u32;
|
|
681
|
+
config: Option<RateLimitConfig>;
|
|
689
682
|
}, txnOptions?: {
|
|
690
683
|
/**
|
|
691
684
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -702,6 +695,8 @@ export interface Client {
|
|
|
702
695
|
}) => Promise<AssembledTransaction<null>>;
|
|
703
696
|
/**
|
|
704
697
|
* Construct and simulate a rate_limit_config 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.
|
|
698
|
+
* Returns the rate limit configuration for a direction and endpoint.
|
|
699
|
+
* Returns None if no rate limit is configured.
|
|
705
700
|
*/
|
|
706
701
|
rate_limit_config: ({ direction, eid }: {
|
|
707
702
|
direction: Direction;
|
|
@@ -719,9 +714,10 @@ export interface Client {
|
|
|
719
714
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
720
715
|
*/
|
|
721
716
|
simulate?: boolean;
|
|
722
|
-
}) => Promise<AssembledTransaction<
|
|
717
|
+
}) => Promise<AssembledTransaction<Option<RateLimitConfig>>>;
|
|
723
718
|
/**
|
|
724
719
|
* Construct and simulate a rate_limit_in_flight 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.
|
|
720
|
+
* Returns the current in-flight amount for a direction and endpoint.
|
|
725
721
|
*/
|
|
726
722
|
rate_limit_in_flight: ({ direction, eid }: {
|
|
727
723
|
direction: Direction;
|
|
@@ -742,6 +738,8 @@ export interface Client {
|
|
|
742
738
|
}) => Promise<AssembledTransaction<i128>>;
|
|
743
739
|
/**
|
|
744
740
|
* Construct and simulate a rate_limit_capacity 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.
|
|
741
|
+
* Returns the available capacity for a direction and endpoint.
|
|
742
|
+
* Returns i128::MAX if no rate limit is configured.
|
|
745
743
|
*/
|
|
746
744
|
rate_limit_capacity: ({ direction, eid }: {
|
|
747
745
|
direction: Direction;
|
|
@@ -762,6 +760,7 @@ export interface Client {
|
|
|
762
760
|
}) => Promise<AssembledTransaction<i128>>;
|
|
763
761
|
/**
|
|
764
762
|
* Construct and simulate a set_default_fee_bps 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.
|
|
763
|
+
* Sets the default fee rate in basis points.
|
|
765
764
|
*/
|
|
766
765
|
set_default_fee_bps: ({ default_fee_bps }: {
|
|
767
766
|
default_fee_bps: u64;
|
|
@@ -781,10 +780,15 @@ export interface Client {
|
|
|
781
780
|
}) => Promise<AssembledTransaction<null>>;
|
|
782
781
|
/**
|
|
783
782
|
* Construct and simulate a set_fee_bps 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.
|
|
783
|
+
* Sets or removes the fee rate for a specific destination endpoint.
|
|
784
|
+
*
|
|
785
|
+
* # Arguments
|
|
786
|
+
* * `dst_eid` - The destination endpoint ID
|
|
787
|
+
* * `fee_bps` - The fee rate (0-10,000), or None to remove the fee configuration
|
|
784
788
|
*/
|
|
785
789
|
set_fee_bps: ({ dst_eid, fee_bps }: {
|
|
786
790
|
dst_eid: u32;
|
|
787
|
-
fee_bps: u64
|
|
791
|
+
fee_bps: Option<u64>;
|
|
788
792
|
}, txnOptions?: {
|
|
789
793
|
/**
|
|
790
794
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -800,10 +804,11 @@ export interface Client {
|
|
|
800
804
|
simulate?: boolean;
|
|
801
805
|
}) => Promise<AssembledTransaction<null>>;
|
|
802
806
|
/**
|
|
803
|
-
* Construct and simulate a
|
|
807
|
+
* Construct and simulate a set_fee_deposit_address 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.
|
|
808
|
+
* Sets the address where collected fees will be deposited.
|
|
804
809
|
*/
|
|
805
|
-
|
|
806
|
-
|
|
810
|
+
set_fee_deposit_address: ({ fee_deposit_address }: {
|
|
811
|
+
fee_deposit_address: string;
|
|
807
812
|
}, txnOptions?: {
|
|
808
813
|
/**
|
|
809
814
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -819,11 +824,10 @@ export interface Client {
|
|
|
819
824
|
simulate?: boolean;
|
|
820
825
|
}) => Promise<AssembledTransaction<null>>;
|
|
821
826
|
/**
|
|
822
|
-
* Construct and simulate a
|
|
827
|
+
* Construct and simulate a default_fee_bps 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.
|
|
828
|
+
* Returns the default fee rate in basis points.
|
|
823
829
|
*/
|
|
824
|
-
|
|
825
|
-
fee_deposit_address: string;
|
|
826
|
-
}, txnOptions?: {
|
|
830
|
+
default_fee_bps: (txnOptions?: {
|
|
827
831
|
/**
|
|
828
832
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
829
833
|
*/
|
|
@@ -836,11 +840,12 @@ export interface Client {
|
|
|
836
840
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
837
841
|
*/
|
|
838
842
|
simulate?: boolean;
|
|
839
|
-
}) => Promise<AssembledTransaction<
|
|
843
|
+
}) => Promise<AssembledTransaction<u64>>;
|
|
840
844
|
/**
|
|
841
|
-
* Construct and simulate a
|
|
845
|
+
* Construct and simulate a fee_bps 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.
|
|
846
|
+
* Returns the fee rate for a specific destination, if set.
|
|
842
847
|
*/
|
|
843
|
-
|
|
848
|
+
fee_bps: ({ dst_eid }: {
|
|
844
849
|
dst_eid: u32;
|
|
845
850
|
}, txnOptions?: {
|
|
846
851
|
/**
|
|
@@ -855,9 +860,10 @@ export interface Client {
|
|
|
855
860
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
856
861
|
*/
|
|
857
862
|
simulate?: boolean;
|
|
858
|
-
}) => Promise<AssembledTransaction<
|
|
863
|
+
}) => Promise<AssembledTransaction<Option<u64>>>;
|
|
859
864
|
/**
|
|
860
865
|
* Construct and simulate a effective_fee_bps 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.
|
|
866
|
+
* Returns the effective fee rate for a destination (destination-specific or default).
|
|
861
867
|
*/
|
|
862
868
|
effective_fee_bps: ({ dst_eid }: {
|
|
863
869
|
dst_eid: u32;
|
|
@@ -876,9 +882,10 @@ export interface Client {
|
|
|
876
882
|
simulate?: boolean;
|
|
877
883
|
}) => Promise<AssembledTransaction<u64>>;
|
|
878
884
|
/**
|
|
879
|
-
* Construct and simulate a
|
|
885
|
+
* Construct and simulate a fee_deposit_address 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.
|
|
886
|
+
* Returns the fee deposit address.
|
|
880
887
|
*/
|
|
881
|
-
|
|
888
|
+
fee_deposit_address: (txnOptions?: {
|
|
882
889
|
/**
|
|
883
890
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
884
891
|
*/
|
|
@@ -891,12 +898,18 @@ export interface Client {
|
|
|
891
898
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
892
899
|
*/
|
|
893
900
|
simulate?: boolean;
|
|
894
|
-
}) => Promise<AssembledTransaction<
|
|
901
|
+
}) => Promise<AssembledTransaction<string>>;
|
|
895
902
|
/**
|
|
896
|
-
* Construct and simulate a
|
|
903
|
+
* Construct and simulate a set_paused 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.
|
|
904
|
+
* Sets the paused state of the OFT.
|
|
905
|
+
*
|
|
906
|
+
* When paused, the OFT will reject new send/receive/quote_send/quote_oft operations.
|
|
907
|
+
*
|
|
908
|
+
* # Arguments
|
|
909
|
+
* * `paused` - `true` to pause, `false` to unpause
|
|
897
910
|
*/
|
|
898
|
-
|
|
899
|
-
|
|
911
|
+
set_paused: ({ paused }: {
|
|
912
|
+
paused: boolean;
|
|
900
913
|
}, txnOptions?: {
|
|
901
914
|
/**
|
|
902
915
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -910,11 +923,12 @@ export interface Client {
|
|
|
910
923
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
911
924
|
*/
|
|
912
925
|
simulate?: boolean;
|
|
913
|
-
}) => Promise<AssembledTransaction<
|
|
926
|
+
}) => Promise<AssembledTransaction<null>>;
|
|
914
927
|
/**
|
|
915
|
-
* Construct and simulate a
|
|
928
|
+
* Construct and simulate a is_paused 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.
|
|
929
|
+
* Returns the paused state of the OFT.
|
|
916
930
|
*/
|
|
917
|
-
|
|
931
|
+
is_paused: (txnOptions?: {
|
|
918
932
|
/**
|
|
919
933
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
920
934
|
*/
|
|
@@ -927,12 +941,12 @@ export interface Client {
|
|
|
927
941
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
928
942
|
*/
|
|
929
943
|
simulate?: boolean;
|
|
930
|
-
}) => Promise<AssembledTransaction<
|
|
944
|
+
}) => Promise<AssembledTransaction<boolean>>;
|
|
931
945
|
/**
|
|
932
|
-
* Construct and simulate a
|
|
946
|
+
* Construct and simulate a quote_oft 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.
|
|
933
947
|
*/
|
|
934
|
-
|
|
935
|
-
|
|
948
|
+
quote_oft: ({ send_param }: {
|
|
949
|
+
send_param: SendParam;
|
|
936
950
|
}, txnOptions?: {
|
|
937
951
|
/**
|
|
938
952
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -946,11 +960,12 @@ export interface Client {
|
|
|
946
960
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
947
961
|
*/
|
|
948
962
|
simulate?: boolean;
|
|
949
|
-
}) => Promise<AssembledTransaction<
|
|
963
|
+
}) => Promise<AssembledTransaction<readonly [OFTLimit, Array<OFTFeeDetail>, OFTReceipt]>>;
|
|
950
964
|
/**
|
|
951
|
-
* Construct and simulate a
|
|
965
|
+
* Construct and simulate a 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.
|
|
966
|
+
* Retrieves the token address associated with this OFT.
|
|
952
967
|
*/
|
|
953
|
-
|
|
968
|
+
token: (txnOptions?: {
|
|
954
969
|
/**
|
|
955
970
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
956
971
|
*/
|
|
@@ -963,13 +978,12 @@ export interface Client {
|
|
|
963
978
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
964
979
|
*/
|
|
965
980
|
simulate?: boolean;
|
|
966
|
-
}) => Promise<AssembledTransaction<
|
|
981
|
+
}) => Promise<AssembledTransaction<string>>;
|
|
967
982
|
/**
|
|
968
|
-
* Construct and simulate a
|
|
983
|
+
* Construct and simulate a oft_version 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.
|
|
984
|
+
* Returns OFT version as (major, minor).
|
|
969
985
|
*/
|
|
970
|
-
|
|
971
|
-
send_param: SendParam;
|
|
972
|
-
}, txnOptions?: {
|
|
986
|
+
oft_version: (txnOptions?: {
|
|
973
987
|
/**
|
|
974
988
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
975
989
|
*/
|
|
@@ -982,15 +996,12 @@ export interface Client {
|
|
|
982
996
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
983
997
|
*/
|
|
984
998
|
simulate?: boolean;
|
|
985
|
-
}) => Promise<AssembledTransaction<readonly [
|
|
999
|
+
}) => Promise<AssembledTransaction<readonly [u64, u64]>>;
|
|
986
1000
|
/**
|
|
987
|
-
* Construct and simulate a
|
|
1001
|
+
* Construct and simulate a shared_decimals 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.
|
|
1002
|
+
* Retrieves the shared decimals used for cross-chain normalization.
|
|
988
1003
|
*/
|
|
989
|
-
|
|
990
|
-
sender: string;
|
|
991
|
-
send_param: SendParam;
|
|
992
|
-
pay_in_zro: boolean;
|
|
993
|
-
}, txnOptions?: {
|
|
1004
|
+
shared_decimals: (txnOptions?: {
|
|
994
1005
|
/**
|
|
995
1006
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
996
1007
|
*/
|
|
@@ -1003,12 +1014,12 @@ export interface Client {
|
|
|
1003
1014
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1004
1015
|
*/
|
|
1005
1016
|
simulate?: boolean;
|
|
1006
|
-
}) => Promise<AssembledTransaction<
|
|
1017
|
+
}) => Promise<AssembledTransaction<u32>>;
|
|
1007
1018
|
/**
|
|
1008
|
-
* Construct and simulate a
|
|
1009
|
-
* Retrieves the
|
|
1019
|
+
* Construct and simulate a decimal_conversion_rate 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.
|
|
1020
|
+
* Retrieves the decimal conversion rate used for cross-chain normalization.
|
|
1010
1021
|
*/
|
|
1011
|
-
|
|
1022
|
+
decimal_conversion_rate: (txnOptions?: {
|
|
1012
1023
|
/**
|
|
1013
1024
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1014
1025
|
*/
|
|
@@ -1021,12 +1032,18 @@ export interface Client {
|
|
|
1021
1032
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1022
1033
|
*/
|
|
1023
1034
|
simulate?: boolean;
|
|
1024
|
-
}) => Promise<AssembledTransaction<
|
|
1035
|
+
}) => Promise<AssembledTransaction<i128>>;
|
|
1025
1036
|
/**
|
|
1026
|
-
* Construct and simulate a
|
|
1027
|
-
*
|
|
1037
|
+
* Construct and simulate a approval_required 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.
|
|
1038
|
+
* Whether a separate token approval is required before sending.
|
|
1039
|
+
*
|
|
1040
|
+
* Helps wallet implementers determine integration requirements.
|
|
1041
|
+
*
|
|
1042
|
+
* # Returns
|
|
1043
|
+
* - `true` if a separate token approval step is required
|
|
1044
|
+
* - `false` if no separate approval is needed
|
|
1028
1045
|
*/
|
|
1029
|
-
|
|
1046
|
+
approval_required: (txnOptions?: {
|
|
1030
1047
|
/**
|
|
1031
1048
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1032
1049
|
*/
|
|
@@ -1039,12 +1056,12 @@ export interface Client {
|
|
|
1039
1056
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1040
1057
|
*/
|
|
1041
1058
|
simulate?: boolean;
|
|
1042
|
-
}) => Promise<AssembledTransaction<
|
|
1059
|
+
}) => Promise<AssembledTransaction<boolean>>;
|
|
1043
1060
|
/**
|
|
1044
|
-
* Construct and simulate a
|
|
1045
|
-
*
|
|
1061
|
+
* Construct and simulate a msg_inspector 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.
|
|
1062
|
+
* Returns the message inspector address if set.
|
|
1046
1063
|
*/
|
|
1047
|
-
|
|
1064
|
+
msg_inspector: (txnOptions?: {
|
|
1048
1065
|
/**
|
|
1049
1066
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1050
1067
|
*/
|
|
@@ -1057,12 +1074,21 @@ export interface Client {
|
|
|
1057
1074
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1058
1075
|
*/
|
|
1059
1076
|
simulate?: boolean;
|
|
1060
|
-
}) => Promise<AssembledTransaction<
|
|
1077
|
+
}) => Promise<AssembledTransaction<Option<string>>>;
|
|
1061
1078
|
/**
|
|
1062
|
-
* Construct and simulate a
|
|
1063
|
-
*
|
|
1079
|
+
* Construct and simulate a set_msg_inspector 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.
|
|
1080
|
+
* Sets or removes the message inspector address.
|
|
1081
|
+
*
|
|
1082
|
+
* The message inspector is an optional contract that validates outgoing messages
|
|
1083
|
+
* and options before they are sent cross-chain. If set, the inspector's `inspect`
|
|
1084
|
+
* method will be called during `send` and `quote_send` operations.
|
|
1085
|
+
*
|
|
1086
|
+
* # Arguments
|
|
1087
|
+
* * `inspector` - The address of the inspector contract, or None to remove
|
|
1064
1088
|
*/
|
|
1065
|
-
|
|
1089
|
+
set_msg_inspector: ({ inspector }: {
|
|
1090
|
+
inspector: Option<string>;
|
|
1091
|
+
}, txnOptions?: {
|
|
1066
1092
|
/**
|
|
1067
1093
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1068
1094
|
*/
|
|
@@ -1075,18 +1101,16 @@ export interface Client {
|
|
|
1075
1101
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1076
1102
|
*/
|
|
1077
1103
|
simulate?: boolean;
|
|
1078
|
-
}) => Promise<AssembledTransaction<
|
|
1104
|
+
}) => Promise<AssembledTransaction<null>>;
|
|
1079
1105
|
/**
|
|
1080
|
-
* Construct and simulate a
|
|
1081
|
-
*
|
|
1082
|
-
*
|
|
1083
|
-
* Helps wallet implementers determine integration requirements.
|
|
1084
|
-
*
|
|
1085
|
-
* # Returns
|
|
1086
|
-
* - `true` if a separate token approval step is required
|
|
1087
|
-
* - `false` if no separate approval is needed
|
|
1106
|
+
* Construct and simulate a quote_send 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.
|
|
1107
|
+
* Quotes a send operation including LayerZero messaging fees.
|
|
1088
1108
|
*/
|
|
1089
|
-
|
|
1109
|
+
quote_send: ({ from, send_param, pay_in_zro }: {
|
|
1110
|
+
from: string;
|
|
1111
|
+
send_param: SendParam;
|
|
1112
|
+
pay_in_zro: boolean;
|
|
1113
|
+
}, txnOptions?: {
|
|
1090
1114
|
/**
|
|
1091
1115
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1092
1116
|
*/
|
|
@@ -1099,18 +1123,18 @@ export interface Client {
|
|
|
1099
1123
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1100
1124
|
*/
|
|
1101
1125
|
simulate?: boolean;
|
|
1102
|
-
}) => Promise<AssembledTransaction<
|
|
1126
|
+
}) => Promise<AssembledTransaction<MessagingFee>>;
|
|
1103
1127
|
/**
|
|
1104
1128
|
* Construct and simulate a send 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.
|
|
1105
1129
|
* Sends tokens cross-chain to another endpoint.
|
|
1106
1130
|
*
|
|
1107
|
-
*
|
|
1131
|
+
* From must be authenticated.
|
|
1108
1132
|
*
|
|
1109
1133
|
* # Returns
|
|
1110
1134
|
* (MessagingReceipt, OFTReceipt)
|
|
1111
1135
|
*/
|
|
1112
|
-
send: ({
|
|
1113
|
-
|
|
1136
|
+
send: ({ from, send_param, fee, refund_address }: {
|
|
1137
|
+
from: string;
|
|
1114
1138
|
send_param: SendParam;
|
|
1115
1139
|
fee: MessagingFee;
|
|
1116
1140
|
refund_address: string;
|
|
@@ -1164,20 +1188,10 @@ export interface Client {
|
|
|
1164
1188
|
simulate?: boolean;
|
|
1165
1189
|
}) => Promise<AssembledTransaction<string>>;
|
|
1166
1190
|
/**
|
|
1167
|
-
* Construct and simulate a
|
|
1168
|
-
*
|
|
1169
|
-
*
|
|
1170
|
-
* # Arguments
|
|
1171
|
-
* * `eid` - The endpoint ID
|
|
1172
|
-
* * `msg_type` - The OApp message type
|
|
1173
|
-
*
|
|
1174
|
-
* # Returns
|
|
1175
|
-
* The enforced options for the given endpoint and message type
|
|
1191
|
+
* 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.
|
|
1192
|
+
* Returns the current owner address, or None if no owner is set.
|
|
1176
1193
|
*/
|
|
1177
|
-
|
|
1178
|
-
eid: u32;
|
|
1179
|
-
msg_type: u32;
|
|
1180
|
-
}, txnOptions?: {
|
|
1194
|
+
owner: (txnOptions?: {
|
|
1181
1195
|
/**
|
|
1182
1196
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1183
1197
|
*/
|
|
@@ -1190,23 +1204,12 @@ export interface Client {
|
|
|
1190
1204
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1191
1205
|
*/
|
|
1192
1206
|
simulate?: boolean;
|
|
1193
|
-
}) => Promise<AssembledTransaction<
|
|
1207
|
+
}) => Promise<AssembledTransaction<Option<string>>>;
|
|
1194
1208
|
/**
|
|
1195
|
-
* Construct and simulate a
|
|
1196
|
-
*
|
|
1197
|
-
*
|
|
1198
|
-
* Only the `authorizer` of the OApp can call this function.
|
|
1199
|
-
* Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.
|
|
1200
|
-
* These enforced options can vary as the potential options/execution on the remote may differ as per the msg_type.
|
|
1201
|
-
* e.g. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you don't want to pay
|
|
1202
|
-
* if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().
|
|
1203
|
-
*
|
|
1204
|
-
* # Arguments
|
|
1205
|
-
* * `options` - A vector of EnforcedOptionParam structures specifying enforced options
|
|
1209
|
+
* 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.
|
|
1210
|
+
* Returns the pending owner address for 2-step transfer, or None if no transfer is pending.
|
|
1206
1211
|
*/
|
|
1207
|
-
|
|
1208
|
-
options: Array<EnforcedOptionParam>;
|
|
1209
|
-
}, txnOptions?: {
|
|
1212
|
+
pending_owner: (txnOptions?: {
|
|
1210
1213
|
/**
|
|
1211
1214
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1212
1215
|
*/
|
|
@@ -1219,28 +1222,20 @@ export interface Client {
|
|
|
1219
1222
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1220
1223
|
*/
|
|
1221
1224
|
simulate?: boolean;
|
|
1222
|
-
}) => Promise<AssembledTransaction<
|
|
1225
|
+
}) => Promise<AssembledTransaction<Option<string>>>;
|
|
1223
1226
|
/**
|
|
1224
|
-
* Construct and simulate a
|
|
1225
|
-
*
|
|
1226
|
-
*
|
|
1227
|
-
* If there is an enforced lzReceive option:
|
|
1228
|
-
* - {gas_limit: 200k, value: 1 XLM} AND a caller supplies a lzReceive option: {gas_limit: 100k, value: 0.5 XLM}
|
|
1229
|
-
* - The resulting options will be {gas_limit: 300k, value: 1.5 XLM} when the message is executed on the remote lz_receive() function.
|
|
1230
|
-
* The presence of duplicated options is handled off-chain in the verifier/executor.
|
|
1227
|
+
* 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.
|
|
1228
|
+
* Transfers ownership immediately to a new address.
|
|
1231
1229
|
*
|
|
1232
|
-
*
|
|
1233
|
-
*
|
|
1234
|
-
* * `msg_type` - The OApp message type
|
|
1235
|
-
* * `extra_options` - Additional options passed by the caller
|
|
1230
|
+
* Use with caution - if you transfer to a wrong address, ownership is lost forever.
|
|
1231
|
+
* Consider using `propose_ownership_transfer` instead.
|
|
1236
1232
|
*
|
|
1237
|
-
* #
|
|
1238
|
-
*
|
|
1233
|
+
* # Panics
|
|
1234
|
+
* - `OwnerNotSet` if no owner is currently set
|
|
1235
|
+
* - `TransferInProgress` if a 2-step transfer is in progress
|
|
1239
1236
|
*/
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
msg_type: u32;
|
|
1243
|
-
extra_options: Buffer;
|
|
1237
|
+
transfer_ownership: ({ new_owner }: {
|
|
1238
|
+
new_owner: string;
|
|
1244
1239
|
}, txnOptions?: {
|
|
1245
1240
|
/**
|
|
1246
1241
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -1254,19 +1249,28 @@ export interface Client {
|
|
|
1254
1249
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1255
1250
|
*/
|
|
1256
1251
|
simulate?: boolean;
|
|
1257
|
-
}) => Promise<AssembledTransaction<
|
|
1252
|
+
}) => Promise<AssembledTransaction<null>>;
|
|
1258
1253
|
/**
|
|
1259
|
-
* Construct and simulate a
|
|
1260
|
-
*
|
|
1254
|
+
* 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.
|
|
1255
|
+
* Proposes an ownership transfer to a new address.
|
|
1256
|
+
*
|
|
1257
|
+
* The new owner must call `accept_ownership()` within `ttl` ledgers
|
|
1258
|
+
* to complete the transfer. The pending transfer will automatically expire after.
|
|
1261
1259
|
*
|
|
1262
1260
|
* # Arguments
|
|
1263
|
-
*
|
|
1261
|
+
* - `new_owner` - The proposed new owner
|
|
1262
|
+
* - `ttl` - Number of ledgers the new owner has to accept.
|
|
1263
|
+
* Use `0` to cancel a pending transfer (new_owner must match pending).
|
|
1264
1264
|
*
|
|
1265
|
-
* #
|
|
1266
|
-
*
|
|
1265
|
+
* # Panics
|
|
1266
|
+
* - `OwnerNotSet` if no owner is currently set
|
|
1267
|
+
* - `NoPendingTransfer` when cancelling and no pending transfer exists
|
|
1268
|
+
* - `InvalidTtl` if ttl exceeds max TTL
|
|
1269
|
+
* - `InvalidPendingOwner` when cancelling with wrong new_owner address
|
|
1267
1270
|
*/
|
|
1268
|
-
|
|
1269
|
-
|
|
1271
|
+
propose_ownership_transfer: ({ new_owner, ttl }: {
|
|
1272
|
+
new_owner: string;
|
|
1273
|
+
ttl: u32;
|
|
1270
1274
|
}, txnOptions?: {
|
|
1271
1275
|
/**
|
|
1272
1276
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -1280,27 +1284,17 @@ export interface Client {
|
|
|
1280
1284
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1281
1285
|
*/
|
|
1282
1286
|
simulate?: boolean;
|
|
1283
|
-
}) => Promise<AssembledTransaction<
|
|
1287
|
+
}) => Promise<AssembledTransaction<null>>;
|
|
1284
1288
|
/**
|
|
1285
|
-
* Construct and simulate a
|
|
1286
|
-
*
|
|
1287
|
-
*
|
|
1288
|
-
* The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.
|
|
1289
|
-
* This is required by the off-chain executor to determine if the OApp expects message execution to be ordered.
|
|
1290
|
-
* This is also enforced by the OApp.
|
|
1291
|
-
* By default this is NOT enabled, i.e. next_nonce is hardcoded to return 0.
|
|
1289
|
+
* 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.
|
|
1290
|
+
* Accepts a pending 2-step ownership transfer.
|
|
1292
1291
|
*
|
|
1293
|
-
*
|
|
1294
|
-
* * `src_eid` - The source endpoint ID
|
|
1295
|
-
* * `sender` - The sender OApp address
|
|
1292
|
+
* Must be called by the pending owner before the TTL expires.
|
|
1296
1293
|
*
|
|
1297
|
-
* #
|
|
1298
|
-
*
|
|
1294
|
+
* # Panics
|
|
1295
|
+
* - `NoPendingTransfer` if there is no pending transfer (or it expired)
|
|
1299
1296
|
*/
|
|
1300
|
-
|
|
1301
|
-
src_eid: u32;
|
|
1302
|
-
sender: Buffer;
|
|
1303
|
-
}, txnOptions?: {
|
|
1297
|
+
accept_ownership: (txnOptions?: {
|
|
1304
1298
|
/**
|
|
1305
1299
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1306
1300
|
*/
|
|
@@ -1313,33 +1307,16 @@ export interface Client {
|
|
|
1313
1307
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1314
1308
|
*/
|
|
1315
1309
|
simulate?: boolean;
|
|
1316
|
-
}) => Promise<AssembledTransaction<
|
|
1310
|
+
}) => Promise<AssembledTransaction<null>>;
|
|
1317
1311
|
/**
|
|
1318
|
-
* Construct and simulate a
|
|
1319
|
-
*
|
|
1320
|
-
*
|
|
1321
|
-
* The default implementation calls `clear_payload_and_transfer` to validate the message
|
|
1322
|
-
* and clear it from the endpoint, then delegates to `__lz_receive` for application logic.
|
|
1312
|
+
* 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.
|
|
1313
|
+
* Permanently renounces ownership.
|
|
1323
1314
|
*
|
|
1324
|
-
* #
|
|
1325
|
-
*
|
|
1326
|
-
*
|
|
1327
|
-
* - `src_eid`: The source chain endpoint ID
|
|
1328
|
-
* - `sender`: The sender address on the source chain
|
|
1329
|
-
* - `nonce`: The nonce of the message
|
|
1330
|
-
* * `guid` - The unique identifier for the received LayerZero message
|
|
1331
|
-
* * `message` - The payload of the received message
|
|
1332
|
-
* * `extra_data` - Additional arbitrary data provided by the corresponding executor
|
|
1333
|
-
* * `value` - The native token value sent with the message
|
|
1315
|
+
* # Panics
|
|
1316
|
+
* - `OwnerNotSet` if no owner is currently set
|
|
1317
|
+
* - `TransferInProgress` if a 2-step transfer is in progress (cancel it first)
|
|
1334
1318
|
*/
|
|
1335
|
-
|
|
1336
|
-
executor: string;
|
|
1337
|
-
origin: Origin;
|
|
1338
|
-
guid: Buffer;
|
|
1339
|
-
message: Buffer;
|
|
1340
|
-
extra_data: Buffer;
|
|
1341
|
-
value: i128;
|
|
1342
|
-
}, txnOptions?: {
|
|
1319
|
+
renounce_ownership: (txnOptions?: {
|
|
1343
1320
|
/**
|
|
1344
1321
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1345
1322
|
*/
|
|
@@ -1354,24 +1331,17 @@ export interface Client {
|
|
|
1354
1331
|
simulate?: boolean;
|
|
1355
1332
|
}) => Promise<AssembledTransaction<null>>;
|
|
1356
1333
|
/**
|
|
1357
|
-
* Construct and simulate a
|
|
1358
|
-
*
|
|
1359
|
-
*
|
|
1360
|
-
* Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.
|
|
1361
|
-
* The default sender IS the OAppReceiver implementer.
|
|
1334
|
+
* 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.
|
|
1335
|
+
* Extends the instance TTL.
|
|
1362
1336
|
*
|
|
1363
1337
|
* # Arguments
|
|
1364
|
-
* * `origin` - The origin information containing the source endpoint and sender address
|
|
1365
|
-
* * `message` - The lzReceive payload
|
|
1366
|
-
* * `sender` - The sender address to check
|
|
1367
1338
|
*
|
|
1368
|
-
*
|
|
1369
|
-
*
|
|
1339
|
+
* * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
|
|
1340
|
+
* * `extend_to` - The TTL to extend to.
|
|
1370
1341
|
*/
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
sender: string;
|
|
1342
|
+
extend_instance_ttl: ({ threshold, extend_to }: {
|
|
1343
|
+
threshold: u32;
|
|
1344
|
+
extend_to: u32;
|
|
1375
1345
|
}, txnOptions?: {
|
|
1376
1346
|
/**
|
|
1377
1347
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -1385,17 +1355,26 @@ export interface Client {
|
|
|
1385
1355
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1386
1356
|
*/
|
|
1387
1357
|
simulate?: boolean;
|
|
1388
|
-
}) => Promise<AssembledTransaction<
|
|
1358
|
+
}) => Promise<AssembledTransaction<null>>;
|
|
1389
1359
|
/**
|
|
1390
|
-
* Construct and simulate a
|
|
1391
|
-
*
|
|
1360
|
+
* 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.
|
|
1361
|
+
* Sets TTL configs for instance and persistent storage.
|
|
1392
1362
|
*
|
|
1393
|
-
*
|
|
1394
|
-
*
|
|
1395
|
-
*
|
|
1396
|
-
*
|
|
1363
|
+
* - `None` values remove the corresponding config (disables auto-extension for that type)
|
|
1364
|
+
* - Validates that `threshold <= extend_to <= MAX_TTL`
|
|
1365
|
+
*
|
|
1366
|
+
* # Arguments
|
|
1367
|
+
* - `instance` - TTL config for instance storage
|
|
1368
|
+
* - `persistent` - TTL config for persistent storage
|
|
1369
|
+
*
|
|
1370
|
+
* # Panics
|
|
1371
|
+
* - `TtlConfigFrozen` if configs are frozen
|
|
1372
|
+
* - `InvalidTtlConfig` if validation fails
|
|
1397
1373
|
*/
|
|
1398
|
-
|
|
1374
|
+
set_ttl_configs: ({ instance, persistent }: {
|
|
1375
|
+
instance: Option<TtlConfig>;
|
|
1376
|
+
persistent: Option<TtlConfig>;
|
|
1377
|
+
}, txnOptions?: {
|
|
1399
1378
|
/**
|
|
1400
1379
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1401
1380
|
*/
|
|
@@ -1408,15 +1387,12 @@ export interface Client {
|
|
|
1408
1387
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1409
1388
|
*/
|
|
1410
1389
|
simulate?: boolean;
|
|
1411
|
-
}) => Promise<AssembledTransaction<
|
|
1390
|
+
}) => Promise<AssembledTransaction<null>>;
|
|
1412
1391
|
/**
|
|
1413
|
-
* Construct and simulate a
|
|
1414
|
-
*
|
|
1415
|
-
*
|
|
1416
|
-
* # Returns
|
|
1417
|
-
* The LayerZero endpoint address
|
|
1392
|
+
* Construct and simulate a ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
|
|
1393
|
+
* Returns the current TTL configs as (instance_config, persistent_config).
|
|
1418
1394
|
*/
|
|
1419
|
-
|
|
1395
|
+
ttl_configs: (txnOptions?: {
|
|
1420
1396
|
/**
|
|
1421
1397
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1422
1398
|
*/
|
|
@@ -1429,20 +1405,18 @@ export interface Client {
|
|
|
1429
1405
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1430
1406
|
*/
|
|
1431
1407
|
simulate?: boolean;
|
|
1432
|
-
}) => Promise<AssembledTransaction<
|
|
1408
|
+
}) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
|
|
1433
1409
|
/**
|
|
1434
|
-
* Construct and simulate a
|
|
1435
|
-
*
|
|
1410
|
+
* Construct and simulate a freeze_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
|
|
1411
|
+
* Permanently freezes TTL configs, preventing any future modifications.
|
|
1436
1412
|
*
|
|
1437
|
-
*
|
|
1438
|
-
*
|
|
1413
|
+
* This is irreversible and provides immutability guarantees to users.
|
|
1414
|
+
* Emits `TtlConfigsFrozen` event.
|
|
1439
1415
|
*
|
|
1440
|
-
* #
|
|
1441
|
-
*
|
|
1416
|
+
* # Panics
|
|
1417
|
+
* - `TtlConfigAlreadyFrozen` if already frozen
|
|
1442
1418
|
*/
|
|
1443
|
-
|
|
1444
|
-
eid: u32;
|
|
1445
|
-
}, txnOptions?: {
|
|
1419
|
+
freeze_ttl_configs: (txnOptions?: {
|
|
1446
1420
|
/**
|
|
1447
1421
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1448
1422
|
*/
|
|
@@ -1455,19 +1429,12 @@ export interface Client {
|
|
|
1455
1429
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1456
1430
|
*/
|
|
1457
1431
|
simulate?: boolean;
|
|
1458
|
-
}) => Promise<AssembledTransaction<
|
|
1432
|
+
}) => Promise<AssembledTransaction<null>>;
|
|
1459
1433
|
/**
|
|
1460
|
-
* Construct and simulate a
|
|
1461
|
-
*
|
|
1462
|
-
*
|
|
1463
|
-
* # Arguments
|
|
1464
|
-
* * `eid` - The endpoint ID
|
|
1465
|
-
* * `peer` - The address of the peer to be associated with the corresponding endpoint, or None to remove the peer
|
|
1434
|
+
* Construct and simulate a is_ttl_configs_frozen transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
|
|
1435
|
+
* Returns whether TTL configs are frozen.
|
|
1466
1436
|
*/
|
|
1467
|
-
|
|
1468
|
-
eid: u32;
|
|
1469
|
-
peer: Option<Buffer>;
|
|
1470
|
-
}, txnOptions?: {
|
|
1437
|
+
is_ttl_configs_frozen: (txnOptions?: {
|
|
1471
1438
|
/**
|
|
1472
1439
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1473
1440
|
*/
|
|
@@ -1480,17 +1447,17 @@ export interface Client {
|
|
|
1480
1447
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1481
1448
|
*/
|
|
1482
1449
|
simulate?: boolean;
|
|
1483
|
-
}) => Promise<AssembledTransaction<
|
|
1450
|
+
}) => Promise<AssembledTransaction<boolean>>;
|
|
1484
1451
|
/**
|
|
1485
|
-
* Construct and simulate a
|
|
1486
|
-
*
|
|
1452
|
+
* Construct and simulate a oapp_version 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.
|
|
1453
|
+
* Retrieves the OApp version information.
|
|
1487
1454
|
*
|
|
1488
|
-
* #
|
|
1489
|
-
*
|
|
1455
|
+
* # Returns
|
|
1456
|
+
* A tuple containing:
|
|
1457
|
+
* - `sender_version`: The version of the OAppSender
|
|
1458
|
+
* - `receiver_version`: The version of the OAppReceiver
|
|
1490
1459
|
*/
|
|
1491
|
-
|
|
1492
|
-
delegate: Option<string>;
|
|
1493
|
-
}, txnOptions?: {
|
|
1460
|
+
oapp_version: (txnOptions?: {
|
|
1494
1461
|
/**
|
|
1495
1462
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1496
1463
|
*/
|
|
@@ -1503,26 +1470,15 @@ export interface Client {
|
|
|
1503
1470
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1504
1471
|
*/
|
|
1505
1472
|
simulate?: boolean;
|
|
1506
|
-
}) => Promise<AssembledTransaction<
|
|
1473
|
+
}) => Promise<AssembledTransaction<readonly [u64, u64]>>;
|
|
1507
1474
|
/**
|
|
1508
|
-
* Construct and simulate a
|
|
1509
|
-
*
|
|
1510
|
-
*
|
|
1511
|
-
* - `None` values remove the corresponding config (disables auto-extension for that type)
|
|
1512
|
-
* - Validates that `threshold <= extend_to <= MAX_TTL`
|
|
1513
|
-
*
|
|
1514
|
-
* # Arguments
|
|
1515
|
-
* - `instance` - TTL config for instance storage
|
|
1516
|
-
* - `persistent` - TTL config for persistent storage
|
|
1475
|
+
* Construct and simulate a endpoint 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.
|
|
1476
|
+
* Retrieves the LayerZero endpoint address associated with the OApp.
|
|
1517
1477
|
*
|
|
1518
|
-
* #
|
|
1519
|
-
*
|
|
1520
|
-
* - `InvalidTtlConfig` if validation fails
|
|
1478
|
+
* # Returns
|
|
1479
|
+
* The LayerZero endpoint address
|
|
1521
1480
|
*/
|
|
1522
|
-
|
|
1523
|
-
instance: Option<TtlConfig>;
|
|
1524
|
-
persistent: Option<TtlConfig>;
|
|
1525
|
-
}, txnOptions?: {
|
|
1481
|
+
endpoint: (txnOptions?: {
|
|
1526
1482
|
/**
|
|
1527
1483
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1528
1484
|
*/
|
|
@@ -1535,12 +1491,20 @@ export interface Client {
|
|
|
1535
1491
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1536
1492
|
*/
|
|
1537
1493
|
simulate?: boolean;
|
|
1538
|
-
}) => Promise<AssembledTransaction<
|
|
1494
|
+
}) => Promise<AssembledTransaction<string>>;
|
|
1539
1495
|
/**
|
|
1540
|
-
* Construct and simulate a
|
|
1541
|
-
*
|
|
1496
|
+
* Construct and simulate a peer 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.
|
|
1497
|
+
* Retrieves the peer (OApp) associated with a corresponding endpoint.
|
|
1498
|
+
*
|
|
1499
|
+
* # Arguments
|
|
1500
|
+
* * `eid` - The endpoint ID
|
|
1501
|
+
*
|
|
1502
|
+
* # Returns
|
|
1503
|
+
* The peer address (OApp instance) associated with the corresponding endpoint
|
|
1542
1504
|
*/
|
|
1543
|
-
|
|
1505
|
+
peer: ({ eid }: {
|
|
1506
|
+
eid: u32;
|
|
1507
|
+
}, txnOptions?: {
|
|
1544
1508
|
/**
|
|
1545
1509
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1546
1510
|
*/
|
|
@@ -1553,18 +1517,19 @@ export interface Client {
|
|
|
1553
1517
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1554
1518
|
*/
|
|
1555
1519
|
simulate?: boolean;
|
|
1556
|
-
}) => Promise<AssembledTransaction<
|
|
1520
|
+
}) => Promise<AssembledTransaction<Option<Buffer>>>;
|
|
1557
1521
|
/**
|
|
1558
|
-
* Construct and simulate a
|
|
1559
|
-
*
|
|
1560
|
-
*
|
|
1561
|
-
* This is irreversible and provides immutability guarantees to users.
|
|
1562
|
-
* Emits `TtlConfigsFrozen` event.
|
|
1522
|
+
* Construct and simulate a set_peer 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.
|
|
1523
|
+
* Sets or removes the peer address (OApp instance) for a corresponding endpoint.
|
|
1563
1524
|
*
|
|
1564
|
-
* #
|
|
1565
|
-
*
|
|
1525
|
+
* # Arguments
|
|
1526
|
+
* * `eid` - The endpoint ID
|
|
1527
|
+
* * `peer` - The address of the peer to be associated with the corresponding endpoint, or None to remove the peer
|
|
1566
1528
|
*/
|
|
1567
|
-
|
|
1529
|
+
set_peer: ({ eid, peer }: {
|
|
1530
|
+
eid: u32;
|
|
1531
|
+
peer: Option<Buffer>;
|
|
1532
|
+
}, txnOptions?: {
|
|
1568
1533
|
/**
|
|
1569
1534
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1570
1535
|
*/
|
|
@@ -1579,10 +1544,15 @@ export interface Client {
|
|
|
1579
1544
|
simulate?: boolean;
|
|
1580
1545
|
}) => Promise<AssembledTransaction<null>>;
|
|
1581
1546
|
/**
|
|
1582
|
-
* Construct and simulate a
|
|
1583
|
-
*
|
|
1547
|
+
* Construct and simulate a set_delegate 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.
|
|
1548
|
+
* Sets the delegate address for the OApp Core.
|
|
1549
|
+
*
|
|
1550
|
+
* # Arguments
|
|
1551
|
+
* * `delegate` - The address of the delegate to be set, or None to remove the delegate
|
|
1584
1552
|
*/
|
|
1585
|
-
|
|
1553
|
+
set_delegate: ({ delegate }: {
|
|
1554
|
+
delegate: Option<string>;
|
|
1555
|
+
}, txnOptions?: {
|
|
1586
1556
|
/**
|
|
1587
1557
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1588
1558
|
*/
|
|
@@ -1595,19 +1565,19 @@ export interface Client {
|
|
|
1595
1565
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1596
1566
|
*/
|
|
1597
1567
|
simulate?: boolean;
|
|
1598
|
-
}) => Promise<AssembledTransaction<
|
|
1568
|
+
}) => Promise<AssembledTransaction<null>>;
|
|
1599
1569
|
/**
|
|
1600
|
-
* Construct and simulate a
|
|
1601
|
-
*
|
|
1570
|
+
* Construct and simulate a allow_initialize_path 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.
|
|
1571
|
+
* Checks if a messaging path can be initialized for the given origin.
|
|
1602
1572
|
*
|
|
1603
1573
|
* # Arguments
|
|
1574
|
+
* * `origin` - The origin of the message
|
|
1604
1575
|
*
|
|
1605
|
-
*
|
|
1606
|
-
*
|
|
1576
|
+
* # Returns
|
|
1577
|
+
* True if the path can be initialized, false otherwise
|
|
1607
1578
|
*/
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
extend_to: u32;
|
|
1579
|
+
allow_initialize_path: ({ origin }: {
|
|
1580
|
+
origin: Origin;
|
|
1611
1581
|
}, txnOptions?: {
|
|
1612
1582
|
/**
|
|
1613
1583
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -1621,12 +1591,27 @@ export interface Client {
|
|
|
1621
1591
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1622
1592
|
*/
|
|
1623
1593
|
simulate?: boolean;
|
|
1624
|
-
}) => Promise<AssembledTransaction<
|
|
1594
|
+
}) => Promise<AssembledTransaction<boolean>>;
|
|
1625
1595
|
/**
|
|
1626
|
-
* Construct and simulate a
|
|
1627
|
-
*
|
|
1596
|
+
* Construct and simulate a next_nonce 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.
|
|
1597
|
+
* Retrieves the next nonce for a given source endpoint and sender address.
|
|
1598
|
+
*
|
|
1599
|
+
* The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.
|
|
1600
|
+
* This is required by the off-chain executor to determine if the OApp expects message execution to be ordered.
|
|
1601
|
+
* This is also enforced by the OApp.
|
|
1602
|
+
* By default this is NOT enabled, i.e. next_nonce is hardcoded to return 0.
|
|
1603
|
+
*
|
|
1604
|
+
* # Arguments
|
|
1605
|
+
* * `src_eid` - The source endpoint ID
|
|
1606
|
+
* * `sender` - The sender OApp address
|
|
1607
|
+
*
|
|
1608
|
+
* # Returns
|
|
1609
|
+
* The next nonce
|
|
1628
1610
|
*/
|
|
1629
|
-
|
|
1611
|
+
next_nonce: ({ src_eid, sender }: {
|
|
1612
|
+
src_eid: u32;
|
|
1613
|
+
sender: Buffer;
|
|
1614
|
+
}, txnOptions?: {
|
|
1630
1615
|
/**
|
|
1631
1616
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1632
1617
|
*/
|
|
@@ -1639,12 +1624,33 @@ export interface Client {
|
|
|
1639
1624
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1640
1625
|
*/
|
|
1641
1626
|
simulate?: boolean;
|
|
1642
|
-
}) => Promise<AssembledTransaction<
|
|
1627
|
+
}) => Promise<AssembledTransaction<u64>>;
|
|
1643
1628
|
/**
|
|
1644
|
-
* Construct and simulate a
|
|
1645
|
-
*
|
|
1629
|
+
* Construct and simulate a lz_receive 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.
|
|
1630
|
+
* Entry point for receiving messages or packets from the LayerZero endpoint.
|
|
1631
|
+
*
|
|
1632
|
+
* The default implementation calls `clear_payload_and_transfer` to validate the message
|
|
1633
|
+
* and clear it from the endpoint, then delegates to `__lz_receive` for application logic.
|
|
1634
|
+
*
|
|
1635
|
+
* # Arguments
|
|
1636
|
+
* * `executor` - The address of the executor for the received message
|
|
1637
|
+
* * `origin` - The origin information containing the source endpoint and sender address:
|
|
1638
|
+
* - `src_eid`: The source chain endpoint ID
|
|
1639
|
+
* - `sender`: The sender address on the source chain
|
|
1640
|
+
* - `nonce`: The nonce of the message
|
|
1641
|
+
* * `guid` - The unique identifier for the received LayerZero message
|
|
1642
|
+
* * `message` - The payload of the received message
|
|
1643
|
+
* * `extra_data` - Additional arbitrary data provided by the corresponding executor
|
|
1644
|
+
* * `value` - The native token value sent with the message
|
|
1646
1645
|
*/
|
|
1647
|
-
|
|
1646
|
+
lz_receive: ({ executor, origin, guid, message, extra_data, value }: {
|
|
1647
|
+
executor: string;
|
|
1648
|
+
origin: Origin;
|
|
1649
|
+
guid: Buffer;
|
|
1650
|
+
message: Buffer;
|
|
1651
|
+
extra_data: Buffer;
|
|
1652
|
+
value: i128;
|
|
1653
|
+
}, txnOptions?: {
|
|
1648
1654
|
/**
|
|
1649
1655
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1650
1656
|
*/
|
|
@@ -1657,20 +1663,26 @@ export interface Client {
|
|
|
1657
1663
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1658
1664
|
*/
|
|
1659
1665
|
simulate?: boolean;
|
|
1660
|
-
}) => Promise<AssembledTransaction<
|
|
1666
|
+
}) => Promise<AssembledTransaction<null>>;
|
|
1661
1667
|
/**
|
|
1662
|
-
* Construct and simulate a
|
|
1663
|
-
*
|
|
1668
|
+
* Construct and simulate a is_compose_msg_sender 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.
|
|
1669
|
+
* Indicates whether an address is an approved composeMsg sender to the Endpoint.
|
|
1664
1670
|
*
|
|
1665
|
-
*
|
|
1666
|
-
*
|
|
1671
|
+
* Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.
|
|
1672
|
+
* The default sender IS the OAppReceiver implementer.
|
|
1667
1673
|
*
|
|
1668
|
-
* #
|
|
1669
|
-
*
|
|
1670
|
-
*
|
|
1674
|
+
* # Arguments
|
|
1675
|
+
* * `origin` - The origin information containing the source endpoint and sender address
|
|
1676
|
+
* * `message` - The lzReceive payload
|
|
1677
|
+
* * `sender` - The sender address to check
|
|
1678
|
+
*
|
|
1679
|
+
* # Returns
|
|
1680
|
+
* True if the sender is a valid composeMsg sender, false otherwise
|
|
1671
1681
|
*/
|
|
1672
|
-
|
|
1673
|
-
|
|
1682
|
+
is_compose_msg_sender: ({ origin, message, sender }: {
|
|
1683
|
+
origin: Origin;
|
|
1684
|
+
message: Buffer;
|
|
1685
|
+
sender: string;
|
|
1674
1686
|
}, txnOptions?: {
|
|
1675
1687
|
/**
|
|
1676
1688
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -1684,28 +1696,21 @@ export interface Client {
|
|
|
1684
1696
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1685
1697
|
*/
|
|
1686
1698
|
simulate?: boolean;
|
|
1687
|
-
}) => Promise<AssembledTransaction<
|
|
1699
|
+
}) => Promise<AssembledTransaction<boolean>>;
|
|
1688
1700
|
/**
|
|
1689
|
-
* Construct and simulate a
|
|
1690
|
-
*
|
|
1691
|
-
*
|
|
1692
|
-
* The new owner must call `accept_ownership()` within `ttl` ledgers
|
|
1693
|
-
* to complete the transfer. The pending transfer will automatically expire after.
|
|
1701
|
+
* Construct and simulate a enforced_options 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
|
+
* Retrieves the enforced options for a given endpoint and message type.
|
|
1694
1703
|
*
|
|
1695
1704
|
* # Arguments
|
|
1696
|
-
*
|
|
1697
|
-
*
|
|
1698
|
-
* Use `0` to cancel a pending transfer (new_owner must match pending).
|
|
1705
|
+
* * `eid` - The endpoint ID
|
|
1706
|
+
* * `msg_type` - The OApp message type
|
|
1699
1707
|
*
|
|
1700
|
-
* #
|
|
1701
|
-
*
|
|
1702
|
-
* - `NoPendingTransfer` when cancelling and no pending transfer exists
|
|
1703
|
-
* - `InvalidTtl` if ttl exceeds max TTL
|
|
1704
|
-
* - `InvalidPendingOwner` when cancelling with wrong new_owner address
|
|
1708
|
+
* # Returns
|
|
1709
|
+
* The enforced options for the given endpoint and message type
|
|
1705
1710
|
*/
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1711
|
+
enforced_options: ({ eid, msg_type }: {
|
|
1712
|
+
eid: u32;
|
|
1713
|
+
msg_type: u32;
|
|
1709
1714
|
}, txnOptions?: {
|
|
1710
1715
|
/**
|
|
1711
1716
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
@@ -1719,17 +1724,23 @@ export interface Client {
|
|
|
1719
1724
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1720
1725
|
*/
|
|
1721
1726
|
simulate?: boolean;
|
|
1722
|
-
}) => Promise<AssembledTransaction<
|
|
1727
|
+
}) => Promise<AssembledTransaction<Buffer>>;
|
|
1723
1728
|
/**
|
|
1724
|
-
* Construct and simulate a
|
|
1725
|
-
*
|
|
1729
|
+
* Construct and simulate a set_enforced_options 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.
|
|
1730
|
+
* Sets the enforced options for specific endpoint and message type combinations.
|
|
1726
1731
|
*
|
|
1727
|
-
*
|
|
1732
|
+
* Only the `authorizer` of the OApp can call this function.
|
|
1733
|
+
* Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.
|
|
1734
|
+
* These enforced options can vary as the potential options/execution on the remote may differ as per the msg_type.
|
|
1735
|
+
* e.g. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you don't want to pay
|
|
1736
|
+
* if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().
|
|
1728
1737
|
*
|
|
1729
|
-
* #
|
|
1730
|
-
*
|
|
1738
|
+
* # Arguments
|
|
1739
|
+
* * `options` - A vector of EnforcedOptionParam structures specifying enforced options
|
|
1731
1740
|
*/
|
|
1732
|
-
|
|
1741
|
+
set_enforced_options: ({ options }: {
|
|
1742
|
+
options: Array<EnforcedOptionParam>;
|
|
1743
|
+
}, txnOptions?: {
|
|
1733
1744
|
/**
|
|
1734
1745
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1735
1746
|
*/
|
|
@@ -1744,14 +1755,27 @@ export interface Client {
|
|
|
1744
1755
|
simulate?: boolean;
|
|
1745
1756
|
}) => Promise<AssembledTransaction<null>>;
|
|
1746
1757
|
/**
|
|
1747
|
-
* Construct and simulate a
|
|
1748
|
-
*
|
|
1758
|
+
* Construct and simulate a combine_options 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.
|
|
1759
|
+
* Combines options for a given endpoint and message type.
|
|
1749
1760
|
*
|
|
1750
|
-
*
|
|
1751
|
-
* -
|
|
1752
|
-
* -
|
|
1761
|
+
* If there is an enforced lzReceive option:
|
|
1762
|
+
* - {gas_limit: 200k, value: 1 XLM} AND a caller supplies a lzReceive option: {gas_limit: 100k, value: 0.5 XLM}
|
|
1763
|
+
* - The resulting options will be {gas_limit: 300k, value: 1.5 XLM} when the message is executed on the remote lz_receive() function.
|
|
1764
|
+
* The presence of duplicated options is handled off-chain in the verifier/executor.
|
|
1765
|
+
*
|
|
1766
|
+
* # Arguments
|
|
1767
|
+
* * `eid` - The endpoint ID
|
|
1768
|
+
* * `msg_type` - The OApp message type
|
|
1769
|
+
* * `extra_options` - Additional options passed by the caller
|
|
1770
|
+
*
|
|
1771
|
+
* # Returns
|
|
1772
|
+
* The combination of caller specified options AND enforced options
|
|
1753
1773
|
*/
|
|
1754
|
-
|
|
1774
|
+
combine_options: ({ eid, msg_type, extra_options }: {
|
|
1775
|
+
eid: u32;
|
|
1776
|
+
msg_type: u32;
|
|
1777
|
+
extra_options: Buffer;
|
|
1778
|
+
}, txnOptions?: {
|
|
1755
1779
|
/**
|
|
1756
1780
|
* The fee to pay for the transaction. Default: BASE_FEE
|
|
1757
1781
|
*/
|
|
@@ -1764,7 +1788,7 @@ export interface Client {
|
|
|
1764
1788
|
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
1765
1789
|
*/
|
|
1766
1790
|
simulate?: boolean;
|
|
1767
|
-
}) => Promise<AssembledTransaction<
|
|
1791
|
+
}) => Promise<AssembledTransaction<Buffer>>;
|
|
1768
1792
|
}
|
|
1769
1793
|
export declare class Client extends ContractClient {
|
|
1770
1794
|
readonly options: ContractClientOptions;
|
|
@@ -1790,53 +1814,52 @@ export declare class Client extends ContractClient {
|
|
|
1790
1814
|
constructor(options: ContractClientOptions);
|
|
1791
1815
|
readonly fromJSON: {
|
|
1792
1816
|
set_rate_limit: (json: string) => AssembledTransaction<null>;
|
|
1793
|
-
|
|
1794
|
-
rate_limit_config: (json: string) => AssembledTransaction<readonly [bigint, bigint]>;
|
|
1817
|
+
rate_limit_config: (json: string) => AssembledTransaction<Option<RateLimitConfig>>;
|
|
1795
1818
|
rate_limit_in_flight: (json: string) => AssembledTransaction<bigint>;
|
|
1796
1819
|
rate_limit_capacity: (json: string) => AssembledTransaction<bigint>;
|
|
1797
1820
|
set_default_fee_bps: (json: string) => AssembledTransaction<null>;
|
|
1798
1821
|
set_fee_bps: (json: string) => AssembledTransaction<null>;
|
|
1799
|
-
unset_fee_bps: (json: string) => AssembledTransaction<null>;
|
|
1800
1822
|
set_fee_deposit_address: (json: string) => AssembledTransaction<null>;
|
|
1801
|
-
has_fee_bps: (json: string) => AssembledTransaction<boolean>;
|
|
1802
|
-
effective_fee_bps: (json: string) => AssembledTransaction<bigint>;
|
|
1803
1823
|
default_fee_bps: (json: string) => AssembledTransaction<bigint>;
|
|
1804
1824
|
fee_bps: (json: string) => AssembledTransaction<Option<bigint>>;
|
|
1825
|
+
effective_fee_bps: (json: string) => AssembledTransaction<bigint>;
|
|
1805
1826
|
fee_deposit_address: (json: string) => AssembledTransaction<string>;
|
|
1806
1827
|
set_paused: (json: string) => AssembledTransaction<null>;
|
|
1807
1828
|
is_paused: (json: string) => AssembledTransaction<boolean>;
|
|
1808
1829
|
quote_oft: (json: string) => AssembledTransaction<readonly [OFTLimit, OFTFeeDetail[], OFTReceipt]>;
|
|
1809
|
-
quote_send: (json: string) => AssembledTransaction<MessagingFee>;
|
|
1810
1830
|
token: (json: string) => AssembledTransaction<string>;
|
|
1811
1831
|
oft_version: (json: string) => AssembledTransaction<readonly [bigint, bigint]>;
|
|
1812
1832
|
shared_decimals: (json: string) => AssembledTransaction<number>;
|
|
1813
1833
|
decimal_conversion_rate: (json: string) => AssembledTransaction<bigint>;
|
|
1814
1834
|
approval_required: (json: string) => AssembledTransaction<boolean>;
|
|
1835
|
+
msg_inspector: (json: string) => AssembledTransaction<Option<string>>;
|
|
1836
|
+
set_msg_inspector: (json: string) => AssembledTransaction<null>;
|
|
1837
|
+
quote_send: (json: string) => AssembledTransaction<MessagingFee>;
|
|
1815
1838
|
send: (json: string) => AssembledTransaction<readonly [MessagingReceipt, OFTReceipt]>;
|
|
1816
1839
|
oft_type: (json: string) => AssembledTransaction<OftType>;
|
|
1817
1840
|
authorizer: (json: string) => AssembledTransaction<string>;
|
|
1818
|
-
enforced_options: (json: string) => AssembledTransaction<Buffer<ArrayBufferLike>>;
|
|
1819
|
-
set_enforced_options: (json: string) => AssembledTransaction<null>;
|
|
1820
|
-
combine_options: (json: string) => AssembledTransaction<Buffer<ArrayBufferLike>>;
|
|
1821
|
-
allow_initialize_path: (json: string) => AssembledTransaction<boolean>;
|
|
1822
|
-
next_nonce: (json: string) => AssembledTransaction<bigint>;
|
|
1823
|
-
lz_receive: (json: string) => AssembledTransaction<null>;
|
|
1824
|
-
is_compose_msg_sender: (json: string) => AssembledTransaction<boolean>;
|
|
1825
|
-
oapp_version: (json: string) => AssembledTransaction<readonly [bigint, bigint]>;
|
|
1826
|
-
endpoint: (json: string) => AssembledTransaction<string>;
|
|
1827
|
-
peer: (json: string) => AssembledTransaction<Option<Buffer<ArrayBufferLike>>>;
|
|
1828
|
-
set_peer: (json: string) => AssembledTransaction<null>;
|
|
1829
|
-
set_delegate: (json: string) => AssembledTransaction<null>;
|
|
1830
|
-
set_ttl_configs: (json: string) => AssembledTransaction<null>;
|
|
1831
|
-
ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
|
|
1832
|
-
freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
|
|
1833
|
-
is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
|
|
1834
|
-
extend_instance_ttl: (json: string) => AssembledTransaction<null>;
|
|
1835
1841
|
owner: (json: string) => AssembledTransaction<Option<string>>;
|
|
1836
1842
|
pending_owner: (json: string) => AssembledTransaction<Option<string>>;
|
|
1837
1843
|
transfer_ownership: (json: string) => AssembledTransaction<null>;
|
|
1838
1844
|
propose_ownership_transfer: (json: string) => AssembledTransaction<null>;
|
|
1839
1845
|
accept_ownership: (json: string) => AssembledTransaction<null>;
|
|
1840
1846
|
renounce_ownership: (json: string) => AssembledTransaction<null>;
|
|
1847
|
+
extend_instance_ttl: (json: string) => AssembledTransaction<null>;
|
|
1848
|
+
set_ttl_configs: (json: string) => AssembledTransaction<null>;
|
|
1849
|
+
ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
|
|
1850
|
+
freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
|
|
1851
|
+
is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
|
|
1852
|
+
oapp_version: (json: string) => AssembledTransaction<readonly [bigint, bigint]>;
|
|
1853
|
+
endpoint: (json: string) => AssembledTransaction<string>;
|
|
1854
|
+
peer: (json: string) => AssembledTransaction<Option<Buffer<ArrayBufferLike>>>;
|
|
1855
|
+
set_peer: (json: string) => AssembledTransaction<null>;
|
|
1856
|
+
set_delegate: (json: string) => AssembledTransaction<null>;
|
|
1857
|
+
allow_initialize_path: (json: string) => AssembledTransaction<boolean>;
|
|
1858
|
+
next_nonce: (json: string) => AssembledTransaction<bigint>;
|
|
1859
|
+
lz_receive: (json: string) => AssembledTransaction<null>;
|
|
1860
|
+
is_compose_msg_sender: (json: string) => AssembledTransaction<boolean>;
|
|
1861
|
+
enforced_options: (json: string) => AssembledTransaction<Buffer<ArrayBufferLike>>;
|
|
1862
|
+
set_enforced_options: (json: string) => AssembledTransaction<null>;
|
|
1863
|
+
combine_options: (json: string) => AssembledTransaction<Buffer<ArrayBufferLike>>;
|
|
1841
1864
|
};
|
|
1842
1865
|
}
|